From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <jiewen.yao@intel.com>,
<christopher.zurcher@outlook.com>
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'" <ardb@kernel.org>
Subject: 回复: [edk2-devel] [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated assembly files for X64
Date: Mon, 26 Jul 2021 18:08:47 +0800 [thread overview]
Message-ID: <009701d78206$3f5ad110$be107330$@byosoft.com.cn> (raw)
In-Reply-To: <PH0PR11MB48856C275DC46413819386E38CE39@PH0PR11MB4885.namprd11.prod.outlook.com>
Hi, all
I have merged this patch set at edk2
332632abf3eb23fe7fcb0601bc715ba829b33e79..147f34b56ce0e2e18285ef7d0695753ac0
aa5085
Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Yao, Jiewen
> 发送时间: 2021年7月21日 19:45
> 收件人: christopher.zurcher@outlook.com; devel@edk2.groups.io
> 抄送: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX
> <xiaoyux.lu@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;
> Ard Biesheuvel <ardb@kernel.org>
> 主题: Re: [edk2-devel] [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the
> auto-generated assembly files for X64
>
> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
>
> > -----Original Message-----
> > From: christopher.zurcher@outlook.com
> <christopher.zurcher@outlook.com>
> > Sent: Wednesday, July 21, 2021 6:07 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>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; Ard Biesheuvel <ardb@kernel.org>
> > Subject: [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated
> > assembly files for X64
> >
> > From: Christopher Zurcher <christopher.zurcher@microsoft.com>
> >
> > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2507
> >
> > Adding the auto-generated assembly files for X64 architectures.
> >
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> > Cc: Mike Kinney <michael.d.kinney@intel.com>
> > Cc: Ard Biesheuvel <ardb@kernel.org>
> > Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.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/aesni-gcm-x86_64.nasm
> |
> > 34 +
> > 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/X64Gcc/crypto/aes/aesni-mb-x86_64.S
> | 552
> > +++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S
> | 1719
> > +++++++
> >
> CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.S |
> 69
> > +
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> | 4484
> > +++++++++++++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> | 863
> > ++++
> >
> CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-x86_64.S
> |
> > 29 +
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S
> | 1386
> > ++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> | 2962
> > ++++++++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> | 2631
> > ++++++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S
> |
> > 3286 +++++++++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> | 3097
> > ++++++++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> | 1811
> > +++++++
> > CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> | 491 ++
> > 26 files changed, 49209 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/aesni-gcm-
> > x86_64.nasm
> b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm-
> > x86_64.nasm
> > new file mode 100644
> > index 0000000000..9e1a2d0a40
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64/crypto/modes/aesni-gcm-
> > x86_64.nasm
> > @@ -0,0 +1,34 @@
> > +; WARNING: do not edit!
> > +; Generated from openssl/crypto/modes/asm/aesni-gcm-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
> > +
> > +
> > +global aesni_gcm_encrypt
> > +
> > +aesni_gcm_encrypt:
> > +
> > + xor eax,eax
> > + DB 0F3h,0C3h ;repret
> > +
> > +
> > +
> > +global aesni_gcm_decrypt
> > +
> > +aesni_gcm_decrypt:
> > +
> > + xor eax,eax
> > + DB 0F3h,0C3h ;repret
> > +
> > +
> > 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
> > +
> > +
> > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb-
> > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..7749fd685a
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-mb-x86_64.S
> > @@ -0,0 +1,552 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +
> > +.globl aesni_multi_cbc_encrypt
> > +.type aesni_multi_cbc_encrypt,@function
> > +.align 32
> > +aesni_multi_cbc_encrypt:
> > +.cfi_startproc
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_offset %r15,-56
> > +
> > +
> > +
> > +
> > +
> > +
> > + subq $48,%rsp
> > + andq $-64,%rsp
> > + movq %rax,16(%rsp)
> > +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08
> > +
> > +.Lenc4x_body:
> > + movdqu (%rsi),%xmm12
> > + leaq 120(%rsi),%rsi
> > + leaq 80(%rdi),%rdi
> > +
> > +.Lenc4x_loop_grande:
> > + movl %edx,24(%rsp)
> > + xorl %edx,%edx
> > + movl -64(%rdi),%ecx
> > + movq -80(%rdi),%r8
> > + cmpl %edx,%ecx
> > + movq -72(%rdi),%r12
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu -56(%rdi),%xmm2
> > + movl %ecx,32(%rsp)
> > + cmovleq %rsp,%r8
> > + movl -24(%rdi),%ecx
> > + movq -40(%rdi),%r9
> > + cmpl %edx,%ecx
> > + movq -32(%rdi),%r13
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu -16(%rdi),%xmm3
> > + movl %ecx,36(%rsp)
> > + cmovleq %rsp,%r9
> > + movl 16(%rdi),%ecx
> > + movq 0(%rdi),%r10
> > + cmpl %edx,%ecx
> > + movq 8(%rdi),%r14
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu 24(%rdi),%xmm4
> > + movl %ecx,40(%rsp)
> > + cmovleq %rsp,%r10
> > + movl 56(%rdi),%ecx
> > + movq 40(%rdi),%r11
> > + cmpl %edx,%ecx
> > + movq 48(%rdi),%r15
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu 64(%rdi),%xmm5
> > + movl %ecx,44(%rsp)
> > + cmovleq %rsp,%r11
> > + testl %edx,%edx
> > + jz .Lenc4x_done
> > +
> > + movups 16-120(%rsi),%xmm1
> > + pxor %xmm12,%xmm2
> > + movups 32-120(%rsi),%xmm0
> > + pxor %xmm12,%xmm3
> > + movl 240-120(%rsi),%eax
> > + pxor %xmm12,%xmm4
> > + movdqu (%r8),%xmm6
> > + pxor %xmm12,%xmm5
> > + movdqu (%r9),%xmm7
> > + pxor %xmm6,%xmm2
> > + movdqu (%r10),%xmm8
> > + pxor %xmm7,%xmm3
> > + movdqu (%r11),%xmm9
> > + pxor %xmm8,%xmm4
> > + pxor %xmm9,%xmm5
> > + movdqa 32(%rsp),%xmm10
> > + xorq %rbx,%rbx
> > + jmp .Loop_enc4x
> > +
> > +.align 32
> > +.Loop_enc4x:
> > + addq $16,%rbx
> > + leaq 16(%rsp),%rbp
> > + movl $1,%ecx
> > + subq %rbx,%rbp
> > +
> > +.byte 102,15,56,220,209
> > + prefetcht0 31(%r8,%rbx,1)
> > + prefetcht0 31(%r9,%rbx,1)
> > +.byte 102,15,56,220,217
> > + prefetcht0 31(%r10,%rbx,1)
> > + prefetcht0 31(%r10,%rbx,1)
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 48-120(%rsi),%xmm1
> > + cmpl 32(%rsp),%ecx
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > + cmovgeq %rbp,%r8
> > + cmovgq %rbp,%r12
> > +.byte 102,15,56,220,232
> > + movups -56(%rsi),%xmm0
> > + cmpl 36(%rsp),%ecx
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > + cmovgeq %rbp,%r9
> > + cmovgq %rbp,%r13
> > +.byte 102,15,56,220,233
> > + movups -40(%rsi),%xmm1
> > + cmpl 40(%rsp),%ecx
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > + cmovgeq %rbp,%r10
> > + cmovgq %rbp,%r14
> > +.byte 102,15,56,220,232
> > + movups -24(%rsi),%xmm0
> > + cmpl 44(%rsp),%ecx
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > + cmovgeq %rbp,%r11
> > + cmovgq %rbp,%r15
> > +.byte 102,15,56,220,233
> > + movups -8(%rsi),%xmm1
> > + movdqa %xmm10,%xmm11
> > +.byte 102,15,56,220,208
> > + prefetcht0 15(%r12,%rbx,1)
> > + prefetcht0 15(%r13,%rbx,1)
> > +.byte 102,15,56,220,216
> > + prefetcht0 15(%r14,%rbx,1)
> > + prefetcht0 15(%r15,%rbx,1)
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups 128-120(%rsi),%xmm0
> > + pxor %xmm12,%xmm12
> > +
> > +.byte 102,15,56,220,209
> > + pcmpgtd %xmm12,%xmm11
> > + movdqu -120(%rsi),%xmm12
> > +.byte 102,15,56,220,217
> > + paddd %xmm11,%xmm10
> > + movdqa %xmm10,32(%rsp)
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 144-120(%rsi),%xmm1
> > +
> > + cmpl $11,%eax
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups 160-120(%rsi),%xmm0
> > +
> > + jb .Lenc4x_tail
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 176-120(%rsi),%xmm1
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups 192-120(%rsi),%xmm0
> > +
> > + je .Lenc4x_tail
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 208-120(%rsi),%xmm1
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups 224-120(%rsi),%xmm0
> > + jmp .Lenc4x_tail
> > +
> > +.align 32
> > +.Lenc4x_tail:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movdqu (%r8,%rbx,1),%xmm6
> > + movdqu 16-120(%rsi),%xmm1
> > +
> > +.byte 102,15,56,221,208
> > + movdqu (%r9,%rbx,1),%xmm7
> > + pxor %xmm12,%xmm6
> > +.byte 102,15,56,221,216
> > + movdqu (%r10,%rbx,1),%xmm8
> > + pxor %xmm12,%xmm7
> > +.byte 102,15,56,221,224
> > + movdqu (%r11,%rbx,1),%xmm9
> > + pxor %xmm12,%xmm8
> > +.byte 102,15,56,221,232
> > + movdqu 32-120(%rsi),%xmm0
> > + pxor %xmm12,%xmm9
> > +
> > + movups %xmm2,-16(%r12,%rbx,1)
> > + pxor %xmm6,%xmm2
> > + movups %xmm3,-16(%r13,%rbx,1)
> > + pxor %xmm7,%xmm3
> > + movups %xmm4,-16(%r14,%rbx,1)
> > + pxor %xmm8,%xmm4
> > + movups %xmm5,-16(%r15,%rbx,1)
> > + pxor %xmm9,%xmm5
> > +
> > + decl %edx
> > + jnz .Loop_enc4x
> > +
> > + movq 16(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movl 24(%rsp),%edx
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > + leaq 160(%rdi),%rdi
> > + decl %edx
> > + jnz .Lenc4x_loop_grande
> > +
> > +.Lenc4x_done:
> > + movq -48(%rax),%r15
> > +.cfi_restore %r15
> > + movq -40(%rax),%r14
> > +.cfi_restore %r14
> > + movq -32(%rax),%r13
> > +.cfi_restore %r13
> > + movq -24(%rax),%r12
> > +.cfi_restore %r12
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lenc4x_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt
> > +
> > +.globl aesni_multi_cbc_decrypt
> > +.type aesni_multi_cbc_decrypt,@function
> > +.align 32
> > +aesni_multi_cbc_decrypt:
> > +.cfi_startproc
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_offset %r15,-56
> > +
> > +
> > +
> > +
> > +
> > +
> > + subq $48,%rsp
> > + andq $-64,%rsp
> > + movq %rax,16(%rsp)
> > +.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08
> > +
> > +.Ldec4x_body:
> > + movdqu (%rsi),%xmm12
> > + leaq 120(%rsi),%rsi
> > + leaq 80(%rdi),%rdi
> > +
> > +.Ldec4x_loop_grande:
> > + movl %edx,24(%rsp)
> > + xorl %edx,%edx
> > + movl -64(%rdi),%ecx
> > + movq -80(%rdi),%r8
> > + cmpl %edx,%ecx
> > + movq -72(%rdi),%r12
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu -56(%rdi),%xmm6
> > + movl %ecx,32(%rsp)
> > + cmovleq %rsp,%r8
> > + movl -24(%rdi),%ecx
> > + movq -40(%rdi),%r9
> > + cmpl %edx,%ecx
> > + movq -32(%rdi),%r13
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu -16(%rdi),%xmm7
> > + movl %ecx,36(%rsp)
> > + cmovleq %rsp,%r9
> > + movl 16(%rdi),%ecx
> > + movq 0(%rdi),%r10
> > + cmpl %edx,%ecx
> > + movq 8(%rdi),%r14
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu 24(%rdi),%xmm8
> > + movl %ecx,40(%rsp)
> > + cmovleq %rsp,%r10
> > + movl 56(%rdi),%ecx
> > + movq 40(%rdi),%r11
> > + cmpl %edx,%ecx
> > + movq 48(%rdi),%r15
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movdqu 64(%rdi),%xmm9
> > + movl %ecx,44(%rsp)
> > + cmovleq %rsp,%r11
> > + testl %edx,%edx
> > + jz .Ldec4x_done
> > +
> > + movups 16-120(%rsi),%xmm1
> > + movups 32-120(%rsi),%xmm0
> > + movl 240-120(%rsi),%eax
> > + movdqu (%r8),%xmm2
> > + movdqu (%r9),%xmm3
> > + pxor %xmm12,%xmm2
> > + movdqu (%r10),%xmm4
> > + pxor %xmm12,%xmm3
> > + movdqu (%r11),%xmm5
> > + pxor %xmm12,%xmm4
> > + pxor %xmm12,%xmm5
> > + movdqa 32(%rsp),%xmm10
> > + xorq %rbx,%rbx
> > + jmp .Loop_dec4x
> > +
> > +.align 32
> > +.Loop_dec4x:
> > + addq $16,%rbx
> > + leaq 16(%rsp),%rbp
> > + movl $1,%ecx
> > + subq %rbx,%rbp
> > +
> > +.byte 102,15,56,222,209
> > + prefetcht0 31(%r8,%rbx,1)
> > + prefetcht0 31(%r9,%rbx,1)
> > +.byte 102,15,56,222,217
> > + prefetcht0 31(%r10,%rbx,1)
> > + prefetcht0 31(%r11,%rbx,1)
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 48-120(%rsi),%xmm1
> > + cmpl 32(%rsp),%ecx
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > + cmovgeq %rbp,%r8
> > + cmovgq %rbp,%r12
> > +.byte 102,15,56,222,232
> > + movups -56(%rsi),%xmm0
> > + cmpl 36(%rsp),%ecx
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > + cmovgeq %rbp,%r9
> > + cmovgq %rbp,%r13
> > +.byte 102,15,56,222,233
> > + movups -40(%rsi),%xmm1
> > + cmpl 40(%rsp),%ecx
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > + cmovgeq %rbp,%r10
> > + cmovgq %rbp,%r14
> > +.byte 102,15,56,222,232
> > + movups -24(%rsi),%xmm0
> > + cmpl 44(%rsp),%ecx
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > + cmovgeq %rbp,%r11
> > + cmovgq %rbp,%r15
> > +.byte 102,15,56,222,233
> > + movups -8(%rsi),%xmm1
> > + movdqa %xmm10,%xmm11
> > +.byte 102,15,56,222,208
> > + prefetcht0 15(%r12,%rbx,1)
> > + prefetcht0 15(%r13,%rbx,1)
> > +.byte 102,15,56,222,216
> > + prefetcht0 15(%r14,%rbx,1)
> > + prefetcht0 15(%r15,%rbx,1)
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups 128-120(%rsi),%xmm0
> > + pxor %xmm12,%xmm12
> > +
> > +.byte 102,15,56,222,209
> > + pcmpgtd %xmm12,%xmm11
> > + movdqu -120(%rsi),%xmm12
> > +.byte 102,15,56,222,217
> > + paddd %xmm11,%xmm10
> > + movdqa %xmm10,32(%rsp)
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 144-120(%rsi),%xmm1
> > +
> > + cmpl $11,%eax
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups 160-120(%rsi),%xmm0
> > +
> > + jb .Ldec4x_tail
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 176-120(%rsi),%xmm1
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups 192-120(%rsi),%xmm0
> > +
> > + je .Ldec4x_tail
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 208-120(%rsi),%xmm1
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups 224-120(%rsi),%xmm0
> > + jmp .Ldec4x_tail
> > +
> > +.align 32
> > +.Ldec4x_tail:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > + pxor %xmm0,%xmm6
> > + pxor %xmm0,%xmm7
> > +.byte 102,15,56,222,233
> > + movdqu 16-120(%rsi),%xmm1
> > + pxor %xmm0,%xmm8
> > + pxor %xmm0,%xmm9
> > + movdqu 32-120(%rsi),%xmm0
> > +
> > +.byte 102,15,56,223,214
> > +.byte 102,15,56,223,223
> > + movdqu -16(%r8,%rbx,1),%xmm6
> > + movdqu -16(%r9,%rbx,1),%xmm7
> > +.byte 102,65,15,56,223,224
> > +.byte 102,65,15,56,223,233
> > + movdqu -16(%r10,%rbx,1),%xmm8
> > + movdqu -16(%r11,%rbx,1),%xmm9
> > +
> > + movups %xmm2,-16(%r12,%rbx,1)
> > + movdqu (%r8,%rbx,1),%xmm2
> > + movups %xmm3,-16(%r13,%rbx,1)
> > + movdqu (%r9,%rbx,1),%xmm3
> > + pxor %xmm12,%xmm2
> > + movups %xmm4,-16(%r14,%rbx,1)
> > + movdqu (%r10,%rbx,1),%xmm4
> > + pxor %xmm12,%xmm3
> > + movups %xmm5,-16(%r15,%rbx,1)
> > + movdqu (%r11,%rbx,1),%xmm5
> > + pxor %xmm12,%xmm4
> > + pxor %xmm12,%xmm5
> > +
> > + decl %edx
> > + jnz .Loop_dec4x
> > +
> > + movq 16(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movl 24(%rsp),%edx
> > +
> > + leaq 160(%rdi),%rdi
> > + decl %edx
> > + jnz .Ldec4x_loop_grande
> > +
> > +.Ldec4x_done:
> > + movq -48(%rax),%r15
> > +.cfi_restore %r15
> > + movq -40(%rax),%r14
> > +.cfi_restore %r14
> > + movq -32(%rax),%r13
> > +.cfi_restore %r13
> > + movq -24(%rax),%r12
> > +.cfi_restore %r12
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Ldec4x_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt
> > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-
> > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..ab763a2eec
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha1-x86_64.S
> > @@ -0,0 +1,1719 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl aesni_cbc_sha1_enc
> > +.type aesni_cbc_sha1_enc,@function
> > +.align 32
> > +aesni_cbc_sha1_enc:
> > +.cfi_startproc
> > +
> > + movl OPENSSL_ia32cap_P+0(%rip),%r10d
> > + movq OPENSSL_ia32cap_P+4(%rip),%r11
> > + btq $61,%r11
> > + jc aesni_cbc_sha1_enc_shaext
> > + jmp aesni_cbc_sha1_enc_ssse3
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc
> > +.type aesni_cbc_sha1_enc_ssse3,@function
> > +.align 32
> > +aesni_cbc_sha1_enc_ssse3:
> > +.cfi_startproc
> > + movq 8(%rsp),%r10
> > +
> > +
> > + pushq %rbx
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r15,-56
> > + leaq -104(%rsp),%rsp
> > +.cfi_adjust_cfa_offset 104
> > +
> > +
> > + movq %rdi,%r12
> > + movq %rsi,%r13
> > + movq %rdx,%r14
> > + leaq 112(%rcx),%r15
> > + movdqu (%r8),%xmm2
> > + movq %r8,88(%rsp)
> > + shlq $6,%r14
> > + subq %r12,%r13
> > + movl 240-112(%r15),%r8d
> > + addq %r10,%r14
> > +
> > + leaq K_XX_XX(%rip),%r11
> > + movl 0(%r9),%eax
> > + movl 4(%r9),%ebx
> > + movl 8(%r9),%ecx
> > + movl 12(%r9),%edx
> > + movl %ebx,%esi
> > + movl 16(%r9),%ebp
> > + movl %ecx,%edi
> > + xorl %edx,%edi
> > + andl %edi,%esi
> > +
> > + movdqa 64(%r11),%xmm3
> > + movdqa 0(%r11),%xmm13
> > + movdqu 0(%r10),%xmm4
> > + movdqu 16(%r10),%xmm5
> > + movdqu 32(%r10),%xmm6
> > + movdqu 48(%r10),%xmm7
> > +.byte 102,15,56,0,227
> > +.byte 102,15,56,0,235
> > +.byte 102,15,56,0,243
> > + addq $64,%r10
> > + paddd %xmm13,%xmm4
> > +.byte 102,15,56,0,251
> > + paddd %xmm13,%xmm5
> > + paddd %xmm13,%xmm6
> > + movdqa %xmm4,0(%rsp)
> > + psubd %xmm13,%xmm4
> > + movdqa %xmm5,16(%rsp)
> > + psubd %xmm13,%xmm5
> > + movdqa %xmm6,32(%rsp)
> > + psubd %xmm13,%xmm6
> > + movups -112(%r15),%xmm15
> > + movups 16-112(%r15),%xmm0
> > + jmp .Loop_ssse3
> > +.align 32
> > +.Loop_ssse3:
> > + rorl $2,%ebx
> > + movups 0(%r12),%xmm14
> > + xorps %xmm15,%xmm14
> > + xorps %xmm14,%xmm2
> > + movups -80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + pshufd $238,%xmm4,%xmm8
> > + xorl %edx,%esi
> > + movdqa %xmm7,%xmm12
> > + paddd %xmm7,%xmm13
> > + movl %eax,%edi
> > + addl 0(%rsp),%ebp
> > + punpcklqdq %xmm5,%xmm8
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + psrldq $4,%xmm12
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + pxor %xmm4,%xmm8
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + pxor %xmm6,%xmm12
> > + xorl %ecx,%edi
> > + movl %ebp,%esi
> > + addl 4(%rsp),%edx
> > + pxor %xmm12,%xmm8
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + movdqa %xmm13,48(%rsp)
> > + addl %edi,%edx
> > + movups -64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + andl %eax,%esi
> > + movdqa %xmm8,%xmm3
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + movdqa %xmm8,%xmm12
> > + xorl %ebx,%esi
> > + pslldq $12,%xmm3
> > + paddd %xmm8,%xmm8
> > + movl %edx,%edi
> > + addl 8(%rsp),%ecx
> > + psrld $31,%xmm12
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movdqa %xmm3,%xmm13
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + psrld $30,%xmm3
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + por %xmm12,%xmm8
> > + xorl %eax,%edi
> > + movl %ecx,%esi
> > + addl 12(%rsp),%ebx
> > + movups -48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + pslld $2,%xmm13
> > + pxor %xmm3,%xmm8
> > + xorl %ebp,%edx
> > + movdqa 0(%r11),%xmm3
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + andl %edx,%esi
> > + pxor %xmm13,%xmm8
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + pshufd $238,%xmm5,%xmm9
> > + xorl %ebp,%esi
> > + movdqa %xmm8,%xmm13
> > + paddd %xmm8,%xmm3
> > + movl %ebx,%edi
> > + addl 16(%rsp),%eax
> > + punpcklqdq %xmm6,%xmm9
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + psrldq $4,%xmm13
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + pxor %xmm5,%xmm9
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + movups -32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + pxor %xmm7,%xmm13
> > + xorl %edx,%edi
> > + movl %eax,%esi
> > + addl 20(%rsp),%ebp
> > + pxor %xmm13,%xmm9
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + movdqa %xmm3,0(%rsp)
> > + addl %edi,%ebp
> > + andl %ebx,%esi
> > + movdqa %xmm9,%xmm12
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + movdqa %xmm9,%xmm13
> > + xorl %ecx,%esi
> > + pslldq $12,%xmm12
> > + paddd %xmm9,%xmm9
> > + movl %ebp,%edi
> > + addl 24(%rsp),%edx
> > + psrld $31,%xmm13
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + movups -16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm12,%xmm3
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + psrld $30,%xmm12
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + por %xmm13,%xmm9
> > + xorl %ebx,%edi
> > + movl %edx,%esi
> > + addl 28(%rsp),%ecx
> > + pslld $2,%xmm3
> > + pxor %xmm12,%xmm9
> > + xorl %eax,%ebp
> > + movdqa 16(%r11),%xmm12
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + andl %ebp,%esi
> > + pxor %xmm3,%xmm9
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + pshufd $238,%xmm6,%xmm10
> > + xorl %eax,%esi
> > + movdqa %xmm9,%xmm3
> > + paddd %xmm9,%xmm12
> > + movl %ecx,%edi
> > + addl 32(%rsp),%ebx
> > + movups 0(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + punpcklqdq %xmm7,%xmm10
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + psrldq $4,%xmm3
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + pxor %xmm6,%xmm10
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + pxor %xmm8,%xmm3
> > + xorl %ebp,%edi
> > + movl %ebx,%esi
> > + addl 36(%rsp),%eax
> > + pxor %xmm3,%xmm10
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + movdqa %xmm12,16(%rsp)
> > + addl %edi,%eax
> > + andl %ecx,%esi
> > + movdqa %xmm10,%xmm13
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + movups 16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm10,%xmm3
> > + xorl %edx,%esi
> > + pslldq $12,%xmm13
> > + paddd %xmm10,%xmm10
> > + movl %eax,%edi
> > + addl 40(%rsp),%ebp
> > + psrld $31,%xmm3
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + movdqa %xmm13,%xmm12
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + psrld $30,%xmm13
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + por %xmm3,%xmm10
> > + xorl %ecx,%edi
> > + movl %ebp,%esi
> > + addl 44(%rsp),%edx
> > + pslld $2,%xmm12
> > + pxor %xmm13,%xmm10
> > + xorl %ebx,%eax
> > + movdqa 16(%r11),%xmm13
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + movups 32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + andl %eax,%esi
> > + pxor %xmm12,%xmm10
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + pshufd $238,%xmm7,%xmm11
> > + xorl %ebx,%esi
> > + movdqa %xmm10,%xmm12
> > + paddd %xmm10,%xmm13
> > + movl %edx,%edi
> > + addl 48(%rsp),%ecx
> > + punpcklqdq %xmm8,%xmm11
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + psrldq $4,%xmm12
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + pxor %xmm7,%xmm11
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + pxor %xmm9,%xmm12
> > + xorl %eax,%edi
> > + movl %ecx,%esi
> > + addl 52(%rsp),%ebx
> > + movups 48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + pxor %xmm12,%xmm11
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + movdqa %xmm13,32(%rsp)
> > + addl %edi,%ebx
> > + andl %edx,%esi
> > + movdqa %xmm11,%xmm3
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + movdqa %xmm11,%xmm12
> > + xorl %ebp,%esi
> > + pslldq $12,%xmm3
> > + paddd %xmm11,%xmm11
> > + movl %ebx,%edi
> > + addl 56(%rsp),%eax
> > + psrld $31,%xmm12
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + movdqa %xmm3,%xmm13
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + psrld $30,%xmm3
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + cmpl $11,%r8d
> > + jb .Laesenclast1
> > + movups 64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast1
> > + movups 96(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast1:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%r15),%xmm0
> > + por %xmm12,%xmm11
> > + xorl %edx,%edi
> > + movl %eax,%esi
> > + addl 60(%rsp),%ebp
> > + pslld $2,%xmm13
> > + pxor %xmm3,%xmm11
> > + xorl %ecx,%ebx
> > + movdqa 16(%r11),%xmm3
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + andl %ebx,%esi
> > + pxor %xmm13,%xmm11
> > + pshufd $238,%xmm10,%xmm13
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + pxor %xmm8,%xmm4
> > + xorl %ecx,%esi
> > + movl %ebp,%edi
> > + addl 0(%rsp),%edx
> > + punpcklqdq %xmm11,%xmm13
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + pxor %xmm5,%xmm4
> > + addl %esi,%edx
> > + movups 16(%r12),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,0(%r12,%r13,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + andl %eax,%edi
> > + movdqa %xmm3,%xmm12
> > + xorl %ebx,%eax
> > + paddd %xmm11,%xmm3
> > + addl %ebp,%edx
> > + pxor %xmm13,%xmm4
> > + rorl $7,%ebp
> > + xorl %ebx,%edi
> > + movl %edx,%esi
> > + addl 4(%rsp),%ecx
> > + movdqa %xmm4,%xmm13
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + movdqa %xmm3,48(%rsp)
> > + addl %edi,%ecx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + pslld $2,%xmm4
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + psrld $30,%xmm13
> > + xorl %eax,%esi
> > + movl %ecx,%edi
> > + addl 8(%rsp),%ebx
> > + movups -64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + por %xmm13,%xmm4
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + pshufd $238,%xmm11,%xmm3
> > + addl %esi,%ebx
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + addl 12(%rsp),%eax
> > + xorl %ebp,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + pxor %xmm9,%xmm5
> > + addl 16(%rsp),%ebp
> > + movups -48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%esi
> > + punpcklqdq %xmm4,%xmm3
> > + movl %eax,%edi
> > + roll $5,%eax
> > + pxor %xmm6,%xmm5
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + movdqa %xmm12,%xmm13
> > + rorl $7,%ebx
> > + paddd %xmm4,%xmm12
> > + addl %eax,%ebp
> > + pxor %xmm3,%xmm5
> > + addl 20(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + movdqa %xmm5,%xmm3
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + movdqa %xmm12,0(%rsp)
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 24(%rsp),%ecx
> > + pslld $2,%xmm5
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + psrld $30,%xmm3
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movups -32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + por %xmm3,%xmm5
> > + addl %edx,%ecx
> > + addl 28(%rsp),%ebx
> > + pshufd $238,%xmm4,%xmm12
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + pxor %xmm10,%xmm6
> > + addl 32(%rsp),%eax
> > + xorl %edx,%esi
> > + punpcklqdq %xmm5,%xmm12
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + pxor %xmm7,%xmm6
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + movdqa 32(%r11),%xmm3
> > + rorl $7,%ecx
> > + paddd %xmm5,%xmm13
> > + addl %ebx,%eax
> > + pxor %xmm12,%xmm6
> > + addl 36(%rsp),%ebp
> > + movups -16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + movdqa %xmm6,%xmm12
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + movdqa %xmm13,16(%rsp)
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 40(%rsp),%edx
> > + pslld $2,%xmm6
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + psrld $30,%xmm12
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + por %xmm12,%xmm6
> > + addl %ebp,%edx
> > + addl 44(%rsp),%ecx
> > + pshufd $238,%xmm5,%xmm13
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + movups 0(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + pxor %xmm11,%xmm7
> > + addl 48(%rsp),%ebx
> > + xorl %ebp,%esi
> > + punpcklqdq %xmm6,%xmm13
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + pxor %xmm8,%xmm7
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + movdqa %xmm3,%xmm12
> > + rorl $7,%edx
> > + paddd %xmm6,%xmm3
> > + addl %ecx,%ebx
> > + pxor %xmm13,%xmm7
> > + addl 52(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + movdqa %xmm7,%xmm13
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + movdqa %xmm3,32(%rsp)
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 56(%rsp),%ebp
> > + movups 16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + pslld $2,%xmm7
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + psrld $30,%xmm13
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + por %xmm13,%xmm7
> > + addl %eax,%ebp
> > + addl 60(%rsp),%edx
> > + pshufd $238,%xmm6,%xmm3
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + pxor %xmm4,%xmm8
> > + addl 0(%rsp),%ecx
> > + xorl %eax,%esi
> > + punpcklqdq %xmm7,%xmm3
> > + movl %edx,%edi
> > + roll $5,%edx
> > + pxor %xmm9,%xmm8
> > + addl %esi,%ecx
> > + movups 32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%edi
> > + movdqa %xmm12,%xmm13
> > + rorl $7,%ebp
> > + paddd %xmm7,%xmm12
> > + addl %edx,%ecx
> > + pxor %xmm3,%xmm8
> > + addl 4(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + movdqa %xmm8,%xmm3
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + movdqa %xmm12,48(%rsp)
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 8(%rsp),%eax
> > + pslld $2,%xmm8
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + psrld $30,%xmm3
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + por %xmm3,%xmm8
> > + addl %ebx,%eax
> > + addl 12(%rsp),%ebp
> > + movups 48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + pshufd $238,%xmm7,%xmm12
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + pxor %xmm5,%xmm9
> > + addl 16(%rsp),%edx
> > + xorl %ebx,%esi
> > + punpcklqdq %xmm8,%xmm12
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + pxor %xmm10,%xmm9
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + movdqa %xmm13,%xmm3
> > + rorl $7,%eax
> > + paddd %xmm8,%xmm13
> > + addl %ebp,%edx
> > + pxor %xmm12,%xmm9
> > + addl 20(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + movdqa %xmm9,%xmm12
> > + addl %edi,%ecx
> > + cmpl $11,%r8d
> > + jb .Laesenclast2
> > + movups 64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast2
> > + movups 96(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast2:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%r15),%xmm0
> > + xorl %eax,%esi
> > + movdqa %xmm13,0(%rsp)
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 24(%rsp),%ebx
> > + pslld $2,%xmm9
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + psrld $30,%xmm12
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + por %xmm12,%xmm9
> > + addl %ecx,%ebx
> > + addl 28(%rsp),%eax
> > + pshufd $238,%xmm8,%xmm13
> > + rorl $7,%ecx
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %ecx,%esi
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + pxor %xmm6,%xmm10
> > + addl 32(%rsp),%ebp
> > + movups 32(%r12),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,16(%r13,%r12,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + andl %ecx,%esi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + punpcklqdq %xmm9,%xmm13
> > + movl %eax,%edi
> > + xorl %ecx,%esi
> > + pxor %xmm11,%xmm10
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + movdqa %xmm3,%xmm12
> > + xorl %ebx,%edi
> > + paddd %xmm9,%xmm3
> > + xorl %ecx,%ebx
> > + pxor %xmm13,%xmm10
> > + addl %eax,%ebp
> > + addl 36(%rsp),%edx
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + movdqa %xmm10,%xmm13
> > + movl %ebp,%esi
> > + xorl %ebx,%edi
> > + movdqa %xmm3,16(%rsp)
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + movups -64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%esi
> > + pslld $2,%xmm10
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + psrld $30,%xmm13
> > + addl 40(%rsp),%ecx
> > + andl %eax,%esi
> > + xorl %ebx,%eax
> > + por %xmm13,%xmm10
> > + rorl $7,%ebp
> > + movl %edx,%edi
> > + xorl %eax,%esi
> > + roll $5,%edx
> > + pshufd $238,%xmm9,%xmm3
> > + addl %esi,%ecx
> > + xorl %ebp,%edi
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + addl 44(%rsp),%ebx
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + movups -48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + movl %ecx,%esi
> > + xorl %ebp,%edi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %edx,%esi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + pxor %xmm7,%xmm11
> > + addl 48(%rsp),%eax
> > + andl %edx,%esi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + punpcklqdq %xmm10,%xmm3
> > + movl %ebx,%edi
> > + xorl %edx,%esi
> > + pxor %xmm4,%xmm11
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + movdqa 48(%r11),%xmm13
> > + xorl %ecx,%edi
> > + paddd %xmm10,%xmm12
> > + xorl %edx,%ecx
> > + pxor %xmm3,%xmm11
> > + addl %ebx,%eax
> > + addl 52(%rsp),%ebp
> > + movups -32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + movdqa %xmm11,%xmm3
> > + movl %eax,%esi
> > + xorl %ecx,%edi
> > + movdqa %xmm12,32(%rsp)
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ebx,%esi
> > + pslld $2,%xmm11
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + psrld $30,%xmm3
> > + addl 56(%rsp),%edx
> > + andl %ebx,%esi
> > + xorl %ecx,%ebx
> > + por %xmm3,%xmm11
> > + rorl $7,%eax
> > + movl %ebp,%edi
> > + xorl %ebx,%esi
> > + roll $5,%ebp
> > + pshufd $238,%xmm10,%xmm12
> > + addl %esi,%edx
> > + movups -16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %eax,%edi
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + addl 60(%rsp),%ecx
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + movl %edx,%esi
> > + xorl %eax,%edi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %ebp,%esi
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + pxor %xmm8,%xmm4
> > + addl 0(%rsp),%ebx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + movups 0(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + punpcklqdq %xmm11,%xmm12
> > + movl %ecx,%edi
> > + xorl %ebp,%esi
> > + pxor %xmm5,%xmm4
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + movdqa %xmm13,%xmm3
> > + xorl %edx,%edi
> > + paddd %xmm11,%xmm13
> > + xorl %ebp,%edx
> > + pxor %xmm12,%xmm4
> > + addl %ecx,%ebx
> > + addl 4(%rsp),%eax
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + movdqa %xmm4,%xmm12
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + movdqa %xmm13,48(%rsp)
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %ecx,%esi
> > + pslld $2,%xmm4
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + psrld $30,%xmm12
> > + addl 8(%rsp),%ebp
> > + movups 16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + andl %ecx,%esi
> > + xorl %edx,%ecx
> > + por %xmm12,%xmm4
> > + rorl $7,%ebx
> > + movl %eax,%edi
> > + xorl %ecx,%esi
> > + roll $5,%eax
> > + pshufd $238,%xmm11,%xmm13
> > + addl %esi,%ebp
> > + xorl %ebx,%edi
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + addl 12(%rsp),%edx
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + movl %ebp,%esi
> > + xorl %ebx,%edi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + movups 32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%esi
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + pxor %xmm9,%xmm5
> > + addl 16(%rsp),%ecx
> > + andl %eax,%esi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + punpcklqdq %xmm4,%xmm13
> > + movl %edx,%edi
> > + xorl %eax,%esi
> > + pxor %xmm6,%xmm5
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movdqa %xmm3,%xmm12
> > + xorl %ebp,%edi
> > + paddd %xmm4,%xmm3
> > + xorl %eax,%ebp
> > + pxor %xmm13,%xmm5
> > + addl %edx,%ecx
> > + addl 20(%rsp),%ebx
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + movups 48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm5,%xmm13
> > + movl %ecx,%esi
> > + xorl %ebp,%edi
> > + movdqa %xmm3,0(%rsp)
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %edx,%esi
> > + pslld $2,%xmm5
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + psrld $30,%xmm13
> > + addl 24(%rsp),%eax
> > + andl %edx,%esi
> > + xorl %ebp,%edx
> > + por %xmm13,%xmm5
> > + rorl $7,%ecx
> > + movl %ebx,%edi
> > + xorl %edx,%esi
> > + roll $5,%ebx
> > + pshufd $238,%xmm4,%xmm3
> > + addl %esi,%eax
> > + xorl %ecx,%edi
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + addl 28(%rsp),%ebp
> > + cmpl $11,%r8d
> > + jb .Laesenclast3
> > + movups 64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast3
> > + movups 96(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast3:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%r15),%xmm0
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + movl %eax,%esi
> > + xorl %ecx,%edi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ebx,%esi
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + pxor %xmm10,%xmm6
> > + addl 32(%rsp),%edx
> > + andl %ebx,%esi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + punpcklqdq %xmm5,%xmm3
> > + movl %ebp,%edi
> > + xorl %ebx,%esi
> > + pxor %xmm7,%xmm6
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + movups 48(%r12),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,32(%r13,%r12,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm12,%xmm13
> > + xorl %eax,%edi
> > + paddd %xmm5,%xmm12
> > + xorl %ebx,%eax
> > + pxor %xmm3,%xmm6
> > + addl %ebp,%edx
> > + addl 36(%rsp),%ecx
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + movdqa %xmm6,%xmm3
> > + movl %edx,%esi
> > + xorl %eax,%edi
> > + movdqa %xmm12,16(%rsp)
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %ebp,%esi
> > + pslld $2,%xmm6
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + psrld $30,%xmm3
> > + addl 40(%rsp),%ebx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + por %xmm3,%xmm6
> > + rorl $7,%edx
> > + movups -64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movl %ecx,%edi
> > + xorl %ebp,%esi
> > + roll $5,%ecx
> > + pshufd $238,%xmm5,%xmm12
> > + addl %esi,%ebx
> > + xorl %edx,%edi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + addl 44(%rsp),%eax
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + addl %ebx,%eax
> > + pxor %xmm11,%xmm7
> > + addl 48(%rsp),%ebp
> > + movups -48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%esi
> > + punpcklqdq %xmm6,%xmm12
> > + movl %eax,%edi
> > + roll $5,%eax
> > + pxor %xmm8,%xmm7
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + movdqa %xmm13,%xmm3
> > + rorl $7,%ebx
> > + paddd %xmm6,%xmm13
> > + addl %eax,%ebp
> > + pxor %xmm12,%xmm7
> > + addl 52(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + movdqa %xmm7,%xmm12
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + movdqa %xmm13,32(%rsp)
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 56(%rsp),%ecx
> > + pslld $2,%xmm7
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + psrld $30,%xmm12
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movups -32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + por %xmm12,%xmm7
> > + addl %edx,%ecx
> > + addl 60(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 0(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + paddd %xmm7,%xmm3
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + movdqa %xmm3,48(%rsp)
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 4(%rsp),%ebp
> > + movups -16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 8(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 12(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + movups 0(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + cmpq %r14,%r10
> > + je .Ldone_ssse3
> > + movdqa 64(%r11),%xmm3
> > + movdqa 0(%r11),%xmm13
> > + movdqu 0(%r10),%xmm4
> > + movdqu 16(%r10),%xmm5
> > + movdqu 32(%r10),%xmm6
> > + movdqu 48(%r10),%xmm7
> > +.byte 102,15,56,0,227
> > + addq $64,%r10
> > + addl 16(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > +.byte 102,15,56,0,235
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + paddd %xmm13,%xmm4
> > + addl %ecx,%ebx
> > + addl 20(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + movdqa %xmm4,0(%rsp)
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + psubd %xmm13,%xmm4
> > + addl %ebx,%eax
> > + addl 24(%rsp),%ebp
> > + movups 16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 28(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 32(%rsp),%ecx
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > +.byte 102,15,56,0,243
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movups 32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + paddd %xmm13,%xmm5
> > + addl %edx,%ecx
> > + addl 36(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + movdqa %xmm5,16(%rsp)
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + psubd %xmm13,%xmm5
> > + addl %ecx,%ebx
> > + addl 40(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 44(%rsp),%ebp
> > + movups 48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 48(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > +.byte 102,15,56,0,251
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + paddd %xmm13,%xmm6
> > + addl %ebp,%edx
> > + addl 52(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + movdqa %xmm6,32(%rsp)
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + cmpl $11,%r8d
> > + jb .Laesenclast4
> > + movups 64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast4
> > + movups 96(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast4:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%r15),%xmm0
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + psubd %xmm13,%xmm6
> > + addl %edx,%ecx
> > + addl 56(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 60(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + movups %xmm2,48(%r13,%r12,1)
> > + leaq 64(%r12),%r12
> > +
> > + addl 0(%r9),%eax
> > + addl 4(%r9),%esi
> > + addl 8(%r9),%ecx
> > + addl 12(%r9),%edx
> > + movl %eax,0(%r9)
> > + addl 16(%r9),%ebp
> > + movl %esi,4(%r9)
> > + movl %esi,%ebx
> > + movl %ecx,8(%r9)
> > + movl %ecx,%edi
> > + movl %edx,12(%r9)
> > + xorl %edx,%edi
> > + movl %ebp,16(%r9)
> > + andl %edi,%esi
> > + jmp .Loop_ssse3
> > +
> > +.Ldone_ssse3:
> > + addl 16(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 20(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 24(%rsp),%ebp
> > + movups 16(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 28(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 32(%rsp),%ecx
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movups 32(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 36(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 40(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 44(%rsp),%ebp
> > + movups 48(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 48(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 52(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + cmpl $11,%r8d
> > + jb .Laesenclast5
> > + movups 64(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast5
> > + movups 96(%r15),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%r15),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast5:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%r15),%xmm0
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 56(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 60(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + movups %xmm2,48(%r13,%r12,1)
> > + movq 88(%rsp),%r8
> > +
> > + addl 0(%r9),%eax
> > + addl 4(%r9),%esi
> > + addl 8(%r9),%ecx
> > + movl %eax,0(%r9)
> > + addl 12(%r9),%edx
> > + movl %esi,4(%r9)
> > + addl 16(%r9),%ebp
> > + movl %ecx,8(%r9)
> > + movl %edx,12(%r9)
> > + movl %ebp,16(%r9)
> > + movups %xmm2,(%r8)
> > + leaq 104(%rsp),%rsi
> > +.cfi_def_cfa %rsi,56
> > + movq 0(%rsi),%r15
> > +.cfi_restore %r15
> > + movq 8(%rsi),%r14
> > +.cfi_restore %r14
> > + movq 16(%rsi),%r13
> > +.cfi_restore %r13
> > + movq 24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq 32(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq 40(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq 48(%rsi),%rsp
> > +.cfi_def_cfa %rsp,8
> > +.Lepilogue_ssse3:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3
> > +.align 64
> > +K_XX_XX:
> > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > +
> > +.byte
> >
>
65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115,116,105,116,99,104,32,102,
> >
>
111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
> ,
> >
> 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,6
> 2,
> > 0
> > +.align 64
> > +.type aesni_cbc_sha1_enc_shaext,@function
> > +.align 32
> > +aesni_cbc_sha1_enc_shaext:
> > +.cfi_startproc
> > + movq 8(%rsp),%r10
> > + movdqu (%r9),%xmm8
> > + movd 16(%r9),%xmm9
> > + movdqa K_XX_XX+80(%rip),%xmm7
> > +
> > + movl 240(%rcx),%r11d
> > + subq %rdi,%rsi
> > + movups (%rcx),%xmm15
> > + movups (%r8),%xmm2
> > + movups 16(%rcx),%xmm0
> > + leaq 112(%rcx),%rcx
> > +
> > + pshufd $27,%xmm8,%xmm8
> > + pshufd $27,%xmm9,%xmm9
> > + jmp .Loop_shaext
> > +
> > +.align 16
> > +.Loop_shaext:
> > + movups 0(%rdi),%xmm14
> > + xorps %xmm15,%xmm14
> > + xorps %xmm14,%xmm2
> > + movups -80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqu (%r10),%xmm3
> > + movdqa %xmm9,%xmm12
> > +.byte 102,15,56,0,223
> > + movdqu 16(%r10),%xmm4
> > + movdqa %xmm8,%xmm11
> > + movups -64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,0,231
> > +
> > + paddd %xmm3,%xmm9
> > + movdqu 32(%r10),%xmm5
> > + leaq 64(%r10),%r10
> > + pxor %xmm12,%xmm3
> > + movups -48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + pxor %xmm12,%xmm3
> > + movdqa %xmm8,%xmm10
> > +.byte 102,15,56,0,239
> > +.byte 69,15,58,204,193,0
> > +.byte 68,15,56,200,212
> > + movups -32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > +.byte 15,56,201,220
> > + movdqu -16(%r10),%xmm6
> > + movdqa %xmm8,%xmm9
> > +.byte 102,15,56,0,247
> > + movups -16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 69,15,58,204,194,0
> > +.byte 68,15,56,200,205
> > + pxor %xmm5,%xmm3
> > +.byte 15,56,201,229
> > + movups 0(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,0
> > +.byte 68,15,56,200,214
> > + movups 16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,222
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + movups 32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,0
> > +.byte 68,15,56,200,203
> > + movups 48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,227
> > + pxor %xmm3,%xmm5
> > +.byte 15,56,201,243
> > + cmpl $11,%r11d
> > + jb .Laesenclast6
> > + movups 64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast6
> > + movups 96(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast6:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%rcx),%xmm0
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,0
> > +.byte 68,15,56,200,212
> > + movups 16(%rdi),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,0(%rsi,%rdi,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,236
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,220
> > + movups -64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,1
> > +.byte 68,15,56,200,205
> > + movups -48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,245
> > + pxor %xmm5,%xmm3
> > +.byte 15,56,201,229
> > + movups -32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,1
> > +.byte 68,15,56,200,214
> > + movups -16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,222
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + movups 0(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,1
> > +.byte 68,15,56,200,203
> > + movups 16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,227
> > + pxor %xmm3,%xmm5
> > +.byte 15,56,201,243
> > + movups 32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,1
> > +.byte 68,15,56,200,212
> > + movups 48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,236
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,220
> > + cmpl $11,%r11d
> > + jb .Laesenclast7
> > + movups 64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast7
> > + movups 96(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast7:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%rcx),%xmm0
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,1
> > +.byte 68,15,56,200,205
> > + movups 32(%rdi),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,16(%rsi,%rdi,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,245
> > + pxor %xmm5,%xmm3
> > +.byte 15,56,201,229
> > + movups -64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,2
> > +.byte 68,15,56,200,214
> > + movups -48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,222
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + movups -32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,2
> > +.byte 68,15,56,200,203
> > + movups -16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,227
> > + pxor %xmm3,%xmm5
> > +.byte 15,56,201,243
> > + movups 0(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,2
> > +.byte 68,15,56,200,212
> > + movups 16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,236
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,220
> > + movups 32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,2
> > +.byte 68,15,56,200,205
> > + movups 48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,245
> > + pxor %xmm5,%xmm3
> > +.byte 15,56,201,229
> > + cmpl $11,%r11d
> > + jb .Laesenclast8
> > + movups 64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast8
> > + movups 96(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast8:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%rcx),%xmm0
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,2
> > +.byte 68,15,56,200,214
> > + movups 48(%rdi),%xmm14
> > + xorps %xmm15,%xmm14
> > + movups %xmm2,32(%rsi,%rdi,1)
> > + xorps %xmm14,%xmm2
> > + movups -80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,222
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + movups -64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,3
> > +.byte 68,15,56,200,203
> > + movups -48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.byte 15,56,202,227
> > + pxor %xmm3,%xmm5
> > +.byte 15,56,201,243
> > + movups -32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,3
> > +.byte 68,15,56,200,212
> > +.byte 15,56,202,236
> > + pxor %xmm4,%xmm6
> > + movups -16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,3
> > +.byte 68,15,56,200,205
> > +.byte 15,56,202,245
> > + movups 0(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movdqa %xmm12,%xmm5
> > + movdqa %xmm8,%xmm10
> > +.byte 69,15,58,204,193,3
> > +.byte 68,15,56,200,214
> > + movups 16(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + movdqa %xmm8,%xmm9
> > +.byte 69,15,58,204,194,3
> > +.byte 68,15,56,200,205
> > + movups 32(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 48(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + cmpl $11,%r11d
> > + jb .Laesenclast9
> > + movups 64(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 80(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > + je .Laesenclast9
> > + movups 96(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > + movups 112(%rcx),%xmm1
> > +.byte 102,15,56,220,208
> > +.Laesenclast9:
> > +.byte 102,15,56,221,209
> > + movups 16-112(%rcx),%xmm0
> > + decq %rdx
> > +
> > + paddd %xmm11,%xmm8
> > + movups %xmm2,48(%rsi,%rdi,1)
> > + leaq 64(%rdi),%rdi
> > + jnz .Loop_shaext
> > +
> > + pshufd $27,%xmm8,%xmm8
> > + pshufd $27,%xmm9,%xmm9
> > + movups %xmm2,(%r8)
> > + movdqu %xmm8,(%r9)
> > + movd %xmm9,16(%r9)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext
> > diff --git
a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-
> > x86_64.S
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..e257169287
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-sha256-x86_64.S
> > @@ -0,0 +1,69 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl aesni_cbc_sha256_enc
> > +.type aesni_cbc_sha256_enc,@function
> > +.align 16
> > +aesni_cbc_sha256_enc:
> > +.cfi_startproc
> > + xorl %eax,%eax
> > + cmpq $0,%rdi
> > + je .Lprobe
> > + ud2
> > +.Lprobe:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc
> > +
> > +.align 64
> > +.type K256,@object
> > +K256:
> > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > +
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1
> > +.long 0,0,0,0, 0,0,0,0
> > +.byte
> >
> 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,32,115,116,105,116,99,104,
3
> >
>
2,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,
> 9
> >
> 8,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,
> 1
> > 03,62,0
> > +.align 64
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> > new file mode 100644
> > index 0000000000..2bdb5cf251
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/aesni-x86_64.S
> > @@ -0,0 +1,4484 @@
> > +# 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
> > +
> > +.text
> > +
> > +.globl aesni_encrypt
> > +.type aesni_encrypt,@function
> > +.align 16
> > +aesni_encrypt:
> > +.cfi_startproc
> > + movups (%rdi),%xmm2
> > + movl 240(%rdx),%eax
> > + movups (%rdx),%xmm0
> > + movups 16(%rdx),%xmm1
> > + leaq 32(%rdx),%rdx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_1:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rdx),%xmm1
> > + leaq 16(%rdx),%rdx
> > + jnz .Loop_enc1_1
> > +.byte 102,15,56,221,209
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_encrypt,.-aesni_encrypt
> > +
> > +.globl aesni_decrypt
> > +.type aesni_decrypt,@function
> > +.align 16
> > +aesni_decrypt:
> > +.cfi_startproc
> > + movups (%rdi),%xmm2
> > + movl 240(%rdx),%eax
> > + movups (%rdx),%xmm0
> > + movups 16(%rdx),%xmm1
> > + leaq 32(%rdx),%rdx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_2:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rdx),%xmm1
> > + leaq 16(%rdx),%rdx
> > + jnz .Loop_dec1_2
> > +.byte 102,15,56,223,209
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_decrypt, .-aesni_decrypt
> > +.type _aesni_encrypt2,@function
> > +.align 16
> > +_aesni_encrypt2:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > + addq $16,%rax
> > +
> > +.Lenc_loop2:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lenc_loop2
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_encrypt2,.-_aesni_encrypt2
> > +.type _aesni_decrypt2,@function
> > +.align 16
> > +_aesni_decrypt2:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > + addq $16,%rax
> > +
> > +.Ldec_loop2:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Ldec_loop2
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,223,208
> > +.byte 102,15,56,223,216
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_decrypt2,.-_aesni_decrypt2
> > +.type _aesni_encrypt3,@function
> > +.align 16
> > +_aesni_encrypt3:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + xorps %xmm0,%xmm4
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > + addq $16,%rax
> > +
> > +.Lenc_loop3:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lenc_loop3
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > +.byte 102,15,56,221,224
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_encrypt3,.-_aesni_encrypt3
> > +.type _aesni_decrypt3,@function
> > +.align 16
> > +_aesni_decrypt3:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + xorps %xmm0,%xmm4
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > + addq $16,%rax
> > +
> > +.Ldec_loop3:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Ldec_loop3
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,223,208
> > +.byte 102,15,56,223,216
> > +.byte 102,15,56,223,224
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_decrypt3,.-_aesni_decrypt3
> > +.type _aesni_encrypt4,@function
> > +.align 16
> > +_aesni_encrypt4:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + xorps %xmm0,%xmm4
> > + xorps %xmm0,%xmm5
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 0x0f,0x1f,0x00
> > + addq $16,%rax
> > +
> > +.Lenc_loop4:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lenc_loop4
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > +.byte 102,15,56,221,224
> > +.byte 102,15,56,221,232
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_encrypt4,.-_aesni_encrypt4
> > +.type _aesni_decrypt4,@function
> > +.align 16
> > +_aesni_decrypt4:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + xorps %xmm0,%xmm4
> > + xorps %xmm0,%xmm5
> > + movups 32(%rcx),%xmm0
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 0x0f,0x1f,0x00
> > + addq $16,%rax
> > +
> > +.Ldec_loop4:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Ldec_loop4
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,223,208
> > +.byte 102,15,56,223,216
> > +.byte 102,15,56,223,224
> > +.byte 102,15,56,223,232
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_decrypt4,.-_aesni_decrypt4
> > +.type _aesni_encrypt6,@function
> > +.align 16
> > +_aesni_encrypt6:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + pxor %xmm0,%xmm3
> > + pxor %xmm0,%xmm4
> > +.byte 102,15,56,220,209
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 102,15,56,220,217
> > + pxor %xmm0,%xmm5
> > + pxor %xmm0,%xmm6
> > +.byte 102,15,56,220,225
> > + pxor %xmm0,%xmm7
> > + movups (%rcx,%rax,1),%xmm0
> > + addq $16,%rax
> > + jmp .Lenc_loop6_enter
> > +.align 16
> > +.Lenc_loop6:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.Lenc_loop6_enter:
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lenc_loop6
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > +.byte 102,15,56,221,224
> > +.byte 102,15,56,221,232
> > +.byte 102,15,56,221,240
> > +.byte 102,15,56,221,248
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_encrypt6,.-_aesni_encrypt6
> > +.type _aesni_decrypt6,@function
> > +.align 16
> > +_aesni_decrypt6:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + pxor %xmm0,%xmm3
> > + pxor %xmm0,%xmm4
> > +.byte 102,15,56,222,209
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 102,15,56,222,217
> > + pxor %xmm0,%xmm5
> > + pxor %xmm0,%xmm6
> > +.byte 102,15,56,222,225
> > + pxor %xmm0,%xmm7
> > + movups (%rcx,%rax,1),%xmm0
> > + addq $16,%rax
> > + jmp .Ldec_loop6_enter
> > +.align 16
> > +.Ldec_loop6:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.Ldec_loop6_enter:
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Ldec_loop6
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,15,56,223,208
> > +.byte 102,15,56,223,216
> > +.byte 102,15,56,223,224
> > +.byte 102,15,56,223,232
> > +.byte 102,15,56,223,240
> > +.byte 102,15,56,223,248
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_decrypt6,.-_aesni_decrypt6
> > +.type _aesni_encrypt8,@function
> > +.align 16
> > +_aesni_encrypt8:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + pxor %xmm0,%xmm4
> > + pxor %xmm0,%xmm5
> > + pxor %xmm0,%xmm6
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 102,15,56,220,209
> > + pxor %xmm0,%xmm7
> > + pxor %xmm0,%xmm8
> > +.byte 102,15,56,220,217
> > + pxor %xmm0,%xmm9
> > + movups (%rcx,%rax,1),%xmm0
> > + addq $16,%rax
> > + jmp .Lenc_loop8_inner
> > +.align 16
> > +.Lenc_loop8:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.Lenc_loop8_inner:
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > +.Lenc_loop8_enter:
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lenc_loop8
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > +.byte 102,15,56,221,224
> > +.byte 102,15,56,221,232
> > +.byte 102,15,56,221,240
> > +.byte 102,15,56,221,248
> > +.byte 102,68,15,56,221,192
> > +.byte 102,68,15,56,221,200
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_encrypt8,.-_aesni_encrypt8
> > +.type _aesni_decrypt8,@function
> > +.align 16
> > +_aesni_decrypt8:
> > +.cfi_startproc
> > + movups (%rcx),%xmm0
> > + shll $4,%eax
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm2
> > + xorps %xmm0,%xmm3
> > + pxor %xmm0,%xmm4
> > + pxor %xmm0,%xmm5
> > + pxor %xmm0,%xmm6
> > + leaq 32(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 102,15,56,222,209
> > + pxor %xmm0,%xmm7
> > + pxor %xmm0,%xmm8
> > +.byte 102,15,56,222,217
> > + pxor %xmm0,%xmm9
> > + movups (%rcx,%rax,1),%xmm0
> > + addq $16,%rax
> > + jmp .Ldec_loop8_inner
> > +.align 16
> > +.Ldec_loop8:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.Ldec_loop8_inner:
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > +.Ldec_loop8_enter:
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Ldec_loop8
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > +.byte 102,15,56,223,208
> > +.byte 102,15,56,223,216
> > +.byte 102,15,56,223,224
> > +.byte 102,15,56,223,232
> > +.byte 102,15,56,223,240
> > +.byte 102,15,56,223,248
> > +.byte 102,68,15,56,223,192
> > +.byte 102,68,15,56,223,200
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _aesni_decrypt8,.-_aesni_decrypt8
> > +.globl aesni_ecb_encrypt
> > +.type aesni_ecb_encrypt,@function
> > +.align 16
> > +aesni_ecb_encrypt:
> > +.cfi_startproc
> > + andq $-16,%rdx
> > + jz .Lecb_ret
> > +
> > + movl 240(%rcx),%eax
> > + movups (%rcx),%xmm0
> > + movq %rcx,%r11
> > + movl %eax,%r10d
> > + testl %r8d,%r8d
> > + jz .Lecb_decrypt
> > +
> > + cmpq $0x80,%rdx
> > + jb .Lecb_enc_tail
> > +
> > + movdqu (%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + movdqu 48(%rdi),%xmm5
> > + movdqu 64(%rdi),%xmm6
> > + movdqu 80(%rdi),%xmm7
> > + movdqu 96(%rdi),%xmm8
> > + movdqu 112(%rdi),%xmm9
> > + leaq 128(%rdi),%rdi
> > + subq $0x80,%rdx
> > + jmp .Lecb_enc_loop8_enter
> > +.align 16
> > +.Lecb_enc_loop8:
> > + movups %xmm2,(%rsi)
> > + movq %r11,%rcx
> > + movdqu (%rdi),%xmm2
> > + movl %r10d,%eax
> > + movups %xmm3,16(%rsi)
> > + movdqu 16(%rdi),%xmm3
> > + movups %xmm4,32(%rsi)
> > + movdqu 32(%rdi),%xmm4
> > + movups %xmm5,48(%rsi)
> > + movdqu 48(%rdi),%xmm5
> > + movups %xmm6,64(%rsi)
> > + movdqu 64(%rdi),%xmm6
> > + movups %xmm7,80(%rsi)
> > + movdqu 80(%rdi),%xmm7
> > + movups %xmm8,96(%rsi)
> > + movdqu 96(%rdi),%xmm8
> > + movups %xmm9,112(%rsi)
> > + leaq 128(%rsi),%rsi
> > + movdqu 112(%rdi),%xmm9
> > + leaq 128(%rdi),%rdi
> > +.Lecb_enc_loop8_enter:
> > +
> > + call _aesni_encrypt8
> > +
> > + subq $0x80,%rdx
> > + jnc .Lecb_enc_loop8
> > +
> > + movups %xmm2,(%rsi)
> > + movq %r11,%rcx
> > + movups %xmm3,16(%rsi)
> > + movl %r10d,%eax
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > + movups %xmm7,80(%rsi)
> > + movups %xmm8,96(%rsi)
> > + movups %xmm9,112(%rsi)
> > + leaq 128(%rsi),%rsi
> > + addq $0x80,%rdx
> > + jz .Lecb_ret
> > +
> > +.Lecb_enc_tail:
> > + movups (%rdi),%xmm2
> > + cmpq $0x20,%rdx
> > + jb .Lecb_enc_one
> > + movups 16(%rdi),%xmm3
> > + je .Lecb_enc_two
> > + movups 32(%rdi),%xmm4
> > + cmpq $0x40,%rdx
> > + jb .Lecb_enc_three
> > + movups 48(%rdi),%xmm5
> > + je .Lecb_enc_four
> > + movups 64(%rdi),%xmm6
> > + cmpq $0x60,%rdx
> > + jb .Lecb_enc_five
> > + movups 80(%rdi),%xmm7
> > + je .Lecb_enc_six
> > + movdqu 96(%rdi),%xmm8
> > + xorps %xmm9,%xmm9
> > + call _aesni_encrypt8
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > + movups %xmm7,80(%rsi)
> > + movups %xmm8,96(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_one:
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_3:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_3
> > +.byte 102,15,56,221,209
> > + movups %xmm2,(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_two:
> > + call _aesni_encrypt2
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_three:
> > + call _aesni_encrypt3
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_four:
> > + call _aesni_encrypt4
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_five:
> > + xorps %xmm7,%xmm7
> > + call _aesni_encrypt6
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_enc_six:
> > + call _aesni_encrypt6
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > + movups %xmm7,80(%rsi)
> > + jmp .Lecb_ret
> > +
> > +.align 16
> > +.Lecb_decrypt:
> > + cmpq $0x80,%rdx
> > + jb .Lecb_dec_tail
> > +
> > + movdqu (%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + movdqu 48(%rdi),%xmm5
> > + movdqu 64(%rdi),%xmm6
> > + movdqu 80(%rdi),%xmm7
> > + movdqu 96(%rdi),%xmm8
> > + movdqu 112(%rdi),%xmm9
> > + leaq 128(%rdi),%rdi
> > + subq $0x80,%rdx
> > + jmp .Lecb_dec_loop8_enter
> > +.align 16
> > +.Lecb_dec_loop8:
> > + movups %xmm2,(%rsi)
> > + movq %r11,%rcx
> > + movdqu (%rdi),%xmm2
> > + movl %r10d,%eax
> > + movups %xmm3,16(%rsi)
> > + movdqu 16(%rdi),%xmm3
> > + movups %xmm4,32(%rsi)
> > + movdqu 32(%rdi),%xmm4
> > + movups %xmm5,48(%rsi)
> > + movdqu 48(%rdi),%xmm5
> > + movups %xmm6,64(%rsi)
> > + movdqu 64(%rdi),%xmm6
> > + movups %xmm7,80(%rsi)
> > + movdqu 80(%rdi),%xmm7
> > + movups %xmm8,96(%rsi)
> > + movdqu 96(%rdi),%xmm8
> > + movups %xmm9,112(%rsi)
> > + leaq 128(%rsi),%rsi
> > + movdqu 112(%rdi),%xmm9
> > + leaq 128(%rdi),%rdi
> > +.Lecb_dec_loop8_enter:
> > +
> > + call _aesni_decrypt8
> > +
> > + movups (%r11),%xmm0
> > + subq $0x80,%rdx
> > + jnc .Lecb_dec_loop8
> > +
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movq %r11,%rcx
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movl %r10d,%eax
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + movups %xmm7,80(%rsi)
> > + pxor %xmm7,%xmm7
> > + movups %xmm8,96(%rsi)
> > + pxor %xmm8,%xmm8
> > + movups %xmm9,112(%rsi)
> > + pxor %xmm9,%xmm9
> > + leaq 128(%rsi),%rsi
> > + addq $0x80,%rdx
> > + jz .Lecb_ret
> > +
> > +.Lecb_dec_tail:
> > + movups (%rdi),%xmm2
> > + cmpq $0x20,%rdx
> > + jb .Lecb_dec_one
> > + movups 16(%rdi),%xmm3
> > + je .Lecb_dec_two
> > + movups 32(%rdi),%xmm4
> > + cmpq $0x40,%rdx
> > + jb .Lecb_dec_three
> > + movups 48(%rdi),%xmm5
> > + je .Lecb_dec_four
> > + movups 64(%rdi),%xmm6
> > + cmpq $0x60,%rdx
> > + jb .Lecb_dec_five
> > + movups 80(%rdi),%xmm7
> > + je .Lecb_dec_six
> > + movups 96(%rdi),%xmm8
> > + movups (%rcx),%xmm0
> > + xorps %xmm9,%xmm9
> > + call _aesni_decrypt8
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + movups %xmm7,80(%rsi)
> > + pxor %xmm7,%xmm7
> > + movups %xmm8,96(%rsi)
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_one:
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_4:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_4
> > +.byte 102,15,56,223,209
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_two:
> > + call _aesni_decrypt2
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_three:
> > + call _aesni_decrypt3
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_four:
> > + call _aesni_decrypt4
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_five:
> > + xorps %xmm7,%xmm7
> > + call _aesni_decrypt6
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + jmp .Lecb_ret
> > +.align 16
> > +.Lecb_dec_six:
> > + call _aesni_decrypt6
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + movups %xmm7,80(%rsi)
> > + pxor %xmm7,%xmm7
> > +
> > +.Lecb_ret:
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ecb_encrypt,.-aesni_ecb_encrypt
> > +.globl aesni_ccm64_encrypt_blocks
> > +.type aesni_ccm64_encrypt_blocks,@function
> > +.align 16
> > +aesni_ccm64_encrypt_blocks:
> > +.cfi_startproc
> > + movl 240(%rcx),%eax
> > + movdqu (%r8),%xmm6
> > + movdqa .Lincrement64(%rip),%xmm9
> > + movdqa .Lbswap_mask(%rip),%xmm7
> > +
> > + shll $4,%eax
> > + movl $16,%r10d
> > + leaq 0(%rcx),%r11
> > + movdqu (%r9),%xmm3
> > + movdqa %xmm6,%xmm2
> > + leaq 32(%rcx,%rax,1),%rcx
> > +.byte 102,15,56,0,247
> > + subq %rax,%r10
> > + jmp .Lccm64_enc_outer
> > +.align 16
> > +.Lccm64_enc_outer:
> > + movups (%r11),%xmm0
> > + movq %r10,%rax
> > + movups (%rdi),%xmm8
> > +
> > + xorps %xmm0,%xmm2
> > + movups 16(%r11),%xmm1
> > + xorps %xmm8,%xmm0
> > + xorps %xmm0,%xmm3
> > + movups 32(%r11),%xmm0
> > +
> > +.Lccm64_enc2_loop:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lccm64_enc2_loop
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + paddq %xmm9,%xmm6
> > + decq %rdx
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > +
> > + leaq 16(%rdi),%rdi
> > + xorps %xmm2,%xmm8
> > + movdqa %xmm6,%xmm2
> > + movups %xmm8,(%rsi)
> > +.byte 102,15,56,0,215
> > + leaq 16(%rsi),%rsi
> > + jnz .Lccm64_enc_outer
> > +
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,(%r9)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm8,%xmm8
> > + pxor %xmm6,%xmm6
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks
> > +.globl aesni_ccm64_decrypt_blocks
> > +.type aesni_ccm64_decrypt_blocks,@function
> > +.align 16
> > +aesni_ccm64_decrypt_blocks:
> > +.cfi_startproc
> > + movl 240(%rcx),%eax
> > + movups (%r8),%xmm6
> > + movdqu (%r9),%xmm3
> > + movdqa .Lincrement64(%rip),%xmm9
> > + movdqa .Lbswap_mask(%rip),%xmm7
> > +
> > + movaps %xmm6,%xmm2
> > + movl %eax,%r10d
> > + movq %rcx,%r11
> > +.byte 102,15,56,0,247
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_5:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_5
> > +.byte 102,15,56,221,209
> > + shll $4,%r10d
> > + movl $16,%eax
> > + movups (%rdi),%xmm8
> > + paddq %xmm9,%xmm6
> > + leaq 16(%rdi),%rdi
> > + subq %r10,%rax
> > + leaq 32(%r11,%r10,1),%rcx
> > + movq %rax,%r10
> > + jmp .Lccm64_dec_outer
> > +.align 16
> > +.Lccm64_dec_outer:
> > + xorps %xmm2,%xmm8
> > + movdqa %xmm6,%xmm2
> > + movups %xmm8,(%rsi)
> > + leaq 16(%rsi),%rsi
> > +.byte 102,15,56,0,215
> > +
> > + subq $1,%rdx
> > + jz .Lccm64_dec_break
> > +
> > + movups (%r11),%xmm0
> > + movq %r10,%rax
> > + movups 16(%r11),%xmm1
> > + xorps %xmm0,%xmm8
> > + xorps %xmm0,%xmm2
> > + xorps %xmm8,%xmm3
> > + movups 32(%r11),%xmm0
> > + jmp .Lccm64_dec2_loop
> > +.align 16
> > +.Lccm64_dec2_loop:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Lccm64_dec2_loop
> > + movups (%rdi),%xmm8
> > + paddq %xmm9,%xmm6
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,221,208
> > +.byte 102,15,56,221,216
> > + leaq 16(%rdi),%rdi
> > + jmp .Lccm64_dec_outer
> > +
> > +.align 16
> > +.Lccm64_dec_break:
> > +
> > + movl 240(%r11),%eax
> > + movups (%r11),%xmm0
> > + movups 16(%r11),%xmm1
> > + xorps %xmm0,%xmm8
> > + leaq 32(%r11),%r11
> > + xorps %xmm8,%xmm3
> > +.Loop_enc1_6:
> > +.byte 102,15,56,220,217
> > + decl %eax
> > + movups (%r11),%xmm1
> > + leaq 16(%r11),%r11
> > + jnz .Loop_enc1_6
> > +.byte 102,15,56,221,217
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + movups %xmm3,(%r9)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm8,%xmm8
> > + pxor %xmm6,%xmm6
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks
> > +.globl aesni_ctr32_encrypt_blocks
> > +.type aesni_ctr32_encrypt_blocks,@function
> > +.align 16
> > +aesni_ctr32_encrypt_blocks:
> > +.cfi_startproc
> > + cmpq $1,%rdx
> > + jne .Lctr32_bulk
> > +
> > +
> > +
> > + movups (%r8),%xmm2
> > + movups (%rdi),%xmm3
> > + movl 240(%rcx),%edx
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_7:
> > +.byte 102,15,56,220,209
> > + decl %edx
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_7
> > +.byte 102,15,56,221,209
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + xorps %xmm3,%xmm2
> > + pxor %xmm3,%xmm3
> > + movups %xmm2,(%rsi)
> > + xorps %xmm2,%xmm2
> > + jmp .Lctr32_epilogue
> > +
> > +.align 16
> > +.Lctr32_bulk:
> > + leaq (%rsp),%r11
> > +.cfi_def_cfa_register %r11
> > + pushq %rbp
> > +.cfi_offset %rbp,-16
> > + subq $128,%rsp
> > + andq $-16,%rsp
> > +
> > +
> > +
> > +
> > + movdqu (%r8),%xmm2
> > + movdqu (%rcx),%xmm0
> > + movl 12(%r8),%r8d
> > + pxor %xmm0,%xmm2
> > + movl 12(%rcx),%ebp
> > + movdqa %xmm2,0(%rsp)
> > + bswapl %r8d
> > + movdqa %xmm2,%xmm3
> > + movdqa %xmm2,%xmm4
> > + movdqa %xmm2,%xmm5
> > + movdqa %xmm2,64(%rsp)
> > + movdqa %xmm2,80(%rsp)
> > + movdqa %xmm2,96(%rsp)
> > + movq %rdx,%r10
> > + movdqa %xmm2,112(%rsp)
> > +
> > + leaq 1(%r8),%rax
> > + leaq 2(%r8),%rdx
> > + bswapl %eax
> > + bswapl %edx
> > + xorl %ebp,%eax
> > + xorl %ebp,%edx
> > +.byte 102,15,58,34,216,3
> > + leaq 3(%r8),%rax
> > + movdqa %xmm3,16(%rsp)
> > +.byte 102,15,58,34,226,3
> > + bswapl %eax
> > + movq %r10,%rdx
> > + leaq 4(%r8),%r10
> > + movdqa %xmm4,32(%rsp)
> > + xorl %ebp,%eax
> > + bswapl %r10d
> > +.byte 102,15,58,34,232,3
> > + xorl %ebp,%r10d
> > + movdqa %xmm5,48(%rsp)
> > + leaq 5(%r8),%r9
> > + movl %r10d,64+12(%rsp)
> > + bswapl %r9d
> > + leaq 6(%r8),%r10
> > + movl 240(%rcx),%eax
> > + xorl %ebp,%r9d
> > + bswapl %r10d
> > + movl %r9d,80+12(%rsp)
> > + xorl %ebp,%r10d
> > + leaq 7(%r8),%r9
> > + movl %r10d,96+12(%rsp)
> > + bswapl %r9d
> > + movl OPENSSL_ia32cap_P+4(%rip),%r10d
> > + xorl %ebp,%r9d
> > + andl $71303168,%r10d
> > + movl %r9d,112+12(%rsp)
> > +
> > + movups 16(%rcx),%xmm1
> > +
> > + movdqa 64(%rsp),%xmm6
> > + movdqa 80(%rsp),%xmm7
> > +
> > + cmpq $8,%rdx
> > + jb .Lctr32_tail
> > +
> > + subq $6,%rdx
> > + cmpl $4194304,%r10d
> > + je .Lctr32_6x
> > +
> > + leaq 128(%rcx),%rcx
> > + subq $2,%rdx
> > + jmp .Lctr32_loop8
> > +
> > +.align 16
> > +.Lctr32_6x:
> > + shll $4,%eax
> > + movl $48,%r10d
> > + bswapl %ebp
> > + leaq 32(%rcx,%rax,1),%rcx
> > + subq %rax,%r10
> > + jmp .Lctr32_loop6
> > +
> > +.align 16
> > +.Lctr32_loop6:
> > + addl $6,%r8d
> > + movups -48(%rcx,%r10,1),%xmm0
> > +.byte 102,15,56,220,209
> > + movl %r8d,%eax
> > + xorl %ebp,%eax
> > +.byte 102,15,56,220,217
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,12
> > + leal 1(%r8),%eax
> > +.byte 102,15,56,220,225
> > + xorl %ebp,%eax
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,28
> > +.byte 102,15,56,220,233
> > + leal 2(%r8),%eax
> > + xorl %ebp,%eax
> > +.byte 102,15,56,220,241
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,44
> > + leal 3(%r8),%eax
> > +.byte 102,15,56,220,249
> > + movups -32(%rcx,%r10,1),%xmm1
> > + xorl %ebp,%eax
> > +
> > +.byte 102,15,56,220,208
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,60
> > + leal 4(%r8),%eax
> > +.byte 102,15,56,220,216
> > + xorl %ebp,%eax
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,76
> > +.byte 102,15,56,220,224
> > + leal 5(%r8),%eax
> > + xorl %ebp,%eax
> > +.byte 102,15,56,220,232
> > +.byte 0x0f,0x38,0xf1,0x44,0x24,92
> > + movq %r10,%rax
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups -16(%rcx,%r10,1),%xmm0
> > +
> > + call .Lenc_loop6
> > +
> > + movdqu (%rdi),%xmm8
> > + movdqu 16(%rdi),%xmm9
> > + movdqu 32(%rdi),%xmm10
> > + movdqu 48(%rdi),%xmm11
> > + movdqu 64(%rdi),%xmm12
> > + movdqu 80(%rdi),%xmm13
> > + leaq 96(%rdi),%rdi
> > + movups -64(%rcx,%r10,1),%xmm1
> > + pxor %xmm2,%xmm8
> > + movaps 0(%rsp),%xmm2
> > + pxor %xmm3,%xmm9
> > + movaps 16(%rsp),%xmm3
> > + pxor %xmm4,%xmm10
> > + movaps 32(%rsp),%xmm4
> > + pxor %xmm5,%xmm11
> > + movaps 48(%rsp),%xmm5
> > + pxor %xmm6,%xmm12
> > + movaps 64(%rsp),%xmm6
> > + pxor %xmm7,%xmm13
> > + movaps 80(%rsp),%xmm7
> > + movdqu %xmm8,(%rsi)
> > + movdqu %xmm9,16(%rsi)
> > + movdqu %xmm10,32(%rsi)
> > + movdqu %xmm11,48(%rsi)
> > + movdqu %xmm12,64(%rsi)
> > + movdqu %xmm13,80(%rsi)
> > + leaq 96(%rsi),%rsi
> > +
> > + subq $6,%rdx
> > + jnc .Lctr32_loop6
> > +
> > + addq $6,%rdx
> > + jz .Lctr32_done
> > +
> > + leal -48(%r10),%eax
> > + leaq -80(%rcx,%r10,1),%rcx
> > + negl %eax
> > + shrl $4,%eax
> > + jmp .Lctr32_tail
> > +
> > +.align 32
> > +.Lctr32_loop8:
> > + addl $8,%r8d
> > + movdqa 96(%rsp),%xmm8
> > +.byte 102,15,56,220,209
> > + movl %r8d,%r9d
> > + movdqa 112(%rsp),%xmm9
> > +.byte 102,15,56,220,217
> > + bswapl %r9d
> > + movups 32-128(%rcx),%xmm0
> > +.byte 102,15,56,220,225
> > + xorl %ebp,%r9d
> > + nop
> > +.byte 102,15,56,220,233
> > + movl %r9d,0+12(%rsp)
> > + leaq 1(%r8),%r9
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 48-128(%rcx),%xmm1
> > + bswapl %r9d
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movl %r9d,16+12(%rsp)
> > + leaq 2(%r8),%r9
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 64-128(%rcx),%xmm0
> > + bswapl %r9d
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movl %r9d,32+12(%rsp)
> > + leaq 3(%r8),%r9
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 80-128(%rcx),%xmm1
> > + bswapl %r9d
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movl %r9d,48+12(%rsp)
> > + leaq 4(%r8),%r9
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 96-128(%rcx),%xmm0
> > + bswapl %r9d
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movl %r9d,64+12(%rsp)
> > + leaq 5(%r8),%r9
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 112-128(%rcx),%xmm1
> > + bswapl %r9d
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movl %r9d,80+12(%rsp)
> > + leaq 6(%r8),%r9
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 128-128(%rcx),%xmm0
> > + bswapl %r9d
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + xorl %ebp,%r9d
> > +.byte 0x66,0x90
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movl %r9d,96+12(%rsp)
> > + leaq 7(%r8),%r9
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 144-128(%rcx),%xmm1
> > + bswapl %r9d
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > + xorl %ebp,%r9d
> > + movdqu 0(%rdi),%xmm10
> > +.byte 102,15,56,220,232
> > + movl %r9d,112+12(%rsp)
> > + cmpl $11,%eax
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 160-128(%rcx),%xmm0
> > +
> > + jb .Lctr32_enc_done
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 176-128(%rcx),%xmm1
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 192-128(%rcx),%xmm0
> > + je .Lctr32_enc_done
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movups 208-128(%rcx),%xmm1
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > +.byte 102,68,15,56,220,192
> > +.byte 102,68,15,56,220,200
> > + movups 224-128(%rcx),%xmm0
> > + jmp .Lctr32_enc_done
> > +
> > +.align 16
> > +.Lctr32_enc_done:
> > + movdqu 16(%rdi),%xmm11
> > + pxor %xmm0,%xmm10
> > + movdqu 32(%rdi),%xmm12
> > + pxor %xmm0,%xmm11
> > + movdqu 48(%rdi),%xmm13
> > + pxor %xmm0,%xmm12
> > + movdqu 64(%rdi),%xmm14
> > + pxor %xmm0,%xmm13
> > + movdqu 80(%rdi),%xmm15
> > + pxor %xmm0,%xmm14
> > + pxor %xmm0,%xmm15
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +.byte 102,68,15,56,220,201
> > + movdqu 96(%rdi),%xmm1
> > + leaq 128(%rdi),%rdi
> > +
> > +.byte 102,65,15,56,221,210
> > + pxor %xmm0,%xmm1
> > + movdqu 112-128(%rdi),%xmm10
> > +.byte 102,65,15,56,221,219
> > + pxor %xmm0,%xmm10
> > + movdqa 0(%rsp),%xmm11
> > +.byte 102,65,15,56,221,228
> > +.byte 102,65,15,56,221,237
> > + movdqa 16(%rsp),%xmm12
> > + movdqa 32(%rsp),%xmm13
> > +.byte 102,65,15,56,221,246
> > +.byte 102,65,15,56,221,255
> > + movdqa 48(%rsp),%xmm14
> > + movdqa 64(%rsp),%xmm15
> > +.byte 102,68,15,56,221,193
> > + movdqa 80(%rsp),%xmm0
> > + movups 16-128(%rcx),%xmm1
> > +.byte 102,69,15,56,221,202
> > +
> > + movups %xmm2,(%rsi)
> > + movdqa %xmm11,%xmm2
> > + movups %xmm3,16(%rsi)
> > + movdqa %xmm12,%xmm3
> > + movups %xmm4,32(%rsi)
> > + movdqa %xmm13,%xmm4
> > + movups %xmm5,48(%rsi)
> > + movdqa %xmm14,%xmm5
> > + movups %xmm6,64(%rsi)
> > + movdqa %xmm15,%xmm6
> > + movups %xmm7,80(%rsi)
> > + movdqa %xmm0,%xmm7
> > + movups %xmm8,96(%rsi)
> > + movups %xmm9,112(%rsi)
> > + leaq 128(%rsi),%rsi
> > +
> > + subq $8,%rdx
> > + jnc .Lctr32_loop8
> > +
> > + addq $8,%rdx
> > + jz .Lctr32_done
> > + leaq -128(%rcx),%rcx
> > +
> > +.Lctr32_tail:
> > +
> > +
> > + leaq 16(%rcx),%rcx
> > + cmpq $4,%rdx
> > + jb .Lctr32_loop3
> > + je .Lctr32_loop4
> > +
> > +
> > + shll $4,%eax
> > + movdqa 96(%rsp),%xmm8
> > + pxor %xmm9,%xmm9
> > +
> > + movups 16(%rcx),%xmm0
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > + leaq 32-16(%rcx,%rax,1),%rcx
> > + negq %rax
> > +.byte 102,15,56,220,225
> > + addq $16,%rax
> > + movups (%rdi),%xmm10
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > + movups 16(%rdi),%xmm11
> > + movups 32(%rdi),%xmm12
> > +.byte 102,15,56,220,249
> > +.byte 102,68,15,56,220,193
> > +
> > + call .Lenc_loop8_enter
> > +
> > + movdqu 48(%rdi),%xmm13
> > + pxor %xmm10,%xmm2
> > + movdqu 64(%rdi),%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm10,%xmm6
> > + movdqu %xmm5,48(%rsi)
> > + movdqu %xmm6,64(%rsi)
> > + cmpq $6,%rdx
> > + jb .Lctr32_done
> > +
> > + movups 80(%rdi),%xmm11
> > + xorps %xmm11,%xmm7
> > + movups %xmm7,80(%rsi)
> > + je .Lctr32_done
> > +
> > + movups 96(%rdi),%xmm12
> > + xorps %xmm12,%xmm8
> > + movups %xmm8,96(%rsi)
> > + jmp .Lctr32_done
> > +
> > +.align 32
> > +.Lctr32_loop4:
> > +.byte 102,15,56,220,209
> > + leaq 16(%rcx),%rcx
> > + decl %eax
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups (%rcx),%xmm1
> > + jnz .Lctr32_loop4
> > +.byte 102,15,56,221,209
> > +.byte 102,15,56,221,217
> > + movups (%rdi),%xmm10
> > + movups 16(%rdi),%xmm11
> > +.byte 102,15,56,221,225
> > +.byte 102,15,56,221,233
> > + movups 32(%rdi),%xmm12
> > + movups 48(%rdi),%xmm13
> > +
> > + xorps %xmm10,%xmm2
> > + movups %xmm2,(%rsi)
> > + xorps %xmm11,%xmm3
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm5,48(%rsi)
> > + jmp .Lctr32_done
> > +
> > +.align 32
> > +.Lctr32_loop3:
> > +.byte 102,15,56,220,209
> > + leaq 16(%rcx),%rcx
> > + decl %eax
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > + movups (%rcx),%xmm1
> > + jnz .Lctr32_loop3
> > +.byte 102,15,56,221,209
> > +.byte 102,15,56,221,217
> > +.byte 102,15,56,221,225
> > +
> > + movups (%rdi),%xmm10
> > + xorps %xmm10,%xmm2
> > + movups %xmm2,(%rsi)
> > + cmpq $2,%rdx
> > + jb .Lctr32_done
> > +
> > + movups 16(%rdi),%xmm11
> > + xorps %xmm11,%xmm3
> > + movups %xmm3,16(%rsi)
> > + je .Lctr32_done
> > +
> > + movups 32(%rdi),%xmm12
> > + xorps %xmm12,%xmm4
> > + movups %xmm4,32(%rsi)
> > +
> > +.Lctr32_done:
> > + xorps %xmm0,%xmm0
> > + xorl %ebp,%ebp
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + movaps %xmm0,0(%rsp)
> > + pxor %xmm8,%xmm8
> > + movaps %xmm0,16(%rsp)
> > + pxor %xmm9,%xmm9
> > + movaps %xmm0,32(%rsp)
> > + pxor %xmm10,%xmm10
> > + movaps %xmm0,48(%rsp)
> > + pxor %xmm11,%xmm11
> > + movaps %xmm0,64(%rsp)
> > + pxor %xmm12,%xmm12
> > + movaps %xmm0,80(%rsp)
> > + pxor %xmm13,%xmm13
> > + movaps %xmm0,96(%rsp)
> > + pxor %xmm14,%xmm14
> > + movaps %xmm0,112(%rsp)
> > + pxor %xmm15,%xmm15
> > + movq -8(%r11),%rbp
> > +.cfi_restore %rbp
> > + leaq (%r11),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lctr32_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ctr32_encrypt_blocks,.-aesni_ctr32_encrypt_blocks
> > +.globl aesni_xts_encrypt
> > +.type aesni_xts_encrypt,@function
> > +.align 16
> > +aesni_xts_encrypt:
> > +.cfi_startproc
> > + leaq (%rsp),%r11
> > +.cfi_def_cfa_register %r11
> > + pushq %rbp
> > +.cfi_offset %rbp,-16
> > + subq $112,%rsp
> > + andq $-16,%rsp
> > + movups (%r9),%xmm2
> > + movl 240(%r8),%eax
> > + movl 240(%rcx),%r10d
> > + movups (%r8),%xmm0
> > + movups 16(%r8),%xmm1
> > + leaq 32(%r8),%r8
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_8:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%r8),%xmm1
> > + leaq 16(%r8),%r8
> > + jnz .Loop_enc1_8
> > +.byte 102,15,56,221,209
> > + movups (%rcx),%xmm0
> > + movq %rcx,%rbp
> > + movl %r10d,%eax
> > + shll $4,%r10d
> > + movq %rdx,%r9
> > + andq $-16,%rdx
> > +
> > + movups 16(%rcx,%r10,1),%xmm1
> > +
> > + movdqa .Lxts_magic(%rip),%xmm8
> > + movdqa %xmm2,%xmm15
> > + pshufd $0x5f,%xmm2,%xmm9
> > + pxor %xmm0,%xmm1
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm10
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm10
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm11
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm11
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm12
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm12
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm13
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm13
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm15,%xmm14
> > + psrad $31,%xmm9
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm9
> > + pxor %xmm0,%xmm14
> > + pxor %xmm9,%xmm15
> > + movaps %xmm1,96(%rsp)
> > +
> > + subq $96,%rdx
> > + jc .Lxts_enc_short
> > +
> > + movl $16+96,%eax
> > + leaq 32(%rbp,%r10,1),%rcx
> > + subq %r10,%rax
> > + movups 16(%rbp),%xmm1
> > + movq %rax,%r10
> > + leaq .Lxts_magic(%rip),%r8
> > + jmp .Lxts_enc_grandloop
> > +
> > +.align 32
> > +.Lxts_enc_grandloop:
> > + movdqu 0(%rdi),%xmm2
> > + movdqa %xmm0,%xmm8
> > + movdqu 16(%rdi),%xmm3
> > + pxor %xmm10,%xmm2
> > + movdqu 32(%rdi),%xmm4
> > + pxor %xmm11,%xmm3
> > +.byte 102,15,56,220,209
> > + movdqu 48(%rdi),%xmm5
> > + pxor %xmm12,%xmm4
> > +.byte 102,15,56,220,217
> > + movdqu 64(%rdi),%xmm6
> > + pxor %xmm13,%xmm5
> > +.byte 102,15,56,220,225
> > + movdqu 80(%rdi),%xmm7
> > + pxor %xmm15,%xmm8
> > + movdqa 96(%rsp),%xmm9
> > + pxor %xmm14,%xmm6
> > +.byte 102,15,56,220,233
> > + movups 32(%rbp),%xmm0
> > + leaq 96(%rdi),%rdi
> > + pxor %xmm8,%xmm7
> > +
> > + pxor %xmm9,%xmm10
> > +.byte 102,15,56,220,241
> > + pxor %xmm9,%xmm11
> > + movdqa %xmm10,0(%rsp)
> > +.byte 102,15,56,220,249
> > + movups 48(%rbp),%xmm1
> > + pxor %xmm9,%xmm12
> > +
> > +.byte 102,15,56,220,208
> > + pxor %xmm9,%xmm13
> > + movdqa %xmm11,16(%rsp)
> > +.byte 102,15,56,220,216
> > + pxor %xmm9,%xmm14
> > + movdqa %xmm12,32(%rsp)
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + pxor %xmm9,%xmm8
> > + movdqa %xmm14,64(%rsp)
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups 64(%rbp),%xmm0
> > + movdqa %xmm8,80(%rsp)
> > + pshufd $0x5f,%xmm15,%xmm9
> > + jmp .Lxts_enc_loop6
> > +.align 32
> > +.Lxts_enc_loop6:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > + movups -64(%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups -80(%rcx,%rax,1),%xmm0
> > + jnz .Lxts_enc_loop6
> > +
> > + movdqa (%r8),%xmm8
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,220,209
> > + paddq %xmm15,%xmm15
> > + psrad $31,%xmm14
> > +.byte 102,15,56,220,217
> > + pand %xmm8,%xmm14
> > + movups (%rbp),%xmm10
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > + pxor %xmm14,%xmm15
> > + movaps %xmm10,%xmm11
> > +.byte 102,15,56,220,249
> > + movups -64(%rcx),%xmm1
> > +
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,220,208
> > + paddd %xmm9,%xmm9
> > + pxor %xmm15,%xmm10
> > +.byte 102,15,56,220,216
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + pand %xmm8,%xmm14
> > + movaps %xmm11,%xmm12
> > +.byte 102,15,56,220,240
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,220,248
> > + movups -48(%rcx),%xmm0
> > +
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,220,209
> > + pxor %xmm15,%xmm11
> > + psrad $31,%xmm14
> > +.byte 102,15,56,220,217
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movdqa %xmm13,48(%rsp)
> > + pxor %xmm14,%xmm15
> > +.byte 102,15,56,220,241
> > + movaps %xmm12,%xmm13
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,220,249
> > + movups -32(%rcx),%xmm1
> > +
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,220,208
> > + pxor %xmm15,%xmm12
> > + psrad $31,%xmm14
> > +.byte 102,15,56,220,216
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > + pxor %xmm14,%xmm15
> > + movaps %xmm13,%xmm14
> > +.byte 102,15,56,220,248
> > +
> > + movdqa %xmm9,%xmm0
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,220,209
> > + pxor %xmm15,%xmm13
> > + psrad $31,%xmm0
> > +.byte 102,15,56,220,217
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm0
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + pxor %xmm0,%xmm15
> > + movups (%rbp),%xmm0
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > + movups 16(%rbp),%xmm1
> > +
> > + pxor %xmm15,%xmm14
> > +.byte 102,15,56,221,84,36,0
> > + psrad $31,%xmm9
> > + paddq %xmm15,%xmm15
> > +.byte 102,15,56,221,92,36,16
> > +.byte 102,15,56,221,100,36,32
> > + pand %xmm8,%xmm9
> > + movq %r10,%rax
> > +.byte 102,15,56,221,108,36,48
> > +.byte 102,15,56,221,116,36,64
> > +.byte 102,15,56,221,124,36,80
> > + pxor %xmm9,%xmm15
> > +
> > + leaq 96(%rsi),%rsi
> > + movups %xmm2,-96(%rsi)
> > + movups %xmm3,-80(%rsi)
> > + movups %xmm4,-64(%rsi)
> > + movups %xmm5,-48(%rsi)
> > + movups %xmm6,-32(%rsi)
> > + movups %xmm7,-16(%rsi)
> > + subq $96,%rdx
> > + jnc .Lxts_enc_grandloop
> > +
> > + movl $16+96,%eax
> > + subl %r10d,%eax
> > + movq %rbp,%rcx
> > + shrl $4,%eax
> > +
> > +.Lxts_enc_short:
> > +
> > + movl %eax,%r10d
> > + pxor %xmm0,%xmm10
> > + addq $96,%rdx
> > + jz .Lxts_enc_done
> > +
> > + pxor %xmm0,%xmm11
> > + cmpq $0x20,%rdx
> > + jb .Lxts_enc_one
> > + pxor %xmm0,%xmm12
> > + je .Lxts_enc_two
> > +
> > + pxor %xmm0,%xmm13
> > + cmpq $0x40,%rdx
> > + jb .Lxts_enc_three
> > + pxor %xmm0,%xmm14
> > + je .Lxts_enc_four
> > +
> > + movdqu (%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + pxor %xmm10,%xmm2
> > + movdqu 48(%rdi),%xmm5
> > + pxor %xmm11,%xmm3
> > + movdqu 64(%rdi),%xmm6
> > + leaq 80(%rdi),%rdi
> > + pxor %xmm12,%xmm4
> > + pxor %xmm13,%xmm5
> > + pxor %xmm14,%xmm6
> > + pxor %xmm7,%xmm7
> > +
> > + call _aesni_encrypt6
> > +
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm15,%xmm10
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > + movdqu %xmm2,(%rsi)
> > + xorps %xmm13,%xmm5
> > + movdqu %xmm3,16(%rsi)
> > + xorps %xmm14,%xmm6
> > + movdqu %xmm4,32(%rsi)
> > + movdqu %xmm5,48(%rsi)
> > + movdqu %xmm6,64(%rsi)
> > + leaq 80(%rsi),%rsi
> > + jmp .Lxts_enc_done
> > +
> > +.align 16
> > +.Lxts_enc_one:
> > + movups (%rdi),%xmm2
> > + leaq 16(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_9:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_9
> > +.byte 102,15,56,221,209
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm11,%xmm10
> > + movups %xmm2,(%rsi)
> > + leaq 16(%rsi),%rsi
> > + jmp .Lxts_enc_done
> > +
> > +.align 16
> > +.Lxts_enc_two:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + leaq 32(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + xorps %xmm11,%xmm3
> > +
> > + call _aesni_encrypt2
> > +
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm12,%xmm10
> > + xorps %xmm11,%xmm3
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + leaq 32(%rsi),%rsi
> > + jmp .Lxts_enc_done
> > +
> > +.align 16
> > +.Lxts_enc_three:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + movups 32(%rdi),%xmm4
> > + leaq 48(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > +
> > + call _aesni_encrypt3
> > +
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm13,%xmm10
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + leaq 48(%rsi),%rsi
> > + jmp .Lxts_enc_done
> > +
> > +.align 16
> > +.Lxts_enc_four:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + movups 32(%rdi),%xmm4
> > + xorps %xmm10,%xmm2
> > + movups 48(%rdi),%xmm5
> > + leaq 64(%rdi),%rdi
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > + xorps %xmm13,%xmm5
> > +
> > + call _aesni_encrypt4
> > +
> > + pxor %xmm10,%xmm2
> > + movdqa %xmm14,%xmm10
> > + pxor %xmm11,%xmm3
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm3,16(%rsi)
> > + movdqu %xmm4,32(%rsi)
> > + movdqu %xmm5,48(%rsi)
> > + leaq 64(%rsi),%rsi
> > + jmp .Lxts_enc_done
> > +
> > +.align 16
> > +.Lxts_enc_done:
> > + andq $15,%r9
> > + jz .Lxts_enc_ret
> > + movq %r9,%rdx
> > +
> > +.Lxts_enc_steal:
> > + movzbl (%rdi),%eax
> > + movzbl -16(%rsi),%ecx
> > + leaq 1(%rdi),%rdi
> > + movb %al,-16(%rsi)
> > + movb %cl,0(%rsi)
> > + leaq 1(%rsi),%rsi
> > + subq $1,%rdx
> > + jnz .Lxts_enc_steal
> > +
> > + subq %r9,%rsi
> > + movq %rbp,%rcx
> > + movl %r10d,%eax
> > +
> > + movups -16(%rsi),%xmm2
> > + xorps %xmm10,%xmm2
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_10:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_10
> > +.byte 102,15,56,221,209
> > + xorps %xmm10,%xmm2
> > + movups %xmm2,-16(%rsi)
> > +
> > +.Lxts_enc_ret:
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + movaps %xmm0,0(%rsp)
> > + pxor %xmm8,%xmm8
> > + movaps %xmm0,16(%rsp)
> > + pxor %xmm9,%xmm9
> > + movaps %xmm0,32(%rsp)
> > + pxor %xmm10,%xmm10
> > + movaps %xmm0,48(%rsp)
> > + pxor %xmm11,%xmm11
> > + movaps %xmm0,64(%rsp)
> > + pxor %xmm12,%xmm12
> > + movaps %xmm0,80(%rsp)
> > + pxor %xmm13,%xmm13
> > + movaps %xmm0,96(%rsp)
> > + pxor %xmm14,%xmm14
> > + pxor %xmm15,%xmm15
> > + movq -8(%r11),%rbp
> > +.cfi_restore %rbp
> > + leaq (%r11),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lxts_enc_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_xts_encrypt,.-aesni_xts_encrypt
> > +.globl aesni_xts_decrypt
> > +.type aesni_xts_decrypt,@function
> > +.align 16
> > +aesni_xts_decrypt:
> > +.cfi_startproc
> > + leaq (%rsp),%r11
> > +.cfi_def_cfa_register %r11
> > + pushq %rbp
> > +.cfi_offset %rbp,-16
> > + subq $112,%rsp
> > + andq $-16,%rsp
> > + movups (%r9),%xmm2
> > + movl 240(%r8),%eax
> > + movl 240(%rcx),%r10d
> > + movups (%r8),%xmm0
> > + movups 16(%r8),%xmm1
> > + leaq 32(%r8),%r8
> > + xorps %xmm0,%xmm2
> > +.Loop_enc1_11:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%r8),%xmm1
> > + leaq 16(%r8),%r8
> > + jnz .Loop_enc1_11
> > +.byte 102,15,56,221,209
> > + xorl %eax,%eax
> > + testq $15,%rdx
> > + setnz %al
> > + shlq $4,%rax
> > + subq %rax,%rdx
> > +
> > + movups (%rcx),%xmm0
> > + movq %rcx,%rbp
> > + movl %r10d,%eax
> > + shll $4,%r10d
> > + movq %rdx,%r9
> > + andq $-16,%rdx
> > +
> > + movups 16(%rcx,%r10,1),%xmm1
> > +
> > + movdqa .Lxts_magic(%rip),%xmm8
> > + movdqa %xmm2,%xmm15
> > + pshufd $0x5f,%xmm2,%xmm9
> > + pxor %xmm0,%xmm1
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm10
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm10
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm11
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm11
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm12
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm12
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > + movdqa %xmm15,%xmm13
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > + pxor %xmm0,%xmm13
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm15,%xmm14
> > + psrad $31,%xmm9
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm9
> > + pxor %xmm0,%xmm14
> > + pxor %xmm9,%xmm15
> > + movaps %xmm1,96(%rsp)
> > +
> > + subq $96,%rdx
> > + jc .Lxts_dec_short
> > +
> > + movl $16+96,%eax
> > + leaq 32(%rbp,%r10,1),%rcx
> > + subq %r10,%rax
> > + movups 16(%rbp),%xmm1
> > + movq %rax,%r10
> > + leaq .Lxts_magic(%rip),%r8
> > + jmp .Lxts_dec_grandloop
> > +
> > +.align 32
> > +.Lxts_dec_grandloop:
> > + movdqu 0(%rdi),%xmm2
> > + movdqa %xmm0,%xmm8
> > + movdqu 16(%rdi),%xmm3
> > + pxor %xmm10,%xmm2
> > + movdqu 32(%rdi),%xmm4
> > + pxor %xmm11,%xmm3
> > +.byte 102,15,56,222,209
> > + movdqu 48(%rdi),%xmm5
> > + pxor %xmm12,%xmm4
> > +.byte 102,15,56,222,217
> > + movdqu 64(%rdi),%xmm6
> > + pxor %xmm13,%xmm5
> > +.byte 102,15,56,222,225
> > + movdqu 80(%rdi),%xmm7
> > + pxor %xmm15,%xmm8
> > + movdqa 96(%rsp),%xmm9
> > + pxor %xmm14,%xmm6
> > +.byte 102,15,56,222,233
> > + movups 32(%rbp),%xmm0
> > + leaq 96(%rdi),%rdi
> > + pxor %xmm8,%xmm7
> > +
> > + pxor %xmm9,%xmm10
> > +.byte 102,15,56,222,241
> > + pxor %xmm9,%xmm11
> > + movdqa %xmm10,0(%rsp)
> > +.byte 102,15,56,222,249
> > + movups 48(%rbp),%xmm1
> > + pxor %xmm9,%xmm12
> > +
> > +.byte 102,15,56,222,208
> > + pxor %xmm9,%xmm13
> > + movdqa %xmm11,16(%rsp)
> > +.byte 102,15,56,222,216
> > + pxor %xmm9,%xmm14
> > + movdqa %xmm12,32(%rsp)
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + pxor %xmm9,%xmm8
> > + movdqa %xmm14,64(%rsp)
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > + movups 64(%rbp),%xmm0
> > + movdqa %xmm8,80(%rsp)
> > + pshufd $0x5f,%xmm15,%xmm9
> > + jmp .Lxts_dec_loop6
> > +.align 32
> > +.Lxts_dec_loop6:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + movups -64(%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > + movups -80(%rcx,%rax,1),%xmm0
> > + jnz .Lxts_dec_loop6
> > +
> > + movdqa (%r8),%xmm8
> > + movdqa %xmm9,%xmm14
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,222,209
> > + paddq %xmm15,%xmm15
> > + psrad $31,%xmm14
> > +.byte 102,15,56,222,217
> > + pand %xmm8,%xmm14
> > + movups (%rbp),%xmm10
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > + pxor %xmm14,%xmm15
> > + movaps %xmm10,%xmm11
> > +.byte 102,15,56,222,249
> > + movups -64(%rcx),%xmm1
> > +
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,222,208
> > + paddd %xmm9,%xmm9
> > + pxor %xmm15,%xmm10
> > +.byte 102,15,56,222,216
> > + psrad $31,%xmm14
> > + paddq %xmm15,%xmm15
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + pand %xmm8,%xmm14
> > + movaps %xmm11,%xmm12
> > +.byte 102,15,56,222,240
> > + pxor %xmm14,%xmm15
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,222,248
> > + movups -48(%rcx),%xmm0
> > +
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,222,209
> > + pxor %xmm15,%xmm11
> > + psrad $31,%xmm14
> > +.byte 102,15,56,222,217
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movdqa %xmm13,48(%rsp)
> > + pxor %xmm14,%xmm15
> > +.byte 102,15,56,222,241
> > + movaps %xmm12,%xmm13
> > + movdqa %xmm9,%xmm14
> > +.byte 102,15,56,222,249
> > + movups -32(%rcx),%xmm1
> > +
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,222,208
> > + pxor %xmm15,%xmm12
> > + psrad $31,%xmm14
> > +.byte 102,15,56,222,216
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm14
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > + pxor %xmm14,%xmm15
> > + movaps %xmm13,%xmm14
> > +.byte 102,15,56,222,248
> > +
> > + movdqa %xmm9,%xmm0
> > + paddd %xmm9,%xmm9
> > +.byte 102,15,56,222,209
> > + pxor %xmm15,%xmm13
> > + psrad $31,%xmm0
> > +.byte 102,15,56,222,217
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm0
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + pxor %xmm0,%xmm15
> > + movups (%rbp),%xmm0
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + movups 16(%rbp),%xmm1
> > +
> > + pxor %xmm15,%xmm14
> > +.byte 102,15,56,223,84,36,0
> > + psrad $31,%xmm9
> > + paddq %xmm15,%xmm15
> > +.byte 102,15,56,223,92,36,16
> > +.byte 102,15,56,223,100,36,32
> > + pand %xmm8,%xmm9
> > + movq %r10,%rax
> > +.byte 102,15,56,223,108,36,48
> > +.byte 102,15,56,223,116,36,64
> > +.byte 102,15,56,223,124,36,80
> > + pxor %xmm9,%xmm15
> > +
> > + leaq 96(%rsi),%rsi
> > + movups %xmm2,-96(%rsi)
> > + movups %xmm3,-80(%rsi)
> > + movups %xmm4,-64(%rsi)
> > + movups %xmm5,-48(%rsi)
> > + movups %xmm6,-32(%rsi)
> > + movups %xmm7,-16(%rsi)
> > + subq $96,%rdx
> > + jnc .Lxts_dec_grandloop
> > +
> > + movl $16+96,%eax
> > + subl %r10d,%eax
> > + movq %rbp,%rcx
> > + shrl $4,%eax
> > +
> > +.Lxts_dec_short:
> > +
> > + movl %eax,%r10d
> > + pxor %xmm0,%xmm10
> > + pxor %xmm0,%xmm11
> > + addq $96,%rdx
> > + jz .Lxts_dec_done
> > +
> > + pxor %xmm0,%xmm12
> > + cmpq $0x20,%rdx
> > + jb .Lxts_dec_one
> > + pxor %xmm0,%xmm13
> > + je .Lxts_dec_two
> > +
> > + pxor %xmm0,%xmm14
> > + cmpq $0x40,%rdx
> > + jb .Lxts_dec_three
> > + je .Lxts_dec_four
> > +
> > + movdqu (%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + pxor %xmm10,%xmm2
> > + movdqu 48(%rdi),%xmm5
> > + pxor %xmm11,%xmm3
> > + movdqu 64(%rdi),%xmm6
> > + leaq 80(%rdi),%rdi
> > + pxor %xmm12,%xmm4
> > + pxor %xmm13,%xmm5
> > + pxor %xmm14,%xmm6
> > +
> > + call _aesni_decrypt6
> > +
> > + xorps %xmm10,%xmm2
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > + movdqu %xmm2,(%rsi)
> > + xorps %xmm13,%xmm5
> > + movdqu %xmm3,16(%rsi)
> > + xorps %xmm14,%xmm6
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm14,%xmm14
> > + movdqu %xmm5,48(%rsi)
> > + pcmpgtd %xmm15,%xmm14
> > + movdqu %xmm6,64(%rsi)
> > + leaq 80(%rsi),%rsi
> > + pshufd $0x13,%xmm14,%xmm11
> > + andq $15,%r9
> > + jz .Lxts_dec_ret
> > +
> > + movdqa %xmm15,%xmm10
> > + paddq %xmm15,%xmm15
> > + pand %xmm8,%xmm11
> > + pxor %xmm15,%xmm11
> > + jmp .Lxts_dec_done2
> > +
> > +.align 16
> > +.Lxts_dec_one:
> > + movups (%rdi),%xmm2
> > + leaq 16(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_12:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_12
> > +.byte 102,15,56,223,209
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm11,%xmm10
> > + movups %xmm2,(%rsi)
> > + movdqa %xmm12,%xmm11
> > + leaq 16(%rsi),%rsi
> > + jmp .Lxts_dec_done
> > +
> > +.align 16
> > +.Lxts_dec_two:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + leaq 32(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + xorps %xmm11,%xmm3
> > +
> > + call _aesni_decrypt2
> > +
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm12,%xmm10
> > + xorps %xmm11,%xmm3
> > + movdqa %xmm13,%xmm11
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + leaq 32(%rsi),%rsi
> > + jmp .Lxts_dec_done
> > +
> > +.align 16
> > +.Lxts_dec_three:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + movups 32(%rdi),%xmm4
> > + leaq 48(%rdi),%rdi
> > + xorps %xmm10,%xmm2
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > +
> > + call _aesni_decrypt3
> > +
> > + xorps %xmm10,%xmm2
> > + movdqa %xmm13,%xmm10
> > + xorps %xmm11,%xmm3
> > + movdqa %xmm14,%xmm11
> > + xorps %xmm12,%xmm4
> > + movups %xmm2,(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + leaq 48(%rsi),%rsi
> > + jmp .Lxts_dec_done
> > +
> > +.align 16
> > +.Lxts_dec_four:
> > + movups (%rdi),%xmm2
> > + movups 16(%rdi),%xmm3
> > + movups 32(%rdi),%xmm4
> > + xorps %xmm10,%xmm2
> > + movups 48(%rdi),%xmm5
> > + leaq 64(%rdi),%rdi
> > + xorps %xmm11,%xmm3
> > + xorps %xmm12,%xmm4
> > + xorps %xmm13,%xmm5
> > +
> > + call _aesni_decrypt4
> > +
> > + pxor %xmm10,%xmm2
> > + movdqa %xmm14,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqa %xmm15,%xmm11
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm3,16(%rsi)
> > + movdqu %xmm4,32(%rsi)
> > + movdqu %xmm5,48(%rsi)
> > + leaq 64(%rsi),%rsi
> > + jmp .Lxts_dec_done
> > +
> > +.align 16
> > +.Lxts_dec_done:
> > + andq $15,%r9
> > + jz .Lxts_dec_ret
> > +.Lxts_dec_done2:
> > + movq %r9,%rdx
> > + movq %rbp,%rcx
> > + movl %r10d,%eax
> > +
> > + movups (%rdi),%xmm2
> > + xorps %xmm11,%xmm2
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_13:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_13
> > +.byte 102,15,56,223,209
> > + xorps %xmm11,%xmm2
> > + movups %xmm2,(%rsi)
> > +
> > +.Lxts_dec_steal:
> > + movzbl 16(%rdi),%eax
> > + movzbl (%rsi),%ecx
> > + leaq 1(%rdi),%rdi
> > + movb %al,(%rsi)
> > + movb %cl,16(%rsi)
> > + leaq 1(%rsi),%rsi
> > + subq $1,%rdx
> > + jnz .Lxts_dec_steal
> > +
> > + subq %r9,%rsi
> > + movq %rbp,%rcx
> > + movl %r10d,%eax
> > +
> > + movups (%rsi),%xmm2
> > + xorps %xmm10,%xmm2
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_14:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_14
> > +.byte 102,15,56,223,209
> > + xorps %xmm10,%xmm2
> > + movups %xmm2,(%rsi)
> > +
> > +.Lxts_dec_ret:
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + movaps %xmm0,0(%rsp)
> > + pxor %xmm8,%xmm8
> > + movaps %xmm0,16(%rsp)
> > + pxor %xmm9,%xmm9
> > + movaps %xmm0,32(%rsp)
> > + pxor %xmm10,%xmm10
> > + movaps %xmm0,48(%rsp)
> > + pxor %xmm11,%xmm11
> > + movaps %xmm0,64(%rsp)
> > + pxor %xmm12,%xmm12
> > + movaps %xmm0,80(%rsp)
> > + pxor %xmm13,%xmm13
> > + movaps %xmm0,96(%rsp)
> > + pxor %xmm14,%xmm14
> > + pxor %xmm15,%xmm15
> > + movq -8(%r11),%rbp
> > +.cfi_restore %rbp
> > + leaq (%r11),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lxts_dec_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_xts_decrypt,.-aesni_xts_decrypt
> > +.globl aesni_ocb_encrypt
> > +.type aesni_ocb_encrypt,@function
> > +.align 32
> > +aesni_ocb_encrypt:
> > +.cfi_startproc
> > + leaq (%rsp),%rax
> > + pushq %rbx
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r14,-48
> > + movq 8(%rax),%rbx
> > + movq 8+8(%rax),%rbp
> > +
> > + movl 240(%rcx),%r10d
> > + movq %rcx,%r11
> > + shll $4,%r10d
> > + movups (%rcx),%xmm9
> > + movups 16(%rcx,%r10,1),%xmm1
> > +
> > + movdqu (%r9),%xmm15
> > + pxor %xmm1,%xmm9
> > + pxor %xmm1,%xmm15
> > +
> > + movl $16+32,%eax
> > + leaq 32(%r11,%r10,1),%rcx
> > + movups 16(%r11),%xmm1
> > + subq %r10,%rax
> > + movq %rax,%r10
> > +
> > + movdqu (%rbx),%xmm10
> > + movdqu (%rbp),%xmm8
> > +
> > + testq $1,%r8
> > + jnz .Locb_enc_odd
> > +
> > + bsfq %r8,%r12
> > + addq $1,%r8
> > + shlq $4,%r12
> > + movdqu (%rbx,%r12,1),%xmm7
> > + movdqu (%rdi),%xmm2
> > + leaq 16(%rdi),%rdi
> > +
> > + call __ocb_encrypt1
> > +
> > + movdqa %xmm7,%xmm15
> > + movups %xmm2,(%rsi)
> > + leaq 16(%rsi),%rsi
> > + subq $1,%rdx
> > + jz .Locb_enc_done
> > +
> > +.Locb_enc_odd:
> > + leaq 1(%r8),%r12
> > + leaq 3(%r8),%r13
> > + leaq 5(%r8),%r14
> > + leaq 6(%r8),%r8
> > + bsfq %r12,%r12
> > + bsfq %r13,%r13
> > + bsfq %r14,%r14
> > + shlq $4,%r12
> > + shlq $4,%r13
> > + shlq $4,%r14
> > +
> > + subq $6,%rdx
> > + jc .Locb_enc_short
> > + jmp .Locb_enc_grandloop
> > +
> > +.align 32
> > +.Locb_enc_grandloop:
> > + movdqu 0(%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + movdqu 48(%rdi),%xmm5
> > + movdqu 64(%rdi),%xmm6
> > + movdqu 80(%rdi),%xmm7
> > + leaq 96(%rdi),%rdi
> > +
> > + call __ocb_encrypt6
> > +
> > + movups %xmm2,0(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > + movups %xmm7,80(%rsi)
> > + leaq 96(%rsi),%rsi
> > + subq $6,%rdx
> > + jnc .Locb_enc_grandloop
> > +
> > +.Locb_enc_short:
> > + addq $6,%rdx
> > + jz .Locb_enc_done
> > +
> > + movdqu 0(%rdi),%xmm2
> > + cmpq $2,%rdx
> > + jb .Locb_enc_one
> > + movdqu 16(%rdi),%xmm3
> > + je .Locb_enc_two
> > +
> > + movdqu 32(%rdi),%xmm4
> > + cmpq $4,%rdx
> > + jb .Locb_enc_three
> > + movdqu 48(%rdi),%xmm5
> > + je .Locb_enc_four
> > +
> > + movdqu 64(%rdi),%xmm6
> > + pxor %xmm7,%xmm7
> > +
> > + call __ocb_encrypt6
> > +
> > + movdqa %xmm14,%xmm15
> > + movups %xmm2,0(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > + movups %xmm6,64(%rsi)
> > +
> > + jmp .Locb_enc_done
> > +
> > +.align 16
> > +.Locb_enc_one:
> > + movdqa %xmm10,%xmm7
> > +
> > + call __ocb_encrypt1
> > +
> > + movdqa %xmm7,%xmm15
> > + movups %xmm2,0(%rsi)
> > + jmp .Locb_enc_done
> > +
> > +.align 16
> > +.Locb_enc_two:
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > +
> > + call __ocb_encrypt4
> > +
> > + movdqa %xmm11,%xmm15
> > + movups %xmm2,0(%rsi)
> > + movups %xmm3,16(%rsi)
> > +
> > + jmp .Locb_enc_done
> > +
> > +.align 16
> > +.Locb_enc_three:
> > + pxor %xmm5,%xmm5
> > +
> > + call __ocb_encrypt4
> > +
> > + movdqa %xmm12,%xmm15
> > + movups %xmm2,0(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > +
> > + jmp .Locb_enc_done
> > +
> > +.align 16
> > +.Locb_enc_four:
> > + call __ocb_encrypt4
> > +
> > + movdqa %xmm13,%xmm15
> > + movups %xmm2,0(%rsi)
> > + movups %xmm3,16(%rsi)
> > + movups %xmm4,32(%rsi)
> > + movups %xmm5,48(%rsi)
> > +
> > +.Locb_enc_done:
> > + pxor %xmm0,%xmm15
> > + movdqu %xmm8,(%rbp)
> > + movdqu %xmm15,(%r9)
> > +
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > + pxor %xmm10,%xmm10
> > + pxor %xmm11,%xmm11
> > + pxor %xmm12,%xmm12
> > + pxor %xmm13,%xmm13
> > + pxor %xmm14,%xmm14
> > + pxor %xmm15,%xmm15
> > + leaq 40(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movq -40(%rax),%r14
> > +.cfi_restore %r14
> > + movq -32(%rax),%r13
> > +.cfi_restore %r13
> > + movq -24(%rax),%r12
> > +.cfi_restore %r12
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Locb_enc_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ocb_encrypt,.-aesni_ocb_encrypt
> > +
> > +.type __ocb_encrypt6,@function
> > +.align 32
> > +__ocb_encrypt6:
> > +.cfi_startproc
> > + pxor %xmm9,%xmm15
> > + movdqu (%rbx,%r12,1),%xmm11
> > + movdqa %xmm10,%xmm12
> > + movdqu (%rbx,%r13,1),%xmm13
> > + movdqa %xmm10,%xmm14
> > + pxor %xmm15,%xmm10
> > + movdqu (%rbx,%r14,1),%xmm15
> > + pxor %xmm10,%xmm11
> > + pxor %xmm2,%xmm8
> > + pxor %xmm10,%xmm2
> > + pxor %xmm11,%xmm12
> > + pxor %xmm3,%xmm8
> > + pxor %xmm11,%xmm3
> > + pxor %xmm12,%xmm13
> > + pxor %xmm4,%xmm8
> > + pxor %xmm12,%xmm4
> > + pxor %xmm13,%xmm14
> > + pxor %xmm5,%xmm8
> > + pxor %xmm13,%xmm5
> > + pxor %xmm14,%xmm15
> > + pxor %xmm6,%xmm8
> > + pxor %xmm14,%xmm6
> > + pxor %xmm7,%xmm8
> > + pxor %xmm15,%xmm7
> > + movups 32(%r11),%xmm0
> > +
> > + leaq 1(%r8),%r12
> > + leaq 3(%r8),%r13
> > + leaq 5(%r8),%r14
> > + addq $6,%r8
> > + pxor %xmm9,%xmm10
> > + bsfq %r12,%r12
> > + bsfq %r13,%r13
> > + bsfq %r14,%r14
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + pxor %xmm9,%xmm11
> > + pxor %xmm9,%xmm12
> > +.byte 102,15,56,220,241
> > + pxor %xmm9,%xmm13
> > + pxor %xmm9,%xmm14
> > +.byte 102,15,56,220,249
> > + movups 48(%r11),%xmm1
> > + pxor %xmm9,%xmm15
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups 64(%r11),%xmm0
> > + shlq $4,%r12
> > + shlq $4,%r13
> > + jmp .Locb_enc_loop6
> > +
> > +.align 32
> > +.Locb_enc_loop6:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > +.byte 102,15,56,220,240
> > +.byte 102,15,56,220,248
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_enc_loop6
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > +.byte 102,15,56,220,241
> > +.byte 102,15,56,220,249
> > + movups 16(%r11),%xmm1
> > + shlq $4,%r14
> > +
> > +.byte 102,65,15,56,221,210
> > + movdqu (%rbx),%xmm10
> > + movq %r10,%rax
> > +.byte 102,65,15,56,221,219
> > +.byte 102,65,15,56,221,228
> > +.byte 102,65,15,56,221,237
> > +.byte 102,65,15,56,221,246
> > +.byte 102,65,15,56,221,255
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_encrypt6,.-__ocb_encrypt6
> > +
> > +.type __ocb_encrypt4,@function
> > +.align 32
> > +__ocb_encrypt4:
> > +.cfi_startproc
> > + pxor %xmm9,%xmm15
> > + movdqu (%rbx,%r12,1),%xmm11
> > + movdqa %xmm10,%xmm12
> > + movdqu (%rbx,%r13,1),%xmm13
> > + pxor %xmm15,%xmm10
> > + pxor %xmm10,%xmm11
> > + pxor %xmm2,%xmm8
> > + pxor %xmm10,%xmm2
> > + pxor %xmm11,%xmm12
> > + pxor %xmm3,%xmm8
> > + pxor %xmm11,%xmm3
> > + pxor %xmm12,%xmm13
> > + pxor %xmm4,%xmm8
> > + pxor %xmm12,%xmm4
> > + pxor %xmm5,%xmm8
> > + pxor %xmm13,%xmm5
> > + movups 32(%r11),%xmm0
> > +
> > + pxor %xmm9,%xmm10
> > + pxor %xmm9,%xmm11
> > + pxor %xmm9,%xmm12
> > + pxor %xmm9,%xmm13
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 48(%r11),%xmm1
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups 64(%r11),%xmm0
> > + jmp .Locb_enc_loop4
> > +
> > +.align 32
> > +.Locb_enc_loop4:
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,220,208
> > +.byte 102,15,56,220,216
> > +.byte 102,15,56,220,224
> > +.byte 102,15,56,220,232
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_enc_loop4
> > +
> > +.byte 102,15,56,220,209
> > +.byte 102,15,56,220,217
> > +.byte 102,15,56,220,225
> > +.byte 102,15,56,220,233
> > + movups 16(%r11),%xmm1
> > + movq %r10,%rax
> > +
> > +.byte 102,65,15,56,221,210
> > +.byte 102,65,15,56,221,219
> > +.byte 102,65,15,56,221,228
> > +.byte 102,65,15,56,221,237
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_encrypt4,.-__ocb_encrypt4
> > +
> > +.type __ocb_encrypt1,@function
> > +.align 32
> > +__ocb_encrypt1:
> > +.cfi_startproc
> > + pxor %xmm15,%xmm7
> > + pxor %xmm9,%xmm7
> > + pxor %xmm2,%xmm8
> > + pxor %xmm7,%xmm2
> > + movups 32(%r11),%xmm0
> > +
> > +.byte 102,15,56,220,209
> > + movups 48(%r11),%xmm1
> > + pxor %xmm9,%xmm7
> > +
> > +.byte 102,15,56,220,208
> > + movups 64(%r11),%xmm0
> > + jmp .Locb_enc_loop1
> > +
> > +.align 32
> > +.Locb_enc_loop1:
> > +.byte 102,15,56,220,209
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,220,208
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_enc_loop1
> > +
> > +.byte 102,15,56,220,209
> > + movups 16(%r11),%xmm1
> > + movq %r10,%rax
> > +
> > +.byte 102,15,56,221,215
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_encrypt1,.-__ocb_encrypt1
> > +
> > +.globl aesni_ocb_decrypt
> > +.type aesni_ocb_decrypt,@function
> > +.align 32
> > +aesni_ocb_decrypt:
> > +.cfi_startproc
> > + leaq (%rsp),%rax
> > + pushq %rbx
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r14,-48
> > + movq 8(%rax),%rbx
> > + movq 8+8(%rax),%rbp
> > +
> > + movl 240(%rcx),%r10d
> > + movq %rcx,%r11
> > + shll $4,%r10d
> > + movups (%rcx),%xmm9
> > + movups 16(%rcx,%r10,1),%xmm1
> > +
> > + movdqu (%r9),%xmm15
> > + pxor %xmm1,%xmm9
> > + pxor %xmm1,%xmm15
> > +
> > + movl $16+32,%eax
> > + leaq 32(%r11,%r10,1),%rcx
> > + movups 16(%r11),%xmm1
> > + subq %r10,%rax
> > + movq %rax,%r10
> > +
> > + movdqu (%rbx),%xmm10
> > + movdqu (%rbp),%xmm8
> > +
> > + testq $1,%r8
> > + jnz .Locb_dec_odd
> > +
> > + bsfq %r8,%r12
> > + addq $1,%r8
> > + shlq $4,%r12
> > + movdqu (%rbx,%r12,1),%xmm7
> > + movdqu (%rdi),%xmm2
> > + leaq 16(%rdi),%rdi
> > +
> > + call __ocb_decrypt1
> > +
> > + movdqa %xmm7,%xmm15
> > + movups %xmm2,(%rsi)
> > + xorps %xmm2,%xmm8
> > + leaq 16(%rsi),%rsi
> > + subq $1,%rdx
> > + jz .Locb_dec_done
> > +
> > +.Locb_dec_odd:
> > + leaq 1(%r8),%r12
> > + leaq 3(%r8),%r13
> > + leaq 5(%r8),%r14
> > + leaq 6(%r8),%r8
> > + bsfq %r12,%r12
> > + bsfq %r13,%r13
> > + bsfq %r14,%r14
> > + shlq $4,%r12
> > + shlq $4,%r13
> > + shlq $4,%r14
> > +
> > + subq $6,%rdx
> > + jc .Locb_dec_short
> > + jmp .Locb_dec_grandloop
> > +
> > +.align 32
> > +.Locb_dec_grandloop:
> > + movdqu 0(%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqu 32(%rdi),%xmm4
> > + movdqu 48(%rdi),%xmm5
> > + movdqu 64(%rdi),%xmm6
> > + movdqu 80(%rdi),%xmm7
> > + leaq 96(%rdi),%rdi
> > +
> > + call __ocb_decrypt6
> > +
> > + movups %xmm2,0(%rsi)
> > + pxor %xmm2,%xmm8
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm8
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm8
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm8
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm8
> > + movups %xmm7,80(%rsi)
> > + pxor %xmm7,%xmm8
> > + leaq 96(%rsi),%rsi
> > + subq $6,%rdx
> > + jnc .Locb_dec_grandloop
> > +
> > +.Locb_dec_short:
> > + addq $6,%rdx
> > + jz .Locb_dec_done
> > +
> > + movdqu 0(%rdi),%xmm2
> > + cmpq $2,%rdx
> > + jb .Locb_dec_one
> > + movdqu 16(%rdi),%xmm3
> > + je .Locb_dec_two
> > +
> > + movdqu 32(%rdi),%xmm4
> > + cmpq $4,%rdx
> > + jb .Locb_dec_three
> > + movdqu 48(%rdi),%xmm5
> > + je .Locb_dec_four
> > +
> > + movdqu 64(%rdi),%xmm6
> > + pxor %xmm7,%xmm7
> > +
> > + call __ocb_decrypt6
> > +
> > + movdqa %xmm14,%xmm15
> > + movups %xmm2,0(%rsi)
> > + pxor %xmm2,%xmm8
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm8
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm8
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm8
> > + movups %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm8
> > +
> > + jmp .Locb_dec_done
> > +
> > +.align 16
> > +.Locb_dec_one:
> > + movdqa %xmm10,%xmm7
> > +
> > + call __ocb_decrypt1
> > +
> > + movdqa %xmm7,%xmm15
> > + movups %xmm2,0(%rsi)
> > + xorps %xmm2,%xmm8
> > + jmp .Locb_dec_done
> > +
> > +.align 16
> > +.Locb_dec_two:
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > +
> > + call __ocb_decrypt4
> > +
> > + movdqa %xmm11,%xmm15
> > + movups %xmm2,0(%rsi)
> > + xorps %xmm2,%xmm8
> > + movups %xmm3,16(%rsi)
> > + xorps %xmm3,%xmm8
> > +
> > + jmp .Locb_dec_done
> > +
> > +.align 16
> > +.Locb_dec_three:
> > + pxor %xmm5,%xmm5
> > +
> > + call __ocb_decrypt4
> > +
> > + movdqa %xmm12,%xmm15
> > + movups %xmm2,0(%rsi)
> > + xorps %xmm2,%xmm8
> > + movups %xmm3,16(%rsi)
> > + xorps %xmm3,%xmm8
> > + movups %xmm4,32(%rsi)
> > + xorps %xmm4,%xmm8
> > +
> > + jmp .Locb_dec_done
> > +
> > +.align 16
> > +.Locb_dec_four:
> > + call __ocb_decrypt4
> > +
> > + movdqa %xmm13,%xmm15
> > + movups %xmm2,0(%rsi)
> > + pxor %xmm2,%xmm8
> > + movups %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm8
> > + movups %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm8
> > + movups %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm8
> > +
> > +.Locb_dec_done:
> > + pxor %xmm0,%xmm15
> > + movdqu %xmm8,(%rbp)
> > + movdqu %xmm15,(%r9)
> > +
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > + pxor %xmm10,%xmm10
> > + pxor %xmm11,%xmm11
> > + pxor %xmm12,%xmm12
> > + pxor %xmm13,%xmm13
> > + pxor %xmm14,%xmm14
> > + pxor %xmm15,%xmm15
> > + leaq 40(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movq -40(%rax),%r14
> > +.cfi_restore %r14
> > + movq -32(%rax),%r13
> > +.cfi_restore %r13
> > + movq -24(%rax),%r12
> > +.cfi_restore %r12
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Locb_dec_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_ocb_decrypt,.-aesni_ocb_decrypt
> > +
> > +.type __ocb_decrypt6,@function
> > +.align 32
> > +__ocb_decrypt6:
> > +.cfi_startproc
> > + pxor %xmm9,%xmm15
> > + movdqu (%rbx,%r12,1),%xmm11
> > + movdqa %xmm10,%xmm12
> > + movdqu (%rbx,%r13,1),%xmm13
> > + movdqa %xmm10,%xmm14
> > + pxor %xmm15,%xmm10
> > + movdqu (%rbx,%r14,1),%xmm15
> > + pxor %xmm10,%xmm11
> > + pxor %xmm10,%xmm2
> > + pxor %xmm11,%xmm12
> > + pxor %xmm11,%xmm3
> > + pxor %xmm12,%xmm13
> > + pxor %xmm12,%xmm4
> > + pxor %xmm13,%xmm14
> > + pxor %xmm13,%xmm5
> > + pxor %xmm14,%xmm15
> > + pxor %xmm14,%xmm6
> > + pxor %xmm15,%xmm7
> > + movups 32(%r11),%xmm0
> > +
> > + leaq 1(%r8),%r12
> > + leaq 3(%r8),%r13
> > + leaq 5(%r8),%r14
> > + addq $6,%r8
> > + pxor %xmm9,%xmm10
> > + bsfq %r12,%r12
> > + bsfq %r13,%r13
> > + bsfq %r14,%r14
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + pxor %xmm9,%xmm11
> > + pxor %xmm9,%xmm12
> > +.byte 102,15,56,222,241
> > + pxor %xmm9,%xmm13
> > + pxor %xmm9,%xmm14
> > +.byte 102,15,56,222,249
> > + movups 48(%r11),%xmm1
> > + pxor %xmm9,%xmm15
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > + movups 64(%r11),%xmm0
> > + shlq $4,%r12
> > + shlq $4,%r13
> > + jmp .Locb_dec_loop6
> > +
> > +.align 32
> > +.Locb_dec_loop6:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_dec_loop6
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + movups 16(%r11),%xmm1
> > + shlq $4,%r14
> > +
> > +.byte 102,65,15,56,223,210
> > + movdqu (%rbx),%xmm10
> > + movq %r10,%rax
> > +.byte 102,65,15,56,223,219
> > +.byte 102,65,15,56,223,228
> > +.byte 102,65,15,56,223,237
> > +.byte 102,65,15,56,223,246
> > +.byte 102,65,15,56,223,255
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_decrypt6,.-__ocb_decrypt6
> > +
> > +.type __ocb_decrypt4,@function
> > +.align 32
> > +__ocb_decrypt4:
> > +.cfi_startproc
> > + pxor %xmm9,%xmm15
> > + movdqu (%rbx,%r12,1),%xmm11
> > + movdqa %xmm10,%xmm12
> > + movdqu (%rbx,%r13,1),%xmm13
> > + pxor %xmm15,%xmm10
> > + pxor %xmm10,%xmm11
> > + pxor %xmm10,%xmm2
> > + pxor %xmm11,%xmm12
> > + pxor %xmm11,%xmm3
> > + pxor %xmm12,%xmm13
> > + pxor %xmm12,%xmm4
> > + pxor %xmm13,%xmm5
> > + movups 32(%r11),%xmm0
> > +
> > + pxor %xmm9,%xmm10
> > + pxor %xmm9,%xmm11
> > + pxor %xmm9,%xmm12
> > + pxor %xmm9,%xmm13
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 48(%r11),%xmm1
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups 64(%r11),%xmm0
> > + jmp .Locb_dec_loop4
> > +
> > +.align 32
> > +.Locb_dec_loop4:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_dec_loop4
> > +
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + movups 16(%r11),%xmm1
> > + movq %r10,%rax
> > +
> > +.byte 102,65,15,56,223,210
> > +.byte 102,65,15,56,223,219
> > +.byte 102,65,15,56,223,228
> > +.byte 102,65,15,56,223,237
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_decrypt4,.-__ocb_decrypt4
> > +
> > +.type __ocb_decrypt1,@function
> > +.align 32
> > +__ocb_decrypt1:
> > +.cfi_startproc
> > + pxor %xmm15,%xmm7
> > + pxor %xmm9,%xmm7
> > + pxor %xmm7,%xmm2
> > + movups 32(%r11),%xmm0
> > +
> > +.byte 102,15,56,222,209
> > + movups 48(%r11),%xmm1
> > + pxor %xmm9,%xmm7
> > +
> > +.byte 102,15,56,222,208
> > + movups 64(%r11),%xmm0
> > + jmp .Locb_dec_loop1
> > +
> > +.align 32
> > +.Locb_dec_loop1:
> > +.byte 102,15,56,222,209
> > + movups (%rcx,%rax,1),%xmm1
> > + addq $32,%rax
> > +
> > +.byte 102,15,56,222,208
> > + movups -16(%rcx,%rax,1),%xmm0
> > + jnz .Locb_dec_loop1
> > +
> > +.byte 102,15,56,222,209
> > + movups 16(%r11),%xmm1
> > + movq %r10,%rax
> > +
> > +.byte 102,15,56,223,215
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size __ocb_decrypt1,.-__ocb_decrypt1
> > +.globl aesni_cbc_encrypt
> > +.type aesni_cbc_encrypt,@function
> > +.align 16
> > +aesni_cbc_encrypt:
> > +.cfi_startproc
> > + testq %rdx,%rdx
> > + jz .Lcbc_ret
> > +
> > + movl 240(%rcx),%r10d
> > + movq %rcx,%r11
> > + testl %r9d,%r9d
> > + jz .Lcbc_decrypt
> > +
> > + movups (%r8),%xmm2
> > + movl %r10d,%eax
> > + cmpq $16,%rdx
> > + jb .Lcbc_enc_tail
> > + subq $16,%rdx
> > + jmp .Lcbc_enc_loop
> > +.align 16
> > +.Lcbc_enc_loop:
> > + movups (%rdi),%xmm3
> > + leaq 16(%rdi),%rdi
> > +
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + xorps %xmm0,%xmm3
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm3,%xmm2
> > +.Loop_enc1_15:
> > +.byte 102,15,56,220,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_enc1_15
> > +.byte 102,15,56,221,209
> > + movl %r10d,%eax
> > + movq %r11,%rcx
> > + movups %xmm2,0(%rsi)
> > + leaq 16(%rsi),%rsi
> > + subq $16,%rdx
> > + jnc .Lcbc_enc_loop
> > + addq $16,%rdx
> > + jnz .Lcbc_enc_tail
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + movups %xmm2,(%r8)
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + jmp .Lcbc_ret
> > +
> > +.Lcbc_enc_tail:
> > + movq %rdx,%rcx
> > + xchgq %rdi,%rsi
> > +.long 0x9066A4F3
> > + movl $16,%ecx
> > + subq %rdx,%rcx
> > + xorl %eax,%eax
> > +.long 0x9066AAF3
> > + leaq -16(%rdi),%rdi
> > + movl %r10d,%eax
> > + movq %rdi,%rsi
> > + movq %r11,%rcx
> > + xorq %rdx,%rdx
> > + jmp .Lcbc_enc_loop
> > +
> > +.align 16
> > +.Lcbc_decrypt:
> > + cmpq $16,%rdx
> > + jne .Lcbc_decrypt_bulk
> > +
> > +
> > +
> > + movdqu (%rdi),%xmm2
> > + movdqu (%r8),%xmm3
> > + movdqa %xmm2,%xmm4
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_16:
> > +.byte 102,15,56,222,209
> > + decl %r10d
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_16
> > +.byte 102,15,56,223,209
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + movdqu %xmm4,(%r8)
> > + xorps %xmm3,%xmm2
> > + pxor %xmm3,%xmm3
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + jmp .Lcbc_ret
> > +.align 16
> > +.Lcbc_decrypt_bulk:
> > + leaq (%rsp),%r11
> > +.cfi_def_cfa_register %r11
> > + pushq %rbp
> > +.cfi_offset %rbp,-16
> > + subq $16,%rsp
> > + andq $-16,%rsp
> > + movq %rcx,%rbp
> > + movups (%r8),%xmm10
> > + movl %r10d,%eax
> > + cmpq $0x50,%rdx
> > + jbe .Lcbc_dec_tail
> > +
> > + movups (%rcx),%xmm0
> > + movdqu 0(%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqa %xmm2,%xmm11
> > + movdqu 32(%rdi),%xmm4
> > + movdqa %xmm3,%xmm12
> > + movdqu 48(%rdi),%xmm5
> > + movdqa %xmm4,%xmm13
> > + movdqu 64(%rdi),%xmm6
> > + movdqa %xmm5,%xmm14
> > + movdqu 80(%rdi),%xmm7
> > + movdqa %xmm6,%xmm15
> > + movl OPENSSL_ia32cap_P+4(%rip),%r9d
> > + cmpq $0x70,%rdx
> > + jbe .Lcbc_dec_six_or_seven
> > +
> > + andl $71303168,%r9d
> > + subq $0x50,%rdx
> > + cmpl $4194304,%r9d
> > + je .Lcbc_dec_loop6_enter
> > + subq $0x20,%rdx
> > + leaq 112(%rcx),%rcx
> > + jmp .Lcbc_dec_loop8_enter
> > +.align 16
> > +.Lcbc_dec_loop8:
> > + movups %xmm9,(%rsi)
> > + leaq 16(%rsi),%rsi
> > +.Lcbc_dec_loop8_enter:
> > + movdqu 96(%rdi),%xmm8
> > + pxor %xmm0,%xmm2
> > + movdqu 112(%rdi),%xmm9
> > + pxor %xmm0,%xmm3
> > + movups 16-112(%rcx),%xmm1
> > + pxor %xmm0,%xmm4
> > + movq $-1,%rbp
> > + cmpq $0x70,%rdx
> > + pxor %xmm0,%xmm5
> > + pxor %xmm0,%xmm6
> > + pxor %xmm0,%xmm7
> > + pxor %xmm0,%xmm8
> > +
> > +.byte 102,15,56,222,209
> > + pxor %xmm0,%xmm9
> > + movups 32-112(%rcx),%xmm0
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > + adcq $0,%rbp
> > + andq $128,%rbp
> > +.byte 102,68,15,56,222,201
> > + addq %rdi,%rbp
> > + movups 48-112(%rcx),%xmm1
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 64-112(%rcx),%xmm0
> > + nop
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movups 80-112(%rcx),%xmm1
> > + nop
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 96-112(%rcx),%xmm0
> > + nop
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movups 112-112(%rcx),%xmm1
> > + nop
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 128-112(%rcx),%xmm0
> > + nop
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movups 144-112(%rcx),%xmm1
> > + cmpl $11,%eax
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 160-112(%rcx),%xmm0
> > + jb .Lcbc_dec_done
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movups 176-112(%rcx),%xmm1
> > + nop
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 192-112(%rcx),%xmm0
> > + je .Lcbc_dec_done
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movups 208-112(%rcx),%xmm1
> > + nop
> > +.byte 102,15,56,222,208
> > +.byte 102,15,56,222,216
> > +.byte 102,15,56,222,224
> > +.byte 102,15,56,222,232
> > +.byte 102,15,56,222,240
> > +.byte 102,15,56,222,248
> > +.byte 102,68,15,56,222,192
> > +.byte 102,68,15,56,222,200
> > + movups 224-112(%rcx),%xmm0
> > + jmp .Lcbc_dec_done
> > +.align 16
> > +.Lcbc_dec_done:
> > +.byte 102,15,56,222,209
> > +.byte 102,15,56,222,217
> > + pxor %xmm0,%xmm10
> > + pxor %xmm0,%xmm11
> > +.byte 102,15,56,222,225
> > +.byte 102,15,56,222,233
> > + pxor %xmm0,%xmm12
> > + pxor %xmm0,%xmm13
> > +.byte 102,15,56,222,241
> > +.byte 102,15,56,222,249
> > + pxor %xmm0,%xmm14
> > + pxor %xmm0,%xmm15
> > +.byte 102,68,15,56,222,193
> > +.byte 102,68,15,56,222,201
> > + movdqu 80(%rdi),%xmm1
> > +
> > +.byte 102,65,15,56,223,210
> > + movdqu 96(%rdi),%xmm10
> > + pxor %xmm0,%xmm1
> > +.byte 102,65,15,56,223,219
> > + pxor %xmm0,%xmm10
> > + movdqu 112(%rdi),%xmm0
> > +.byte 102,65,15,56,223,228
> > + leaq 128(%rdi),%rdi
> > + movdqu 0(%rbp),%xmm11
> > +.byte 102,65,15,56,223,237
> > +.byte 102,65,15,56,223,246
> > + movdqu 16(%rbp),%xmm12
> > + movdqu 32(%rbp),%xmm13
> > +.byte 102,65,15,56,223,255
> > +.byte 102,68,15,56,223,193
> > + movdqu 48(%rbp),%xmm14
> > + movdqu 64(%rbp),%xmm15
> > +.byte 102,69,15,56,223,202
> > + movdqa %xmm0,%xmm10
> > + movdqu 80(%rbp),%xmm1
> > + movups -112(%rcx),%xmm0
> > +
> > + movups %xmm2,(%rsi)
> > + movdqa %xmm11,%xmm2
> > + movups %xmm3,16(%rsi)
> > + movdqa %xmm12,%xmm3
> > + movups %xmm4,32(%rsi)
> > + movdqa %xmm13,%xmm4
> > + movups %xmm5,48(%rsi)
> > + movdqa %xmm14,%xmm5
> > + movups %xmm6,64(%rsi)
> > + movdqa %xmm15,%xmm6
> > + movups %xmm7,80(%rsi)
> > + movdqa %xmm1,%xmm7
> > + movups %xmm8,96(%rsi)
> > + leaq 112(%rsi),%rsi
> > +
> > + subq $0x80,%rdx
> > + ja .Lcbc_dec_loop8
> > +
> > + movaps %xmm9,%xmm2
> > + leaq -112(%rcx),%rcx
> > + addq $0x70,%rdx
> > + jle .Lcbc_dec_clear_tail_collected
> > + movups %xmm9,(%rsi)
> > + leaq 16(%rsi),%rsi
> > + cmpq $0x50,%rdx
> > + jbe .Lcbc_dec_tail
> > +
> > + movaps %xmm11,%xmm2
> > +.Lcbc_dec_six_or_seven:
> > + cmpq $0x60,%rdx
> > + ja .Lcbc_dec_seven
> > +
> > + movaps %xmm7,%xmm8
> > + call _aesni_decrypt6
> > + pxor %xmm10,%xmm2
> > + movaps %xmm8,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + pxor %xmm14,%xmm6
> > + movdqu %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + pxor %xmm15,%xmm7
> > + movdqu %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + leaq 80(%rsi),%rsi
> > + movdqa %xmm7,%xmm2
> > + pxor %xmm7,%xmm7
> > + jmp .Lcbc_dec_tail_collected
> > +
> > +.align 16
> > +.Lcbc_dec_seven:
> > + movups 96(%rdi),%xmm8
> > + xorps %xmm9,%xmm9
> > + call _aesni_decrypt8
> > + movups 80(%rdi),%xmm9
> > + pxor %xmm10,%xmm2
> > + movups 96(%rdi),%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + pxor %xmm14,%xmm6
> > + movdqu %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + pxor %xmm15,%xmm7
> > + movdqu %xmm6,64(%rsi)
> > + pxor %xmm6,%xmm6
> > + pxor %xmm9,%xmm8
> > + movdqu %xmm7,80(%rsi)
> > + pxor %xmm7,%xmm7
> > + leaq 96(%rsi),%rsi
> > + movdqa %xmm8,%xmm2
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > + jmp .Lcbc_dec_tail_collected
> > +
> > +.align 16
> > +.Lcbc_dec_loop6:
> > + movups %xmm7,(%rsi)
> > + leaq 16(%rsi),%rsi
> > + movdqu 0(%rdi),%xmm2
> > + movdqu 16(%rdi),%xmm3
> > + movdqa %xmm2,%xmm11
> > + movdqu 32(%rdi),%xmm4
> > + movdqa %xmm3,%xmm12
> > + movdqu 48(%rdi),%xmm5
> > + movdqa %xmm4,%xmm13
> > + movdqu 64(%rdi),%xmm6
> > + movdqa %xmm5,%xmm14
> > + movdqu 80(%rdi),%xmm7
> > + movdqa %xmm6,%xmm15
> > +.Lcbc_dec_loop6_enter:
> > + leaq 96(%rdi),%rdi
> > + movdqa %xmm7,%xmm8
> > +
> > + call _aesni_decrypt6
> > +
> > + pxor %xmm10,%xmm2
> > + movdqa %xmm8,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm14,%xmm6
> > + movq %rbp,%rcx
> > + movdqu %xmm5,48(%rsi)
> > + pxor %xmm15,%xmm7
> > + movl %r10d,%eax
> > + movdqu %xmm6,64(%rsi)
> > + leaq 80(%rsi),%rsi
> > + subq $0x60,%rdx
> > + ja .Lcbc_dec_loop6
> > +
> > + movdqa %xmm7,%xmm2
> > + addq $0x50,%rdx
> > + jle .Lcbc_dec_clear_tail_collected
> > + movups %xmm7,(%rsi)
> > + leaq 16(%rsi),%rsi
> > +
> > +.Lcbc_dec_tail:
> > + movups (%rdi),%xmm2
> > + subq $0x10,%rdx
> > + jbe .Lcbc_dec_one
> > +
> > + movups 16(%rdi),%xmm3
> > + movaps %xmm2,%xmm11
> > + subq $0x10,%rdx
> > + jbe .Lcbc_dec_two
> > +
> > + movups 32(%rdi),%xmm4
> > + movaps %xmm3,%xmm12
> > + subq $0x10,%rdx
> > + jbe .Lcbc_dec_three
> > +
> > + movups 48(%rdi),%xmm5
> > + movaps %xmm4,%xmm13
> > + subq $0x10,%rdx
> > + jbe .Lcbc_dec_four
> > +
> > + movups 64(%rdi),%xmm6
> > + movaps %xmm5,%xmm14
> > + movaps %xmm6,%xmm15
> > + xorps %xmm7,%xmm7
> > + call _aesni_decrypt6
> > + pxor %xmm10,%xmm2
> > + movaps %xmm15,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + pxor %xmm14,%xmm6
> > + movdqu %xmm5,48(%rsi)
> > + pxor %xmm5,%xmm5
> > + leaq 64(%rsi),%rsi
> > + movdqa %xmm6,%xmm2
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + subq $0x10,%rdx
> > + jmp .Lcbc_dec_tail_collected
> > +
> > +.align 16
> > +.Lcbc_dec_one:
> > + movaps %xmm2,%xmm11
> > + movups (%rcx),%xmm0
> > + movups 16(%rcx),%xmm1
> > + leaq 32(%rcx),%rcx
> > + xorps %xmm0,%xmm2
> > +.Loop_dec1_17:
> > +.byte 102,15,56,222,209
> > + decl %eax
> > + movups (%rcx),%xmm1
> > + leaq 16(%rcx),%rcx
> > + jnz .Loop_dec1_17
> > +.byte 102,15,56,223,209
> > + xorps %xmm10,%xmm2
> > + movaps %xmm11,%xmm10
> > + jmp .Lcbc_dec_tail_collected
> > +.align 16
> > +.Lcbc_dec_two:
> > + movaps %xmm3,%xmm12
> > + call _aesni_decrypt2
> > + pxor %xmm10,%xmm2
> > + movaps %xmm12,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + movdqa %xmm3,%xmm2
> > + pxor %xmm3,%xmm3
> > + leaq 16(%rsi),%rsi
> > + jmp .Lcbc_dec_tail_collected
> > +.align 16
> > +.Lcbc_dec_three:
> > + movaps %xmm4,%xmm13
> > + call _aesni_decrypt3
> > + pxor %xmm10,%xmm2
> > + movaps %xmm13,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + movdqa %xmm4,%xmm2
> > + pxor %xmm4,%xmm4
> > + leaq 32(%rsi),%rsi
> > + jmp .Lcbc_dec_tail_collected
> > +.align 16
> > +.Lcbc_dec_four:
> > + movaps %xmm5,%xmm14
> > + call _aesni_decrypt4
> > + pxor %xmm10,%xmm2
> > + movaps %xmm14,%xmm10
> > + pxor %xmm11,%xmm3
> > + movdqu %xmm2,(%rsi)
> > + pxor %xmm12,%xmm4
> > + movdqu %xmm3,16(%rsi)
> > + pxor %xmm3,%xmm3
> > + pxor %xmm13,%xmm5
> > + movdqu %xmm4,32(%rsi)
> > + pxor %xmm4,%xmm4
> > + movdqa %xmm5,%xmm2
> > + pxor %xmm5,%xmm5
> > + leaq 48(%rsi),%rsi
> > + jmp .Lcbc_dec_tail_collected
> > +
> > +.align 16
> > +.Lcbc_dec_clear_tail_collected:
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > +.Lcbc_dec_tail_collected:
> > + movups %xmm10,(%r8)
> > + andq $15,%rdx
> > + jnz .Lcbc_dec_tail_partial
> > + movups %xmm2,(%rsi)
> > + pxor %xmm2,%xmm2
> > + jmp .Lcbc_dec_ret
> > +.align 16
> > +.Lcbc_dec_tail_partial:
> > + movaps %xmm2,(%rsp)
> > + pxor %xmm2,%xmm2
> > + movq $16,%rcx
> > + movq %rsi,%rdi
> > + subq %rdx,%rcx
> > + leaq (%rsp),%rsi
> > +.long 0x9066A4F3
> > + movdqa %xmm2,(%rsp)
> > +
> > +.Lcbc_dec_ret:
> > + xorps %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + movq -8(%r11),%rbp
> > +.cfi_restore %rbp
> > + leaq (%r11),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lcbc_ret:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_cbc_encrypt,.-aesni_cbc_encrypt
> > +.globl aesni_set_decrypt_key
> > +.type aesni_set_decrypt_key,@function
> > +.align 16
> > +aesni_set_decrypt_key:
> > +.cfi_startproc
> > +.byte 0x48,0x83,0xEC,0x08
> > +.cfi_adjust_cfa_offset 8
> > + call __aesni_set_encrypt_key
> > + shll $4,%esi
> > + testl %eax,%eax
> > + jnz .Ldec_key_ret
> > + leaq 16(%rdx,%rsi,1),%rdi
> > +
> > + movups (%rdx),%xmm0
> > + movups (%rdi),%xmm1
> > + movups %xmm0,(%rdi)
> > + movups %xmm1,(%rdx)
> > + leaq 16(%rdx),%rdx
> > + leaq -16(%rdi),%rdi
> > +
> > +.Ldec_key_inverse:
> > + movups (%rdx),%xmm0
> > + movups (%rdi),%xmm1
> > +.byte 102,15,56,219,192
> > +.byte 102,15,56,219,201
> > + leaq 16(%rdx),%rdx
> > + leaq -16(%rdi),%rdi
> > + movups %xmm0,16(%rdi)
> > + movups %xmm1,-16(%rdx)
> > + cmpq %rdx,%rdi
> > + ja .Ldec_key_inverse
> > +
> > + movups (%rdx),%xmm0
> > +.byte 102,15,56,219,192
> > + pxor %xmm1,%xmm1
> > + movups %xmm0,(%rdi)
> > + pxor %xmm0,%xmm0
> > +.Ldec_key_ret:
> > + addq $8,%rsp
> > +.cfi_adjust_cfa_offset -8
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.LSEH_end_set_decrypt_key:
> > +.size aesni_set_decrypt_key,.-aesni_set_decrypt_key
> > +.globl aesni_set_encrypt_key
> > +.type aesni_set_encrypt_key,@function
> > +.align 16
> > +aesni_set_encrypt_key:
> > +__aesni_set_encrypt_key:
> > +.cfi_startproc
> > +.byte 0x48,0x83,0xEC,0x08
> > +.cfi_adjust_cfa_offset 8
> > + movq $-1,%rax
> > + testq %rdi,%rdi
> > + jz .Lenc_key_ret
> > + testq %rdx,%rdx
> > + jz .Lenc_key_ret
> > +
> > + movl $268437504,%r10d
> > + movups (%rdi),%xmm0
> > + xorps %xmm4,%xmm4
> > + andl OPENSSL_ia32cap_P+4(%rip),%r10d
> > + leaq 16(%rdx),%rax
> > + cmpl $256,%esi
> > + je .L14rounds
> > + cmpl $192,%esi
> > + je .L12rounds
> > + cmpl $128,%esi
> > + jne .Lbad_keybits
> > +
> > +.L10rounds:
> > + movl $9,%esi
> > + cmpl $268435456,%r10d
> > + je .L10rounds_alt
> > +
> > + movups %xmm0,(%rdx)
> > +.byte 102,15,58,223,200,1
> > + call .Lkey_expansion_128_cold
> > +.byte 102,15,58,223,200,2
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,4
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,8
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,16
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,32
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,64
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,128
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,27
> > + call .Lkey_expansion_128
> > +.byte 102,15,58,223,200,54
> > + call .Lkey_expansion_128
> > + movups %xmm0,(%rax)
> > + movl %esi,80(%rax)
> > + xorl %eax,%eax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.L10rounds_alt:
> > + movdqa .Lkey_rotate(%rip),%xmm5
> > + movl $8,%r10d
> > + movdqa .Lkey_rcon1(%rip),%xmm4
> > + movdqa %xmm0,%xmm2
> > + movdqu %xmm0,(%rdx)
> > + jmp .Loop_key128
> > +
> > +.align 16
> > +.Loop_key128:
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,221,196
> > + pslld $1,%xmm4
> > + leaq 16(%rax),%rax
> > +
> > + movdqa %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm3,%xmm2
> > +
> > + pxor %xmm2,%xmm0
> > + movdqu %xmm0,-16(%rax)
> > + movdqa %xmm0,%xmm2
> > +
> > + decl %r10d
> > + jnz .Loop_key128
> > +
> > + movdqa .Lkey_rcon1b(%rip),%xmm4
> > +
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,221,196
> > + pslld $1,%xmm4
> > +
> > + movdqa %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm3,%xmm2
> > +
> > + pxor %xmm2,%xmm0
> > + movdqu %xmm0,(%rax)
> > +
> > + movdqa %xmm0,%xmm2
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,221,196
> > +
> > + movdqa %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm2,%xmm3
> > + pslldq $4,%xmm2
> > + pxor %xmm3,%xmm2
> > +
> > + pxor %xmm2,%xmm0
> > + movdqu %xmm0,16(%rax)
> > +
> > + movl %esi,96(%rax)
> > + xorl %eax,%eax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.L12rounds:
> > + movq 16(%rdi),%xmm2
> > + movl $11,%esi
> > + cmpl $268435456,%r10d
> > + je .L12rounds_alt
> > +
> > + movups %xmm0,(%rdx)
> > +.byte 102,15,58,223,202,1
> > + call .Lkey_expansion_192a_cold
> > +.byte 102,15,58,223,202,2
> > + call .Lkey_expansion_192b
> > +.byte 102,15,58,223,202,4
> > + call .Lkey_expansion_192a
> > +.byte 102,15,58,223,202,8
> > + call .Lkey_expansion_192b
> > +.byte 102,15,58,223,202,16
> > + call .Lkey_expansion_192a
> > +.byte 102,15,58,223,202,32
> > + call .Lkey_expansion_192b
> > +.byte 102,15,58,223,202,64
> > + call .Lkey_expansion_192a
> > +.byte 102,15,58,223,202,128
> > + call .Lkey_expansion_192b
> > + movups %xmm0,(%rax)
> > + movl %esi,48(%rax)
> > + xorq %rax,%rax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.L12rounds_alt:
> > + movdqa .Lkey_rotate192(%rip),%xmm5
> > + movdqa .Lkey_rcon1(%rip),%xmm4
> > + movl $8,%r10d
> > + movdqu %xmm0,(%rdx)
> > + jmp .Loop_key192
> > +
> > +.align 16
> > +.Loop_key192:
> > + movq %xmm2,0(%rax)
> > + movdqa %xmm2,%xmm1
> > +.byte 102,15,56,0,213
> > +.byte 102,15,56,221,212
> > + pslld $1,%xmm4
> > + leaq 24(%rax),%rax
> > +
> > + movdqa %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm3,%xmm0
> > +
> > + pshufd $0xff,%xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > + pslldq $4,%xmm1
> > + pxor %xmm1,%xmm3
> > +
> > + pxor %xmm2,%xmm0
> > + pxor %xmm3,%xmm2
> > + movdqu %xmm0,-16(%rax)
> > +
> > + decl %r10d
> > + jnz .Loop_key192
> > +
> > + movl %esi,32(%rax)
> > + xorl %eax,%eax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.L14rounds:
> > + movups 16(%rdi),%xmm2
> > + movl $13,%esi
> > + leaq 16(%rax),%rax
> > + cmpl $268435456,%r10d
> > + je .L14rounds_alt
> > +
> > + movups %xmm0,(%rdx)
> > + movups %xmm2,16(%rdx)
> > +.byte 102,15,58,223,202,1
> > + call .Lkey_expansion_256a_cold
> > +.byte 102,15,58,223,200,1
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,2
> > + call .Lkey_expansion_256a
> > +.byte 102,15,58,223,200,2
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,4
> > + call .Lkey_expansion_256a
> > +.byte 102,15,58,223,200,4
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,8
> > + call .Lkey_expansion_256a
> > +.byte 102,15,58,223,200,8
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,16
> > + call .Lkey_expansion_256a
> > +.byte 102,15,58,223,200,16
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,32
> > + call .Lkey_expansion_256a
> > +.byte 102,15,58,223,200,32
> > + call .Lkey_expansion_256b
> > +.byte 102,15,58,223,202,64
> > + call .Lkey_expansion_256a
> > + movups %xmm0,(%rax)
> > + movl %esi,16(%rax)
> > + xorq %rax,%rax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.L14rounds_alt:
> > + movdqa .Lkey_rotate(%rip),%xmm5
> > + movdqa .Lkey_rcon1(%rip),%xmm4
> > + movl $7,%r10d
> > + movdqu %xmm0,0(%rdx)
> > + movdqa %xmm2,%xmm1
> > + movdqu %xmm2,16(%rdx)
> > + jmp .Loop_key256
> > +
> > +.align 16
> > +.Loop_key256:
> > +.byte 102,15,56,0,213
> > +.byte 102,15,56,221,212
> > +
> > + movdqa %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm0,%xmm3
> > + pslldq $4,%xmm0
> > + pxor %xmm3,%xmm0
> > + pslld $1,%xmm4
> > +
> > + pxor %xmm2,%xmm0
> > + movdqu %xmm0,(%rax)
> > +
> > + decl %r10d
> > + jz .Ldone_key256
> > +
> > + pshufd $0xff,%xmm0,%xmm2
> > + pxor %xmm3,%xmm3
> > +.byte 102,15,56,221,211
> > +
> > + movdqa %xmm1,%xmm3
> > + pslldq $4,%xmm1
> > + pxor %xmm1,%xmm3
> > + pslldq $4,%xmm1
> > + pxor %xmm1,%xmm3
> > + pslldq $4,%xmm1
> > + pxor %xmm3,%xmm1
> > +
> > + pxor %xmm1,%xmm2
> > + movdqu %xmm2,16(%rax)
> > + leaq 32(%rax),%rax
> > + movdqa %xmm2,%xmm1
> > +
> > + jmp .Loop_key256
> > +
> > +.Ldone_key256:
> > + movl %esi,16(%rax)
> > + xorl %eax,%eax
> > + jmp .Lenc_key_ret
> > +
> > +.align 16
> > +.Lbad_keybits:
> > + movq $-2,%rax
> > +.Lenc_key_ret:
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + addq $8,%rsp
> > +.cfi_adjust_cfa_offset -8
> > + .byte 0xf3,0xc3
> > +.LSEH_end_set_encrypt_key:
> > +
> > +.align 16
> > +.Lkey_expansion_128:
> > + movups %xmm0,(%rax)
> > + leaq 16(%rax),%rax
> > +.Lkey_expansion_128_cold:
> > + shufps $16,%xmm0,%xmm4
> > + xorps %xmm4,%xmm0
> > + shufps $140,%xmm0,%xmm4
> > + xorps %xmm4,%xmm0
> > + shufps $255,%xmm1,%xmm1
> > + xorps %xmm1,%xmm0
> > + .byte 0xf3,0xc3
> > +
> > +.align 16
> > +.Lkey_expansion_192a:
> > + movups %xmm0,(%rax)
> > + leaq 16(%rax),%rax
> > +.Lkey_expansion_192a_cold:
> > + movaps %xmm2,%xmm5
> > +.Lkey_expansion_192b_warm:
> > + shufps $16,%xmm0,%xmm4
> > + movdqa %xmm2,%xmm3
> > + xorps %xmm4,%xmm0
> > + shufps $140,%xmm0,%xmm4
> > + pslldq $4,%xmm3
> > + xorps %xmm4,%xmm0
> > + pshufd $85,%xmm1,%xmm1
> > + pxor %xmm3,%xmm2
> > + pxor %xmm1,%xmm0
> > + pshufd $255,%xmm0,%xmm3
> > + pxor %xmm3,%xmm2
> > + .byte 0xf3,0xc3
> > +
> > +.align 16
> > +.Lkey_expansion_192b:
> > + movaps %xmm0,%xmm3
> > + shufps $68,%xmm0,%xmm5
> > + movups %xmm5,(%rax)
> > + shufps $78,%xmm2,%xmm3
> > + movups %xmm3,16(%rax)
> > + leaq 32(%rax),%rax
> > + jmp .Lkey_expansion_192b_warm
> > +
> > +.align 16
> > +.Lkey_expansion_256a:
> > + movups %xmm2,(%rax)
> > + leaq 16(%rax),%rax
> > +.Lkey_expansion_256a_cold:
> > + shufps $16,%xmm0,%xmm4
> > + xorps %xmm4,%xmm0
> > + shufps $140,%xmm0,%xmm4
> > + xorps %xmm4,%xmm0
> > + shufps $255,%xmm1,%xmm1
> > + xorps %xmm1,%xmm0
> > + .byte 0xf3,0xc3
> > +
> > +.align 16
> > +.Lkey_expansion_256b:
> > + movups %xmm0,(%rax)
> > + leaq 16(%rax),%rax
> > +
> > + shufps $16,%xmm2,%xmm4
> > + xorps %xmm4,%xmm2
> > + shufps $140,%xmm2,%xmm4
> > + xorps %xmm4,%xmm2
> > + shufps $170,%xmm1,%xmm1
> > + xorps %xmm1,%xmm2
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_set_encrypt_key,.-aesni_set_encrypt_key
> > +.size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key
> > +.align 64
> > +.Lbswap_mask:
> > +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > +.Lincrement32:
> > +.long 6,6,6,0
> > +.Lincrement64:
> > +.long 1,0,0,0
> > +.Lxts_magic:
> > +.long 0x87,0,1,0
> > +.Lincrement1:
> > +.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
> > +.Lkey_rotate:
> > +.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
> > +.Lkey_rotate192:
> > +.long 0x04070605,0x04070605,0x04070605,0x04070605
> > +.Lkey_rcon1:
> > +.long 1,1,1,1
> > +.Lkey_rcon1b:
> > +.long 0x1b,0x1b,0x1b,0x1b
> > +
> > +.byte
> >
> 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,6
> 7
> >
,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
> ,1
> > 01,110,115,115,108,46,111,114,103,62,0
> > +.align 64
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> > new file mode 100644
> > index 0000000000..982818f83b
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/aes/vpaes-x86_64.S
> > @@ -0,0 +1,863 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_encrypt_core,@function
> > +.align 16
> > +_vpaes_encrypt_core:
> > +.cfi_startproc
> > + movq %rdx,%r9
> > + movq $16,%r11
> > + movl 240(%rdx),%eax
> > + movdqa %xmm9,%xmm1
> > + movdqa .Lk_ipt(%rip),%xmm2
> > + pandn %xmm0,%xmm1
> > + movdqu (%r9),%xmm5
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm0
> > +.byte 102,15,56,0,208
> > + movdqa .Lk_ipt+16(%rip),%xmm0
> > +.byte 102,15,56,0,193
> > + pxor %xmm5,%xmm2
> > + addq $16,%r9
> > + pxor %xmm2,%xmm0
> > + leaq .Lk_mc_backward(%rip),%r10
> > + jmp .Lenc_entry
> > +
> > +.align 16
> > +.Lenc_loop:
> > +
> > + movdqa %xmm13,%xmm4
> > + movdqa %xmm12,%xmm0
> > +.byte 102,15,56,0,226
> > +.byte 102,15,56,0,195
> > + pxor %xmm5,%xmm4
> > + movdqa %xmm15,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa -64(%r11,%r10,1),%xmm1
> > +.byte 102,15,56,0,234
> > + movdqa (%r11,%r10,1),%xmm4
> > + movdqa %xmm14,%xmm2
> > +.byte 102,15,56,0,211
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm5,%xmm2
> > +.byte 102,15,56,0,193
> > + addq $16,%r9
> > + pxor %xmm2,%xmm0
> > +.byte 102,15,56,0,220
> > + addq $16,%r11
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,56,0,193
> > + andq $0x30,%r11
> > + subq $1,%rax
> > + pxor %xmm3,%xmm0
> > +
> > +.Lenc_entry:
> > +
> > + movdqa %xmm9,%xmm1
> > + movdqa %xmm11,%xmm5
> > + pandn %xmm0,%xmm1
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm0
> > +.byte 102,15,56,0,232
> > + movdqa %xmm10,%xmm3
> > + pxor %xmm1,%xmm0
> > +.byte 102,15,56,0,217
> > + movdqa %xmm10,%xmm4
> > + pxor %xmm5,%xmm3
> > +.byte 102,15,56,0,224
> > + movdqa %xmm10,%xmm2
> > + pxor %xmm5,%xmm4
> > +.byte 102,15,56,0,211
> > + movdqa %xmm10,%xmm3
> > + pxor %xmm0,%xmm2
> > +.byte 102,15,56,0,220
> > + movdqu (%r9),%xmm5
> > + pxor %xmm1,%xmm3
> > + jnz .Lenc_loop
> > +
> > +
> > + movdqa -96(%r10),%xmm4
> > + movdqa -80(%r10),%xmm0
> > +.byte 102,15,56,0,226
> > + pxor %xmm5,%xmm4
> > +.byte 102,15,56,0,195
> > + movdqa 64(%r11,%r10,1),%xmm1
> > + pxor %xmm4,%xmm0
> > +.byte 102,15,56,0,193
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_encrypt_core,.-_vpaes_encrypt_core
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_decrypt_core,@function
> > +.align 16
> > +_vpaes_decrypt_core:
> > +.cfi_startproc
> > + movq %rdx,%r9
> > + movl 240(%rdx),%eax
> > + movdqa %xmm9,%xmm1
> > + movdqa .Lk_dipt(%rip),%xmm2
> > + pandn %xmm0,%xmm1
> > + movq %rax,%r11
> > + psrld $4,%xmm1
> > + movdqu (%r9),%xmm5
> > + shlq $4,%r11
> > + pand %xmm9,%xmm0
> > +.byte 102,15,56,0,208
> > + movdqa .Lk_dipt+16(%rip),%xmm0
> > + xorq $0x30,%r11
> > + leaq .Lk_dsbd(%rip),%r10
> > +.byte 102,15,56,0,193
> > + andq $0x30,%r11
> > + pxor %xmm5,%xmm2
> > + movdqa .Lk_mc_forward+48(%rip),%xmm5
> > + pxor %xmm2,%xmm0
> > + addq $16,%r9
> > + addq %r10,%r11
> > + jmp .Ldec_entry
> > +
> > +.align 16
> > +.Ldec_loop:
> > +
> > +
> > +
> > + movdqa -32(%r10),%xmm4
> > + movdqa -16(%r10),%xmm1
> > +.byte 102,15,56,0,226
> > +.byte 102,15,56,0,203
> > + pxor %xmm4,%xmm0
> > + movdqa 0(%r10),%xmm4
> > + pxor %xmm1,%xmm0
> > + movdqa 16(%r10),%xmm1
> > +
> > +.byte 102,15,56,0,226
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,0,203
> > + pxor %xmm4,%xmm0
> > + movdqa 32(%r10),%xmm4
> > + pxor %xmm1,%xmm0
> > + movdqa 48(%r10),%xmm1
> > +
> > +.byte 102,15,56,0,226
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,0,203
> > + pxor %xmm4,%xmm0
> > + movdqa 64(%r10),%xmm4
> > + pxor %xmm1,%xmm0
> > + movdqa 80(%r10),%xmm1
> > +
> > +.byte 102,15,56,0,226
> > +.byte 102,15,56,0,197
> > +.byte 102,15,56,0,203
> > + pxor %xmm4,%xmm0
> > + addq $16,%r9
> > +.byte 102,15,58,15,237,12
> > + pxor %xmm1,%xmm0
> > + subq $1,%rax
> > +
> > +.Ldec_entry:
> > +
> > + movdqa %xmm9,%xmm1
> > + pandn %xmm0,%xmm1
> > + movdqa %xmm11,%xmm2
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm0
> > +.byte 102,15,56,0,208
> > + movdqa %xmm10,%xmm3
> > + pxor %xmm1,%xmm0
> > +.byte 102,15,56,0,217
> > + movdqa %xmm10,%xmm4
> > + pxor %xmm2,%xmm3
> > +.byte 102,15,56,0,224
> > + pxor %xmm2,%xmm4
> > + movdqa %xmm10,%xmm2
> > +.byte 102,15,56,0,211
> > + movdqa %xmm10,%xmm3
> > + pxor %xmm0,%xmm2
> > +.byte 102,15,56,0,220
> > + movdqu (%r9),%xmm0
> > + pxor %xmm1,%xmm3
> > + jnz .Ldec_loop
> > +
> > +
> > + movdqa 96(%r10),%xmm4
> > +.byte 102,15,56,0,226
> > + pxor %xmm0,%xmm4
> > + movdqa 112(%r10),%xmm0
> > + movdqa -352(%r11),%xmm2
> > +.byte 102,15,56,0,195
> > + pxor %xmm4,%xmm0
> > +.byte 102,15,56,0,194
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_decrypt_core,.-_vpaes_decrypt_core
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_schedule_core,@function
> > +.align 16
> > +_vpaes_schedule_core:
> > +.cfi_startproc
> > +
> > +
> > +
> > +
> > +
> > + call _vpaes_preheat
> > + movdqa .Lk_rcon(%rip),%xmm8
> > + movdqu (%rdi),%xmm0
> > +
> > +
> > + movdqa %xmm0,%xmm3
> > + leaq .Lk_ipt(%rip),%r11
> > + call _vpaes_schedule_transform
> > + movdqa %xmm0,%xmm7
> > +
> > + leaq .Lk_sr(%rip),%r10
> > + testq %rcx,%rcx
> > + jnz .Lschedule_am_decrypting
> > +
> > +
> > + movdqu %xmm0,(%rdx)
> > + jmp .Lschedule_go
> > +
> > +.Lschedule_am_decrypting:
> > +
> > + movdqa (%r8,%r10,1),%xmm1
> > +.byte 102,15,56,0,217
> > + movdqu %xmm3,(%rdx)
> > + xorq $0x30,%r8
> > +
> > +.Lschedule_go:
> > + cmpl $192,%esi
> > + ja .Lschedule_256
> > + je .Lschedule_192
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.Lschedule_128:
> > + movl $10,%esi
> > +
> > +.Loop_schedule_128:
> > + call _vpaes_schedule_round
> > + decq %rsi
> > + jz .Lschedule_mangle_last
> > + call _vpaes_schedule_mangle
> > + jmp .Loop_schedule_128
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.align 16
> > +.Lschedule_192:
> > + movdqu 8(%rdi),%xmm0
> > + call _vpaes_schedule_transform
> > + movdqa %xmm0,%xmm6
> > + pxor %xmm4,%xmm4
> > + movhlps %xmm4,%xmm6
> > + movl $4,%esi
> > +
> > +.Loop_schedule_192:
> > + call _vpaes_schedule_round
> > +.byte 102,15,58,15,198,8
> > + call _vpaes_schedule_mangle
> > + call _vpaes_schedule_192_smear
> > + call _vpaes_schedule_mangle
> > + call _vpaes_schedule_round
> > + decq %rsi
> > + jz .Lschedule_mangle_last
> > + call _vpaes_schedule_mangle
> > + call _vpaes_schedule_192_smear
> > + jmp .Loop_schedule_192
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.align 16
> > +.Lschedule_256:
> > + movdqu 16(%rdi),%xmm0
> > + call _vpaes_schedule_transform
> > + movl $7,%esi
> > +
> > +.Loop_schedule_256:
> > + call _vpaes_schedule_mangle
> > + movdqa %xmm0,%xmm6
> > +
> > +
> > + call _vpaes_schedule_round
> > + decq %rsi
> > + jz .Lschedule_mangle_last
> > + call _vpaes_schedule_mangle
> > +
> > +
> > + pshufd $0xFF,%xmm0,%xmm0
> > + movdqa %xmm7,%xmm5
> > + movdqa %xmm6,%xmm7
> > + call _vpaes_schedule_low_round
> > + movdqa %xmm5,%xmm7
> > +
> > + jmp .Loop_schedule_256
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.align 16
> > +.Lschedule_mangle_last:
> > +
> > + leaq .Lk_deskew(%rip),%r11
> > + testq %rcx,%rcx
> > + jnz .Lschedule_mangle_last_dec
> > +
> > +
> > + movdqa (%r8,%r10,1),%xmm1
> > +.byte 102,15,56,0,193
> > + leaq .Lk_opt(%rip),%r11
> > + addq $32,%rdx
> > +
> > +.Lschedule_mangle_last_dec:
> > + addq $-16,%rdx
> > + pxor .Lk_s63(%rip),%xmm0
> > + call _vpaes_schedule_transform
> > + movdqu %xmm0,(%rdx)
> > +
> > +
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_schedule_core,.-_vpaes_schedule_core
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_schedule_192_smear,@function
> > +.align 16
> > +_vpaes_schedule_192_smear:
> > +.cfi_startproc
> > + pshufd $0x80,%xmm6,%xmm1
> > + pshufd $0xFE,%xmm7,%xmm0
> > + pxor %xmm1,%xmm6
> > + pxor %xmm1,%xmm1
> > + pxor %xmm0,%xmm6
> > + movdqa %xmm6,%xmm0
> > + movhlps %xmm1,%xmm6
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_schedule_round,@function
> > +.align 16
> > +_vpaes_schedule_round:
> > +.cfi_startproc
> > +
> > + pxor %xmm1,%xmm1
> > +.byte 102,65,15,58,15,200,15
> > +.byte 102,69,15,58,15,192,15
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + pshufd $0xFF,%xmm0,%xmm0
> > +.byte 102,15,58,15,192,1
> > +
> > +
> > +
> > +
> > +_vpaes_schedule_low_round:
> > +
> > + movdqa %xmm7,%xmm1
> > + pslldq $4,%xmm7
> > + pxor %xmm1,%xmm7
> > + movdqa %xmm7,%xmm1
> > + pslldq $8,%xmm7
> > + pxor %xmm1,%xmm7
> > + pxor .Lk_s63(%rip),%xmm7
> > +
> > +
> > + movdqa %xmm9,%xmm1
> > + pandn %xmm0,%xmm1
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm0
> > + movdqa %xmm11,%xmm2
> > +.byte 102,15,56,0,208
> > + pxor %xmm1,%xmm0
> > + movdqa %xmm10,%xmm3
> > +.byte 102,15,56,0,217
> > + pxor %xmm2,%xmm3
> > + movdqa %xmm10,%xmm4
> > +.byte 102,15,56,0,224
> > + pxor %xmm2,%xmm4
> > + movdqa %xmm10,%xmm2
> > +.byte 102,15,56,0,211
> > + pxor %xmm0,%xmm2
> > + movdqa %xmm10,%xmm3
> > +.byte 102,15,56,0,220
> > + pxor %xmm1,%xmm3
> > + movdqa %xmm13,%xmm4
> > +.byte 102,15,56,0,226
> > + movdqa %xmm12,%xmm0
> > +.byte 102,15,56,0,195
> > + pxor %xmm4,%xmm0
> > +
> > +
> > + pxor %xmm7,%xmm0
> > + movdqa %xmm0,%xmm7
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_schedule_round,.-_vpaes_schedule_round
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_schedule_transform,@function
> > +.align 16
> > +_vpaes_schedule_transform:
> > +.cfi_startproc
> > + movdqa %xmm9,%xmm1
> > + pandn %xmm0,%xmm1
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm0
> > + movdqa (%r11),%xmm2
> > +.byte 102,15,56,0,208
> > + movdqa 16(%r11),%xmm0
> > +.byte 102,15,56,0,193
> > + pxor %xmm2,%xmm0
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_schedule_transform,.-_vpaes_schedule_transform
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_schedule_mangle,@function
> > +.align 16
> > +_vpaes_schedule_mangle:
> > +.cfi_startproc
> > + movdqa %xmm0,%xmm4
> > + movdqa .Lk_mc_forward(%rip),%xmm5
> > + testq %rcx,%rcx
> > + jnz .Lschedule_mangle_dec
> > +
> > +
> > + addq $16,%rdx
> > + pxor .Lk_s63(%rip),%xmm4
> > +.byte 102,15,56,0,229
> > + movdqa %xmm4,%xmm3
> > +.byte 102,15,56,0,229
> > + pxor %xmm4,%xmm3
> > +.byte 102,15,56,0,229
> > + pxor %xmm4,%xmm3
> > +
> > + jmp .Lschedule_mangle_both
> > +.align 16
> > +.Lschedule_mangle_dec:
> > +
> > + leaq .Lk_dksd(%rip),%r11
> > + movdqa %xmm9,%xmm1
> > + pandn %xmm4,%xmm1
> > + psrld $4,%xmm1
> > + pand %xmm9,%xmm4
> > +
> > + movdqa 0(%r11),%xmm2
> > +.byte 102,15,56,0,212
> > + movdqa 16(%r11),%xmm3
> > +.byte 102,15,56,0,217
> > + pxor %xmm2,%xmm3
> > +.byte 102,15,56,0,221
> > +
> > + movdqa 32(%r11),%xmm2
> > +.byte 102,15,56,0,212
> > + pxor %xmm3,%xmm2
> > + movdqa 48(%r11),%xmm3
> > +.byte 102,15,56,0,217
> > + pxor %xmm2,%xmm3
> > +.byte 102,15,56,0,221
> > +
> > + movdqa 64(%r11),%xmm2
> > +.byte 102,15,56,0,212
> > + pxor %xmm3,%xmm2
> > + movdqa 80(%r11),%xmm3
> > +.byte 102,15,56,0,217
> > + pxor %xmm2,%xmm3
> > +.byte 102,15,56,0,221
> > +
> > + movdqa 96(%r11),%xmm2
> > +.byte 102,15,56,0,212
> > + pxor %xmm3,%xmm2
> > + movdqa 112(%r11),%xmm3
> > +.byte 102,15,56,0,217
> > + pxor %xmm2,%xmm3
> > +
> > + addq $-16,%rdx
> > +
> > +.Lschedule_mangle_both:
> > + movdqa (%r8,%r10,1),%xmm1
> > +.byte 102,15,56,0,217
> > + addq $-16,%r8
> > + andq $0x30,%r8
> > + movdqu %xmm3,(%rdx)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
> > +
> > +
> > +
> > +
> > +.globl vpaes_set_encrypt_key
> > +.type vpaes_set_encrypt_key,@function
> > +.align 16
> > +vpaes_set_encrypt_key:
> > +.cfi_startproc
> > + movl %esi,%eax
> > + shrl $5,%eax
> > + addl $5,%eax
> > + movl %eax,240(%rdx)
> > +
> > + movl $0,%ecx
> > + movl $0x30,%r8d
> > + call _vpaes_schedule_core
> > + xorl %eax,%eax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key
> > +
> > +.globl vpaes_set_decrypt_key
> > +.type vpaes_set_decrypt_key,@function
> > +.align 16
> > +vpaes_set_decrypt_key:
> > +.cfi_startproc
> > + movl %esi,%eax
> > + shrl $5,%eax
> > + addl $5,%eax
> > + movl %eax,240(%rdx)
> > + shll $4,%eax
> > + leaq 16(%rdx,%rax,1),%rdx
> > +
> > + movl $1,%ecx
> > + movl %esi,%r8d
> > + shrl $1,%r8d
> > + andl $32,%r8d
> > + xorl $32,%r8d
> > + call _vpaes_schedule_core
> > + xorl %eax,%eax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key
> > +
> > +.globl vpaes_encrypt
> > +.type vpaes_encrypt,@function
> > +.align 16
> > +vpaes_encrypt:
> > +.cfi_startproc
> > + movdqu (%rdi),%xmm0
> > + call _vpaes_preheat
> > + call _vpaes_encrypt_core
> > + movdqu %xmm0,(%rsi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size vpaes_encrypt,.-vpaes_encrypt
> > +
> > +.globl vpaes_decrypt
> > +.type vpaes_decrypt,@function
> > +.align 16
> > +vpaes_decrypt:
> > +.cfi_startproc
> > + movdqu (%rdi),%xmm0
> > + call _vpaes_preheat
> > + call _vpaes_decrypt_core
> > + movdqu %xmm0,(%rsi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size vpaes_decrypt,.-vpaes_decrypt
> > +.globl vpaes_cbc_encrypt
> > +.type vpaes_cbc_encrypt,@function
> > +.align 16
> > +vpaes_cbc_encrypt:
> > +.cfi_startproc
> > + xchgq %rcx,%rdx
> > + subq $16,%rcx
> > + jc .Lcbc_abort
> > + movdqu (%r8),%xmm6
> > + subq %rdi,%rsi
> > + call _vpaes_preheat
> > + cmpl $0,%r9d
> > + je .Lcbc_dec_loop
> > + jmp .Lcbc_enc_loop
> > +.align 16
> > +.Lcbc_enc_loop:
> > + movdqu (%rdi),%xmm0
> > + pxor %xmm6,%xmm0
> > + call _vpaes_encrypt_core
> > + movdqa %xmm0,%xmm6
> > + movdqu %xmm0,(%rsi,%rdi,1)
> > + leaq 16(%rdi),%rdi
> > + subq $16,%rcx
> > + jnc .Lcbc_enc_loop
> > + jmp .Lcbc_done
> > +.align 16
> > +.Lcbc_dec_loop:
> > + movdqu (%rdi),%xmm0
> > + movdqa %xmm0,%xmm7
> > + call _vpaes_decrypt_core
> > + pxor %xmm6,%xmm0
> > + movdqa %xmm7,%xmm6
> > + movdqu %xmm0,(%rsi,%rdi,1)
> > + leaq 16(%rdi),%rdi
> > + subq $16,%rcx
> > + jnc .Lcbc_dec_loop
> > +.Lcbc_done:
> > + movdqu %xmm6,(%r8)
> > +.Lcbc_abort:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt
> > +
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_preheat,@function
> > +.align 16
> > +_vpaes_preheat:
> > +.cfi_startproc
> > + leaq .Lk_s0F(%rip),%r10
> > + movdqa -32(%r10),%xmm10
> > + movdqa -16(%r10),%xmm11
> > + movdqa 0(%r10),%xmm9
> > + movdqa 48(%r10),%xmm13
> > + movdqa 64(%r10),%xmm12
> > + movdqa 80(%r10),%xmm15
> > + movdqa 96(%r10),%xmm14
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size _vpaes_preheat,.-_vpaes_preheat
> > +
> > +
> > +
> > +
> > +
> > +.type _vpaes_consts,@object
> > +.align 64
> > +_vpaes_consts:
> > +.Lk_inv:
> > +.quad 0x0E05060F0D080180, 0x040703090A0B0C02
> > +.quad 0x01040A060F0B0780, 0x030D0E0C02050809
> > +
> > +.Lk_s0F:
> > +.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F
> > +
> > +.Lk_ipt:
> > +.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808
> > +.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81
> > +
> > +.Lk_sb1:
> > +.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544
> > +.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF
> > +.Lk_sb2:
> > +.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD
> > +.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A
> > +.Lk_sbo:
> > +.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878
> > +.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA
> > +
> > +.Lk_mc_forward:
> > +.quad 0x0407060500030201, 0x0C0F0E0D080B0A09
> > +.quad 0x080B0A0904070605, 0x000302010C0F0E0D
> > +.quad 0x0C0F0E0D080B0A09, 0x0407060500030201
> > +.quad 0x000302010C0F0E0D, 0x080B0A0904070605
> > +
> > +.Lk_mc_backward:
> > +.quad 0x0605040702010003, 0x0E0D0C0F0A09080B
> > +.quad 0x020100030E0D0C0F, 0x0A09080B06050407
> > +.quad 0x0E0D0C0F0A09080B, 0x0605040702010003
> > +.quad 0x0A09080B06050407, 0x020100030E0D0C0F
> > +
> > +.Lk_sr:
> > +.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908
> > +.quad 0x030E09040F0A0500, 0x0B06010C07020D08
> > +.quad 0x0F060D040B020900, 0x070E050C030A0108
> > +.quad 0x0B0E0104070A0D00, 0x0306090C0F020508
> > +
> > +.Lk_rcon:
> > +.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81
> > +
> > +.Lk_s63:
> > +.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B
> > +
> > +.Lk_opt:
> > +.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808
> > +.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0
> > +
> > +.Lk_deskew:
> > +.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A
> > +.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77
> > +
> > +
> > +
> > +
> > +
> > +.Lk_dksd:
> > +.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9
> > +.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E
> > +.Lk_dksb:
> > +.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99
> > +.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8
> > +.Lk_dkse:
> > +.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086
> > +.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487
> > +.Lk_dks9:
> > +.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC
> > +.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE
> > +
> > +
> > +
> > +
> > +
> > +.Lk_dipt:
> > +.quad 0x0F505B040B545F00, 0x154A411E114E451A
> > +.quad 0x86E383E660056500, 0x12771772F491F194
> > +
> > +.Lk_dsb9:
> > +.quad 0x851C03539A86D600, 0xCAD51F504F994CC9
> > +.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565
> > +.Lk_dsbd:
> > +.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439
> > +.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3
> > +.Lk_dsbb:
> > +.quad 0xD022649296B44200, 0x602646F6B0F2D404
> > +.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B
> > +.Lk_dsbe:
> > +.quad 0x46F2929626D4D000, 0x2242600464B4F6B0
> > +.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32
> > +.Lk_dsbo:
> > +.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D
> > +.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C
> > +.byte
> >
> 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,
> 6
> >
>
9,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,10
> >
> 7,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,8
> > 5,110,105,118,101,114,115,105,116,121,41,0
> > +.align 64
> > +.size _vpaes_consts,.-_vpaes_consts
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-
> > x86_64.S
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..1201f3427a
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/aesni-gcm-
> > x86_64.S
> > @@ -0,0 +1,29 @@
> > +# WARNING: do not edit!
> > +# Generated from openssl/crypto/modes/asm/aesni-gcm-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
> > +
> > +.text
> > +
> > +.globl aesni_gcm_encrypt
> > +.type aesni_gcm_encrypt,@function
> > +aesni_gcm_encrypt:
> > +.cfi_startproc
> > + xorl %eax,%eax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_gcm_encrypt,.-aesni_gcm_encrypt
> > +
> > +.globl aesni_gcm_decrypt
> > +.type aesni_gcm_decrypt,@function
> > +aesni_gcm_decrypt:
> > +.cfi_startproc
> > + xorl %eax,%eax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size aesni_gcm_decrypt,.-aesni_gcm_decrypt
> > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-
> > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..3fcaa4b2ef
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/modes/ghash-x86_64.S
> > @@ -0,0 +1,1386 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl gcm_gmult_4bit
> > +.type gcm_gmult_4bit,@function
> > +.align 16
> > +gcm_gmult_4bit:
> > +.cfi_startproc
> > + pushq %rbx
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r15,-56
> > + subq $280,%rsp
> > +.cfi_adjust_cfa_offset 280
> > +.Lgmult_prologue:
> > +
> > + movzbq 15(%rdi),%r8
> > + leaq .Lrem_4bit(%rip),%r11
> > + xorq %rax,%rax
> > + xorq %rbx,%rbx
> > + movb %r8b,%al
> > + movb %r8b,%bl
> > + shlb $4,%al
> > + movq $14,%rcx
> > + movq 8(%rsi,%rax,1),%r8
> > + movq (%rsi,%rax,1),%r9
> > + andb $0xf0,%bl
> > + movq %r8,%rdx
> > + jmp .Loop1
> > +
> > +.align 16
> > +.Loop1:
> > + shrq $4,%r8
> > + andq $0xf,%rdx
> > + movq %r9,%r10
> > + movb (%rdi,%rcx,1),%al
> > + shrq $4,%r9
> > + xorq 8(%rsi,%rbx,1),%r8
> > + shlq $60,%r10
> > + xorq (%rsi,%rbx,1),%r9
> > + movb %al,%bl
> > + xorq (%r11,%rdx,8),%r9
> > + movq %r8,%rdx
> > + shlb $4,%al
> > + xorq %r10,%r8
> > + decq %rcx
> > + js .Lbreak1
> > +
> > + shrq $4,%r8
> > + andq $0xf,%rdx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + xorq 8(%rsi,%rax,1),%r8
> > + shlq $60,%r10
> > + xorq (%rsi,%rax,1),%r9
> > + andb $0xf0,%bl
> > + xorq (%r11,%rdx,8),%r9
> > + movq %r8,%rdx
> > + xorq %r10,%r8
> > + jmp .Loop1
> > +
> > +.align 16
> > +.Lbreak1:
> > + shrq $4,%r8
> > + andq $0xf,%rdx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + xorq 8(%rsi,%rax,1),%r8
> > + shlq $60,%r10
> > + xorq (%rsi,%rax,1),%r9
> > + andb $0xf0,%bl
> > + xorq (%r11,%rdx,8),%r9
> > + movq %r8,%rdx
> > + xorq %r10,%r8
> > +
> > + shrq $4,%r8
> > + andq $0xf,%rdx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + xorq 8(%rsi,%rbx,1),%r8
> > + shlq $60,%r10
> > + xorq (%rsi,%rbx,1),%r9
> > + xorq %r10,%r8
> > + xorq (%r11,%rdx,8),%r9
> > +
> > + bswapq %r8
> > + bswapq %r9
> > + movq %r8,8(%rdi)
> > + movq %r9,(%rdi)
> > +
> > + leaq 280+48(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lgmult_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size gcm_gmult_4bit,.-gcm_gmult_4bit
> > +.globl gcm_ghash_4bit
> > +.type gcm_ghash_4bit,@function
> > +.align 16
> > +gcm_ghash_4bit:
> > +.cfi_startproc
> > + pushq %rbx
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_adjust_cfa_offset 8
> > +.cfi_offset %r15,-56
> > + subq $280,%rsp
> > +.cfi_adjust_cfa_offset 280
> > +.Lghash_prologue:
> > + movq %rdx,%r14
> > + movq %rcx,%r15
> > + subq $-128,%rsi
> > + leaq 16+128(%rsp),%rbp
> > + xorl %edx,%edx
> > + movq 0+0-128(%rsi),%r8
> > + movq 0+8-128(%rsi),%rax
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq 16+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq 16+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,0(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,0(%rbp)
> > + movq 32+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,0-128(%rbp)
> > + movq 32+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,1(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,8(%rbp)
> > + movq 48+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,8-128(%rbp)
> > + movq 48+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,2(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,16(%rbp)
> > + movq 64+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,16-128(%rbp)
> > + movq 64+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,3(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,24(%rbp)
> > + movq 80+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,24-128(%rbp)
> > + movq 80+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,4(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,32(%rbp)
> > + movq 96+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,32-128(%rbp)
> > + movq 96+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,5(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,40(%rbp)
> > + movq 112+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,40-128(%rbp)
> > + movq 112+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,6(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,48(%rbp)
> > + movq 128+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,48-128(%rbp)
> > + movq 128+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,7(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,56(%rbp)
> > + movq 144+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,56-128(%rbp)
> > + movq 144+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,8(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,64(%rbp)
> > + movq 160+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,64-128(%rbp)
> > + movq 160+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,9(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,72(%rbp)
> > + movq 176+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,72-128(%rbp)
> > + movq 176+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,10(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,80(%rbp)
> > + movq 192+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,80-128(%rbp)
> > + movq 192+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,11(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,88(%rbp)
> > + movq 208+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,88-128(%rbp)
> > + movq 208+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,12(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,96(%rbp)
> > + movq 224+0-128(%rsi),%r8
> > + shlb $4,%dl
> > + movq %rax,96-128(%rbp)
> > + movq 224+8-128(%rsi),%rax
> > + shlq $60,%r10
> > + movb %dl,13(%rsp)
> > + orq %r10,%rbx
> > + movb %al,%dl
> > + shrq $4,%rax
> > + movq %r8,%r10
> > + shrq $4,%r8
> > + movq %r9,104(%rbp)
> > + movq 240+0-128(%rsi),%r9
> > + shlb $4,%dl
> > + movq %rbx,104-128(%rbp)
> > + movq 240+8-128(%rsi),%rbx
> > + shlq $60,%r10
> > + movb %dl,14(%rsp)
> > + orq %r10,%rax
> > + movb %bl,%dl
> > + shrq $4,%rbx
> > + movq %r9,%r10
> > + shrq $4,%r9
> > + movq %r8,112(%rbp)
> > + shlb $4,%dl
> > + movq %rax,112-128(%rbp)
> > + shlq $60,%r10
> > + movb %dl,15(%rsp)
> > + orq %r10,%rbx
> > + movq %r9,120(%rbp)
> > + movq %rbx,120-128(%rbp)
> > + addq $-128,%rsi
> > + movq 8(%rdi),%r8
> > + movq 0(%rdi),%r9
> > + addq %r14,%r15
> > + leaq .Lrem_8bit(%rip),%r11
> > + jmp .Louter_loop
> > +.align 16
> > +.Louter_loop:
> > + xorq (%r14),%r9
> > + movq 8(%r14),%rdx
> > + leaq 16(%r14),%r14
> > + xorq %r8,%rdx
> > + movq %r9,(%rdi)
> > + movq %rdx,8(%rdi)
> > + shrq $32,%rdx
> > + xorq %rax,%rax
> > + roll $8,%edx
> > + movb %dl,%al
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + shrl $4,%ebx
> > + roll $8,%edx
> > + movq 8(%rsi,%rax,1),%r8
> > + movq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + movl 8(%rdi),%edx
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + movl 4(%rdi),%edx
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + movl 0(%rdi),%edx
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + shrl $4,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r12,2),%r12
> > + movzbl %dl,%ebx
> > + shlb $4,%al
> > + movzbq (%rsp,%rcx,1),%r13
> > + shrl $4,%ebx
> > + shlq $48,%r12
> > + xorq %r8,%r13
> > + movq %r9,%r10
> > + xorq %r12,%r9
> > + shrq $8,%r8
> > + movzbq %r13b,%r13
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rcx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rcx,8),%r9
> > + roll $8,%edx
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + movb %dl,%al
> > + xorq %r10,%r8
> > + movzwq (%r11,%r13,2),%r13
> > + movzbl %dl,%ecx
> > + shlb $4,%al
> > + movzbq (%rsp,%rbx,1),%r12
> > + andl $240,%ecx
> > + shlq $48,%r13
> > + xorq %r8,%r12
> > + movq %r9,%r10
> > + xorq %r13,%r9
> > + shrq $8,%r8
> > + movzbq %r12b,%r12
> > + movl -4(%rdi),%edx
> > + shrq $8,%r9
> > + xorq -128(%rbp,%rbx,8),%r8
> > + shlq $56,%r10
> > + xorq (%rbp,%rbx,8),%r9
> > + movzwq (%r11,%r12,2),%r12
> > + xorq 8(%rsi,%rax,1),%r8
> > + xorq (%rsi,%rax,1),%r9
> > + shlq $48,%r12
> > + xorq %r10,%r8
> > + xorq %r12,%r9
> > + movzbq %r8b,%r13
> > + shrq $4,%r8
> > + movq %r9,%r10
> > + shlb $4,%r13b
> > + shrq $4,%r9
> > + xorq 8(%rsi,%rcx,1),%r8
> > + movzwq (%r11,%r13,2),%r13
> > + shlq $60,%r10
> > + xorq (%rsi,%rcx,1),%r9
> > + xorq %r10,%r8
> > + shlq $48,%r13
> > + bswapq %r8
> > + xorq %r13,%r9
> > + bswapq %r9
> > + cmpq %r15,%r14
> > + jb .Louter_loop
> > + movq %r8,8(%rdi)
> > + movq %r9,(%rdi)
> > +
> > + leaq 280+48(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -48(%rsi),%r15
> > +.cfi_restore %r15
> > + movq -40(%rsi),%r14
> > +.cfi_restore %r14
> > + movq -32(%rsi),%r13
> > +.cfi_restore %r13
> > + movq -24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq -16(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq 0(%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lghash_epilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size gcm_ghash_4bit,.-gcm_ghash_4bit
> > +.globl gcm_init_clmul
> > +.type gcm_init_clmul,@function
> > +.align 16
> > +gcm_init_clmul:
> > +.cfi_startproc
> > +.L_init_clmul:
> > + movdqu (%rsi),%xmm2
> > + pshufd $78,%xmm2,%xmm2
> > +
> > +
> > + pshufd $255,%xmm2,%xmm4
> > + movdqa %xmm2,%xmm3
> > + psllq $1,%xmm2
> > + pxor %xmm5,%xmm5
> > + psrlq $63,%xmm3
> > + pcmpgtd %xmm4,%xmm5
> > + pslldq $8,%xmm3
> > + por %xmm3,%xmm2
> > +
> > +
> > + pand .L0x1c2_polynomial(%rip),%xmm5
> > + pxor %xmm5,%xmm2
> > +
> > +
> > + pshufd $78,%xmm2,%xmm6
> > + movdqa %xmm2,%xmm0
> > + pxor %xmm2,%xmm6
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm3
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,58,68,194,0
> > +.byte 102,15,58,68,202,17
> > +.byte 102,15,58,68,222,0
> > + pxor %xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > +
> > + movdqa %xmm3,%xmm4
> > + psrldq $8,%xmm3
> > + pslldq $8,%xmm4
> > + pxor %xmm3,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + pshufd $78,%xmm2,%xmm3
> > + pshufd $78,%xmm0,%xmm4
> > + pxor %xmm2,%xmm3
> > + movdqu %xmm2,0(%rdi)
> > + pxor %xmm0,%xmm4
> > + movdqu %xmm0,16(%rdi)
> > +.byte 102,15,58,15,227,8
> > + movdqu %xmm4,32(%rdi)
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm3
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,58,68,194,0
> > +.byte 102,15,58,68,202,17
> > +.byte 102,15,58,68,222,0
> > + pxor %xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > +
> > + movdqa %xmm3,%xmm4
> > + psrldq $8,%xmm3
> > + pslldq $8,%xmm4
> > + pxor %xmm3,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + movdqa %xmm0,%xmm5
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm3
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,58,68,194,0
> > +.byte 102,15,58,68,202,17
> > +.byte 102,15,58,68,222,0
> > + pxor %xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > +
> > + movdqa %xmm3,%xmm4
> > + psrldq $8,%xmm3
> > + pslldq $8,%xmm4
> > + pxor %xmm3,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + pshufd $78,%xmm5,%xmm3
> > + pshufd $78,%xmm0,%xmm4
> > + pxor %xmm5,%xmm3
> > + movdqu %xmm5,48(%rdi)
> > + pxor %xmm0,%xmm4
> > + movdqu %xmm0,64(%rdi)
> > +.byte 102,15,58,15,227,8
> > + movdqu %xmm4,80(%rdi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size gcm_init_clmul,.-gcm_init_clmul
> > +.globl gcm_gmult_clmul
> > +.type gcm_gmult_clmul,@function
> > +.align 16
> > +gcm_gmult_clmul:
> > +.cfi_startproc
> > +.L_gmult_clmul:
> > + movdqu (%rdi),%xmm0
> > + movdqa .Lbswap_mask(%rip),%xmm5
> > + movdqu (%rsi),%xmm2
> > + movdqu 32(%rsi),%xmm4
> > +.byte 102,15,56,0,197
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm3
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,58,68,194,0
> > +.byte 102,15,58,68,202,17
> > +.byte 102,15,58,68,220,0
> > + pxor %xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > +
> > + movdqa %xmm3,%xmm4
> > + psrldq $8,%xmm3
> > + pslldq $8,%xmm4
> > + pxor %xmm3,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > +.byte 102,15,56,0,197
> > + movdqu %xmm0,(%rdi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size gcm_gmult_clmul,.-gcm_gmult_clmul
> > +.globl gcm_ghash_clmul
> > +.type gcm_ghash_clmul,@function
> > +.align 32
> > +gcm_ghash_clmul:
> > +.cfi_startproc
> > +.L_ghash_clmul:
> > + movdqa .Lbswap_mask(%rip),%xmm10
> > +
> > + movdqu (%rdi),%xmm0
> > + movdqu (%rsi),%xmm2
> > + movdqu 32(%rsi),%xmm7
> > +.byte 102,65,15,56,0,194
> > +
> > + subq $0x10,%rcx
> > + jz .Lodd_tail
> > +
> > + movdqu 16(%rsi),%xmm6
> > + movl OPENSSL_ia32cap_P+4(%rip),%eax
> > + cmpq $0x30,%rcx
> > + jb .Lskip4x
> > +
> > + andl $71303168,%eax
> > + cmpl $4194304,%eax
> > + je .Lskip4x
> > +
> > + subq $0x30,%rcx
> > + movq $0xA040608020C0E000,%rax
> > + movdqu 48(%rsi),%xmm14
> > + movdqu 64(%rsi),%xmm15
> > +
> > +
> > +
> > +
> > + movdqu 48(%rdx),%xmm3
> > + movdqu 32(%rdx),%xmm11
> > +.byte 102,65,15,56,0,218
> > +.byte 102,69,15,56,0,218
> > + movdqa %xmm3,%xmm5
> > + pshufd $78,%xmm3,%xmm4
> > + pxor %xmm3,%xmm4
> > +.byte 102,15,58,68,218,0
> > +.byte 102,15,58,68,234,17
> > +.byte 102,15,58,68,231,0
> > +
> > + movdqa %xmm11,%xmm13
> > + pshufd $78,%xmm11,%xmm12
> > + pxor %xmm11,%xmm12
> > +.byte 102,68,15,58,68,222,0
> > +.byte 102,68,15,58,68,238,17
> > +.byte 102,68,15,58,68,231,16
> > + xorps %xmm11,%xmm3
> > + xorps %xmm13,%xmm5
> > + movups 80(%rsi),%xmm7
> > + xorps %xmm12,%xmm4
> > +
> > + movdqu 16(%rdx),%xmm11
> > + movdqu 0(%rdx),%xmm8
> > +.byte 102,69,15,56,0,218
> > +.byte 102,69,15,56,0,194
> > + movdqa %xmm11,%xmm13
> > + pshufd $78,%xmm11,%xmm12
> > + pxor %xmm8,%xmm0
> > + pxor %xmm11,%xmm12
> > +.byte 102,69,15,58,68,222,0
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm8
> > + pxor %xmm0,%xmm8
> > +.byte 102,69,15,58,68,238,17
> > +.byte 102,68,15,58,68,231,0
> > + xorps %xmm11,%xmm3
> > + xorps %xmm13,%xmm5
> > +
> > + leaq 64(%rdx),%rdx
> > + subq $0x40,%rcx
> > + jc .Ltail4x
> > +
> > + jmp .Lmod4_loop
> > +.align 32
> > +.Lmod4_loop:
> > +.byte 102,65,15,58,68,199,0
> > + xorps %xmm12,%xmm4
> > + movdqu 48(%rdx),%xmm11
> > +.byte 102,69,15,56,0,218
> > +.byte 102,65,15,58,68,207,17
> > + xorps %xmm3,%xmm0
> > + movdqu 32(%rdx),%xmm3
> > + movdqa %xmm11,%xmm13
> > +.byte 102,68,15,58,68,199,16
> > + pshufd $78,%xmm11,%xmm12
> > + xorps %xmm5,%xmm1
> > + pxor %xmm11,%xmm12
> > +.byte 102,65,15,56,0,218
> > + movups 32(%rsi),%xmm7
> > + xorps %xmm4,%xmm8
> > +.byte 102,68,15,58,68,218,0
> > + pshufd $78,%xmm3,%xmm4
> > +
> > + pxor %xmm0,%xmm8
> > + movdqa %xmm3,%xmm5
> > + pxor %xmm1,%xmm8
> > + pxor %xmm3,%xmm4
> > + movdqa %xmm8,%xmm9
> > +.byte 102,68,15,58,68,234,17
> > + pslldq $8,%xmm8
> > + psrldq $8,%xmm9
> > + pxor %xmm8,%xmm0
> > + movdqa .L7_mask(%rip),%xmm8
> > + pxor %xmm9,%xmm1
> > +.byte 102,76,15,110,200
> > +
> > + pand %xmm0,%xmm8
> > +.byte 102,69,15,56,0,200
> > + pxor %xmm0,%xmm9
> > +.byte 102,68,15,58,68,231,0
> > + psllq $57,%xmm9
> > + movdqa %xmm9,%xmm8
> > + pslldq $8,%xmm9
> > +.byte 102,15,58,68,222,0
> > + psrldq $8,%xmm8
> > + pxor %xmm9,%xmm0
> > + pxor %xmm8,%xmm1
> > + movdqu 0(%rdx),%xmm8
> > +
> > + movdqa %xmm0,%xmm9
> > + psrlq $1,%xmm0
> > +.byte 102,15,58,68,238,17
> > + xorps %xmm11,%xmm3
> > + movdqu 16(%rdx),%xmm11
> > +.byte 102,69,15,56,0,218
> > +.byte 102,15,58,68,231,16
> > + xorps %xmm13,%xmm5
> > + movups 80(%rsi),%xmm7
> > +.byte 102,69,15,56,0,194
> > + pxor %xmm9,%xmm1
> > + pxor %xmm0,%xmm9
> > + psrlq $5,%xmm0
> > +
> > + movdqa %xmm11,%xmm13
> > + pxor %xmm12,%xmm4
> > + pshufd $78,%xmm11,%xmm12
> > + pxor %xmm9,%xmm0
> > + pxor %xmm8,%xmm1
> > + pxor %xmm11,%xmm12
> > +.byte 102,69,15,58,68,222,0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + movdqa %xmm0,%xmm1
> > +.byte 102,69,15,58,68,238,17
> > + xorps %xmm11,%xmm3
> > + pshufd $78,%xmm0,%xmm8
> > + pxor %xmm0,%xmm8
> > +
> > +.byte 102,68,15,58,68,231,0
> > + xorps %xmm13,%xmm5
> > +
> > + leaq 64(%rdx),%rdx
> > + subq $0x40,%rcx
> > + jnc .Lmod4_loop
> > +
> > +.Ltail4x:
> > +.byte 102,65,15,58,68,199,0
> > +.byte 102,65,15,58,68,207,17
> > +.byte 102,68,15,58,68,199,16
> > + xorps %xmm12,%xmm4
> > + xorps %xmm3,%xmm0
> > + xorps %xmm5,%xmm1
> > + pxor %xmm0,%xmm1
> > + pxor %xmm4,%xmm8
> > +
> > + pxor %xmm1,%xmm8
> > + pxor %xmm0,%xmm1
> > +
> > + movdqa %xmm8,%xmm9
> > + psrldq $8,%xmm8
> > + pslldq $8,%xmm9
> > + pxor %xmm8,%xmm1
> > + pxor %xmm9,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + addq $0x40,%rcx
> > + jz .Ldone
> > + movdqu 32(%rsi),%xmm7
> > + subq $0x10,%rcx
> > + jz .Lodd_tail
> > +.Lskip4x:
> > +
> > +
> > +
> > +
> > +
> > + movdqu (%rdx),%xmm8
> > + movdqu 16(%rdx),%xmm3
> > +.byte 102,69,15,56,0,194
> > +.byte 102,65,15,56,0,218
> > + pxor %xmm8,%xmm0
> > +
> > + movdqa %xmm3,%xmm5
> > + pshufd $78,%xmm3,%xmm4
> > + pxor %xmm3,%xmm4
> > +.byte 102,15,58,68,218,0
> > +.byte 102,15,58,68,234,17
> > +.byte 102,15,58,68,231,0
> > +
> > + leaq 32(%rdx),%rdx
> > + nop
> > + subq $0x20,%rcx
> > + jbe .Leven_tail
> > + nop
> > + jmp .Lmod_loop
> > +
> > +.align 32
> > +.Lmod_loop:
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm4,%xmm8
> > + pshufd $78,%xmm0,%xmm4
> > + pxor %xmm0,%xmm4
> > +
> > +.byte 102,15,58,68,198,0
> > +.byte 102,15,58,68,206,17
> > +.byte 102,15,58,68,231,16
> > +
> > + pxor %xmm3,%xmm0
> > + pxor %xmm5,%xmm1
> > + movdqu (%rdx),%xmm9
> > + pxor %xmm0,%xmm8
> > +.byte 102,69,15,56,0,202
> > + movdqu 16(%rdx),%xmm3
> > +
> > + pxor %xmm1,%xmm8
> > + pxor %xmm9,%xmm1
> > + pxor %xmm8,%xmm4
> > +.byte 102,65,15,56,0,218
> > + movdqa %xmm4,%xmm8
> > + psrldq $8,%xmm8
> > + pslldq $8,%xmm4
> > + pxor %xmm8,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm3,%xmm5
> > +
> > + movdqa %xmm0,%xmm9
> > + movdqa %xmm0,%xmm8
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm8
> > +.byte 102,15,58,68,218,0
> > + psllq $1,%xmm0
> > + pxor %xmm8,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm8
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm8
> > + pxor %xmm9,%xmm0
> > + pshufd $78,%xmm5,%xmm4
> > + pxor %xmm8,%xmm1
> > + pxor %xmm5,%xmm4
> > +
> > + movdqa %xmm0,%xmm9
> > + psrlq $1,%xmm0
> > +.byte 102,15,58,68,234,17
> > + pxor %xmm9,%xmm1
> > + pxor %xmm0,%xmm9
> > + psrlq $5,%xmm0
> > + pxor %xmm9,%xmm0
> > + leaq 32(%rdx),%rdx
> > + psrlq $1,%xmm0
> > +.byte 102,15,58,68,231,0
> > + pxor %xmm1,%xmm0
> > +
> > + subq $0x20,%rcx
> > + ja .Lmod_loop
> > +
> > +.Leven_tail:
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm4,%xmm8
> > + pshufd $78,%xmm0,%xmm4
> > + pxor %xmm0,%xmm4
> > +
> > +.byte 102,15,58,68,198,0
> > +.byte 102,15,58,68,206,17
> > +.byte 102,15,58,68,231,16
> > +
> > + pxor %xmm3,%xmm0
> > + pxor %xmm5,%xmm1
> > + pxor %xmm0,%xmm8
> > + pxor %xmm1,%xmm8
> > + pxor %xmm8,%xmm4
> > + movdqa %xmm4,%xmm8
> > + psrldq $8,%xmm8
> > + pslldq $8,%xmm4
> > + pxor %xmm8,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > + testq %rcx,%rcx
> > + jnz .Ldone
> > +
> > +.Lodd_tail:
> > + movdqu (%rdx),%xmm8
> > +.byte 102,69,15,56,0,194
> > + pxor %xmm8,%xmm0
> > + movdqa %xmm0,%xmm1
> > + pshufd $78,%xmm0,%xmm3
> > + pxor %xmm0,%xmm3
> > +.byte 102,15,58,68,194,0
> > +.byte 102,15,58,68,202,17
> > +.byte 102,15,58,68,223,0
> > + pxor %xmm0,%xmm3
> > + pxor %xmm1,%xmm3
> > +
> > + movdqa %xmm3,%xmm4
> > + psrldq $8,%xmm3
> > + pslldq $8,%xmm4
> > + pxor %xmm3,%xmm1
> > + pxor %xmm4,%xmm0
> > +
> > + movdqa %xmm0,%xmm4
> > + movdqa %xmm0,%xmm3
> > + psllq $5,%xmm0
> > + pxor %xmm0,%xmm3
> > + psllq $1,%xmm0
> > + pxor %xmm3,%xmm0
> > + psllq $57,%xmm0
> > + movdqa %xmm0,%xmm3
> > + pslldq $8,%xmm0
> > + psrldq $8,%xmm3
> > + pxor %xmm4,%xmm0
> > + pxor %xmm3,%xmm1
> > +
> > +
> > + movdqa %xmm0,%xmm4
> > + psrlq $1,%xmm0
> > + pxor %xmm4,%xmm1
> > + pxor %xmm0,%xmm4
> > + psrlq $5,%xmm0
> > + pxor %xmm4,%xmm0
> > + psrlq $1,%xmm0
> > + pxor %xmm1,%xmm0
> > +.Ldone:
> > +.byte 102,65,15,56,0,194
> > + movdqu %xmm0,(%rdi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size gcm_ghash_clmul,.-gcm_ghash_clmul
> > +.globl gcm_init_avx
> > +.type gcm_init_avx,@function
> > +.align 32
> > +gcm_init_avx:
> > +.cfi_startproc
> > + jmp .L_init_clmul
> > +.cfi_endproc
> > +.size gcm_init_avx,.-gcm_init_avx
> > +.globl gcm_gmult_avx
> > +.type gcm_gmult_avx,@function
> > +.align 32
> > +gcm_gmult_avx:
> > +.cfi_startproc
> > + jmp .L_gmult_clmul
> > +.cfi_endproc
> > +.size gcm_gmult_avx,.-gcm_gmult_avx
> > +.globl gcm_ghash_avx
> > +.type gcm_ghash_avx,@function
> > +.align 32
> > +gcm_ghash_avx:
> > +.cfi_startproc
> > + jmp .L_ghash_clmul
> > +.cfi_endproc
> > +.size gcm_ghash_avx,.-gcm_ghash_avx
> > +.align 64
> > +.Lbswap_mask:
> > +.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> > +.L0x1c2_polynomial:
> > +.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
> > +.L7_mask:
> > +.long 7,0,7,0
> > +.L7_mask_poly:
> > +.long 7,0,450,0
> > +.align 64
> > +.type .Lrem_4bit,@object
> > +.Lrem_4bit:
> > +.long 0,0,0,471859200,0,943718400,0,610271232
> > +.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208
> > +.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008
> > +.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160
> > +.type .Lrem_8bit,@object
> > +.Lrem_8bit:
> > +.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E
> > +.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E
> > +.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E
> > +.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E
> > +.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E
> > +.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E
> > +.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E
> > +.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E
> > +.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE
> > +.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE
> > +.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE
> > +.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE
> > +.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E
> > +.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E
> > +.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE
> > +.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE
> > +.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E
> > +.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E
> > +.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E
> > +.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E
> > +.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E
> > +.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E
> > +.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E
> > +.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E
> > +.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE
> > +.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE
> > +.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE
> > +.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE
> > +.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E
> > +.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E
> > +.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE
> > +.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE
> > +
> > +.byte
> >
>
71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79
> ,
> >
> 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,
> > 108,46,111,114,103,62,0
> > +.align 64
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> > new file mode 100644
> > index 0000000000..4572bc7227
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-mb-x86_64.S
> > @@ -0,0 +1,2962 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +
> > +.globl sha1_multi_block
> > +.type sha1_multi_block,@function
> > +.align 32
> > +sha1_multi_block:
> > +.cfi_startproc
> > + movq OPENSSL_ia32cap_P+4(%rip),%rcx
> > + btq $61,%rcx
> > + jc _shaext_shortcut
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbx,-24
> > + subq $288,%rsp
> > + andq $-256,%rsp
> > + movq %rax,272(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08
> > +.Lbody:
> > + leaq K_XX_XX(%rip),%rbp
> > + leaq 256(%rsp),%rbx
> > +
> > +.Loop_grande:
> > + movl %edx,280(%rsp)
> > + xorl %edx,%edx
> > + movq 0(%rsi),%r8
> > + movl 8(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,0(%rbx)
> > + cmovleq %rbp,%r8
> > + movq 16(%rsi),%r9
> > + movl 24(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,4(%rbx)
> > + cmovleq %rbp,%r9
> > + movq 32(%rsi),%r10
> > + movl 40(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,8(%rbx)
> > + cmovleq %rbp,%r10
> > + movq 48(%rsi),%r11
> > + movl 56(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,12(%rbx)
> > + cmovleq %rbp,%r11
> > + testl %edx,%edx
> > + jz .Ldone
> > +
> > + movdqu 0(%rdi),%xmm10
> > + leaq 128(%rsp),%rax
> > + movdqu 32(%rdi),%xmm11
> > + movdqu 64(%rdi),%xmm12
> > + movdqu 96(%rdi),%xmm13
> > + movdqu 128(%rdi),%xmm14
> > + movdqa 96(%rbp),%xmm5
> > + movdqa -32(%rbp),%xmm15
> > + jmp .Loop
> > +
> > +.align 32
> > +.Loop:
> > + movd (%r8),%xmm0
> > + leaq 64(%r8),%r8
> > + movd (%r9),%xmm2
> > + leaq 64(%r9),%r9
> > + movd (%r10),%xmm3
> > + leaq 64(%r10),%r10
> > + movd (%r11),%xmm4
> > + leaq 64(%r11),%r11
> > + punpckldq %xmm3,%xmm0
> > + movd -60(%r8),%xmm1
> > + punpckldq %xmm4,%xmm2
> > + movd -60(%r9),%xmm9
> > + punpckldq %xmm2,%xmm0
> > + movd -60(%r10),%xmm8
> > +.byte 102,15,56,0,197
> > + movd -60(%r11),%xmm7
> > + punpckldq %xmm8,%xmm1
> > + movdqa %xmm10,%xmm8
> > + paddd %xmm15,%xmm14
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm11,%xmm7
> > + movdqa %xmm11,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm13,%xmm7
> > + pand %xmm12,%xmm6
> > + punpckldq %xmm9,%xmm1
> > + movdqa %xmm10,%xmm9
> > +
> > + movdqa %xmm0,0-128(%rax)
> > + paddd %xmm0,%xmm14
> > + movd -56(%r8),%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -56(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > +.byte 102,15,56,0,205
> > + movd -56(%r10),%xmm8
> > + por %xmm7,%xmm11
> > + movd -56(%r11),%xmm7
> > + punpckldq %xmm8,%xmm2
> > + movdqa %xmm14,%xmm8
> > + paddd %xmm15,%xmm13
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm10,%xmm7
> > + movdqa %xmm10,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm12,%xmm7
> > + pand %xmm11,%xmm6
> > + punpckldq %xmm9,%xmm2
> > + movdqa %xmm14,%xmm9
> > +
> > + movdqa %xmm1,16-128(%rax)
> > + paddd %xmm1,%xmm13
> > + movd -52(%r8),%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -52(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > +.byte 102,15,56,0,213
> > + movd -52(%r10),%xmm8
> > + por %xmm7,%xmm10
> > + movd -52(%r11),%xmm7
> > + punpckldq %xmm8,%xmm3
> > + movdqa %xmm13,%xmm8
> > + paddd %xmm15,%xmm12
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm14,%xmm7
> > + movdqa %xmm14,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm11,%xmm7
> > + pand %xmm10,%xmm6
> > + punpckldq %xmm9,%xmm3
> > + movdqa %xmm13,%xmm9
> > +
> > + movdqa %xmm2,32-128(%rax)
> > + paddd %xmm2,%xmm12
> > + movd -48(%r8),%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -48(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > +.byte 102,15,56,0,221
> > + movd -48(%r10),%xmm8
> > + por %xmm7,%xmm14
> > + movd -48(%r11),%xmm7
> > + punpckldq %xmm8,%xmm4
> > + movdqa %xmm12,%xmm8
> > + paddd %xmm15,%xmm11
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm13,%xmm7
> > + movdqa %xmm13,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm10,%xmm7
> > + pand %xmm14,%xmm6
> > + punpckldq %xmm9,%xmm4
> > + movdqa %xmm12,%xmm9
> > +
> > + movdqa %xmm3,48-128(%rax)
> > + paddd %xmm3,%xmm11
> > + movd -44(%r8),%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -44(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > +.byte 102,15,56,0,229
> > + movd -44(%r10),%xmm8
> > + por %xmm7,%xmm13
> > + movd -44(%r11),%xmm7
> > + punpckldq %xmm8,%xmm0
> > + movdqa %xmm11,%xmm8
> > + paddd %xmm15,%xmm10
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm12,%xmm7
> > + movdqa %xmm12,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm14,%xmm7
> > + pand %xmm13,%xmm6
> > + punpckldq %xmm9,%xmm0
> > + movdqa %xmm11,%xmm9
> > +
> > + movdqa %xmm4,64-128(%rax)
> > + paddd %xmm4,%xmm10
> > + movd -40(%r8),%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -40(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > +.byte 102,15,56,0,197
> > + movd -40(%r10),%xmm8
> > + por %xmm7,%xmm12
> > + movd -40(%r11),%xmm7
> > + punpckldq %xmm8,%xmm1
> > + movdqa %xmm10,%xmm8
> > + paddd %xmm15,%xmm14
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm11,%xmm7
> > + movdqa %xmm11,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm13,%xmm7
> > + pand %xmm12,%xmm6
> > + punpckldq %xmm9,%xmm1
> > + movdqa %xmm10,%xmm9
> > +
> > + movdqa %xmm0,80-128(%rax)
> > + paddd %xmm0,%xmm14
> > + movd -36(%r8),%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -36(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > +.byte 102,15,56,0,205
> > + movd -36(%r10),%xmm8
> > + por %xmm7,%xmm11
> > + movd -36(%r11),%xmm7
> > + punpckldq %xmm8,%xmm2
> > + movdqa %xmm14,%xmm8
> > + paddd %xmm15,%xmm13
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm10,%xmm7
> > + movdqa %xmm10,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm12,%xmm7
> > + pand %xmm11,%xmm6
> > + punpckldq %xmm9,%xmm2
> > + movdqa %xmm14,%xmm9
> > +
> > + movdqa %xmm1,96-128(%rax)
> > + paddd %xmm1,%xmm13
> > + movd -32(%r8),%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -32(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > +.byte 102,15,56,0,213
> > + movd -32(%r10),%xmm8
> > + por %xmm7,%xmm10
> > + movd -32(%r11),%xmm7
> > + punpckldq %xmm8,%xmm3
> > + movdqa %xmm13,%xmm8
> > + paddd %xmm15,%xmm12
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm14,%xmm7
> > + movdqa %xmm14,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm11,%xmm7
> > + pand %xmm10,%xmm6
> > + punpckldq %xmm9,%xmm3
> > + movdqa %xmm13,%xmm9
> > +
> > + movdqa %xmm2,112-128(%rax)
> > + paddd %xmm2,%xmm12
> > + movd -28(%r8),%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -28(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > +.byte 102,15,56,0,221
> > + movd -28(%r10),%xmm8
> > + por %xmm7,%xmm14
> > + movd -28(%r11),%xmm7
> > + punpckldq %xmm8,%xmm4
> > + movdqa %xmm12,%xmm8
> > + paddd %xmm15,%xmm11
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm13,%xmm7
> > + movdqa %xmm13,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm10,%xmm7
> > + pand %xmm14,%xmm6
> > + punpckldq %xmm9,%xmm4
> > + movdqa %xmm12,%xmm9
> > +
> > + movdqa %xmm3,128-128(%rax)
> > + paddd %xmm3,%xmm11
> > + movd -24(%r8),%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -24(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > +.byte 102,15,56,0,229
> > + movd -24(%r10),%xmm8
> > + por %xmm7,%xmm13
> > + movd -24(%r11),%xmm7
> > + punpckldq %xmm8,%xmm0
> > + movdqa %xmm11,%xmm8
> > + paddd %xmm15,%xmm10
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm12,%xmm7
> > + movdqa %xmm12,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm14,%xmm7
> > + pand %xmm13,%xmm6
> > + punpckldq %xmm9,%xmm0
> > + movdqa %xmm11,%xmm9
> > +
> > + movdqa %xmm4,144-128(%rax)
> > + paddd %xmm4,%xmm10
> > + movd -20(%r8),%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -20(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > +.byte 102,15,56,0,197
> > + movd -20(%r10),%xmm8
> > + por %xmm7,%xmm12
> > + movd -20(%r11),%xmm7
> > + punpckldq %xmm8,%xmm1
> > + movdqa %xmm10,%xmm8
> > + paddd %xmm15,%xmm14
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm11,%xmm7
> > + movdqa %xmm11,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm13,%xmm7
> > + pand %xmm12,%xmm6
> > + punpckldq %xmm9,%xmm1
> > + movdqa %xmm10,%xmm9
> > +
> > + movdqa %xmm0,160-128(%rax)
> > + paddd %xmm0,%xmm14
> > + movd -16(%r8),%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -16(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > +.byte 102,15,56,0,205
> > + movd -16(%r10),%xmm8
> > + por %xmm7,%xmm11
> > + movd -16(%r11),%xmm7
> > + punpckldq %xmm8,%xmm2
> > + movdqa %xmm14,%xmm8
> > + paddd %xmm15,%xmm13
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm10,%xmm7
> > + movdqa %xmm10,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm12,%xmm7
> > + pand %xmm11,%xmm6
> > + punpckldq %xmm9,%xmm2
> > + movdqa %xmm14,%xmm9
> > +
> > + movdqa %xmm1,176-128(%rax)
> > + paddd %xmm1,%xmm13
> > + movd -12(%r8),%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -12(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > +.byte 102,15,56,0,213
> > + movd -12(%r10),%xmm8
> > + por %xmm7,%xmm10
> > + movd -12(%r11),%xmm7
> > + punpckldq %xmm8,%xmm3
> > + movdqa %xmm13,%xmm8
> > + paddd %xmm15,%xmm12
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm14,%xmm7
> > + movdqa %xmm14,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm11,%xmm7
> > + pand %xmm10,%xmm6
> > + punpckldq %xmm9,%xmm3
> > + movdqa %xmm13,%xmm9
> > +
> > + movdqa %xmm2,192-128(%rax)
> > + paddd %xmm2,%xmm12
> > + movd -8(%r8),%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -8(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > +.byte 102,15,56,0,221
> > + movd -8(%r10),%xmm8
> > + por %xmm7,%xmm14
> > + movd -8(%r11),%xmm7
> > + punpckldq %xmm8,%xmm4
> > + movdqa %xmm12,%xmm8
> > + paddd %xmm15,%xmm11
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm13,%xmm7
> > + movdqa %xmm13,%xmm6
> > + pslld $5,%xmm8
> > + pandn %xmm10,%xmm7
> > + pand %xmm14,%xmm6
> > + punpckldq %xmm9,%xmm4
> > + movdqa %xmm12,%xmm9
> > +
> > + movdqa %xmm3,208-128(%rax)
> > + paddd %xmm3,%xmm11
> > + movd -4(%r8),%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + por %xmm9,%xmm8
> > + movd -4(%r9),%xmm9
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > +.byte 102,15,56,0,229
> > + movd -4(%r10),%xmm8
> > + por %xmm7,%xmm13
> > + movdqa 0-128(%rax),%xmm1
> > + movd -4(%r11),%xmm7
> > + punpckldq %xmm8,%xmm0
> > + movdqa %xmm11,%xmm8
> > + paddd %xmm15,%xmm10
> > + punpckldq %xmm7,%xmm9
> > + movdqa %xmm12,%xmm7
> > + movdqa %xmm12,%xmm6
> > + pslld $5,%xmm8
> > + prefetcht0 63(%r8)
> > + pandn %xmm14,%xmm7
> > + pand %xmm13,%xmm6
> > + punpckldq %xmm9,%xmm0
> > + movdqa %xmm11,%xmm9
> > +
> > + movdqa %xmm4,224-128(%rax)
> > + paddd %xmm4,%xmm10
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > + movdqa %xmm12,%xmm7
> > + prefetcht0 63(%r9)
> > +
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm10
> > + prefetcht0 63(%r10)
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > +.byte 102,15,56,0,197
> > + prefetcht0 63(%r11)
> > + por %xmm7,%xmm12
> > + movdqa 16-128(%rax),%xmm2
> > + pxor %xmm3,%xmm1
> > + movdqa 32-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + pxor 128-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + movdqa %xmm11,%xmm7
> > + pslld $5,%xmm8
> > + pxor %xmm3,%xmm1
> > + movdqa %xmm11,%xmm6
> > + pandn %xmm13,%xmm7
> > + movdqa %xmm1,%xmm5
> > + pand %xmm12,%xmm6
> > + movdqa %xmm10,%xmm9
> > + psrld $31,%xmm5
> > + paddd %xmm1,%xmm1
> > +
> > + movdqa %xmm0,240-128(%rax)
> > + paddd %xmm0,%xmm14
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > +
> > + movdqa %xmm11,%xmm7
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 48-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + pxor 144-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + movdqa %xmm10,%xmm7
> > + pslld $5,%xmm8
> > + pxor %xmm4,%xmm2
> > + movdqa %xmm10,%xmm6
> > + pandn %xmm12,%xmm7
> > + movdqa %xmm2,%xmm5
> > + pand %xmm11,%xmm6
> > + movdqa %xmm14,%xmm9
> > + psrld $31,%xmm5
> > + paddd %xmm2,%xmm2
> > +
> > + movdqa %xmm1,0-128(%rax)
> > + paddd %xmm1,%xmm13
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > +
> > + movdqa %xmm10,%xmm7
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 64-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + pxor 160-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + movdqa %xmm14,%xmm7
> > + pslld $5,%xmm8
> > + pxor %xmm0,%xmm3
> > + movdqa %xmm14,%xmm6
> > + pandn %xmm11,%xmm7
> > + movdqa %xmm3,%xmm5
> > + pand %xmm10,%xmm6
> > + movdqa %xmm13,%xmm9
> > + psrld $31,%xmm5
> > + paddd %xmm3,%xmm3
> > +
> > + movdqa %xmm2,16-128(%rax)
> > + paddd %xmm2,%xmm12
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > +
> > + movdqa %xmm14,%xmm7
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 80-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + pxor 176-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + movdqa %xmm13,%xmm7
> > + pslld $5,%xmm8
> > + pxor %xmm1,%xmm4
> > + movdqa %xmm13,%xmm6
> > + pandn %xmm10,%xmm7
> > + movdqa %xmm4,%xmm5
> > + pand %xmm14,%xmm6
> > + movdqa %xmm12,%xmm9
> > + psrld $31,%xmm5
> > + paddd %xmm4,%xmm4
> > +
> > + movdqa %xmm3,32-128(%rax)
> > + paddd %xmm3,%xmm11
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > +
> > + movdqa %xmm13,%xmm7
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 96-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + pxor 192-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + movdqa %xmm12,%xmm7
> > + pslld $5,%xmm8
> > + pxor %xmm2,%xmm0
> > + movdqa %xmm12,%xmm6
> > + pandn %xmm14,%xmm7
> > + movdqa %xmm0,%xmm5
> > + pand %xmm13,%xmm6
> > + movdqa %xmm11,%xmm9
> > + psrld $31,%xmm5
> > + paddd %xmm0,%xmm0
> > +
> > + movdqa %xmm4,48-128(%rax)
> > + paddd %xmm4,%xmm10
> > + psrld $27,%xmm9
> > + pxor %xmm7,%xmm6
> > +
> > + movdqa %xmm12,%xmm7
> > + por %xmm9,%xmm8
> > + pslld $30,%xmm7
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + movdqa 0(%rbp),%xmm15
> > + pxor %xmm3,%xmm1
> > + movdqa 112-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 208-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,64-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 128-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 224-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,80-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 144-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 240-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,96-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 160-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 0-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,112-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 176-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 16-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,128-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 192-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 32-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,144-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 208-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 48-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,160-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 224-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 64-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,176-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 240-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 80-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,192-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 0-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 96-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,208-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 16-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 112-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,224-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 32-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 128-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,240-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 48-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 144-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,0-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 64-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 160-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,16-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 80-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 176-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,32-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 96-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 192-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,48-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 112-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 208-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,64-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 128-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 224-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,80-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 144-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 240-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,96-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 160-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 0-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,112-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + movdqa 32(%rbp),%xmm15
> > + pxor %xmm3,%xmm1
> > + movdqa 176-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm7
> > + pxor 16-128(%rax),%xmm1
> > + pxor %xmm3,%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + movdqa %xmm10,%xmm9
> > + pand %xmm12,%xmm7
> > +
> > + movdqa %xmm13,%xmm6
> > + movdqa %xmm1,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm14
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm0,128-128(%rax)
> > + paddd %xmm0,%xmm14
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm11,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm1,%xmm1
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 192-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm7
> > + pxor 32-128(%rax),%xmm2
> > + pxor %xmm4,%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + movdqa %xmm14,%xmm9
> > + pand %xmm11,%xmm7
> > +
> > + movdqa %xmm12,%xmm6
> > + movdqa %xmm2,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm13
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm1,144-128(%rax)
> > + paddd %xmm1,%xmm13
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm10,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm2,%xmm2
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 208-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm7
> > + pxor 48-128(%rax),%xmm3
> > + pxor %xmm0,%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + movdqa %xmm13,%xmm9
> > + pand %xmm10,%xmm7
> > +
> > + movdqa %xmm11,%xmm6
> > + movdqa %xmm3,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm12
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm2,160-128(%rax)
> > + paddd %xmm2,%xmm12
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm14,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm3,%xmm3
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 224-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm7
> > + pxor 64-128(%rax),%xmm4
> > + pxor %xmm1,%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + movdqa %xmm12,%xmm9
> > + pand %xmm14,%xmm7
> > +
> > + movdqa %xmm10,%xmm6
> > + movdqa %xmm4,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm11
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm3,176-128(%rax)
> > + paddd %xmm3,%xmm11
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm13,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm4,%xmm4
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 240-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm7
> > + pxor 80-128(%rax),%xmm0
> > + pxor %xmm2,%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + movdqa %xmm11,%xmm9
> > + pand %xmm13,%xmm7
> > +
> > + movdqa %xmm14,%xmm6
> > + movdqa %xmm0,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm10
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm4,192-128(%rax)
> > + paddd %xmm4,%xmm10
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm12,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm0,%xmm0
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 0-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm7
> > + pxor 96-128(%rax),%xmm1
> > + pxor %xmm3,%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + movdqa %xmm10,%xmm9
> > + pand %xmm12,%xmm7
> > +
> > + movdqa %xmm13,%xmm6
> > + movdqa %xmm1,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm14
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm0,208-128(%rax)
> > + paddd %xmm0,%xmm14
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm11,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm1,%xmm1
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 16-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm7
> > + pxor 112-128(%rax),%xmm2
> > + pxor %xmm4,%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + movdqa %xmm14,%xmm9
> > + pand %xmm11,%xmm7
> > +
> > + movdqa %xmm12,%xmm6
> > + movdqa %xmm2,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm13
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm1,224-128(%rax)
> > + paddd %xmm1,%xmm13
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm10,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm2,%xmm2
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 32-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm7
> > + pxor 128-128(%rax),%xmm3
> > + pxor %xmm0,%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + movdqa %xmm13,%xmm9
> > + pand %xmm10,%xmm7
> > +
> > + movdqa %xmm11,%xmm6
> > + movdqa %xmm3,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm12
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm2,240-128(%rax)
> > + paddd %xmm2,%xmm12
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm14,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm3,%xmm3
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 48-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm7
> > + pxor 144-128(%rax),%xmm4
> > + pxor %xmm1,%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + movdqa %xmm12,%xmm9
> > + pand %xmm14,%xmm7
> > +
> > + movdqa %xmm10,%xmm6
> > + movdqa %xmm4,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm11
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm3,0-128(%rax)
> > + paddd %xmm3,%xmm11
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm13,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm4,%xmm4
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 64-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm7
> > + pxor 160-128(%rax),%xmm0
> > + pxor %xmm2,%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + movdqa %xmm11,%xmm9
> > + pand %xmm13,%xmm7
> > +
> > + movdqa %xmm14,%xmm6
> > + movdqa %xmm0,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm10
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm4,16-128(%rax)
> > + paddd %xmm4,%xmm10
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm12,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm0,%xmm0
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 80-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm7
> > + pxor 176-128(%rax),%xmm1
> > + pxor %xmm3,%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + movdqa %xmm10,%xmm9
> > + pand %xmm12,%xmm7
> > +
> > + movdqa %xmm13,%xmm6
> > + movdqa %xmm1,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm14
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm0,32-128(%rax)
> > + paddd %xmm0,%xmm14
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm11,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm1,%xmm1
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 96-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm7
> > + pxor 192-128(%rax),%xmm2
> > + pxor %xmm4,%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + movdqa %xmm14,%xmm9
> > + pand %xmm11,%xmm7
> > +
> > + movdqa %xmm12,%xmm6
> > + movdqa %xmm2,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm13
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm1,48-128(%rax)
> > + paddd %xmm1,%xmm13
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm10,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm2,%xmm2
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 112-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm7
> > + pxor 208-128(%rax),%xmm3
> > + pxor %xmm0,%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + movdqa %xmm13,%xmm9
> > + pand %xmm10,%xmm7
> > +
> > + movdqa %xmm11,%xmm6
> > + movdqa %xmm3,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm12
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm2,64-128(%rax)
> > + paddd %xmm2,%xmm12
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm14,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm3,%xmm3
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 128-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm7
> > + pxor 224-128(%rax),%xmm4
> > + pxor %xmm1,%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + movdqa %xmm12,%xmm9
> > + pand %xmm14,%xmm7
> > +
> > + movdqa %xmm10,%xmm6
> > + movdqa %xmm4,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm11
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm3,80-128(%rax)
> > + paddd %xmm3,%xmm11
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm13,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm4,%xmm4
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 144-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm7
> > + pxor 240-128(%rax),%xmm0
> > + pxor %xmm2,%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + movdqa %xmm11,%xmm9
> > + pand %xmm13,%xmm7
> > +
> > + movdqa %xmm14,%xmm6
> > + movdqa %xmm0,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm10
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm4,96-128(%rax)
> > + paddd %xmm4,%xmm10
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm12,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm0,%xmm0
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 160-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm7
> > + pxor 0-128(%rax),%xmm1
> > + pxor %xmm3,%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + movdqa %xmm10,%xmm9
> > + pand %xmm12,%xmm7
> > +
> > + movdqa %xmm13,%xmm6
> > + movdqa %xmm1,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm14
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm0,112-128(%rax)
> > + paddd %xmm0,%xmm14
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm11,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm1,%xmm1
> > + paddd %xmm6,%xmm14
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 176-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm7
> > + pxor 16-128(%rax),%xmm2
> > + pxor %xmm4,%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + movdqa %xmm14,%xmm9
> > + pand %xmm11,%xmm7
> > +
> > + movdqa %xmm12,%xmm6
> > + movdqa %xmm2,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm13
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm1,128-128(%rax)
> > + paddd %xmm1,%xmm13
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm10,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm2,%xmm2
> > + paddd %xmm6,%xmm13
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 192-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm7
> > + pxor 32-128(%rax),%xmm3
> > + pxor %xmm0,%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + movdqa %xmm13,%xmm9
> > + pand %xmm10,%xmm7
> > +
> > + movdqa %xmm11,%xmm6
> > + movdqa %xmm3,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm12
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm2,144-128(%rax)
> > + paddd %xmm2,%xmm12
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm14,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm3,%xmm3
> > + paddd %xmm6,%xmm12
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 208-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm7
> > + pxor 48-128(%rax),%xmm4
> > + pxor %xmm1,%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + movdqa %xmm12,%xmm9
> > + pand %xmm14,%xmm7
> > +
> > + movdqa %xmm10,%xmm6
> > + movdqa %xmm4,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm11
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm3,160-128(%rax)
> > + paddd %xmm3,%xmm11
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm13,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm4,%xmm4
> > + paddd %xmm6,%xmm11
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 224-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm7
> > + pxor 64-128(%rax),%xmm0
> > + pxor %xmm2,%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + movdqa %xmm11,%xmm9
> > + pand %xmm13,%xmm7
> > +
> > + movdqa %xmm14,%xmm6
> > + movdqa %xmm0,%xmm5
> > + psrld $27,%xmm9
> > + paddd %xmm7,%xmm10
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm4,176-128(%rax)
> > + paddd %xmm4,%xmm10
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + pand %xmm12,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + paddd %xmm0,%xmm0
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + movdqa 64(%rbp),%xmm15
> > + pxor %xmm3,%xmm1
> > + movdqa 240-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 80-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,192-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 0-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 96-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,208-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 16-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 112-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,224-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 32-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 128-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,240-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 48-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 144-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,0-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 64-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 160-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,16-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 80-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 176-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,32-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 96-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 192-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + movdqa %xmm2,48-128(%rax)
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 112-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 208-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + movdqa %xmm3,64-128(%rax)
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 128-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 224-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + movdqa %xmm4,80-128(%rax)
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 144-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 240-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + movdqa %xmm0,96-128(%rax)
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 160-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 0-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + movdqa %xmm1,112-128(%rax)
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 176-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 16-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 192-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 32-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + pxor %xmm2,%xmm0
> > + movdqa 208-128(%rax),%xmm2
> > +
> > + movdqa %xmm11,%xmm8
> > + movdqa %xmm14,%xmm6
> > + pxor 48-128(%rax),%xmm0
> > + paddd %xmm15,%xmm10
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + paddd %xmm4,%xmm10
> > + pxor %xmm2,%xmm0
> > + psrld $27,%xmm9
> > + pxor %xmm13,%xmm6
> > + movdqa %xmm12,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm0,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm10
> > + paddd %xmm0,%xmm0
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm5,%xmm0
> > + por %xmm7,%xmm12
> > + pxor %xmm3,%xmm1
> > + movdqa 224-128(%rax),%xmm3
> > +
> > + movdqa %xmm10,%xmm8
> > + movdqa %xmm13,%xmm6
> > + pxor 64-128(%rax),%xmm1
> > + paddd %xmm15,%xmm14
> > + pslld $5,%xmm8
> > + pxor %xmm11,%xmm6
> > +
> > + movdqa %xmm10,%xmm9
> > + paddd %xmm0,%xmm14
> > + pxor %xmm3,%xmm1
> > + psrld $27,%xmm9
> > + pxor %xmm12,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm1,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm14
> > + paddd %xmm1,%xmm1
> > +
> > + psrld $2,%xmm11
> > + paddd %xmm8,%xmm14
> > + por %xmm5,%xmm1
> > + por %xmm7,%xmm11
> > + pxor %xmm4,%xmm2
> > + movdqa 240-128(%rax),%xmm4
> > +
> > + movdqa %xmm14,%xmm8
> > + movdqa %xmm12,%xmm6
> > + pxor 80-128(%rax),%xmm2
> > + paddd %xmm15,%xmm13
> > + pslld $5,%xmm8
> > + pxor %xmm10,%xmm6
> > +
> > + movdqa %xmm14,%xmm9
> > + paddd %xmm1,%xmm13
> > + pxor %xmm4,%xmm2
> > + psrld $27,%xmm9
> > + pxor %xmm11,%xmm6
> > + movdqa %xmm10,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm2,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm13
> > + paddd %xmm2,%xmm2
> > +
> > + psrld $2,%xmm10
> > + paddd %xmm8,%xmm13
> > + por %xmm5,%xmm2
> > + por %xmm7,%xmm10
> > + pxor %xmm0,%xmm3
> > + movdqa 0-128(%rax),%xmm0
> > +
> > + movdqa %xmm13,%xmm8
> > + movdqa %xmm11,%xmm6
> > + pxor 96-128(%rax),%xmm3
> > + paddd %xmm15,%xmm12
> > + pslld $5,%xmm8
> > + pxor %xmm14,%xmm6
> > +
> > + movdqa %xmm13,%xmm9
> > + paddd %xmm2,%xmm12
> > + pxor %xmm0,%xmm3
> > + psrld $27,%xmm9
> > + pxor %xmm10,%xmm6
> > + movdqa %xmm14,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm3,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm12
> > + paddd %xmm3,%xmm3
> > +
> > + psrld $2,%xmm14
> > + paddd %xmm8,%xmm12
> > + por %xmm5,%xmm3
> > + por %xmm7,%xmm14
> > + pxor %xmm1,%xmm4
> > + movdqa 16-128(%rax),%xmm1
> > +
> > + movdqa %xmm12,%xmm8
> > + movdqa %xmm10,%xmm6
> > + pxor 112-128(%rax),%xmm4
> > + paddd %xmm15,%xmm11
> > + pslld $5,%xmm8
> > + pxor %xmm13,%xmm6
> > +
> > + movdqa %xmm12,%xmm9
> > + paddd %xmm3,%xmm11
> > + pxor %xmm1,%xmm4
> > + psrld $27,%xmm9
> > + pxor %xmm14,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + pslld $30,%xmm7
> > + movdqa %xmm4,%xmm5
> > + por %xmm9,%xmm8
> > + psrld $31,%xmm5
> > + paddd %xmm6,%xmm11
> > + paddd %xmm4,%xmm4
> > +
> > + psrld $2,%xmm13
> > + paddd %xmm8,%xmm11
> > + por %xmm5,%xmm4
> > + por %xmm7,%xmm13
> > + movdqa %xmm11,%xmm8
> > + paddd %xmm15,%xmm10
> > + movdqa %xmm14,%xmm6
> > + pslld $5,%xmm8
> > + pxor %xmm12,%xmm6
> > +
> > + movdqa %xmm11,%xmm9
> > + paddd %xmm4,%xmm10
> > + psrld $27,%xmm9
> > + movdqa %xmm12,%xmm7
> > + pxor %xmm13,%xmm6
> > +
> > + pslld $30,%xmm7
> > + por %xmm9,%xmm8
> > + paddd %xmm6,%xmm10
> > +
> > + psrld $2,%xmm12
> > + paddd %xmm8,%xmm10
> > + por %xmm7,%xmm12
> > + movdqa (%rbx),%xmm0
> > + movl $1,%ecx
> > + cmpl 0(%rbx),%ecx
> > + pxor %xmm8,%xmm8
> > + cmovgeq %rbp,%r8
> > + cmpl 4(%rbx),%ecx
> > + movdqa %xmm0,%xmm1
> > + cmovgeq %rbp,%r9
> > + cmpl 8(%rbx),%ecx
> > + pcmpgtd %xmm8,%xmm1
> > + cmovgeq %rbp,%r10
> > + cmpl 12(%rbx),%ecx
> > + paddd %xmm1,%xmm0
> > + cmovgeq %rbp,%r11
> > +
> > + movdqu 0(%rdi),%xmm6
> > + pand %xmm1,%xmm10
> > + movdqu 32(%rdi),%xmm7
> > + pand %xmm1,%xmm11
> > + paddd %xmm6,%xmm10
> > + movdqu 64(%rdi),%xmm8
> > + pand %xmm1,%xmm12
> > + paddd %xmm7,%xmm11
> > + movdqu 96(%rdi),%xmm9
> > + pand %xmm1,%xmm13
> > + paddd %xmm8,%xmm12
> > + movdqu 128(%rdi),%xmm5
> > + pand %xmm1,%xmm14
> > + movdqu %xmm10,0(%rdi)
> > + paddd %xmm9,%xmm13
> > + movdqu %xmm11,32(%rdi)
> > + paddd %xmm5,%xmm14
> > + movdqu %xmm12,64(%rdi)
> > + movdqu %xmm13,96(%rdi)
> > + movdqu %xmm14,128(%rdi)
> > +
> > + movdqa %xmm0,(%rbx)
> > + movdqa 96(%rbp),%xmm5
> > + movdqa -32(%rbp),%xmm15
> > + decl %edx
> > + jnz .Loop
> > +
> > + movl 280(%rsp),%edx
> > + leaq 16(%rdi),%rdi
> > + leaq 64(%rsi),%rsi
> > + decl %edx
> > + jnz .Loop_grande
> > +
> > +.Ldone:
> > + movq 272(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha1_multi_block,.-sha1_multi_block
> > +.type sha1_multi_block_shaext,@function
> > +.align 32
> > +sha1_multi_block_shaext:
> > +.cfi_startproc
> > +_shaext_shortcut:
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + subq $288,%rsp
> > + shll $1,%edx
> > + andq $-256,%rsp
> > + leaq 64(%rdi),%rdi
> > + movq %rax,272(%rsp)
> > +.Lbody_shaext:
> > + leaq 256(%rsp),%rbx
> > + movdqa K_XX_XX+128(%rip),%xmm3
> > +
> > +.Loop_grande_shaext:
> > + movl %edx,280(%rsp)
> > + xorl %edx,%edx
> > + movq 0(%rsi),%r8
> > + movl 8(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,0(%rbx)
> > + cmovleq %rsp,%r8
> > + movq 16(%rsi),%r9
> > + movl 24(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,4(%rbx)
> > + cmovleq %rsp,%r9
> > + testl %edx,%edx
> > + jz .Ldone_shaext
> > +
> > + movq 0-64(%rdi),%xmm0
> > + movq 32-64(%rdi),%xmm4
> > + movq 64-64(%rdi),%xmm5
> > + movq 96-64(%rdi),%xmm6
> > + movq 128-64(%rdi),%xmm7
> > +
> > + punpckldq %xmm4,%xmm0
> > + punpckldq %xmm6,%xmm5
> > +
> > + movdqa %xmm0,%xmm8
> > + punpcklqdq %xmm5,%xmm0
> > + punpckhqdq %xmm5,%xmm8
> > +
> > + pshufd $63,%xmm7,%xmm1
> > + pshufd $127,%xmm7,%xmm9
> > + pshufd $27,%xmm0,%xmm0
> > + pshufd $27,%xmm8,%xmm8
> > + jmp .Loop_shaext
> > +
> > +.align 32
> > +.Loop_shaext:
> > + movdqu 0(%r8),%xmm4
> > + movdqu 0(%r9),%xmm11
> > + movdqu 16(%r8),%xmm5
> > + movdqu 16(%r9),%xmm12
> > + movdqu 32(%r8),%xmm6
> > +.byte 102,15,56,0,227
> > + movdqu 32(%r9),%xmm13
> > +.byte 102,68,15,56,0,219
> > + movdqu 48(%r8),%xmm7
> > + leaq 64(%r8),%r8
> > +.byte 102,15,56,0,235
> > + movdqu 48(%r9),%xmm14
> > + leaq 64(%r9),%r9
> > +.byte 102,68,15,56,0,227
> > +
> > + movdqa %xmm1,80(%rsp)
> > + paddd %xmm4,%xmm1
> > + movdqa %xmm9,112(%rsp)
> > + paddd %xmm11,%xmm9
> > + movdqa %xmm0,64(%rsp)
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,96(%rsp)
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,213
> > +.byte 69,15,58,204,193,0
> > +.byte 69,15,56,200,212
> > +.byte 102,15,56,0,243
> > + prefetcht0 127(%r8)
> > +.byte 15,56,201,229
> > +.byte 102,68,15,56,0,235
> > + prefetcht0 127(%r9)
> > +.byte 69,15,56,201,220
> > +
> > +.byte 102,15,56,0,251
> > + movdqa %xmm0,%xmm1
> > +.byte 102,68,15,56,0,243
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,0
> > +.byte 15,56,200,206
> > +.byte 69,15,58,204,194,0
> > +.byte 69,15,56,200,205
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + pxor %xmm13,%xmm11
> > +.byte 69,15,56,201,229
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,215
> > +.byte 69,15,58,204,193,0
> > +.byte 69,15,56,200,214
> > +.byte 15,56,202,231
> > +.byte 69,15,56,202,222
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,201,247
> > + pxor %xmm14,%xmm12
> > +.byte 69,15,56,201,238
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,0
> > +.byte 15,56,200,204
> > +.byte 69,15,58,204,194,0
> > +.byte 69,15,56,200,203
> > +.byte 15,56,202,236
> > +.byte 69,15,56,202,227
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > + pxor %xmm11,%xmm13
> > +.byte 69,15,56,201,243
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,213
> > +.byte 69,15,58,204,193,0
> > +.byte 69,15,56,200,212
> > +.byte 15,56,202,245
> > +.byte 69,15,56,202,236
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,201,229
> > + pxor %xmm12,%xmm14
> > +.byte 69,15,56,201,220
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,206
> > +.byte 69,15,58,204,194,1
> > +.byte 69,15,56,200,205
> > +.byte 15,56,202,254
> > +.byte 69,15,56,202,245
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + pxor %xmm13,%xmm11
> > +.byte 69,15,56,201,229
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,1
> > +.byte 15,56,200,215
> > +.byte 69,15,58,204,193,1
> > +.byte 69,15,56,200,214
> > +.byte 15,56,202,231
> > +.byte 69,15,56,202,222
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,201,247
> > + pxor %xmm14,%xmm12
> > +.byte 69,15,56,201,238
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,204
> > +.byte 69,15,58,204,194,1
> > +.byte 69,15,56,200,203
> > +.byte 15,56,202,236
> > +.byte 69,15,56,202,227
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > + pxor %xmm11,%xmm13
> > +.byte 69,15,56,201,243
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,1
> > +.byte 15,56,200,213
> > +.byte 69,15,58,204,193,1
> > +.byte 69,15,56,200,212
> > +.byte 15,56,202,245
> > +.byte 69,15,56,202,236
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,201,229
> > + pxor %xmm12,%xmm14
> > +.byte 69,15,56,201,220
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,206
> > +.byte 69,15,58,204,194,1
> > +.byte 69,15,56,200,205
> > +.byte 15,56,202,254
> > +.byte 69,15,56,202,245
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + pxor %xmm13,%xmm11
> > +.byte 69,15,56,201,229
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,215
> > +.byte 69,15,58,204,193,2
> > +.byte 69,15,56,200,214
> > +.byte 15,56,202,231
> > +.byte 69,15,56,202,222
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,201,247
> > + pxor %xmm14,%xmm12
> > +.byte 69,15,56,201,238
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,2
> > +.byte 15,56,200,204
> > +.byte 69,15,58,204,194,2
> > +.byte 69,15,56,200,203
> > +.byte 15,56,202,236
> > +.byte 69,15,56,202,227
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > + pxor %xmm11,%xmm13
> > +.byte 69,15,56,201,243
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,213
> > +.byte 69,15,58,204,193,2
> > +.byte 69,15,56,200,212
> > +.byte 15,56,202,245
> > +.byte 69,15,56,202,236
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,201,229
> > + pxor %xmm12,%xmm14
> > +.byte 69,15,56,201,220
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,2
> > +.byte 15,56,200,206
> > +.byte 69,15,58,204,194,2
> > +.byte 69,15,56,200,205
> > +.byte 15,56,202,254
> > +.byte 69,15,56,202,245
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > + pxor %xmm13,%xmm11
> > +.byte 69,15,56,201,229
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,215
> > +.byte 69,15,58,204,193,2
> > +.byte 69,15,56,200,214
> > +.byte 15,56,202,231
> > +.byte 69,15,56,202,222
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,201,247
> > + pxor %xmm14,%xmm12
> > +.byte 69,15,56,201,238
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,3
> > +.byte 15,56,200,204
> > +.byte 69,15,58,204,194,3
> > +.byte 69,15,56,200,203
> > +.byte 15,56,202,236
> > +.byte 69,15,56,202,227
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > + pxor %xmm11,%xmm13
> > +.byte 69,15,56,201,243
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,3
> > +.byte 15,56,200,213
> > +.byte 69,15,58,204,193,3
> > +.byte 69,15,56,200,212
> > +.byte 15,56,202,245
> > +.byte 69,15,56,202,236
> > + pxor %xmm5,%xmm7
> > + pxor %xmm12,%xmm14
> > +
> > + movl $1,%ecx
> > + pxor %xmm4,%xmm4
> > + cmpl 0(%rbx),%ecx
> > + cmovgeq %rsp,%r8
> > +
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,3
> > +.byte 15,56,200,206
> > +.byte 69,15,58,204,194,3
> > +.byte 69,15,56,200,205
> > +.byte 15,56,202,254
> > +.byte 69,15,56,202,245
> > +
> > + cmpl 4(%rbx),%ecx
> > + cmovgeq %rsp,%r9
> > + movq (%rbx),%xmm6
> > +
> > + movdqa %xmm0,%xmm2
> > + movdqa %xmm8,%xmm10
> > +.byte 15,58,204,193,3
> > +.byte 15,56,200,215
> > +.byte 69,15,58,204,193,3
> > +.byte 69,15,56,200,214
> > +
> > + pshufd $0x00,%xmm6,%xmm11
> > + pshufd $0x55,%xmm6,%xmm12
> > + movdqa %xmm6,%xmm7
> > + pcmpgtd %xmm4,%xmm11
> > + pcmpgtd %xmm4,%xmm12
> > +
> > + movdqa %xmm0,%xmm1
> > + movdqa %xmm8,%xmm9
> > +.byte 15,58,204,194,3
> > +.byte 15,56,200,204
> > +.byte 69,15,58,204,194,3
> > +.byte 68,15,56,200,204
> > +
> > + pcmpgtd %xmm4,%xmm7
> > + pand %xmm11,%xmm0
> > + pand %xmm11,%xmm1
> > + pand %xmm12,%xmm8
> > + pand %xmm12,%xmm9
> > + paddd %xmm7,%xmm6
> > +
> > + paddd 64(%rsp),%xmm0
> > + paddd 80(%rsp),%xmm1
> > + paddd 96(%rsp),%xmm8
> > + paddd 112(%rsp),%xmm9
> > +
> > + movq %xmm6,(%rbx)
> > + decl %edx
> > + jnz .Loop_shaext
> > +
> > + movl 280(%rsp),%edx
> > +
> > + pshufd $27,%xmm0,%xmm0
> > + pshufd $27,%xmm8,%xmm8
> > +
> > + movdqa %xmm0,%xmm6
> > + punpckldq %xmm8,%xmm0
> > + punpckhdq %xmm8,%xmm6
> > + punpckhdq %xmm9,%xmm1
> > + movq %xmm0,0-64(%rdi)
> > + psrldq $8,%xmm0
> > + movq %xmm6,64-64(%rdi)
> > + psrldq $8,%xmm6
> > + movq %xmm0,32-64(%rdi)
> > + psrldq $8,%xmm1
> > + movq %xmm6,96-64(%rdi)
> > + movq %xmm1,128-64(%rdi)
> > +
> > + leaq 8(%rdi),%rdi
> > + leaq 32(%rsi),%rsi
> > + decl %edx
> > + jnz .Loop_grande_shaext
> > +
> > +.Ldone_shaext:
> > +
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue_shaext:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha1_multi_block_shaext,.-sha1_multi_block_shaext
> > +
> > +.align 256
> > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > +K_XX_XX:
> > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > +.byte
> >
> 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,
> >
> 115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80
> ,
> >
> 84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,11
> > 5,115,108,46,111,114,103,62,0
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> > new file mode 100644
> > index 0000000000..0b59726ae4
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha1-x86_64.S
> > @@ -0,0 +1,2631 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl sha1_block_data_order
> > +.type sha1_block_data_order,@function
> > +.align 16
> > +sha1_block_data_order:
> > +.cfi_startproc
> > + movl OPENSSL_ia32cap_P+0(%rip),%r9d
> > + movl OPENSSL_ia32cap_P+4(%rip),%r8d
> > + movl OPENSSL_ia32cap_P+8(%rip),%r10d
> > + testl $512,%r8d
> > + jz .Lialu
> > + testl $536870912,%r10d
> > + jnz _shaext_shortcut
> > + jmp _ssse3_shortcut
> > +
> > +.align 16
> > +.Lialu:
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + movq %rdi,%r8
> > + subq $72,%rsp
> > + movq %rsi,%r9
> > + andq $-64,%rsp
> > + movq %rdx,%r10
> > + movq %rax,64(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0xc0,0x00,0x06,0x23,0x08
> > +.Lprologue:
> > +
> > + movl 0(%r8),%esi
> > + movl 4(%r8),%edi
> > + movl 8(%r8),%r11d
> > + movl 12(%r8),%r12d
> > + movl 16(%r8),%r13d
> > + jmp .Lloop
> > +
> > +.align 16
> > +.Lloop:
> > + movl 0(%r9),%edx
> > + bswapl %edx
> > + movl 4(%r9),%ebp
> > + movl %r12d,%eax
> > + movl %edx,0(%rsp)
> > + movl %esi,%ecx
> > + bswapl %ebp
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + andl %edi,%eax
> > + leal 1518500249(%rdx,%r13,1),%r13d
> > + addl %ecx,%r13d
> > + xorl %r12d,%eax
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + movl 8(%r9),%r14d
> > + movl %r11d,%eax
> > + movl %ebp,4(%rsp)
> > + movl %r13d,%ecx
> > + bswapl %r14d
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + andl %esi,%eax
> > + leal 1518500249(%rbp,%r12,1),%r12d
> > + addl %ecx,%r12d
> > + xorl %r11d,%eax
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + movl 12(%r9),%edx
> > + movl %edi,%eax
> > + movl %r14d,8(%rsp)
> > + movl %r12d,%ecx
> > + bswapl %edx
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + andl %r13d,%eax
> > + leal 1518500249(%r14,%r11,1),%r11d
> > + addl %ecx,%r11d
> > + xorl %edi,%eax
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + movl 16(%r9),%ebp
> > + movl %esi,%eax
> > + movl %edx,12(%rsp)
> > + movl %r11d,%ecx
> > + bswapl %ebp
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + andl %r12d,%eax
> > + leal 1518500249(%rdx,%rdi,1),%edi
> > + addl %ecx,%edi
> > + xorl %esi,%eax
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + movl 20(%r9),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,16(%rsp)
> > + movl %edi,%ecx
> > + bswapl %r14d
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + andl %r11d,%eax
> > + leal 1518500249(%rbp,%rsi,1),%esi
> > + addl %ecx,%esi
> > + xorl %r13d,%eax
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + movl 24(%r9),%edx
> > + movl %r12d,%eax
> > + movl %r14d,20(%rsp)
> > + movl %esi,%ecx
> > + bswapl %edx
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + andl %edi,%eax
> > + leal 1518500249(%r14,%r13,1),%r13d
> > + addl %ecx,%r13d
> > + xorl %r12d,%eax
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + movl 28(%r9),%ebp
> > + movl %r11d,%eax
> > + movl %edx,24(%rsp)
> > + movl %r13d,%ecx
> > + bswapl %ebp
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + andl %esi,%eax
> > + leal 1518500249(%rdx,%r12,1),%r12d
> > + addl %ecx,%r12d
> > + xorl %r11d,%eax
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + movl 32(%r9),%r14d
> > + movl %edi,%eax
> > + movl %ebp,28(%rsp)
> > + movl %r12d,%ecx
> > + bswapl %r14d
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + andl %r13d,%eax
> > + leal 1518500249(%rbp,%r11,1),%r11d
> > + addl %ecx,%r11d
> > + xorl %edi,%eax
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + movl 36(%r9),%edx
> > + movl %esi,%eax
> > + movl %r14d,32(%rsp)
> > + movl %r11d,%ecx
> > + bswapl %edx
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + andl %r12d,%eax
> > + leal 1518500249(%r14,%rdi,1),%edi
> > + addl %ecx,%edi
> > + xorl %esi,%eax
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + movl 40(%r9),%ebp
> > + movl %r13d,%eax
> > + movl %edx,36(%rsp)
> > + movl %edi,%ecx
> > + bswapl %ebp
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + andl %r11d,%eax
> > + leal 1518500249(%rdx,%rsi,1),%esi
> > + addl %ecx,%esi
> > + xorl %r13d,%eax
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + movl 44(%r9),%r14d
> > + movl %r12d,%eax
> > + movl %ebp,40(%rsp)
> > + movl %esi,%ecx
> > + bswapl %r14d
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + andl %edi,%eax
> > + leal 1518500249(%rbp,%r13,1),%r13d
> > + addl %ecx,%r13d
> > + xorl %r12d,%eax
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + movl 48(%r9),%edx
> > + movl %r11d,%eax
> > + movl %r14d,44(%rsp)
> > + movl %r13d,%ecx
> > + bswapl %edx
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + andl %esi,%eax
> > + leal 1518500249(%r14,%r12,1),%r12d
> > + addl %ecx,%r12d
> > + xorl %r11d,%eax
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + movl 52(%r9),%ebp
> > + movl %edi,%eax
> > + movl %edx,48(%rsp)
> > + movl %r12d,%ecx
> > + bswapl %ebp
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + andl %r13d,%eax
> > + leal 1518500249(%rdx,%r11,1),%r11d
> > + addl %ecx,%r11d
> > + xorl %edi,%eax
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + movl 56(%r9),%r14d
> > + movl %esi,%eax
> > + movl %ebp,52(%rsp)
> > + movl %r11d,%ecx
> > + bswapl %r14d
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + andl %r12d,%eax
> > + leal 1518500249(%rbp,%rdi,1),%edi
> > + addl %ecx,%edi
> > + xorl %esi,%eax
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + movl 60(%r9),%edx
> > + movl %r13d,%eax
> > + movl %r14d,56(%rsp)
> > + movl %edi,%ecx
> > + bswapl %edx
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + andl %r11d,%eax
> > + leal 1518500249(%r14,%rsi,1),%esi
> > + addl %ecx,%esi
> > + xorl %r13d,%eax
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + xorl 0(%rsp),%ebp
> > + movl %r12d,%eax
> > + movl %edx,60(%rsp)
> > + movl %esi,%ecx
> > + xorl 8(%rsp),%ebp
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 32(%rsp),%ebp
> > + andl %edi,%eax
> > + leal 1518500249(%rdx,%r13,1),%r13d
> > + roll $30,%edi
> > + xorl %r12d,%eax
> > + addl %ecx,%r13d
> > + roll $1,%ebp
> > + addl %eax,%r13d
> > + xorl 4(%rsp),%r14d
> > + movl %r11d,%eax
> > + movl %ebp,0(%rsp)
> > + movl %r13d,%ecx
> > + xorl 12(%rsp),%r14d
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 36(%rsp),%r14d
> > + andl %esi,%eax
> > + leal 1518500249(%rbp,%r12,1),%r12d
> > + roll $30,%esi
> > + xorl %r11d,%eax
> > + addl %ecx,%r12d
> > + roll $1,%r14d
> > + addl %eax,%r12d
> > + xorl 8(%rsp),%edx
> > + movl %edi,%eax
> > + movl %r14d,4(%rsp)
> > + movl %r12d,%ecx
> > + xorl 16(%rsp),%edx
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 40(%rsp),%edx
> > + andl %r13d,%eax
> > + leal 1518500249(%r14,%r11,1),%r11d
> > + roll $30,%r13d
> > + xorl %edi,%eax
> > + addl %ecx,%r11d
> > + roll $1,%edx
> > + addl %eax,%r11d
> > + xorl 12(%rsp),%ebp
> > + movl %esi,%eax
> > + movl %edx,8(%rsp)
> > + movl %r11d,%ecx
> > + xorl 20(%rsp),%ebp
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 44(%rsp),%ebp
> > + andl %r12d,%eax
> > + leal 1518500249(%rdx,%rdi,1),%edi
> > + roll $30,%r12d
> > + xorl %esi,%eax
> > + addl %ecx,%edi
> > + roll $1,%ebp
> > + addl %eax,%edi
> > + xorl 16(%rsp),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,12(%rsp)
> > + movl %edi,%ecx
> > + xorl 24(%rsp),%r14d
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 48(%rsp),%r14d
> > + andl %r11d,%eax
> > + leal 1518500249(%rbp,%rsi,1),%esi
> > + roll $30,%r11d
> > + xorl %r13d,%eax
> > + addl %ecx,%esi
> > + roll $1,%r14d
> > + addl %eax,%esi
> > + xorl 20(%rsp),%edx
> > + movl %edi,%eax
> > + movl %r14d,16(%rsp)
> > + movl %esi,%ecx
> > + xorl 28(%rsp),%edx
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 52(%rsp),%edx
> > + leal 1859775393(%r14,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%edx
> > + xorl 24(%rsp),%ebp
> > + movl %esi,%eax
> > + movl %edx,20(%rsp)
> > + movl %r13d,%ecx
> > + xorl 32(%rsp),%ebp
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 56(%rsp),%ebp
> > + leal 1859775393(%rdx,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%ebp
> > + xorl 28(%rsp),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,24(%rsp)
> > + movl %r12d,%ecx
> > + xorl 36(%rsp),%r14d
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 60(%rsp),%r14d
> > + leal 1859775393(%rbp,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%r14d
> > + xorl 32(%rsp),%edx
> > + movl %r12d,%eax
> > + movl %r14d,28(%rsp)
> > + movl %r11d,%ecx
> > + xorl 40(%rsp),%edx
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 0(%rsp),%edx
> > + leal 1859775393(%r14,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%edx
> > + xorl 36(%rsp),%ebp
> > + movl %r11d,%eax
> > + movl %edx,32(%rsp)
> > + movl %edi,%ecx
> > + xorl 44(%rsp),%ebp
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 4(%rsp),%ebp
> > + leal 1859775393(%rdx,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%ebp
> > + xorl 40(%rsp),%r14d
> > + movl %edi,%eax
> > + movl %ebp,36(%rsp)
> > + movl %esi,%ecx
> > + xorl 48(%rsp),%r14d
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 8(%rsp),%r14d
> > + leal 1859775393(%rbp,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%r14d
> > + xorl 44(%rsp),%edx
> > + movl %esi,%eax
> > + movl %r14d,40(%rsp)
> > + movl %r13d,%ecx
> > + xorl 52(%rsp),%edx
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 12(%rsp),%edx
> > + leal 1859775393(%r14,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%edx
> > + xorl 48(%rsp),%ebp
> > + movl %r13d,%eax
> > + movl %edx,44(%rsp)
> > + movl %r12d,%ecx
> > + xorl 56(%rsp),%ebp
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 16(%rsp),%ebp
> > + leal 1859775393(%rdx,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%ebp
> > + xorl 52(%rsp),%r14d
> > + movl %r12d,%eax
> > + movl %ebp,48(%rsp)
> > + movl %r11d,%ecx
> > + xorl 60(%rsp),%r14d
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 20(%rsp),%r14d
> > + leal 1859775393(%rbp,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%r14d
> > + xorl 56(%rsp),%edx
> > + movl %r11d,%eax
> > + movl %r14d,52(%rsp)
> > + movl %edi,%ecx
> > + xorl 0(%rsp),%edx
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 24(%rsp),%edx
> > + leal 1859775393(%r14,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%edx
> > + xorl 60(%rsp),%ebp
> > + movl %edi,%eax
> > + movl %edx,56(%rsp)
> > + movl %esi,%ecx
> > + xorl 4(%rsp),%ebp
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 28(%rsp),%ebp
> > + leal 1859775393(%rdx,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%ebp
> > + xorl 0(%rsp),%r14d
> > + movl %esi,%eax
> > + movl %ebp,60(%rsp)
> > + movl %r13d,%ecx
> > + xorl 8(%rsp),%r14d
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 32(%rsp),%r14d
> > + leal 1859775393(%rbp,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%r14d
> > + xorl 4(%rsp),%edx
> > + movl %r13d,%eax
> > + movl %r14d,0(%rsp)
> > + movl %r12d,%ecx
> > + xorl 12(%rsp),%edx
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 36(%rsp),%edx
> > + leal 1859775393(%r14,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%edx
> > + xorl 8(%rsp),%ebp
> > + movl %r12d,%eax
> > + movl %edx,4(%rsp)
> > + movl %r11d,%ecx
> > + xorl 16(%rsp),%ebp
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 40(%rsp),%ebp
> > + leal 1859775393(%rdx,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%ebp
> > + xorl 12(%rsp),%r14d
> > + movl %r11d,%eax
> > + movl %ebp,8(%rsp)
> > + movl %edi,%ecx
> > + xorl 20(%rsp),%r14d
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 44(%rsp),%r14d
> > + leal 1859775393(%rbp,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%r14d
> > + xorl 16(%rsp),%edx
> > + movl %edi,%eax
> > + movl %r14d,12(%rsp)
> > + movl %esi,%ecx
> > + xorl 24(%rsp),%edx
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 48(%rsp),%edx
> > + leal 1859775393(%r14,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%edx
> > + xorl 20(%rsp),%ebp
> > + movl %esi,%eax
> > + movl %edx,16(%rsp)
> > + movl %r13d,%ecx
> > + xorl 28(%rsp),%ebp
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 52(%rsp),%ebp
> > + leal 1859775393(%rdx,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%ebp
> > + xorl 24(%rsp),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,20(%rsp)
> > + movl %r12d,%ecx
> > + xorl 32(%rsp),%r14d
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 56(%rsp),%r14d
> > + leal 1859775393(%rbp,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%r14d
> > + xorl 28(%rsp),%edx
> > + movl %r12d,%eax
> > + movl %r14d,24(%rsp)
> > + movl %r11d,%ecx
> > + xorl 36(%rsp),%edx
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 60(%rsp),%edx
> > + leal 1859775393(%r14,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%edx
> > + xorl 32(%rsp),%ebp
> > + movl %r11d,%eax
> > + movl %edx,28(%rsp)
> > + movl %edi,%ecx
> > + xorl 40(%rsp),%ebp
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 0(%rsp),%ebp
> > + leal 1859775393(%rdx,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%ebp
> > + xorl 36(%rsp),%r14d
> > + movl %r12d,%eax
> > + movl %ebp,32(%rsp)
> > + movl %r12d,%ebx
> > + xorl 44(%rsp),%r14d
> > + andl %r11d,%eax
> > + movl %esi,%ecx
> > + xorl 4(%rsp),%r14d
> > + leal -1894007588(%rbp,%r13,1),%r13d
> > + xorl %r11d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r13d
> > + roll $1,%r14d
> > + andl %edi,%ebx
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %ebx,%r13d
> > + xorl 40(%rsp),%edx
> > + movl %r11d,%eax
> > + movl %r14d,36(%rsp)
> > + movl %r11d,%ebx
> > + xorl 48(%rsp),%edx
> > + andl %edi,%eax
> > + movl %r13d,%ecx
> > + xorl 8(%rsp),%edx
> > + leal -1894007588(%r14,%r12,1),%r12d
> > + xorl %edi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r12d
> > + roll $1,%edx
> > + andl %esi,%ebx
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %ebx,%r12d
> > + xorl 44(%rsp),%ebp
> > + movl %edi,%eax
> > + movl %edx,40(%rsp)
> > + movl %edi,%ebx
> > + xorl 52(%rsp),%ebp
> > + andl %esi,%eax
> > + movl %r12d,%ecx
> > + xorl 12(%rsp),%ebp
> > + leal -1894007588(%rdx,%r11,1),%r11d
> > + xorl %esi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r11d
> > + roll $1,%ebp
> > + andl %r13d,%ebx
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %ebx,%r11d
> > + xorl 48(%rsp),%r14d
> > + movl %esi,%eax
> > + movl %ebp,44(%rsp)
> > + movl %esi,%ebx
> > + xorl 56(%rsp),%r14d
> > + andl %r13d,%eax
> > + movl %r11d,%ecx
> > + xorl 16(%rsp),%r14d
> > + leal -1894007588(%rbp,%rdi,1),%edi
> > + xorl %r13d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%edi
> > + roll $1,%r14d
> > + andl %r12d,%ebx
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %ebx,%edi
> > + xorl 52(%rsp),%edx
> > + movl %r13d,%eax
> > + movl %r14d,48(%rsp)
> > + movl %r13d,%ebx
> > + xorl 60(%rsp),%edx
> > + andl %r12d,%eax
> > + movl %edi,%ecx
> > + xorl 20(%rsp),%edx
> > + leal -1894007588(%r14,%rsi,1),%esi
> > + xorl %r12d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%esi
> > + roll $1,%edx
> > + andl %r11d,%ebx
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %ebx,%esi
> > + xorl 56(%rsp),%ebp
> > + movl %r12d,%eax
> > + movl %edx,52(%rsp)
> > + movl %r12d,%ebx
> > + xorl 0(%rsp),%ebp
> > + andl %r11d,%eax
> > + movl %esi,%ecx
> > + xorl 24(%rsp),%ebp
> > + leal -1894007588(%rdx,%r13,1),%r13d
> > + xorl %r11d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r13d
> > + roll $1,%ebp
> > + andl %edi,%ebx
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %ebx,%r13d
> > + xorl 60(%rsp),%r14d
> > + movl %r11d,%eax
> > + movl %ebp,56(%rsp)
> > + movl %r11d,%ebx
> > + xorl 4(%rsp),%r14d
> > + andl %edi,%eax
> > + movl %r13d,%ecx
> > + xorl 28(%rsp),%r14d
> > + leal -1894007588(%rbp,%r12,1),%r12d
> > + xorl %edi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r12d
> > + roll $1,%r14d
> > + andl %esi,%ebx
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %ebx,%r12d
> > + xorl 0(%rsp),%edx
> > + movl %edi,%eax
> > + movl %r14d,60(%rsp)
> > + movl %edi,%ebx
> > + xorl 8(%rsp),%edx
> > + andl %esi,%eax
> > + movl %r12d,%ecx
> > + xorl 32(%rsp),%edx
> > + leal -1894007588(%r14,%r11,1),%r11d
> > + xorl %esi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r11d
> > + roll $1,%edx
> > + andl %r13d,%ebx
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %ebx,%r11d
> > + xorl 4(%rsp),%ebp
> > + movl %esi,%eax
> > + movl %edx,0(%rsp)
> > + movl %esi,%ebx
> > + xorl 12(%rsp),%ebp
> > + andl %r13d,%eax
> > + movl %r11d,%ecx
> > + xorl 36(%rsp),%ebp
> > + leal -1894007588(%rdx,%rdi,1),%edi
> > + xorl %r13d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%edi
> > + roll $1,%ebp
> > + andl %r12d,%ebx
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %ebx,%edi
> > + xorl 8(%rsp),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,4(%rsp)
> > + movl %r13d,%ebx
> > + xorl 16(%rsp),%r14d
> > + andl %r12d,%eax
> > + movl %edi,%ecx
> > + xorl 40(%rsp),%r14d
> > + leal -1894007588(%rbp,%rsi,1),%esi
> > + xorl %r12d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%esi
> > + roll $1,%r14d
> > + andl %r11d,%ebx
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %ebx,%esi
> > + xorl 12(%rsp),%edx
> > + movl %r12d,%eax
> > + movl %r14d,8(%rsp)
> > + movl %r12d,%ebx
> > + xorl 20(%rsp),%edx
> > + andl %r11d,%eax
> > + movl %esi,%ecx
> > + xorl 44(%rsp),%edx
> > + leal -1894007588(%r14,%r13,1),%r13d
> > + xorl %r11d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r13d
> > + roll $1,%edx
> > + andl %edi,%ebx
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %ebx,%r13d
> > + xorl 16(%rsp),%ebp
> > + movl %r11d,%eax
> > + movl %edx,12(%rsp)
> > + movl %r11d,%ebx
> > + xorl 24(%rsp),%ebp
> > + andl %edi,%eax
> > + movl %r13d,%ecx
> > + xorl 48(%rsp),%ebp
> > + leal -1894007588(%rdx,%r12,1),%r12d
> > + xorl %edi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r12d
> > + roll $1,%ebp
> > + andl %esi,%ebx
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %ebx,%r12d
> > + xorl 20(%rsp),%r14d
> > + movl %edi,%eax
> > + movl %ebp,16(%rsp)
> > + movl %edi,%ebx
> > + xorl 28(%rsp),%r14d
> > + andl %esi,%eax
> > + movl %r12d,%ecx
> > + xorl 52(%rsp),%r14d
> > + leal -1894007588(%rbp,%r11,1),%r11d
> > + xorl %esi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r11d
> > + roll $1,%r14d
> > + andl %r13d,%ebx
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %ebx,%r11d
> > + xorl 24(%rsp),%edx
> > + movl %esi,%eax
> > + movl %r14d,20(%rsp)
> > + movl %esi,%ebx
> > + xorl 32(%rsp),%edx
> > + andl %r13d,%eax
> > + movl %r11d,%ecx
> > + xorl 56(%rsp),%edx
> > + leal -1894007588(%r14,%rdi,1),%edi
> > + xorl %r13d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%edi
> > + roll $1,%edx
> > + andl %r12d,%ebx
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %ebx,%edi
> > + xorl 28(%rsp),%ebp
> > + movl %r13d,%eax
> > + movl %edx,24(%rsp)
> > + movl %r13d,%ebx
> > + xorl 36(%rsp),%ebp
> > + andl %r12d,%eax
> > + movl %edi,%ecx
> > + xorl 60(%rsp),%ebp
> > + leal -1894007588(%rdx,%rsi,1),%esi
> > + xorl %r12d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%esi
> > + roll $1,%ebp
> > + andl %r11d,%ebx
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %ebx,%esi
> > + xorl 32(%rsp),%r14d
> > + movl %r12d,%eax
> > + movl %ebp,28(%rsp)
> > + movl %r12d,%ebx
> > + xorl 40(%rsp),%r14d
> > + andl %r11d,%eax
> > + movl %esi,%ecx
> > + xorl 0(%rsp),%r14d
> > + leal -1894007588(%rbp,%r13,1),%r13d
> > + xorl %r11d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r13d
> > + roll $1,%r14d
> > + andl %edi,%ebx
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %ebx,%r13d
> > + xorl 36(%rsp),%edx
> > + movl %r11d,%eax
> > + movl %r14d,32(%rsp)
> > + movl %r11d,%ebx
> > + xorl 44(%rsp),%edx
> > + andl %edi,%eax
> > + movl %r13d,%ecx
> > + xorl 4(%rsp),%edx
> > + leal -1894007588(%r14,%r12,1),%r12d
> > + xorl %edi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r12d
> > + roll $1,%edx
> > + andl %esi,%ebx
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %ebx,%r12d
> > + xorl 40(%rsp),%ebp
> > + movl %edi,%eax
> > + movl %edx,36(%rsp)
> > + movl %edi,%ebx
> > + xorl 48(%rsp),%ebp
> > + andl %esi,%eax
> > + movl %r12d,%ecx
> > + xorl 8(%rsp),%ebp
> > + leal -1894007588(%rdx,%r11,1),%r11d
> > + xorl %esi,%ebx
> > + roll $5,%ecx
> > + addl %eax,%r11d
> > + roll $1,%ebp
> > + andl %r13d,%ebx
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %ebx,%r11d
> > + xorl 44(%rsp),%r14d
> > + movl %esi,%eax
> > + movl %ebp,40(%rsp)
> > + movl %esi,%ebx
> > + xorl 52(%rsp),%r14d
> > + andl %r13d,%eax
> > + movl %r11d,%ecx
> > + xorl 12(%rsp),%r14d
> > + leal -1894007588(%rbp,%rdi,1),%edi
> > + xorl %r13d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%edi
> > + roll $1,%r14d
> > + andl %r12d,%ebx
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %ebx,%edi
> > + xorl 48(%rsp),%edx
> > + movl %r13d,%eax
> > + movl %r14d,44(%rsp)
> > + movl %r13d,%ebx
> > + xorl 56(%rsp),%edx
> > + andl %r12d,%eax
> > + movl %edi,%ecx
> > + xorl 16(%rsp),%edx
> > + leal -1894007588(%r14,%rsi,1),%esi
> > + xorl %r12d,%ebx
> > + roll $5,%ecx
> > + addl %eax,%esi
> > + roll $1,%edx
> > + andl %r11d,%ebx
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %ebx,%esi
> > + xorl 52(%rsp),%ebp
> > + movl %edi,%eax
> > + movl %edx,48(%rsp)
> > + movl %esi,%ecx
> > + xorl 60(%rsp),%ebp
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 20(%rsp),%ebp
> > + leal -899497514(%rdx,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%ebp
> > + xorl 56(%rsp),%r14d
> > + movl %esi,%eax
> > + movl %ebp,52(%rsp)
> > + movl %r13d,%ecx
> > + xorl 0(%rsp),%r14d
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 24(%rsp),%r14d
> > + leal -899497514(%rbp,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%r14d
> > + xorl 60(%rsp),%edx
> > + movl %r13d,%eax
> > + movl %r14d,56(%rsp)
> > + movl %r12d,%ecx
> > + xorl 4(%rsp),%edx
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 28(%rsp),%edx
> > + leal -899497514(%r14,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%edx
> > + xorl 0(%rsp),%ebp
> > + movl %r12d,%eax
> > + movl %edx,60(%rsp)
> > + movl %r11d,%ecx
> > + xorl 8(%rsp),%ebp
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 32(%rsp),%ebp
> > + leal -899497514(%rdx,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%ebp
> > + xorl 4(%rsp),%r14d
> > + movl %r11d,%eax
> > + movl %ebp,0(%rsp)
> > + movl %edi,%ecx
> > + xorl 12(%rsp),%r14d
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 36(%rsp),%r14d
> > + leal -899497514(%rbp,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%r14d
> > + xorl 8(%rsp),%edx
> > + movl %edi,%eax
> > + movl %r14d,4(%rsp)
> > + movl %esi,%ecx
> > + xorl 16(%rsp),%edx
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 40(%rsp),%edx
> > + leal -899497514(%r14,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%edx
> > + xorl 12(%rsp),%ebp
> > + movl %esi,%eax
> > + movl %edx,8(%rsp)
> > + movl %r13d,%ecx
> > + xorl 20(%rsp),%ebp
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 44(%rsp),%ebp
> > + leal -899497514(%rdx,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%ebp
> > + xorl 16(%rsp),%r14d
> > + movl %r13d,%eax
> > + movl %ebp,12(%rsp)
> > + movl %r12d,%ecx
> > + xorl 24(%rsp),%r14d
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 48(%rsp),%r14d
> > + leal -899497514(%rbp,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%r14d
> > + xorl 20(%rsp),%edx
> > + movl %r12d,%eax
> > + movl %r14d,16(%rsp)
> > + movl %r11d,%ecx
> > + xorl 28(%rsp),%edx
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 52(%rsp),%edx
> > + leal -899497514(%r14,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%edx
> > + xorl 24(%rsp),%ebp
> > + movl %r11d,%eax
> > + movl %edx,20(%rsp)
> > + movl %edi,%ecx
> > + xorl 32(%rsp),%ebp
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 56(%rsp),%ebp
> > + leal -899497514(%rdx,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%ebp
> > + xorl 28(%rsp),%r14d
> > + movl %edi,%eax
> > + movl %ebp,24(%rsp)
> > + movl %esi,%ecx
> > + xorl 36(%rsp),%r14d
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 60(%rsp),%r14d
> > + leal -899497514(%rbp,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%r14d
> > + xorl 32(%rsp),%edx
> > + movl %esi,%eax
> > + movl %r14d,28(%rsp)
> > + movl %r13d,%ecx
> > + xorl 40(%rsp),%edx
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 0(%rsp),%edx
> > + leal -899497514(%r14,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%edx
> > + xorl 36(%rsp),%ebp
> > + movl %r13d,%eax
> > +
> > + movl %r12d,%ecx
> > + xorl 44(%rsp),%ebp
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 4(%rsp),%ebp
> > + leal -899497514(%rdx,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%ebp
> > + xorl 40(%rsp),%r14d
> > + movl %r12d,%eax
> > +
> > + movl %r11d,%ecx
> > + xorl 48(%rsp),%r14d
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 8(%rsp),%r14d
> > + leal -899497514(%rbp,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%r14d
> > + xorl 44(%rsp),%edx
> > + movl %r11d,%eax
> > +
> > + movl %edi,%ecx
> > + xorl 52(%rsp),%edx
> > + xorl %r13d,%eax
> > + roll $5,%ecx
> > + xorl 12(%rsp),%edx
> > + leal -899497514(%r14,%rsi,1),%esi
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + roll $1,%edx
> > + xorl 48(%rsp),%ebp
> > + movl %edi,%eax
> > +
> > + movl %esi,%ecx
> > + xorl 56(%rsp),%ebp
> > + xorl %r12d,%eax
> > + roll $5,%ecx
> > + xorl 16(%rsp),%ebp
> > + leal -899497514(%rdx,%r13,1),%r13d
> > + xorl %r11d,%eax
> > + addl %ecx,%r13d
> > + roll $30,%edi
> > + addl %eax,%r13d
> > + roll $1,%ebp
> > + xorl 52(%rsp),%r14d
> > + movl %esi,%eax
> > +
> > + movl %r13d,%ecx
> > + xorl 60(%rsp),%r14d
> > + xorl %r11d,%eax
> > + roll $5,%ecx
> > + xorl 20(%rsp),%r14d
> > + leal -899497514(%rbp,%r12,1),%r12d
> > + xorl %edi,%eax
> > + addl %ecx,%r12d
> > + roll $30,%esi
> > + addl %eax,%r12d
> > + roll $1,%r14d
> > + xorl 56(%rsp),%edx
> > + movl %r13d,%eax
> > +
> > + movl %r12d,%ecx
> > + xorl 0(%rsp),%edx
> > + xorl %edi,%eax
> > + roll $5,%ecx
> > + xorl 24(%rsp),%edx
> > + leal -899497514(%r14,%r11,1),%r11d
> > + xorl %esi,%eax
> > + addl %ecx,%r11d
> > + roll $30,%r13d
> > + addl %eax,%r11d
> > + roll $1,%edx
> > + xorl 60(%rsp),%ebp
> > + movl %r12d,%eax
> > +
> > + movl %r11d,%ecx
> > + xorl 4(%rsp),%ebp
> > + xorl %esi,%eax
> > + roll $5,%ecx
> > + xorl 28(%rsp),%ebp
> > + leal -899497514(%rdx,%rdi,1),%edi
> > + xorl %r13d,%eax
> > + addl %ecx,%edi
> > + roll $30,%r12d
> > + addl %eax,%edi
> > + roll $1,%ebp
> > + movl %r11d,%eax
> > + movl %edi,%ecx
> > + xorl %r13d,%eax
> > + leal -899497514(%rbp,%rsi,1),%esi
> > + roll $5,%ecx
> > + xorl %r12d,%eax
> > + addl %ecx,%esi
> > + roll $30,%r11d
> > + addl %eax,%esi
> > + addl 0(%r8),%esi
> > + addl 4(%r8),%edi
> > + addl 8(%r8),%r11d
> > + addl 12(%r8),%r12d
> > + addl 16(%r8),%r13d
> > + movl %esi,0(%r8)
> > + movl %edi,4(%r8)
> > + movl %r11d,8(%r8)
> > + movl %r12d,12(%r8)
> > + movl %r13d,16(%r8)
> > +
> > + subq $1,%r10
> > + leaq 64(%r9),%r9
> > + jnz .Lloop
> > +
> > + movq 64(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -40(%rsi),%r14
> > +.cfi_restore %r14
> > + movq -32(%rsi),%r13
> > +.cfi_restore %r13
> > + movq -24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq -16(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha1_block_data_order,.-sha1_block_data_order
> > +.type sha1_block_data_order_shaext,@function
> > +.align 32
> > +sha1_block_data_order_shaext:
> > +_shaext_shortcut:
> > +.cfi_startproc
> > + movdqu (%rdi),%xmm0
> > + movd 16(%rdi),%xmm1
> > + movdqa K_XX_XX+160(%rip),%xmm3
> > +
> > + movdqu (%rsi),%xmm4
> > + pshufd $27,%xmm0,%xmm0
> > + movdqu 16(%rsi),%xmm5
> > + pshufd $27,%xmm1,%xmm1
> > + movdqu 32(%rsi),%xmm6
> > +.byte 102,15,56,0,227
> > + movdqu 48(%rsi),%xmm7
> > +.byte 102,15,56,0,235
> > +.byte 102,15,56,0,243
> > + movdqa %xmm1,%xmm9
> > +.byte 102,15,56,0,251
> > + jmp .Loop_shaext
> > +
> > +.align 16
> > +.Loop_shaext:
> > + decq %rdx
> > + leaq 64(%rsi),%r8
> > + paddd %xmm4,%xmm1
> > + cmovneq %r8,%rsi
> > + movdqa %xmm0,%xmm8
> > +.byte 15,56,201,229
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,213
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > +.byte 15,56,202,231
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,0
> > +.byte 15,56,200,206
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,202,236
> > +.byte 15,56,201,247
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,215
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > +.byte 15,56,202,245
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,0
> > +.byte 15,56,200,204
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,202,254
> > +.byte 15,56,201,229
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,0
> > +.byte 15,56,200,213
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > +.byte 15,56,202,231
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,206
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,202,236
> > +.byte 15,56,201,247
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,1
> > +.byte 15,56,200,215
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > +.byte 15,56,202,245
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,204
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,202,254
> > +.byte 15,56,201,229
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,1
> > +.byte 15,56,200,213
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > +.byte 15,56,202,231
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,1
> > +.byte 15,56,200,206
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,202,236
> > +.byte 15,56,201,247
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,215
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > +.byte 15,56,202,245
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,2
> > +.byte 15,56,200,204
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,202,254
> > +.byte 15,56,201,229
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,213
> > + pxor %xmm6,%xmm4
> > +.byte 15,56,201,238
> > +.byte 15,56,202,231
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,2
> > +.byte 15,56,200,206
> > + pxor %xmm7,%xmm5
> > +.byte 15,56,202,236
> > +.byte 15,56,201,247
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,2
> > +.byte 15,56,200,215
> > + pxor %xmm4,%xmm6
> > +.byte 15,56,201,252
> > +.byte 15,56,202,245
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,3
> > +.byte 15,56,200,204
> > + pxor %xmm5,%xmm7
> > +.byte 15,56,202,254
> > + movdqu (%rsi),%xmm4
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,3
> > +.byte 15,56,200,213
> > + movdqu 16(%rsi),%xmm5
> > +.byte 102,15,56,0,227
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,3
> > +.byte 15,56,200,206
> > + movdqu 32(%rsi),%xmm6
> > +.byte 102,15,56,0,235
> > +
> > + movdqa %xmm0,%xmm2
> > +.byte 15,58,204,193,3
> > +.byte 15,56,200,215
> > + movdqu 48(%rsi),%xmm7
> > +.byte 102,15,56,0,243
> > +
> > + movdqa %xmm0,%xmm1
> > +.byte 15,58,204,194,3
> > +.byte 65,15,56,200,201
> > +.byte 102,15,56,0,251
> > +
> > + paddd %xmm8,%xmm0
> > + movdqa %xmm1,%xmm9
> > +
> > + jnz .Loop_shaext
> > +
> > + pshufd $27,%xmm0,%xmm0
> > + pshufd $27,%xmm1,%xmm1
> > + movdqu %xmm0,(%rdi)
> > + movd %xmm1,16(%rdi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext
> > +.type sha1_block_data_order_ssse3,@function
> > +.align 16
> > +sha1_block_data_order_ssse3:
> > +_ssse3_shortcut:
> > +.cfi_startproc
> > + movq %rsp,%r11
> > +.cfi_def_cfa_register %r11
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + leaq -64(%rsp),%rsp
> > + andq $-64,%rsp
> > + movq %rdi,%r8
> > + movq %rsi,%r9
> > + movq %rdx,%r10
> > +
> > + shlq $6,%r10
> > + addq %r9,%r10
> > + leaq K_XX_XX+64(%rip),%r14
> > +
> > + movl 0(%r8),%eax
> > + movl 4(%r8),%ebx
> > + movl 8(%r8),%ecx
> > + movl 12(%r8),%edx
> > + movl %ebx,%esi
> > + movl 16(%r8),%ebp
> > + movl %ecx,%edi
> > + xorl %edx,%edi
> > + andl %edi,%esi
> > +
> > + movdqa 64(%r14),%xmm6
> > + movdqa -64(%r14),%xmm9
> > + movdqu 0(%r9),%xmm0
> > + movdqu 16(%r9),%xmm1
> > + movdqu 32(%r9),%xmm2
> > + movdqu 48(%r9),%xmm3
> > +.byte 102,15,56,0,198
> > +.byte 102,15,56,0,206
> > +.byte 102,15,56,0,214
> > + addq $64,%r9
> > + paddd %xmm9,%xmm0
> > +.byte 102,15,56,0,222
> > + paddd %xmm9,%xmm1
> > + paddd %xmm9,%xmm2
> > + movdqa %xmm0,0(%rsp)
> > + psubd %xmm9,%xmm0
> > + movdqa %xmm1,16(%rsp)
> > + psubd %xmm9,%xmm1
> > + movdqa %xmm2,32(%rsp)
> > + psubd %xmm9,%xmm2
> > + jmp .Loop_ssse3
> > +.align 16
> > +.Loop_ssse3:
> > + rorl $2,%ebx
> > + pshufd $238,%xmm0,%xmm4
> > + xorl %edx,%esi
> > + movdqa %xmm3,%xmm8
> > + paddd %xmm3,%xmm9
> > + movl %eax,%edi
> > + addl 0(%rsp),%ebp
> > + punpcklqdq %xmm1,%xmm4
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + psrldq $4,%xmm8
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + pxor %xmm0,%xmm4
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + pxor %xmm2,%xmm8
> > + xorl %ecx,%edi
> > + movl %ebp,%esi
> > + addl 4(%rsp),%edx
> > + pxor %xmm8,%xmm4
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + movdqa %xmm9,48(%rsp)
> > + addl %edi,%edx
> > + andl %eax,%esi
> > + movdqa %xmm4,%xmm10
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + movdqa %xmm4,%xmm8
> > + xorl %ebx,%esi
> > + pslldq $12,%xmm10
> > + paddd %xmm4,%xmm4
> > + movl %edx,%edi
> > + addl 8(%rsp),%ecx
> > + psrld $31,%xmm8
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movdqa %xmm10,%xmm9
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + psrld $30,%xmm10
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + por %xmm8,%xmm4
> > + xorl %eax,%edi
> > + movl %ecx,%esi
> > + addl 12(%rsp),%ebx
> > + pslld $2,%xmm9
> > + pxor %xmm10,%xmm4
> > + xorl %ebp,%edx
> > + movdqa -64(%r14),%xmm10
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + andl %edx,%esi
> > + pxor %xmm9,%xmm4
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + pshufd $238,%xmm1,%xmm5
> > + xorl %ebp,%esi
> > + movdqa %xmm4,%xmm9
> > + paddd %xmm4,%xmm10
> > + movl %ebx,%edi
> > + addl 16(%rsp),%eax
> > + punpcklqdq %xmm2,%xmm5
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + psrldq $4,%xmm9
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + pxor %xmm1,%xmm5
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + pxor %xmm3,%xmm9
> > + xorl %edx,%edi
> > + movl %eax,%esi
> > + addl 20(%rsp),%ebp
> > + pxor %xmm9,%xmm5
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + movdqa %xmm10,0(%rsp)
> > + addl %edi,%ebp
> > + andl %ebx,%esi
> > + movdqa %xmm5,%xmm8
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + movdqa %xmm5,%xmm9
> > + xorl %ecx,%esi
> > + pslldq $12,%xmm8
> > + paddd %xmm5,%xmm5
> > + movl %ebp,%edi
> > + addl 24(%rsp),%edx
> > + psrld $31,%xmm9
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + movdqa %xmm8,%xmm10
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + psrld $30,%xmm8
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + por %xmm9,%xmm5
> > + xorl %ebx,%edi
> > + movl %edx,%esi
> > + addl 28(%rsp),%ecx
> > + pslld $2,%xmm10
> > + pxor %xmm8,%xmm5
> > + xorl %eax,%ebp
> > + movdqa -32(%r14),%xmm8
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + andl %ebp,%esi
> > + pxor %xmm10,%xmm5
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + pshufd $238,%xmm2,%xmm6
> > + xorl %eax,%esi
> > + movdqa %xmm5,%xmm10
> > + paddd %xmm5,%xmm8
> > + movl %ecx,%edi
> > + addl 32(%rsp),%ebx
> > + punpcklqdq %xmm3,%xmm6
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + psrldq $4,%xmm10
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + pxor %xmm2,%xmm6
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + pxor %xmm4,%xmm10
> > + xorl %ebp,%edi
> > + movl %ebx,%esi
> > + addl 36(%rsp),%eax
> > + pxor %xmm10,%xmm6
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + movdqa %xmm8,16(%rsp)
> > + addl %edi,%eax
> > + andl %ecx,%esi
> > + movdqa %xmm6,%xmm9
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + movdqa %xmm6,%xmm10
> > + xorl %edx,%esi
> > + pslldq $12,%xmm9
> > + paddd %xmm6,%xmm6
> > + movl %eax,%edi
> > + addl 40(%rsp),%ebp
> > + psrld $31,%xmm10
> > + xorl %ecx,%ebx
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + movdqa %xmm9,%xmm8
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + psrld $30,%xmm9
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + por %xmm10,%xmm6
> > + xorl %ecx,%edi
> > + movl %ebp,%esi
> > + addl 44(%rsp),%edx
> > + pslld $2,%xmm8
> > + pxor %xmm9,%xmm6
> > + xorl %ebx,%eax
> > + movdqa -32(%r14),%xmm9
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + andl %eax,%esi
> > + pxor %xmm8,%xmm6
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + rorl $7,%ebp
> > + pshufd $238,%xmm3,%xmm7
> > + xorl %ebx,%esi
> > + movdqa %xmm6,%xmm8
> > + paddd %xmm6,%xmm9
> > + movl %edx,%edi
> > + addl 48(%rsp),%ecx
> > + punpcklqdq %xmm4,%xmm7
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + psrldq $4,%xmm8
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + pxor %xmm3,%xmm7
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + pxor %xmm5,%xmm8
> > + xorl %eax,%edi
> > + movl %ecx,%esi
> > + addl 52(%rsp),%ebx
> > + pxor %xmm8,%xmm7
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + movdqa %xmm9,32(%rsp)
> > + addl %edi,%ebx
> > + andl %edx,%esi
> > + movdqa %xmm7,%xmm10
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + rorl $7,%ecx
> > + movdqa %xmm7,%xmm8
> > + xorl %ebp,%esi
> > + pslldq $12,%xmm10
> > + paddd %xmm7,%xmm7
> > + movl %ebx,%edi
> > + addl 56(%rsp),%eax
> > + psrld $31,%xmm8
> > + xorl %edx,%ecx
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + movdqa %xmm10,%xmm9
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + psrld $30,%xmm10
> > + addl %ebx,%eax
> > + rorl $7,%ebx
> > + por %xmm8,%xmm7
> > + xorl %edx,%edi
> > + movl %eax,%esi
> > + addl 60(%rsp),%ebp
> > + pslld $2,%xmm9
> > + pxor %xmm10,%xmm7
> > + xorl %ecx,%ebx
> > + movdqa -32(%r14),%xmm10
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + andl %ebx,%esi
> > + pxor %xmm9,%xmm7
> > + pshufd $238,%xmm6,%xmm9
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + rorl $7,%eax
> > + pxor %xmm4,%xmm0
> > + xorl %ecx,%esi
> > + movl %ebp,%edi
> > + addl 0(%rsp),%edx
> > + punpcklqdq %xmm7,%xmm9
> > + xorl %ebx,%eax
> > + roll $5,%ebp
> > + pxor %xmm1,%xmm0
> > + addl %esi,%edx
> > + andl %eax,%edi
> > + movdqa %xmm10,%xmm8
> > + xorl %ebx,%eax
> > + paddd %xmm7,%xmm10
> > + addl %ebp,%edx
> > + pxor %xmm9,%xmm0
> > + rorl $7,%ebp
> > + xorl %ebx,%edi
> > + movl %edx,%esi
> > + addl 4(%rsp),%ecx
> > + movdqa %xmm0,%xmm9
> > + xorl %eax,%ebp
> > + roll $5,%edx
> > + movdqa %xmm10,48(%rsp)
> > + addl %edi,%ecx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + pslld $2,%xmm0
> > + addl %edx,%ecx
> > + rorl $7,%edx
> > + psrld $30,%xmm9
> > + xorl %eax,%esi
> > + movl %ecx,%edi
> > + addl 8(%rsp),%ebx
> > + por %xmm9,%xmm0
> > + xorl %ebp,%edx
> > + roll $5,%ecx
> > + pshufd $238,%xmm7,%xmm10
> > + addl %esi,%ebx
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + addl 12(%rsp),%eax
> > + xorl %ebp,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + pxor %xmm5,%xmm1
> > + addl 16(%rsp),%ebp
> > + xorl %ecx,%esi
> > + punpcklqdq %xmm0,%xmm10
> > + movl %eax,%edi
> > + roll $5,%eax
> > + pxor %xmm2,%xmm1
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + movdqa %xmm8,%xmm9
> > + rorl $7,%ebx
> > + paddd %xmm0,%xmm8
> > + addl %eax,%ebp
> > + pxor %xmm10,%xmm1
> > + addl 20(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + movdqa %xmm1,%xmm10
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + movdqa %xmm8,0(%rsp)
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 24(%rsp),%ecx
> > + pslld $2,%xmm1
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + psrld $30,%xmm10
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + por %xmm10,%xmm1
> > + addl %edx,%ecx
> > + addl 28(%rsp),%ebx
> > + pshufd $238,%xmm0,%xmm8
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + pxor %xmm6,%xmm2
> > + addl 32(%rsp),%eax
> > + xorl %edx,%esi
> > + punpcklqdq %xmm1,%xmm8
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + pxor %xmm3,%xmm2
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + movdqa 0(%r14),%xmm10
> > + rorl $7,%ecx
> > + paddd %xmm1,%xmm9
> > + addl %ebx,%eax
> > + pxor %xmm8,%xmm2
> > + addl 36(%rsp),%ebp
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + movdqa %xmm2,%xmm8
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + movdqa %xmm9,16(%rsp)
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 40(%rsp),%edx
> > + pslld $2,%xmm2
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + psrld $30,%xmm8
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + por %xmm8,%xmm2
> > + addl %ebp,%edx
> > + addl 44(%rsp),%ecx
> > + pshufd $238,%xmm1,%xmm9
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + pxor %xmm7,%xmm3
> > + addl 48(%rsp),%ebx
> > + xorl %ebp,%esi
> > + punpcklqdq %xmm2,%xmm9
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + pxor %xmm4,%xmm3
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + movdqa %xmm10,%xmm8
> > + rorl $7,%edx
> > + paddd %xmm2,%xmm10
> > + addl %ecx,%ebx
> > + pxor %xmm9,%xmm3
> > + addl 52(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + movdqa %xmm3,%xmm9
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + movdqa %xmm10,32(%rsp)
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 56(%rsp),%ebp
> > + pslld $2,%xmm3
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + psrld $30,%xmm9
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + por %xmm9,%xmm3
> > + addl %eax,%ebp
> > + addl 60(%rsp),%edx
> > + pshufd $238,%xmm2,%xmm10
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + pxor %xmm0,%xmm4
> > + addl 0(%rsp),%ecx
> > + xorl %eax,%esi
> > + punpcklqdq %xmm3,%xmm10
> > + movl %edx,%edi
> > + roll $5,%edx
> > + pxor %xmm5,%xmm4
> > + addl %esi,%ecx
> > + xorl %eax,%edi
> > + movdqa %xmm8,%xmm9
> > + rorl $7,%ebp
> > + paddd %xmm3,%xmm8
> > + addl %edx,%ecx
> > + pxor %xmm10,%xmm4
> > + addl 4(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + movdqa %xmm4,%xmm10
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + movdqa %xmm8,48(%rsp)
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 8(%rsp),%eax
> > + pslld $2,%xmm4
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + psrld $30,%xmm10
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + por %xmm10,%xmm4
> > + addl %ebx,%eax
> > + addl 12(%rsp),%ebp
> > + pshufd $238,%xmm3,%xmm8
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + pxor %xmm1,%xmm5
> > + addl 16(%rsp),%edx
> > + xorl %ebx,%esi
> > + punpcklqdq %xmm4,%xmm8
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + pxor %xmm6,%xmm5
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + movdqa %xmm9,%xmm10
> > + rorl $7,%eax
> > + paddd %xmm4,%xmm9
> > + addl %ebp,%edx
> > + pxor %xmm8,%xmm5
> > + addl 20(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + movdqa %xmm5,%xmm8
> > + addl %edi,%ecx
> > + xorl %eax,%esi
> > + movdqa %xmm9,0(%rsp)
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 24(%rsp),%ebx
> > + pslld $2,%xmm5
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + psrld $30,%xmm8
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + por %xmm8,%xmm5
> > + addl %ecx,%ebx
> > + addl 28(%rsp),%eax
> > + pshufd $238,%xmm4,%xmm9
> > + rorl $7,%ecx
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %ecx,%esi
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + pxor %xmm2,%xmm6
> > + addl 32(%rsp),%ebp
> > + andl %ecx,%esi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + punpcklqdq %xmm5,%xmm9
> > + movl %eax,%edi
> > + xorl %ecx,%esi
> > + pxor %xmm7,%xmm6
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + movdqa %xmm10,%xmm8
> > + xorl %ebx,%edi
> > + paddd %xmm5,%xmm10
> > + xorl %ecx,%ebx
> > + pxor %xmm9,%xmm6
> > + addl %eax,%ebp
> > + addl 36(%rsp),%edx
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + movdqa %xmm6,%xmm9
> > + movl %ebp,%esi
> > + xorl %ebx,%edi
> > + movdqa %xmm10,16(%rsp)
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %eax,%esi
> > + pslld $2,%xmm6
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + psrld $30,%xmm9
> > + addl 40(%rsp),%ecx
> > + andl %eax,%esi
> > + xorl %ebx,%eax
> > + por %xmm9,%xmm6
> > + rorl $7,%ebp
> > + movl %edx,%edi
> > + xorl %eax,%esi
> > + roll $5,%edx
> > + pshufd $238,%xmm5,%xmm10
> > + addl %esi,%ecx
> > + xorl %ebp,%edi
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + addl 44(%rsp),%ebx
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + movl %ecx,%esi
> > + xorl %ebp,%edi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %edx,%esi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + pxor %xmm3,%xmm7
> > + addl 48(%rsp),%eax
> > + andl %edx,%esi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + punpcklqdq %xmm6,%xmm10
> > + movl %ebx,%edi
> > + xorl %edx,%esi
> > + pxor %xmm0,%xmm7
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + movdqa 32(%r14),%xmm9
> > + xorl %ecx,%edi
> > + paddd %xmm6,%xmm8
> > + xorl %edx,%ecx
> > + pxor %xmm10,%xmm7
> > + addl %ebx,%eax
> > + addl 52(%rsp),%ebp
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + movdqa %xmm7,%xmm10
> > + movl %eax,%esi
> > + xorl %ecx,%edi
> > + movdqa %xmm8,32(%rsp)
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ebx,%esi
> > + pslld $2,%xmm7
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + psrld $30,%xmm10
> > + addl 56(%rsp),%edx
> > + andl %ebx,%esi
> > + xorl %ecx,%ebx
> > + por %xmm10,%xmm7
> > + rorl $7,%eax
> > + movl %ebp,%edi
> > + xorl %ebx,%esi
> > + roll $5,%ebp
> > + pshufd $238,%xmm6,%xmm8
> > + addl %esi,%edx
> > + xorl %eax,%edi
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + addl 60(%rsp),%ecx
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + movl %edx,%esi
> > + xorl %eax,%edi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %ebp,%esi
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + pxor %xmm4,%xmm0
> > + addl 0(%rsp),%ebx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + punpcklqdq %xmm7,%xmm8
> > + movl %ecx,%edi
> > + xorl %ebp,%esi
> > + pxor %xmm1,%xmm0
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + movdqa %xmm9,%xmm10
> > + xorl %edx,%edi
> > + paddd %xmm7,%xmm9
> > + xorl %ebp,%edx
> > + pxor %xmm8,%xmm0
> > + addl %ecx,%ebx
> > + addl 4(%rsp),%eax
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + movdqa %xmm0,%xmm8
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + movdqa %xmm9,48(%rsp)
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %ecx,%esi
> > + pslld $2,%xmm0
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + psrld $30,%xmm8
> > + addl 8(%rsp),%ebp
> > + andl %ecx,%esi
> > + xorl %edx,%ecx
> > + por %xmm8,%xmm0
> > + rorl $7,%ebx
> > + movl %eax,%edi
> > + xorl %ecx,%esi
> > + roll $5,%eax
> > + pshufd $238,%xmm7,%xmm9
> > + addl %esi,%ebp
> > + xorl %ebx,%edi
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + addl 12(%rsp),%edx
> > + andl %ebx,%edi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + movl %ebp,%esi
> > + xorl %ebx,%edi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %eax,%esi
> > + xorl %ebx,%eax
> > + addl %ebp,%edx
> > + pxor %xmm5,%xmm1
> > + addl 16(%rsp),%ecx
> > + andl %eax,%esi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + punpcklqdq %xmm0,%xmm9
> > + movl %edx,%edi
> > + xorl %eax,%esi
> > + pxor %xmm2,%xmm1
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + movdqa %xmm10,%xmm8
> > + xorl %ebp,%edi
> > + paddd %xmm0,%xmm10
> > + xorl %eax,%ebp
> > + pxor %xmm9,%xmm1
> > + addl %edx,%ecx
> > + addl 20(%rsp),%ebx
> > + andl %ebp,%edi
> > + xorl %eax,%ebp
> > + rorl $7,%edx
> > + movdqa %xmm1,%xmm9
> > + movl %ecx,%esi
> > + xorl %ebp,%edi
> > + movdqa %xmm10,0(%rsp)
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %edx,%esi
> > + pslld $2,%xmm1
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + psrld $30,%xmm9
> > + addl 24(%rsp),%eax
> > + andl %edx,%esi
> > + xorl %ebp,%edx
> > + por %xmm9,%xmm1
> > + rorl $7,%ecx
> > + movl %ebx,%edi
> > + xorl %edx,%esi
> > + roll $5,%ebx
> > + pshufd $238,%xmm0,%xmm10
> > + addl %esi,%eax
> > + xorl %ecx,%edi
> > + xorl %edx,%ecx
> > + addl %ebx,%eax
> > + addl 28(%rsp),%ebp
> > + andl %ecx,%edi
> > + xorl %edx,%ecx
> > + rorl $7,%ebx
> > + movl %eax,%esi
> > + xorl %ecx,%edi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ebx,%esi
> > + xorl %ecx,%ebx
> > + addl %eax,%ebp
> > + pxor %xmm6,%xmm2
> > + addl 32(%rsp),%edx
> > + andl %ebx,%esi
> > + xorl %ecx,%ebx
> > + rorl $7,%eax
> > + punpcklqdq %xmm1,%xmm10
> > + movl %ebp,%edi
> > + xorl %ebx,%esi
> > + pxor %xmm3,%xmm2
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + movdqa %xmm8,%xmm9
> > + xorl %eax,%edi
> > + paddd %xmm1,%xmm8
> > + xorl %ebx,%eax
> > + pxor %xmm10,%xmm2
> > + addl %ebp,%edx
> > + addl 36(%rsp),%ecx
> > + andl %eax,%edi
> > + xorl %ebx,%eax
> > + rorl $7,%ebp
> > + movdqa %xmm2,%xmm10
> > + movl %edx,%esi
> > + xorl %eax,%edi
> > + movdqa %xmm8,16(%rsp)
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %ebp,%esi
> > + pslld $2,%xmm2
> > + xorl %eax,%ebp
> > + addl %edx,%ecx
> > + psrld $30,%xmm10
> > + addl 40(%rsp),%ebx
> > + andl %ebp,%esi
> > + xorl %eax,%ebp
> > + por %xmm10,%xmm2
> > + rorl $7,%edx
> > + movl %ecx,%edi
> > + xorl %ebp,%esi
> > + roll $5,%ecx
> > + pshufd $238,%xmm1,%xmm8
> > + addl %esi,%ebx
> > + xorl %edx,%edi
> > + xorl %ebp,%edx
> > + addl %ecx,%ebx
> > + addl 44(%rsp),%eax
> > + andl %edx,%edi
> > + xorl %ebp,%edx
> > + rorl $7,%ecx
> > + movl %ebx,%esi
> > + xorl %edx,%edi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + addl %ebx,%eax
> > + pxor %xmm7,%xmm3
> > + addl 48(%rsp),%ebp
> > + xorl %ecx,%esi
> > + punpcklqdq %xmm2,%xmm8
> > + movl %eax,%edi
> > + roll $5,%eax
> > + pxor %xmm4,%xmm3
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + movdqa %xmm9,%xmm10
> > + rorl $7,%ebx
> > + paddd %xmm2,%xmm9
> > + addl %eax,%ebp
> > + pxor %xmm8,%xmm3
> > + addl 52(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + movdqa %xmm3,%xmm8
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + movdqa %xmm9,32(%rsp)
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 56(%rsp),%ecx
> > + pslld $2,%xmm3
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + psrld $30,%xmm8
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + por %xmm8,%xmm3
> > + addl %edx,%ecx
> > + addl 60(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 0(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + paddd %xmm3,%xmm10
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + movdqa %xmm10,48(%rsp)
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 4(%rsp),%ebp
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 8(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 12(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + cmpq %r10,%r9
> > + je .Ldone_ssse3
> > + movdqa 64(%r14),%xmm6
> > + movdqa -64(%r14),%xmm9
> > + movdqu 0(%r9),%xmm0
> > + movdqu 16(%r9),%xmm1
> > + movdqu 32(%r9),%xmm2
> > + movdqu 48(%r9),%xmm3
> > +.byte 102,15,56,0,198
> > + addq $64,%r9
> > + addl 16(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > +.byte 102,15,56,0,206
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + paddd %xmm9,%xmm0
> > + addl %ecx,%ebx
> > + addl 20(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + movdqa %xmm0,0(%rsp)
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + psubd %xmm9,%xmm0
> > + addl %ebx,%eax
> > + addl 24(%rsp),%ebp
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 28(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 32(%rsp),%ecx
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > +.byte 102,15,56,0,214
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + paddd %xmm9,%xmm1
> > + addl %edx,%ecx
> > + addl 36(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + movdqa %xmm1,16(%rsp)
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + psubd %xmm9,%xmm1
> > + addl %ecx,%ebx
> > + addl 40(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 44(%rsp),%ebp
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 48(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > +.byte 102,15,56,0,222
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + paddd %xmm9,%xmm2
> > + addl %ebp,%edx
> > + addl 52(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + movdqa %xmm2,32(%rsp)
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + psubd %xmm9,%xmm2
> > + addl %edx,%ecx
> > + addl 56(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 60(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 0(%r8),%eax
> > + addl 4(%r8),%esi
> > + addl 8(%r8),%ecx
> > + addl 12(%r8),%edx
> > + movl %eax,0(%r8)
> > + addl 16(%r8),%ebp
> > + movl %esi,4(%r8)
> > + movl %esi,%ebx
> > + movl %ecx,8(%r8)
> > + movl %ecx,%edi
> > + movl %edx,12(%r8)
> > + xorl %edx,%edi
> > + movl %ebp,16(%r8)
> > + andl %edi,%esi
> > + jmp .Loop_ssse3
> > +
> > +.align 16
> > +.Ldone_ssse3:
> > + addl 16(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 20(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + xorl %edx,%esi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 24(%rsp),%ebp
> > + xorl %ecx,%esi
> > + movl %eax,%edi
> > + roll $5,%eax
> > + addl %esi,%ebp
> > + xorl %ecx,%edi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 28(%rsp),%edx
> > + xorl %ebx,%edi
> > + movl %ebp,%esi
> > + roll $5,%ebp
> > + addl %edi,%edx
> > + xorl %ebx,%esi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 32(%rsp),%ecx
> > + xorl %eax,%esi
> > + movl %edx,%edi
> > + roll $5,%edx
> > + addl %esi,%ecx
> > + xorl %eax,%edi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 36(%rsp),%ebx
> > + xorl %ebp,%edi
> > + movl %ecx,%esi
> > + roll $5,%ecx
> > + addl %edi,%ebx
> > + xorl %ebp,%esi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 40(%rsp),%eax
> > + xorl %edx,%esi
> > + movl %ebx,%edi
> > + roll $5,%ebx
> > + addl %esi,%eax
> > + xorl %edx,%edi
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 44(%rsp),%ebp
> > + xorl %ecx,%edi
> > + movl %eax,%esi
> > + roll $5,%eax
> > + addl %edi,%ebp
> > + xorl %ecx,%esi
> > + rorl $7,%ebx
> > + addl %eax,%ebp
> > + addl 48(%rsp),%edx
> > + xorl %ebx,%esi
> > + movl %ebp,%edi
> > + roll $5,%ebp
> > + addl %esi,%edx
> > + xorl %ebx,%edi
> > + rorl $7,%eax
> > + addl %ebp,%edx
> > + addl 52(%rsp),%ecx
> > + xorl %eax,%edi
> > + movl %edx,%esi
> > + roll $5,%edx
> > + addl %edi,%ecx
> > + xorl %eax,%esi
> > + rorl $7,%ebp
> > + addl %edx,%ecx
> > + addl 56(%rsp),%ebx
> > + xorl %ebp,%esi
> > + movl %ecx,%edi
> > + roll $5,%ecx
> > + addl %esi,%ebx
> > + xorl %ebp,%edi
> > + rorl $7,%edx
> > + addl %ecx,%ebx
> > + addl 60(%rsp),%eax
> > + xorl %edx,%edi
> > + movl %ebx,%esi
> > + roll $5,%ebx
> > + addl %edi,%eax
> > + rorl $7,%ecx
> > + addl %ebx,%eax
> > + addl 0(%r8),%eax
> > + addl 4(%r8),%esi
> > + addl 8(%r8),%ecx
> > + movl %eax,0(%r8)
> > + addl 12(%r8),%edx
> > + movl %esi,4(%r8)
> > + addl 16(%r8),%ebp
> > + movl %ecx,8(%r8)
> > + movl %edx,12(%r8)
> > + movl %ebp,16(%r8)
> > + movq -40(%r11),%r14
> > +.cfi_restore %r14
> > + movq -32(%r11),%r13
> > +.cfi_restore %r13
> > + movq -24(%r11),%r12
> > +.cfi_restore %r12
> > + movq -16(%r11),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%r11),%rbx
> > +.cfi_restore %rbx
> > + leaq (%r11),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue_ssse3:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3
> > +.align 64
> > +K_XX_XX:
> > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > +.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > +.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
> > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > +.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
> > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > +.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
> > +.byte
> >
> 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,
> >
>
102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98
> ,
> >
> 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,1
> 0
> > 3,62,0
> > +.align 64
> > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-
> > x86_64.S b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-
> > x86_64.S
> > new file mode 100644
> > index 0000000000..25dee488b8
> > --- /dev/null
> > +++
> b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-mb-x86_64.S
> > @@ -0,0 +1,3286 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +
> > +.globl sha256_multi_block
> > +.type sha256_multi_block,@function
> > +.align 32
> > +sha256_multi_block:
> > +.cfi_startproc
> > + movq OPENSSL_ia32cap_P+4(%rip),%rcx
> > + btq $61,%rcx
> > + jc _shaext_shortcut
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + subq $288,%rsp
> > + andq $-256,%rsp
> > + movq %rax,272(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08
> > +.Lbody:
> > + leaq K256+128(%rip),%rbp
> > + leaq 256(%rsp),%rbx
> > + leaq 128(%rdi),%rdi
> > +
> > +.Loop_grande:
> > + movl %edx,280(%rsp)
> > + xorl %edx,%edx
> > + movq 0(%rsi),%r8
> > + movl 8(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,0(%rbx)
> > + cmovleq %rbp,%r8
> > + movq 16(%rsi),%r9
> > + movl 24(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,4(%rbx)
> > + cmovleq %rbp,%r9
> > + movq 32(%rsi),%r10
> > + movl 40(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,8(%rbx)
> > + cmovleq %rbp,%r10
> > + movq 48(%rsi),%r11
> > + movl 56(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,12(%rbx)
> > + cmovleq %rbp,%r11
> > + testl %edx,%edx
> > + jz .Ldone
> > +
> > + movdqu 0-128(%rdi),%xmm8
> > + leaq 128(%rsp),%rax
> > + movdqu 32-128(%rdi),%xmm9
> > + movdqu 64-128(%rdi),%xmm10
> > + movdqu 96-128(%rdi),%xmm11
> > + movdqu 128-128(%rdi),%xmm12
> > + movdqu 160-128(%rdi),%xmm13
> > + movdqu 192-128(%rdi),%xmm14
> > + movdqu 224-128(%rdi),%xmm15
> > + movdqu .Lpbswap(%rip),%xmm6
> > + jmp .Loop
> > +
> > +.align 32
> > +.Loop:
> > + movdqa %xmm10,%xmm4
> > + pxor %xmm9,%xmm4
> > + movd 0(%r8),%xmm5
> > + movd 0(%r9),%xmm0
> > + movd 0(%r10),%xmm1
> > + movd 0(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm12,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm12,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm12,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,0-128(%rax)
> > + paddd %xmm15,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -128(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm12,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm14,%xmm0
> > + pand %xmm13,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm8,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm9,%xmm3
> > + movdqa %xmm8,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm8,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm9,%xmm15
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm15
> > + paddd %xmm5,%xmm11
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm15
> > + paddd %xmm7,%xmm15
> > + movd 4(%r8),%xmm5
> > + movd 4(%r9),%xmm0
> > + movd 4(%r10),%xmm1
> > + movd 4(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm11,%xmm7
> > +
> > + movdqa %xmm11,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm11,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,16-128(%rax)
> > + paddd %xmm14,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -96(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm11,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm13,%xmm0
> > + pand %xmm12,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm15,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm8,%xmm4
> > + movdqa %xmm15,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm15,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm8,%xmm14
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm14
> > + paddd %xmm5,%xmm10
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm14
> > + paddd %xmm7,%xmm14
> > + movd 8(%r8),%xmm5
> > + movd 8(%r9),%xmm0
> > + movd 8(%r10),%xmm1
> > + movd 8(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm10,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm10,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm10,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,32-128(%rax)
> > + paddd %xmm13,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm10,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm12,%xmm0
> > + pand %xmm11,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm14,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm15,%xmm3
> > + movdqa %xmm14,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm14,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm15,%xmm13
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm13
> > + paddd %xmm5,%xmm9
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm13
> > + paddd %xmm7,%xmm13
> > + movd 12(%r8),%xmm5
> > + movd 12(%r9),%xmm0
> > + movd 12(%r10),%xmm1
> > + movd 12(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm9,%xmm7
> > +
> > + movdqa %xmm9,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm9,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,48-128(%rax)
> > + paddd %xmm12,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -32(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm9,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm11,%xmm0
> > + pand %xmm10,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm13,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm14,%xmm4
> > + movdqa %xmm13,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm13,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm14,%xmm12
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm12
> > + paddd %xmm5,%xmm8
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm12
> > + paddd %xmm7,%xmm12
> > + movd 16(%r8),%xmm5
> > + movd 16(%r9),%xmm0
> > + movd 16(%r10),%xmm1
> > + movd 16(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm8,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm8,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm8,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,64-128(%rax)
> > + paddd %xmm11,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 0(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm8,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm10,%xmm0
> > + pand %xmm9,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm12,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm13,%xmm3
> > + movdqa %xmm12,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm12,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm13,%xmm11
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm11
> > + paddd %xmm5,%xmm15
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm11
> > + paddd %xmm7,%xmm11
> > + movd 20(%r8),%xmm5
> > + movd 20(%r9),%xmm0
> > + movd 20(%r10),%xmm1
> > + movd 20(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm15,%xmm7
> > +
> > + movdqa %xmm15,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm15,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,80-128(%rax)
> > + paddd %xmm10,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 32(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm15,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm9,%xmm0
> > + pand %xmm8,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm11,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm12,%xmm4
> > + movdqa %xmm11,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm11,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm12,%xmm10
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm10
> > + paddd %xmm5,%xmm14
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm10
> > + paddd %xmm7,%xmm10
> > + movd 24(%r8),%xmm5
> > + movd 24(%r9),%xmm0
> > + movd 24(%r10),%xmm1
> > + movd 24(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm14,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm14,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm14,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,96-128(%rax)
> > + paddd %xmm9,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm14,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm8,%xmm0
> > + pand %xmm15,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm10,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm11,%xmm3
> > + movdqa %xmm10,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm10,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm11,%xmm9
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm9
> > + paddd %xmm5,%xmm13
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm9
> > + paddd %xmm7,%xmm9
> > + movd 28(%r8),%xmm5
> > + movd 28(%r9),%xmm0
> > + movd 28(%r10),%xmm1
> > + movd 28(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm13,%xmm7
> > +
> > + movdqa %xmm13,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm13,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,112-128(%rax)
> > + paddd %xmm8,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 96(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm13,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm15,%xmm0
> > + pand %xmm14,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm9,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm10,%xmm4
> > + movdqa %xmm9,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm9,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm10,%xmm8
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm8
> > + paddd %xmm5,%xmm12
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm8
> > + paddd %xmm7,%xmm8
> > + leaq 256(%rbp),%rbp
> > + movd 32(%r8),%xmm5
> > + movd 32(%r9),%xmm0
> > + movd 32(%r10),%xmm1
> > + movd 32(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm12,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm12,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm12,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,128-128(%rax)
> > + paddd %xmm15,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -128(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm12,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm14,%xmm0
> > + pand %xmm13,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm8,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm9,%xmm3
> > + movdqa %xmm8,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm8,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm9,%xmm15
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm15
> > + paddd %xmm5,%xmm11
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm15
> > + paddd %xmm7,%xmm15
> > + movd 36(%r8),%xmm5
> > + movd 36(%r9),%xmm0
> > + movd 36(%r10),%xmm1
> > + movd 36(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm11,%xmm7
> > +
> > + movdqa %xmm11,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm11,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,144-128(%rax)
> > + paddd %xmm14,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -96(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm11,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm13,%xmm0
> > + pand %xmm12,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm15,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm8,%xmm4
> > + movdqa %xmm15,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm15,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm8,%xmm14
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm14
> > + paddd %xmm5,%xmm10
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm14
> > + paddd %xmm7,%xmm14
> > + movd 40(%r8),%xmm5
> > + movd 40(%r9),%xmm0
> > + movd 40(%r10),%xmm1
> > + movd 40(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm10,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm10,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm10,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,160-128(%rax)
> > + paddd %xmm13,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm10,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm12,%xmm0
> > + pand %xmm11,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm14,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm15,%xmm3
> > + movdqa %xmm14,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm14,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm15,%xmm13
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm13
> > + paddd %xmm5,%xmm9
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm13
> > + paddd %xmm7,%xmm13
> > + movd 44(%r8),%xmm5
> > + movd 44(%r9),%xmm0
> > + movd 44(%r10),%xmm1
> > + movd 44(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm9,%xmm7
> > +
> > + movdqa %xmm9,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm9,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,176-128(%rax)
> > + paddd %xmm12,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -32(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm9,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm11,%xmm0
> > + pand %xmm10,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm13,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm14,%xmm4
> > + movdqa %xmm13,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm13,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm14,%xmm12
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm12
> > + paddd %xmm5,%xmm8
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm12
> > + paddd %xmm7,%xmm12
> > + movd 48(%r8),%xmm5
> > + movd 48(%r9),%xmm0
> > + movd 48(%r10),%xmm1
> > + movd 48(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm8,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm8,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm8,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,192-128(%rax)
> > + paddd %xmm11,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 0(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm8,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm10,%xmm0
> > + pand %xmm9,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm12,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm13,%xmm3
> > + movdqa %xmm12,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm12,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm13,%xmm11
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm11
> > + paddd %xmm5,%xmm15
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm11
> > + paddd %xmm7,%xmm11
> > + movd 52(%r8),%xmm5
> > + movd 52(%r9),%xmm0
> > + movd 52(%r10),%xmm1
> > + movd 52(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm15,%xmm7
> > +
> > + movdqa %xmm15,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm15,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,208-128(%rax)
> > + paddd %xmm10,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 32(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm15,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm9,%xmm0
> > + pand %xmm8,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm11,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm12,%xmm4
> > + movdqa %xmm11,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm11,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm12,%xmm10
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm10
> > + paddd %xmm5,%xmm14
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm10
> > + paddd %xmm7,%xmm10
> > + movd 56(%r8),%xmm5
> > + movd 56(%r9),%xmm0
> > + movd 56(%r10),%xmm1
> > + movd 56(%r11),%xmm2
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm14,%xmm7
> > +.byte 102,15,56,0,238
> > + movdqa %xmm14,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm14,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,224-128(%rax)
> > + paddd %xmm9,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm14,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm8,%xmm0
> > + pand %xmm15,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm10,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm11,%xmm3
> > + movdqa %xmm10,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm10,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm11,%xmm9
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm9
> > + paddd %xmm5,%xmm13
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm9
> > + paddd %xmm7,%xmm9
> > + movd 60(%r8),%xmm5
> > + leaq 64(%r8),%r8
> > + movd 60(%r9),%xmm0
> > + leaq 64(%r9),%r9
> > + movd 60(%r10),%xmm1
> > + leaq 64(%r10),%r10
> > + movd 60(%r11),%xmm2
> > + leaq 64(%r11),%r11
> > + punpckldq %xmm1,%xmm5
> > + punpckldq %xmm2,%xmm0
> > + punpckldq %xmm0,%xmm5
> > + movdqa %xmm13,%xmm7
> > +
> > + movdqa %xmm13,%xmm2
> > +.byte 102,15,56,0,238
> > + psrld $6,%xmm7
> > + movdqa %xmm13,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,240-128(%rax)
> > + paddd %xmm8,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 96(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm13,%xmm0
> > + prefetcht0 63(%r8)
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm15,%xmm0
> > + pand %xmm14,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > + prefetcht0 63(%r9)
> > + movdqa %xmm9,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm10,%xmm4
> > + movdqa %xmm9,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm9,%xmm4
> > +
> > + prefetcht0 63(%r10)
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > + prefetcht0 63(%r11)
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm10,%xmm8
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm8
> > + paddd %xmm5,%xmm12
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm8
> > + paddd %xmm7,%xmm8
> > + leaq 256(%rbp),%rbp
> > + movdqu 0-128(%rax),%xmm5
> > + movl $3,%ecx
> > + jmp .Loop_16_xx
> > +.align 32
> > +.Loop_16_xx:
> > + movdqa 16-128(%rax),%xmm6
> > + paddd 144-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 224-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm12,%xmm7
> > +
> > + movdqa %xmm12,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm12,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,0-128(%rax)
> > + paddd %xmm15,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -128(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm12,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm14,%xmm0
> > + pand %xmm13,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm8,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm9,%xmm3
> > + movdqa %xmm8,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm8,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm9,%xmm15
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm15
> > + paddd %xmm5,%xmm11
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm15
> > + paddd %xmm7,%xmm15
> > + movdqa 32-128(%rax),%xmm5
> > + paddd 160-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 240-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + movdqa %xmm11,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm11,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,16-128(%rax)
> > + paddd %xmm14,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -96(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm11,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm13,%xmm0
> > + pand %xmm12,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm15,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm8,%xmm4
> > + movdqa %xmm15,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm15,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm8,%xmm14
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm14
> > + paddd %xmm6,%xmm10
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm14
> > + paddd %xmm7,%xmm14
> > + movdqa 48-128(%rax),%xmm6
> > + paddd 176-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 0-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm10,%xmm7
> > +
> > + movdqa %xmm10,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm10,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,32-128(%rax)
> > + paddd %xmm13,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm10,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm12,%xmm0
> > + pand %xmm11,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm14,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm15,%xmm3
> > + movdqa %xmm14,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm14,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm15,%xmm13
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm13
> > + paddd %xmm5,%xmm9
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm13
> > + paddd %xmm7,%xmm13
> > + movdqa 64-128(%rax),%xmm5
> > + paddd 192-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 16-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm9,%xmm7
> > +
> > + movdqa %xmm9,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm9,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,48-128(%rax)
> > + paddd %xmm12,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -32(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm9,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm11,%xmm0
> > + pand %xmm10,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm13,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm14,%xmm4
> > + movdqa %xmm13,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm13,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm14,%xmm12
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm12
> > + paddd %xmm6,%xmm8
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm12
> > + paddd %xmm7,%xmm12
> > + movdqa 80-128(%rax),%xmm6
> > + paddd 208-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 32-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm8,%xmm7
> > +
> > + movdqa %xmm8,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm8,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,64-128(%rax)
> > + paddd %xmm11,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 0(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm8,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm10,%xmm0
> > + pand %xmm9,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm12,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm13,%xmm3
> > + movdqa %xmm12,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm12,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm13,%xmm11
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm11
> > + paddd %xmm5,%xmm15
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm11
> > + paddd %xmm7,%xmm11
> > + movdqa 96-128(%rax),%xmm5
> > + paddd 224-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 48-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm15,%xmm7
> > +
> > + movdqa %xmm15,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm15,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,80-128(%rax)
> > + paddd %xmm10,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 32(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm15,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm9,%xmm0
> > + pand %xmm8,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm11,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm12,%xmm4
> > + movdqa %xmm11,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm11,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm12,%xmm10
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm10
> > + paddd %xmm6,%xmm14
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm10
> > + paddd %xmm7,%xmm10
> > + movdqa 112-128(%rax),%xmm6
> > + paddd 240-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 64-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm14,%xmm7
> > +
> > + movdqa %xmm14,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm14,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,96-128(%rax)
> > + paddd %xmm9,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm14,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm8,%xmm0
> > + pand %xmm15,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm10,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm11,%xmm3
> > + movdqa %xmm10,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm10,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm11,%xmm9
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm9
> > + paddd %xmm5,%xmm13
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm9
> > + paddd %xmm7,%xmm9
> > + movdqa 128-128(%rax),%xmm5
> > + paddd 0-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 80-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + movdqa %xmm13,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm13,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,112-128(%rax)
> > + paddd %xmm8,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 96(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm13,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm15,%xmm0
> > + pand %xmm14,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm9,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm10,%xmm4
> > + movdqa %xmm9,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm9,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm10,%xmm8
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm8
> > + paddd %xmm6,%xmm12
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm8
> > + paddd %xmm7,%xmm8
> > + leaq 256(%rbp),%rbp
> > + movdqa 144-128(%rax),%xmm6
> > + paddd 16-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 96-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm12,%xmm7
> > +
> > + movdqa %xmm12,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm12,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,128-128(%rax)
> > + paddd %xmm15,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -128(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm12,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm14,%xmm0
> > + pand %xmm13,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm8,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm9,%xmm3
> > + movdqa %xmm8,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm8,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm9,%xmm15
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm15
> > + paddd %xmm5,%xmm11
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm15
> > + paddd %xmm7,%xmm15
> > + movdqa 160-128(%rax),%xmm5
> > + paddd 32-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 112-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm11,%xmm7
> > +
> > + movdqa %xmm11,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm11,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,144-128(%rax)
> > + paddd %xmm14,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -96(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm11,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm13,%xmm0
> > + pand %xmm12,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm15,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm8,%xmm4
> > + movdqa %xmm15,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm15,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm8,%xmm14
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm14
> > + paddd %xmm6,%xmm10
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm14
> > + paddd %xmm7,%xmm14
> > + movdqa 176-128(%rax),%xmm6
> > + paddd 48-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 128-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm10,%xmm7
> > +
> > + movdqa %xmm10,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm10,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,160-128(%rax)
> > + paddd %xmm13,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm10,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm12,%xmm0
> > + pand %xmm11,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm14,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm15,%xmm3
> > + movdqa %xmm14,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm14,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm15,%xmm13
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm13
> > + paddd %xmm5,%xmm9
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm13
> > + paddd %xmm7,%xmm13
> > + movdqa 192-128(%rax),%xmm5
> > + paddd 64-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 144-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm9,%xmm7
> > +
> > + movdqa %xmm9,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm9,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,176-128(%rax)
> > + paddd %xmm12,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd -32(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm9,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm11,%xmm0
> > + pand %xmm10,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm13,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm14,%xmm4
> > + movdqa %xmm13,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm13,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm14,%xmm12
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm12
> > + paddd %xmm6,%xmm8
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm12
> > + paddd %xmm7,%xmm12
> > + movdqa 208-128(%rax),%xmm6
> > + paddd 80-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 160-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm8,%xmm7
> > +
> > + movdqa %xmm8,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm8,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,192-128(%rax)
> > + paddd %xmm11,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 0(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm8,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm8,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm10,%xmm0
> > + pand %xmm9,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm12,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm12,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm13,%xmm3
> > + movdqa %xmm12,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm12,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm13,%xmm11
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm11
> > + paddd %xmm5,%xmm15
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm11
> > + paddd %xmm7,%xmm11
> > + movdqa 224-128(%rax),%xmm5
> > + paddd 96-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 176-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm15,%xmm7
> > +
> > + movdqa %xmm15,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm15,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,208-128(%rax)
> > + paddd %xmm10,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 32(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm15,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm15,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm9,%xmm0
> > + pand %xmm8,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm11,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm11,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm12,%xmm4
> > + movdqa %xmm11,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm11,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm12,%xmm10
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm10
> > + paddd %xmm6,%xmm14
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm10
> > + paddd %xmm7,%xmm10
> > + movdqa 240-128(%rax),%xmm6
> > + paddd 112-128(%rax),%xmm5
> > +
> > + movdqa %xmm6,%xmm7
> > + movdqa %xmm6,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm6,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 192-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm3,%xmm1
> > +
> > + psrld $17,%xmm3
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + psrld $19-17,%xmm3
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm3,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm5
> > + movdqa %xmm14,%xmm7
> > +
> > + movdqa %xmm14,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm14,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm5,224-128(%rax)
> > + paddd %xmm9,%xmm5
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 64(%rbp),%xmm5
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm14,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm14,%xmm3
> > + pslld $26-21,%xmm2
> > + pandn %xmm8,%xmm0
> > + pand %xmm15,%xmm3
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm10,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm10,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm5
> > + pxor %xmm3,%xmm0
> > + movdqa %xmm11,%xmm3
> > + movdqa %xmm10,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm10,%xmm3
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm5
> > + pslld $19-10,%xmm2
> > + pand %xmm3,%xmm4
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm11,%xmm9
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm4,%xmm9
> > + paddd %xmm5,%xmm13
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm5,%xmm9
> > + paddd %xmm7,%xmm9
> > + movdqa 0-128(%rax),%xmm5
> > + paddd 128-128(%rax),%xmm6
> > +
> > + movdqa %xmm5,%xmm7
> > + movdqa %xmm5,%xmm1
> > + psrld $3,%xmm7
> > + movdqa %xmm5,%xmm2
> > +
> > + psrld $7,%xmm1
> > + movdqa 208-128(%rax),%xmm0
> > + pslld $14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $18-7,%xmm1
> > + movdqa %xmm0,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $25-14,%xmm2
> > + pxor %xmm1,%xmm7
> > + psrld $10,%xmm0
> > + movdqa %xmm4,%xmm1
> > +
> > + psrld $17,%xmm4
> > + pxor %xmm2,%xmm7
> > + pslld $13,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + psrld $19-17,%xmm4
> > + pxor %xmm1,%xmm0
> > + pslld $15-13,%xmm1
> > + pxor %xmm4,%xmm0
> > + pxor %xmm1,%xmm0
> > + paddd %xmm0,%xmm6
> > + movdqa %xmm13,%xmm7
> > +
> > + movdqa %xmm13,%xmm2
> > +
> > + psrld $6,%xmm7
> > + movdqa %xmm13,%xmm1
> > + pslld $7,%xmm2
> > + movdqa %xmm6,240-128(%rax)
> > + paddd %xmm8,%xmm6
> > +
> > + psrld $11,%xmm1
> > + pxor %xmm2,%xmm7
> > + pslld $21-7,%xmm2
> > + paddd 96(%rbp),%xmm6
> > + pxor %xmm1,%xmm7
> > +
> > + psrld $25-11,%xmm1
> > + movdqa %xmm13,%xmm0
> > +
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm13,%xmm4
> > + pslld $26-21,%xmm2
> > + pandn %xmm15,%xmm0
> > + pand %xmm14,%xmm4
> > + pxor %xmm1,%xmm7
> > +
> > +
> > + movdqa %xmm9,%xmm1
> > + pxor %xmm2,%xmm7
> > + movdqa %xmm9,%xmm2
> > + psrld $2,%xmm1
> > + paddd %xmm7,%xmm6
> > + pxor %xmm4,%xmm0
> > + movdqa %xmm10,%xmm4
> > + movdqa %xmm9,%xmm7
> > + pslld $10,%xmm2
> > + pxor %xmm9,%xmm4
> > +
> > +
> > + psrld $13,%xmm7
> > + pxor %xmm2,%xmm1
> > + paddd %xmm0,%xmm6
> > + pslld $19-10,%xmm2
> > + pand %xmm4,%xmm3
> > + pxor %xmm7,%xmm1
> > +
> > +
> > + psrld $22-13,%xmm7
> > + pxor %xmm2,%xmm1
> > + movdqa %xmm10,%xmm8
> > + pslld $30-19,%xmm2
> > + pxor %xmm1,%xmm7
> > + pxor %xmm3,%xmm8
> > + paddd %xmm6,%xmm12
> > + pxor %xmm2,%xmm7
> > +
> > + paddd %xmm6,%xmm8
> > + paddd %xmm7,%xmm8
> > + leaq 256(%rbp),%rbp
> > + decl %ecx
> > + jnz .Loop_16_xx
> > +
> > + movl $1,%ecx
> > + leaq K256+128(%rip),%rbp
> > +
> > + movdqa (%rbx),%xmm7
> > + cmpl 0(%rbx),%ecx
> > + pxor %xmm0,%xmm0
> > + cmovgeq %rbp,%r8
> > + cmpl 4(%rbx),%ecx
> > + movdqa %xmm7,%xmm6
> > + cmovgeq %rbp,%r9
> > + cmpl 8(%rbx),%ecx
> > + pcmpgtd %xmm0,%xmm6
> > + cmovgeq %rbp,%r10
> > + cmpl 12(%rbx),%ecx
> > + paddd %xmm6,%xmm7
> > + cmovgeq %rbp,%r11
> > +
> > + movdqu 0-128(%rdi),%xmm0
> > + pand %xmm6,%xmm8
> > + movdqu 32-128(%rdi),%xmm1
> > + pand %xmm6,%xmm9
> > + movdqu 64-128(%rdi),%xmm2
> > + pand %xmm6,%xmm10
> > + movdqu 96-128(%rdi),%xmm5
> > + pand %xmm6,%xmm11
> > + paddd %xmm0,%xmm8
> > + movdqu 128-128(%rdi),%xmm0
> > + pand %xmm6,%xmm12
> > + paddd %xmm1,%xmm9
> > + movdqu 160-128(%rdi),%xmm1
> > + pand %xmm6,%xmm13
> > + paddd %xmm2,%xmm10
> > + movdqu 192-128(%rdi),%xmm2
> > + pand %xmm6,%xmm14
> > + paddd %xmm5,%xmm11
> > + movdqu 224-128(%rdi),%xmm5
> > + pand %xmm6,%xmm15
> > + paddd %xmm0,%xmm12
> > + paddd %xmm1,%xmm13
> > + movdqu %xmm8,0-128(%rdi)
> > + paddd %xmm2,%xmm14
> > + movdqu %xmm9,32-128(%rdi)
> > + paddd %xmm5,%xmm15
> > + movdqu %xmm10,64-128(%rdi)
> > + movdqu %xmm11,96-128(%rdi)
> > + movdqu %xmm12,128-128(%rdi)
> > + movdqu %xmm13,160-128(%rdi)
> > + movdqu %xmm14,192-128(%rdi)
> > + movdqu %xmm15,224-128(%rdi)
> > +
> > + movdqa %xmm7,(%rbx)
> > + movdqa .Lpbswap(%rip),%xmm6
> > + decl %edx
> > + jnz .Loop
> > +
> > + movl 280(%rsp),%edx
> > + leaq 16(%rdi),%rdi
> > + leaq 64(%rsi),%rsi
> > + decl %edx
> > + jnz .Loop_grande
> > +
> > +.Ldone:
> > + movq 272(%rsp),%rax
> > +.cfi_def_cfa %rax,8
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha256_multi_block,.-sha256_multi_block
> > +.type sha256_multi_block_shaext,@function
> > +.align 32
> > +sha256_multi_block_shaext:
> > +.cfi_startproc
> > +_shaext_shortcut:
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + subq $288,%rsp
> > + shll $1,%edx
> > + andq $-256,%rsp
> > + leaq 128(%rdi),%rdi
> > + movq %rax,272(%rsp)
> > +.Lbody_shaext:
> > + leaq 256(%rsp),%rbx
> > + leaq K256_shaext+128(%rip),%rbp
> > +
> > +.Loop_grande_shaext:
> > + movl %edx,280(%rsp)
> > + xorl %edx,%edx
> > + movq 0(%rsi),%r8
> > + movl 8(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,0(%rbx)
> > + cmovleq %rsp,%r8
> > + movq 16(%rsi),%r9
> > + movl 24(%rsi),%ecx
> > + cmpl %edx,%ecx
> > + cmovgl %ecx,%edx
> > + testl %ecx,%ecx
> > + movl %ecx,4(%rbx)
> > + cmovleq %rsp,%r9
> > + testl %edx,%edx
> > + jz .Ldone_shaext
> > +
> > + movq 0-128(%rdi),%xmm12
> > + movq 32-128(%rdi),%xmm4
> > + movq 64-128(%rdi),%xmm13
> > + movq 96-128(%rdi),%xmm5
> > + movq 128-128(%rdi),%xmm8
> > + movq 160-128(%rdi),%xmm9
> > + movq 192-128(%rdi),%xmm10
> > + movq 224-128(%rdi),%xmm11
> > +
> > + punpckldq %xmm4,%xmm12
> > + punpckldq %xmm5,%xmm13
> > + punpckldq %xmm9,%xmm8
> > + punpckldq %xmm11,%xmm10
> > + movdqa K256_shaext-16(%rip),%xmm3
> > +
> > + movdqa %xmm12,%xmm14
> > + movdqa %xmm13,%xmm15
> > + punpcklqdq %xmm8,%xmm12
> > + punpcklqdq %xmm10,%xmm13
> > + punpckhqdq %xmm8,%xmm14
> > + punpckhqdq %xmm10,%xmm15
> > +
> > + pshufd $27,%xmm12,%xmm12
> > + pshufd $27,%xmm13,%xmm13
> > + pshufd $27,%xmm14,%xmm14
> > + pshufd $27,%xmm15,%xmm15
> > + jmp .Loop_shaext
> > +
> > +.align 32
> > +.Loop_shaext:
> > + movdqu 0(%r8),%xmm4
> > + movdqu 0(%r9),%xmm8
> > + movdqu 16(%r8),%xmm5
> > + movdqu 16(%r9),%xmm9
> > + movdqu 32(%r8),%xmm6
> > +.byte 102,15,56,0,227
> > + movdqu 32(%r9),%xmm10
> > +.byte 102,68,15,56,0,195
> > + movdqu 48(%r8),%xmm7
> > + leaq 64(%r8),%r8
> > + movdqu 48(%r9),%xmm11
> > + leaq 64(%r9),%r9
> > +
> > + movdqa 0-128(%rbp),%xmm0
> > +.byte 102,15,56,0,235
> > + paddd %xmm4,%xmm0
> > + pxor %xmm12,%xmm4
> > + movdqa %xmm0,%xmm1
> > + movdqa 0-128(%rbp),%xmm2
> > +.byte 102,68,15,56,0,203
> > + paddd %xmm8,%xmm2
> > + movdqa %xmm13,80(%rsp)
> > +.byte 69,15,56,203,236
> > + pxor %xmm14,%xmm8
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm15,112(%rsp)
> > +.byte 69,15,56,203,254
> > + pshufd $0x0e,%xmm1,%xmm0
> > + pxor %xmm12,%xmm4
> > + movdqa %xmm12,64(%rsp)
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + pxor %xmm14,%xmm8
> > + movdqa %xmm14,96(%rsp)
> > + movdqa 16-128(%rbp),%xmm1
> > + paddd %xmm5,%xmm1
> > +.byte 102,15,56,0,243
> > +.byte 69,15,56,203,247
> > +
> > + movdqa %xmm1,%xmm0
> > + movdqa 16-128(%rbp),%xmm2
> > + paddd %xmm9,%xmm2
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + prefetcht0 127(%r8)
> > +.byte 102,15,56,0,251
> > +.byte 102,68,15,56,0,211
> > + prefetcht0 127(%r9)
> > +.byte 69,15,56,203,254
> > + pshufd $0x0e,%xmm1,%xmm0
> > +.byte 102,68,15,56,0,219
> > +.byte 15,56,204,229
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 32-128(%rbp),%xmm1
> > + paddd %xmm6,%xmm1
> > +.byte 69,15,56,203,247
> > +
> > + movdqa %xmm1,%xmm0
> > + movdqa 32-128(%rbp),%xmm2
> > + paddd %xmm10,%xmm2
> > +.byte 69,15,56,203,236
> > +.byte 69,15,56,204,193
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm7,%xmm3
> > +.byte 69,15,56,203,254
> > + pshufd $0x0e,%xmm1,%xmm0
> > +.byte 102,15,58,15,222,4
> > + paddd %xmm3,%xmm4
> > + movdqa %xmm11,%xmm3
> > +.byte 102,65,15,58,15,218,4
> > +.byte 15,56,204,238
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 48-128(%rbp),%xmm1
> > + paddd %xmm7,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,202
> > +
> > + movdqa %xmm1,%xmm0
> > + movdqa 48-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm8
> > + paddd %xmm11,%xmm2
> > +.byte 15,56,205,231
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm4,%xmm3
> > +.byte 102,15,58,15,223,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,195
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm5
> > + movdqa %xmm8,%xmm3
> > +.byte 102,65,15,58,15,219,4
> > +.byte 15,56,204,247
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 64-128(%rbp),%xmm1
> > + paddd %xmm4,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,211
> > + movdqa %xmm1,%xmm0
> > + movdqa 64-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm9
> > + paddd %xmm8,%xmm2
> > +.byte 15,56,205,236
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm5,%xmm3
> > +.byte 102,15,58,15,220,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,200
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm6
> > + movdqa %xmm9,%xmm3
> > +.byte 102,65,15,58,15,216,4
> > +.byte 15,56,204,252
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 80-128(%rbp),%xmm1
> > + paddd %xmm5,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,216
> > + movdqa %xmm1,%xmm0
> > + movdqa 80-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm10
> > + paddd %xmm9,%xmm2
> > +.byte 15,56,205,245
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm6,%xmm3
> > +.byte 102,15,58,15,221,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,209
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm7
> > + movdqa %xmm10,%xmm3
> > +.byte 102,65,15,58,15,217,4
> > +.byte 15,56,204,229
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 96-128(%rbp),%xmm1
> > + paddd %xmm6,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,193
> > + movdqa %xmm1,%xmm0
> > + movdqa 96-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm11
> > + paddd %xmm10,%xmm2
> > +.byte 15,56,205,254
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm7,%xmm3
> > +.byte 102,15,58,15,222,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,218
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm4
> > + movdqa %xmm11,%xmm3
> > +.byte 102,65,15,58,15,218,4
> > +.byte 15,56,204,238
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 112-128(%rbp),%xmm1
> > + paddd %xmm7,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,202
> > + movdqa %xmm1,%xmm0
> > + movdqa 112-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm8
> > + paddd %xmm11,%xmm2
> > +.byte 15,56,205,231
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm4,%xmm3
> > +.byte 102,15,58,15,223,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,195
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm5
> > + movdqa %xmm8,%xmm3
> > +.byte 102,65,15,58,15,219,4
> > +.byte 15,56,204,247
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 128-128(%rbp),%xmm1
> > + paddd %xmm4,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,211
> > + movdqa %xmm1,%xmm0
> > + movdqa 128-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm9
> > + paddd %xmm8,%xmm2
> > +.byte 15,56,205,236
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm5,%xmm3
> > +.byte 102,15,58,15,220,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,200
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm6
> > + movdqa %xmm9,%xmm3
> > +.byte 102,65,15,58,15,216,4
> > +.byte 15,56,204,252
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 144-128(%rbp),%xmm1
> > + paddd %xmm5,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,216
> > + movdqa %xmm1,%xmm0
> > + movdqa 144-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm10
> > + paddd %xmm9,%xmm2
> > +.byte 15,56,205,245
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm6,%xmm3
> > +.byte 102,15,58,15,221,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,209
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm7
> > + movdqa %xmm10,%xmm3
> > +.byte 102,65,15,58,15,217,4
> > +.byte 15,56,204,229
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 160-128(%rbp),%xmm1
> > + paddd %xmm6,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,193
> > + movdqa %xmm1,%xmm0
> > + movdqa 160-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm11
> > + paddd %xmm10,%xmm2
> > +.byte 15,56,205,254
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm7,%xmm3
> > +.byte 102,15,58,15,222,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,218
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm4
> > + movdqa %xmm11,%xmm3
> > +.byte 102,65,15,58,15,218,4
> > +.byte 15,56,204,238
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 176-128(%rbp),%xmm1
> > + paddd %xmm7,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,202
> > + movdqa %xmm1,%xmm0
> > + movdqa 176-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm8
> > + paddd %xmm11,%xmm2
> > +.byte 15,56,205,231
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm4,%xmm3
> > +.byte 102,15,58,15,223,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,195
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm5
> > + movdqa %xmm8,%xmm3
> > +.byte 102,65,15,58,15,219,4
> > +.byte 15,56,204,247
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 192-128(%rbp),%xmm1
> > + paddd %xmm4,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,211
> > + movdqa %xmm1,%xmm0
> > + movdqa 192-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm9
> > + paddd %xmm8,%xmm2
> > +.byte 15,56,205,236
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm5,%xmm3
> > +.byte 102,15,58,15,220,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,200
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm6
> > + movdqa %xmm9,%xmm3
> > +.byte 102,65,15,58,15,216,4
> > +.byte 15,56,204,252
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 208-128(%rbp),%xmm1
> > + paddd %xmm5,%xmm1
> > +.byte 69,15,56,203,247
> > +.byte 69,15,56,204,216
> > + movdqa %xmm1,%xmm0
> > + movdqa 208-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm10
> > + paddd %xmm9,%xmm2
> > +.byte 15,56,205,245
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movdqa %xmm6,%xmm3
> > +.byte 102,15,58,15,221,4
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,209
> > + pshufd $0x0e,%xmm1,%xmm0
> > + paddd %xmm3,%xmm7
> > + movdqa %xmm10,%xmm3
> > +.byte 102,65,15,58,15,217,4
> > + nop
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 224-128(%rbp),%xmm1
> > + paddd %xmm6,%xmm1
> > +.byte 69,15,56,203,247
> > +
> > + movdqa %xmm1,%xmm0
> > + movdqa 224-128(%rbp),%xmm2
> > + paddd %xmm3,%xmm11
> > + paddd %xmm10,%xmm2
> > +.byte 15,56,205,254
> > + nop
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + movl $1,%ecx
> > + pxor %xmm6,%xmm6
> > +.byte 69,15,56,203,254
> > +.byte 69,15,56,205,218
> > + pshufd $0x0e,%xmm1,%xmm0
> > + movdqa 240-128(%rbp),%xmm1
> > + paddd %xmm7,%xmm1
> > + movq (%rbx),%xmm7
> > + nop
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + movdqa 240-128(%rbp),%xmm2
> > + paddd %xmm11,%xmm2
> > +.byte 69,15,56,203,247
> > +
> > + movdqa %xmm1,%xmm0
> > + cmpl 0(%rbx),%ecx
> > + cmovgeq %rsp,%r8
> > + cmpl 4(%rbx),%ecx
> > + cmovgeq %rsp,%r9
> > + pshufd $0x00,%xmm7,%xmm9
> > +.byte 69,15,56,203,236
> > + movdqa %xmm2,%xmm0
> > + pshufd $0x55,%xmm7,%xmm10
> > + movdqa %xmm7,%xmm11
> > +.byte 69,15,56,203,254
> > + pshufd $0x0e,%xmm1,%xmm0
> > + pcmpgtd %xmm6,%xmm9
> > + pcmpgtd %xmm6,%xmm10
> > +.byte 69,15,56,203,229
> > + pshufd $0x0e,%xmm2,%xmm0
> > + pcmpgtd %xmm6,%xmm11
> > + movdqa K256_shaext-16(%rip),%xmm3
> > +.byte 69,15,56,203,247
> > +
> > + pand %xmm9,%xmm13
> > + pand %xmm10,%xmm15
> > + pand %xmm9,%xmm12
> > + pand %xmm10,%xmm14
> > + paddd %xmm7,%xmm11
> > +
> > + paddd 80(%rsp),%xmm13
> > + paddd 112(%rsp),%xmm15
> > + paddd 64(%rsp),%xmm12
> > + paddd 96(%rsp),%xmm14
> > +
> > + movq %xmm11,(%rbx)
> > + decl %edx
> > + jnz .Loop_shaext
> > +
> > + movl 280(%rsp),%edx
> > +
> > + pshufd $27,%xmm12,%xmm12
> > + pshufd $27,%xmm13,%xmm13
> > + pshufd $27,%xmm14,%xmm14
> > + pshufd $27,%xmm15,%xmm15
> > +
> > + movdqa %xmm12,%xmm5
> > + movdqa %xmm13,%xmm6
> > + punpckldq %xmm14,%xmm12
> > + punpckhdq %xmm14,%xmm5
> > + punpckldq %xmm15,%xmm13
> > + punpckhdq %xmm15,%xmm6
> > +
> > + movq %xmm12,0-128(%rdi)
> > + psrldq $8,%xmm12
> > + movq %xmm5,128-128(%rdi)
> > + psrldq $8,%xmm5
> > + movq %xmm12,32-128(%rdi)
> > + movq %xmm5,160-128(%rdi)
> > +
> > + movq %xmm13,64-128(%rdi)
> > + psrldq $8,%xmm13
> > + movq %xmm6,192-128(%rdi)
> > + psrldq $8,%xmm6
> > + movq %xmm13,96-128(%rdi)
> > + movq %xmm6,224-128(%rdi)
> > +
> > + leaq 8(%rdi),%rdi
> > + leaq 32(%rsi),%rsi
> > + decl %edx
> > + jnz .Loop_grande_shaext
> > +
> > +.Ldone_shaext:
> > +
> > + movq -16(%rax),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rax),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rax),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue_shaext:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha256_multi_block_shaext,.-sha256_multi_block_shaext
> > +.align 256
> > +K256:
> > +.long 1116352408,1116352408,1116352408,1116352408
> > +.long 1116352408,1116352408,1116352408,1116352408
> > +.long 1899447441,1899447441,1899447441,1899447441
> > +.long 1899447441,1899447441,1899447441,1899447441
> > +.long 3049323471,3049323471,3049323471,3049323471
> > +.long 3049323471,3049323471,3049323471,3049323471
> > +.long 3921009573,3921009573,3921009573,3921009573
> > +.long 3921009573,3921009573,3921009573,3921009573
> > +.long 961987163,961987163,961987163,961987163
> > +.long 961987163,961987163,961987163,961987163
> > +.long 1508970993,1508970993,1508970993,1508970993
> > +.long 1508970993,1508970993,1508970993,1508970993
> > +.long 2453635748,2453635748,2453635748,2453635748
> > +.long 2453635748,2453635748,2453635748,2453635748
> > +.long 2870763221,2870763221,2870763221,2870763221
> > +.long 2870763221,2870763221,2870763221,2870763221
> > +.long 3624381080,3624381080,3624381080,3624381080
> > +.long 3624381080,3624381080,3624381080,3624381080
> > +.long 310598401,310598401,310598401,310598401
> > +.long 310598401,310598401,310598401,310598401
> > +.long 607225278,607225278,607225278,607225278
> > +.long 607225278,607225278,607225278,607225278
> > +.long 1426881987,1426881987,1426881987,1426881987
> > +.long 1426881987,1426881987,1426881987,1426881987
> > +.long 1925078388,1925078388,1925078388,1925078388
> > +.long 1925078388,1925078388,1925078388,1925078388
> > +.long 2162078206,2162078206,2162078206,2162078206
> > +.long 2162078206,2162078206,2162078206,2162078206
> > +.long 2614888103,2614888103,2614888103,2614888103
> > +.long 2614888103,2614888103,2614888103,2614888103
> > +.long 3248222580,3248222580,3248222580,3248222580
> > +.long 3248222580,3248222580,3248222580,3248222580
> > +.long 3835390401,3835390401,3835390401,3835390401
> > +.long 3835390401,3835390401,3835390401,3835390401
> > +.long 4022224774,4022224774,4022224774,4022224774
> > +.long 4022224774,4022224774,4022224774,4022224774
> > +.long 264347078,264347078,264347078,264347078
> > +.long 264347078,264347078,264347078,264347078
> > +.long 604807628,604807628,604807628,604807628
> > +.long 604807628,604807628,604807628,604807628
> > +.long 770255983,770255983,770255983,770255983
> > +.long 770255983,770255983,770255983,770255983
> > +.long 1249150122,1249150122,1249150122,1249150122
> > +.long 1249150122,1249150122,1249150122,1249150122
> > +.long 1555081692,1555081692,1555081692,1555081692
> > +.long 1555081692,1555081692,1555081692,1555081692
> > +.long 1996064986,1996064986,1996064986,1996064986
> > +.long 1996064986,1996064986,1996064986,1996064986
> > +.long 2554220882,2554220882,2554220882,2554220882
> > +.long 2554220882,2554220882,2554220882,2554220882
> > +.long 2821834349,2821834349,2821834349,2821834349
> > +.long 2821834349,2821834349,2821834349,2821834349
> > +.long 2952996808,2952996808,2952996808,2952996808
> > +.long 2952996808,2952996808,2952996808,2952996808
> > +.long 3210313671,3210313671,3210313671,3210313671
> > +.long 3210313671,3210313671,3210313671,3210313671
> > +.long 3336571891,3336571891,3336571891,3336571891
> > +.long 3336571891,3336571891,3336571891,3336571891
> > +.long 3584528711,3584528711,3584528711,3584528711
> > +.long 3584528711,3584528711,3584528711,3584528711
> > +.long 113926993,113926993,113926993,113926993
> > +.long 113926993,113926993,113926993,113926993
> > +.long 338241895,338241895,338241895,338241895
> > +.long 338241895,338241895,338241895,338241895
> > +.long 666307205,666307205,666307205,666307205
> > +.long 666307205,666307205,666307205,666307205
> > +.long 773529912,773529912,773529912,773529912
> > +.long 773529912,773529912,773529912,773529912
> > +.long 1294757372,1294757372,1294757372,1294757372
> > +.long 1294757372,1294757372,1294757372,1294757372
> > +.long 1396182291,1396182291,1396182291,1396182291
> > +.long 1396182291,1396182291,1396182291,1396182291
> > +.long 1695183700,1695183700,1695183700,1695183700
> > +.long 1695183700,1695183700,1695183700,1695183700
> > +.long 1986661051,1986661051,1986661051,1986661051
> > +.long 1986661051,1986661051,1986661051,1986661051
> > +.long 2177026350,2177026350,2177026350,2177026350
> > +.long 2177026350,2177026350,2177026350,2177026350
> > +.long 2456956037,2456956037,2456956037,2456956037
> > +.long 2456956037,2456956037,2456956037,2456956037
> > +.long 2730485921,2730485921,2730485921,2730485921
> > +.long 2730485921,2730485921,2730485921,2730485921
> > +.long 2820302411,2820302411,2820302411,2820302411
> > +.long 2820302411,2820302411,2820302411,2820302411
> > +.long 3259730800,3259730800,3259730800,3259730800
> > +.long 3259730800,3259730800,3259730800,3259730800
> > +.long 3345764771,3345764771,3345764771,3345764771
> > +.long 3345764771,3345764771,3345764771,3345764771
> > +.long 3516065817,3516065817,3516065817,3516065817
> > +.long 3516065817,3516065817,3516065817,3516065817
> > +.long 3600352804,3600352804,3600352804,3600352804
> > +.long 3600352804,3600352804,3600352804,3600352804
> > +.long 4094571909,4094571909,4094571909,4094571909
> > +.long 4094571909,4094571909,4094571909,4094571909
> > +.long 275423344,275423344,275423344,275423344
> > +.long 275423344,275423344,275423344,275423344
> > +.long 430227734,430227734,430227734,430227734
> > +.long 430227734,430227734,430227734,430227734
> > +.long 506948616,506948616,506948616,506948616
> > +.long 506948616,506948616,506948616,506948616
> > +.long 659060556,659060556,659060556,659060556
> > +.long 659060556,659060556,659060556,659060556
> > +.long 883997877,883997877,883997877,883997877
> > +.long 883997877,883997877,883997877,883997877
> > +.long 958139571,958139571,958139571,958139571
> > +.long 958139571,958139571,958139571,958139571
> > +.long 1322822218,1322822218,1322822218,1322822218
> > +.long 1322822218,1322822218,1322822218,1322822218
> > +.long 1537002063,1537002063,1537002063,1537002063
> > +.long 1537002063,1537002063,1537002063,1537002063
> > +.long 1747873779,1747873779,1747873779,1747873779
> > +.long 1747873779,1747873779,1747873779,1747873779
> > +.long 1955562222,1955562222,1955562222,1955562222
> > +.long 1955562222,1955562222,1955562222,1955562222
> > +.long 2024104815,2024104815,2024104815,2024104815
> > +.long 2024104815,2024104815,2024104815,2024104815
> > +.long 2227730452,2227730452,2227730452,2227730452
> > +.long 2227730452,2227730452,2227730452,2227730452
> > +.long 2361852424,2361852424,2361852424,2361852424
> > +.long 2361852424,2361852424,2361852424,2361852424
> > +.long 2428436474,2428436474,2428436474,2428436474
> > +.long 2428436474,2428436474,2428436474,2428436474
> > +.long 2756734187,2756734187,2756734187,2756734187
> > +.long 2756734187,2756734187,2756734187,2756734187
> > +.long 3204031479,3204031479,3204031479,3204031479
> > +.long 3204031479,3204031479,3204031479,3204031479
> > +.long 3329325298,3329325298,3329325298,3329325298
> > +.long 3329325298,3329325298,3329325298,3329325298
> > +.Lpbswap:
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +K256_shaext:
> > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > +.byte
> >
> 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,9
> >
> 7,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82
> ,
> >
> 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,
> 1
> > 10,115,115,108,46,111,114,103,62,0
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> > new file mode 100644
> > index 0000000000..a5d3cf5068
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha256-x86_64.S
> > @@ -0,0 +1,3097 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl sha256_block_data_order
> > +.type sha256_block_data_order,@function
> > +.align 16
> > +sha256_block_data_order:
> > +.cfi_startproc
> > + leaq OPENSSL_ia32cap_P(%rip),%r11
> > + movl 0(%r11),%r9d
> > + movl 4(%r11),%r10d
> > + movl 8(%r11),%r11d
> > + testl $536870912,%r11d
> > + jnz _shaext_shortcut
> > + testl $512,%r10d
> > + jnz .Lssse3_shortcut
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_offset %r15,-56
> > + shlq $4,%rdx
> > + subq $64+32,%rsp
> > + leaq (%rsi,%rdx,4),%rdx
> > + andq $-64,%rsp
> > + movq %rdi,64+0(%rsp)
> > + movq %rsi,64+8(%rsp)
> > + movq %rdx,64+16(%rsp)
> > + movq %rax,88(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08
> > +.Lprologue:
> > +
> > + movl 0(%rdi),%eax
> > + movl 4(%rdi),%ebx
> > + movl 8(%rdi),%ecx
> > + movl 12(%rdi),%edx
> > + movl 16(%rdi),%r8d
> > + movl 20(%rdi),%r9d
> > + movl 24(%rdi),%r10d
> > + movl 28(%rdi),%r11d
> > + jmp .Lloop
> > +
> > +.align 16
> > +.Lloop:
> > + movl %ebx,%edi
> > + leaq K256(%rip),%rbp
> > + xorl %ecx,%edi
> > + movl 0(%rsi),%r12d
> > + movl %r8d,%r13d
> > + movl %eax,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r9d,%r15d
> > +
> > + xorl %r8d,%r13d
> > + rorl $9,%r14d
> > + xorl %r10d,%r15d
> > +
> > + movl %r12d,0(%rsp)
> > + xorl %eax,%r14d
> > + andl %r8d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r11d,%r12d
> > + xorl %r10d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r8d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %eax,%r15d
> > + addl (%rbp),%r12d
> > + xorl %eax,%r14d
> > +
> > + xorl %ebx,%r15d
> > + rorl $6,%r13d
> > + movl %ebx,%r11d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r11d
> > + addl %r12d,%edx
> > + addl %r12d,%r11d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r11d
> > + movl 4(%rsi),%r12d
> > + movl %edx,%r13d
> > + movl %r11d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r8d,%edi
> > +
> > + xorl %edx,%r13d
> > + rorl $9,%r14d
> > + xorl %r9d,%edi
> > +
> > + movl %r12d,4(%rsp)
> > + xorl %r11d,%r14d
> > + andl %edx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r10d,%r12d
> > + xorl %r9d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %edx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r11d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r11d,%r14d
> > +
> > + xorl %eax,%edi
> > + rorl $6,%r13d
> > + movl %eax,%r10d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r10d
> > + addl %r12d,%ecx
> > + addl %r12d,%r10d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r10d
> > + movl 8(%rsi),%r12d
> > + movl %ecx,%r13d
> > + movl %r10d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %edx,%r15d
> > +
> > + xorl %ecx,%r13d
> > + rorl $9,%r14d
> > + xorl %r8d,%r15d
> > +
> > + movl %r12d,8(%rsp)
> > + xorl %r10d,%r14d
> > + andl %ecx,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r9d,%r12d
> > + xorl %r8d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %ecx,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r10d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r10d,%r14d
> > +
> > + xorl %r11d,%r15d
> > + rorl $6,%r13d
> > + movl %r11d,%r9d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r9d
> > + addl %r12d,%ebx
> > + addl %r12d,%r9d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r9d
> > + movl 12(%rsi),%r12d
> > + movl %ebx,%r13d
> > + movl %r9d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %ecx,%edi
> > +
> > + xorl %ebx,%r13d
> > + rorl $9,%r14d
> > + xorl %edx,%edi
> > +
> > + movl %r12d,12(%rsp)
> > + xorl %r9d,%r14d
> > + andl %ebx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r8d,%r12d
> > + xorl %edx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %ebx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r9d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r9d,%r14d
> > +
> > + xorl %r10d,%edi
> > + rorl $6,%r13d
> > + movl %r10d,%r8d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r8d
> > + addl %r12d,%eax
> > + addl %r12d,%r8d
> > +
> > + leaq 20(%rbp),%rbp
> > + addl %r14d,%r8d
> > + movl 16(%rsi),%r12d
> > + movl %eax,%r13d
> > + movl %r8d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %ebx,%r15d
> > +
> > + xorl %eax,%r13d
> > + rorl $9,%r14d
> > + xorl %ecx,%r15d
> > +
> > + movl %r12d,16(%rsp)
> > + xorl %r8d,%r14d
> > + andl %eax,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %edx,%r12d
> > + xorl %ecx,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %eax,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r8d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r8d,%r14d
> > +
> > + xorl %r9d,%r15d
> > + rorl $6,%r13d
> > + movl %r9d,%edx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%edx
> > + addl %r12d,%r11d
> > + addl %r12d,%edx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%edx
> > + movl 20(%rsi),%r12d
> > + movl %r11d,%r13d
> > + movl %edx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %eax,%edi
> > +
> > + xorl %r11d,%r13d
> > + rorl $9,%r14d
> > + xorl %ebx,%edi
> > +
> > + movl %r12d,20(%rsp)
> > + xorl %edx,%r14d
> > + andl %r11d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %ecx,%r12d
> > + xorl %ebx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r11d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %edx,%edi
> > + addl (%rbp),%r12d
> > + xorl %edx,%r14d
> > +
> > + xorl %r8d,%edi
> > + rorl $6,%r13d
> > + movl %r8d,%ecx
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%ecx
> > + addl %r12d,%r10d
> > + addl %r12d,%ecx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%ecx
> > + movl 24(%rsi),%r12d
> > + movl %r10d,%r13d
> > + movl %ecx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r11d,%r15d
> > +
> > + xorl %r10d,%r13d
> > + rorl $9,%r14d
> > + xorl %eax,%r15d
> > +
> > + movl %r12d,24(%rsp)
> > + xorl %ecx,%r14d
> > + andl %r10d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %ebx,%r12d
> > + xorl %eax,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r10d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %ecx,%r15d
> > + addl (%rbp),%r12d
> > + xorl %ecx,%r14d
> > +
> > + xorl %edx,%r15d
> > + rorl $6,%r13d
> > + movl %edx,%ebx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%ebx
> > + addl %r12d,%r9d
> > + addl %r12d,%ebx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%ebx
> > + movl 28(%rsi),%r12d
> > + movl %r9d,%r13d
> > + movl %ebx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r10d,%edi
> > +
> > + xorl %r9d,%r13d
> > + rorl $9,%r14d
> > + xorl %r11d,%edi
> > +
> > + movl %r12d,28(%rsp)
> > + xorl %ebx,%r14d
> > + andl %r9d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %eax,%r12d
> > + xorl %r11d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r9d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %ebx,%edi
> > + addl (%rbp),%r12d
> > + xorl %ebx,%r14d
> > +
> > + xorl %ecx,%edi
> > + rorl $6,%r13d
> > + movl %ecx,%eax
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%eax
> > + addl %r12d,%r8d
> > + addl %r12d,%eax
> > +
> > + leaq 20(%rbp),%rbp
> > + addl %r14d,%eax
> > + movl 32(%rsi),%r12d
> > + movl %r8d,%r13d
> > + movl %eax,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r9d,%r15d
> > +
> > + xorl %r8d,%r13d
> > + rorl $9,%r14d
> > + xorl %r10d,%r15d
> > +
> > + movl %r12d,32(%rsp)
> > + xorl %eax,%r14d
> > + andl %r8d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r11d,%r12d
> > + xorl %r10d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r8d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %eax,%r15d
> > + addl (%rbp),%r12d
> > + xorl %eax,%r14d
> > +
> > + xorl %ebx,%r15d
> > + rorl $6,%r13d
> > + movl %ebx,%r11d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r11d
> > + addl %r12d,%edx
> > + addl %r12d,%r11d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r11d
> > + movl 36(%rsi),%r12d
> > + movl %edx,%r13d
> > + movl %r11d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r8d,%edi
> > +
> > + xorl %edx,%r13d
> > + rorl $9,%r14d
> > + xorl %r9d,%edi
> > +
> > + movl %r12d,36(%rsp)
> > + xorl %r11d,%r14d
> > + andl %edx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r10d,%r12d
> > + xorl %r9d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %edx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r11d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r11d,%r14d
> > +
> > + xorl %eax,%edi
> > + rorl $6,%r13d
> > + movl %eax,%r10d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r10d
> > + addl %r12d,%ecx
> > + addl %r12d,%r10d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r10d
> > + movl 40(%rsi),%r12d
> > + movl %ecx,%r13d
> > + movl %r10d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %edx,%r15d
> > +
> > + xorl %ecx,%r13d
> > + rorl $9,%r14d
> > + xorl %r8d,%r15d
> > +
> > + movl %r12d,40(%rsp)
> > + xorl %r10d,%r14d
> > + andl %ecx,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r9d,%r12d
> > + xorl %r8d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %ecx,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r10d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r10d,%r14d
> > +
> > + xorl %r11d,%r15d
> > + rorl $6,%r13d
> > + movl %r11d,%r9d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r9d
> > + addl %r12d,%ebx
> > + addl %r12d,%r9d
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%r9d
> > + movl 44(%rsi),%r12d
> > + movl %ebx,%r13d
> > + movl %r9d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %ecx,%edi
> > +
> > + xorl %ebx,%r13d
> > + rorl $9,%r14d
> > + xorl %edx,%edi
> > +
> > + movl %r12d,44(%rsp)
> > + xorl %r9d,%r14d
> > + andl %ebx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r8d,%r12d
> > + xorl %edx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %ebx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r9d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r9d,%r14d
> > +
> > + xorl %r10d,%edi
> > + rorl $6,%r13d
> > + movl %r10d,%r8d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r8d
> > + addl %r12d,%eax
> > + addl %r12d,%r8d
> > +
> > + leaq 20(%rbp),%rbp
> > + addl %r14d,%r8d
> > + movl 48(%rsi),%r12d
> > + movl %eax,%r13d
> > + movl %r8d,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %ebx,%r15d
> > +
> > + xorl %eax,%r13d
> > + rorl $9,%r14d
> > + xorl %ecx,%r15d
> > +
> > + movl %r12d,48(%rsp)
> > + xorl %r8d,%r14d
> > + andl %eax,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %edx,%r12d
> > + xorl %ecx,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %eax,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r8d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r8d,%r14d
> > +
> > + xorl %r9d,%r15d
> > + rorl $6,%r13d
> > + movl %r9d,%edx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%edx
> > + addl %r12d,%r11d
> > + addl %r12d,%edx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%edx
> > + movl 52(%rsi),%r12d
> > + movl %r11d,%r13d
> > + movl %edx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %eax,%edi
> > +
> > + xorl %r11d,%r13d
> > + rorl $9,%r14d
> > + xorl %ebx,%edi
> > +
> > + movl %r12d,52(%rsp)
> > + xorl %edx,%r14d
> > + andl %r11d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %ecx,%r12d
> > + xorl %ebx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r11d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %edx,%edi
> > + addl (%rbp),%r12d
> > + xorl %edx,%r14d
> > +
> > + xorl %r8d,%edi
> > + rorl $6,%r13d
> > + movl %r8d,%ecx
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%ecx
> > + addl %r12d,%r10d
> > + addl %r12d,%ecx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%ecx
> > + movl 56(%rsi),%r12d
> > + movl %r10d,%r13d
> > + movl %ecx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r11d,%r15d
> > +
> > + xorl %r10d,%r13d
> > + rorl $9,%r14d
> > + xorl %eax,%r15d
> > +
> > + movl %r12d,56(%rsp)
> > + xorl %ecx,%r14d
> > + andl %r10d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %ebx,%r12d
> > + xorl %eax,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r10d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %ecx,%r15d
> > + addl (%rbp),%r12d
> > + xorl %ecx,%r14d
> > +
> > + xorl %edx,%r15d
> > + rorl $6,%r13d
> > + movl %edx,%ebx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%ebx
> > + addl %r12d,%r9d
> > + addl %r12d,%ebx
> > +
> > + leaq 4(%rbp),%rbp
> > + addl %r14d,%ebx
> > + movl 60(%rsi),%r12d
> > + movl %r9d,%r13d
> > + movl %ebx,%r14d
> > + bswapl %r12d
> > + rorl $14,%r13d
> > + movl %r10d,%edi
> > +
> > + xorl %r9d,%r13d
> > + rorl $9,%r14d
> > + xorl %r11d,%edi
> > +
> > + movl %r12d,60(%rsp)
> > + xorl %ebx,%r14d
> > + andl %r9d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %eax,%r12d
> > + xorl %r11d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r9d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %ebx,%edi
> > + addl (%rbp),%r12d
> > + xorl %ebx,%r14d
> > +
> > + xorl %ecx,%edi
> > + rorl $6,%r13d
> > + movl %ecx,%eax
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%eax
> > + addl %r12d,%r8d
> > + addl %r12d,%eax
> > +
> > + leaq 20(%rbp),%rbp
> > + jmp .Lrounds_16_xx
> > +.align 16
> > +.Lrounds_16_xx:
> > + movl 4(%rsp),%r13d
> > + movl 56(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%eax
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 36(%rsp),%r12d
> > +
> > + addl 0(%rsp),%r12d
> > + movl %r8d,%r13d
> > + addl %r15d,%r12d
> > + movl %eax,%r14d
> > + rorl $14,%r13d
> > + movl %r9d,%r15d
> > +
> > + xorl %r8d,%r13d
> > + rorl $9,%r14d
> > + xorl %r10d,%r15d
> > +
> > + movl %r12d,0(%rsp)
> > + xorl %eax,%r14d
> > + andl %r8d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r11d,%r12d
> > + xorl %r10d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r8d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %eax,%r15d
> > + addl (%rbp),%r12d
> > + xorl %eax,%r14d
> > +
> > + xorl %ebx,%r15d
> > + rorl $6,%r13d
> > + movl %ebx,%r11d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r11d
> > + addl %r12d,%edx
> > + addl %r12d,%r11d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 8(%rsp),%r13d
> > + movl 60(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r11d
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 40(%rsp),%r12d
> > +
> > + addl 4(%rsp),%r12d
> > + movl %edx,%r13d
> > + addl %edi,%r12d
> > + movl %r11d,%r14d
> > + rorl $14,%r13d
> > + movl %r8d,%edi
> > +
> > + xorl %edx,%r13d
> > + rorl $9,%r14d
> > + xorl %r9d,%edi
> > +
> > + movl %r12d,4(%rsp)
> > + xorl %r11d,%r14d
> > + andl %edx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r10d,%r12d
> > + xorl %r9d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %edx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r11d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r11d,%r14d
> > +
> > + xorl %eax,%edi
> > + rorl $6,%r13d
> > + movl %eax,%r10d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r10d
> > + addl %r12d,%ecx
> > + addl %r12d,%r10d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 12(%rsp),%r13d
> > + movl 0(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r10d
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 44(%rsp),%r12d
> > +
> > + addl 8(%rsp),%r12d
> > + movl %ecx,%r13d
> > + addl %r15d,%r12d
> > + movl %r10d,%r14d
> > + rorl $14,%r13d
> > + movl %edx,%r15d
> > +
> > + xorl %ecx,%r13d
> > + rorl $9,%r14d
> > + xorl %r8d,%r15d
> > +
> > + movl %r12d,8(%rsp)
> > + xorl %r10d,%r14d
> > + andl %ecx,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r9d,%r12d
> > + xorl %r8d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %ecx,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r10d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r10d,%r14d
> > +
> > + xorl %r11d,%r15d
> > + rorl $6,%r13d
> > + movl %r11d,%r9d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r9d
> > + addl %r12d,%ebx
> > + addl %r12d,%r9d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 16(%rsp),%r13d
> > + movl 4(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r9d
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 48(%rsp),%r12d
> > +
> > + addl 12(%rsp),%r12d
> > + movl %ebx,%r13d
> > + addl %edi,%r12d
> > + movl %r9d,%r14d
> > + rorl $14,%r13d
> > + movl %ecx,%edi
> > +
> > + xorl %ebx,%r13d
> > + rorl $9,%r14d
> > + xorl %edx,%edi
> > +
> > + movl %r12d,12(%rsp)
> > + xorl %r9d,%r14d
> > + andl %ebx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r8d,%r12d
> > + xorl %edx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %ebx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r9d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r9d,%r14d
> > +
> > + xorl %r10d,%edi
> > + rorl $6,%r13d
> > + movl %r10d,%r8d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r8d
> > + addl %r12d,%eax
> > + addl %r12d,%r8d
> > +
> > + leaq 20(%rbp),%rbp
> > + movl 20(%rsp),%r13d
> > + movl 8(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r8d
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 52(%rsp),%r12d
> > +
> > + addl 16(%rsp),%r12d
> > + movl %eax,%r13d
> > + addl %r15d,%r12d
> > + movl %r8d,%r14d
> > + rorl $14,%r13d
> > + movl %ebx,%r15d
> > +
> > + xorl %eax,%r13d
> > + rorl $9,%r14d
> > + xorl %ecx,%r15d
> > +
> > + movl %r12d,16(%rsp)
> > + xorl %r8d,%r14d
> > + andl %eax,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %edx,%r12d
> > + xorl %ecx,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %eax,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r8d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r8d,%r14d
> > +
> > + xorl %r9d,%r15d
> > + rorl $6,%r13d
> > + movl %r9d,%edx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%edx
> > + addl %r12d,%r11d
> > + addl %r12d,%edx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 24(%rsp),%r13d
> > + movl 12(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%edx
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 56(%rsp),%r12d
> > +
> > + addl 20(%rsp),%r12d
> > + movl %r11d,%r13d
> > + addl %edi,%r12d
> > + movl %edx,%r14d
> > + rorl $14,%r13d
> > + movl %eax,%edi
> > +
> > + xorl %r11d,%r13d
> > + rorl $9,%r14d
> > + xorl %ebx,%edi
> > +
> > + movl %r12d,20(%rsp)
> > + xorl %edx,%r14d
> > + andl %r11d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %ecx,%r12d
> > + xorl %ebx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r11d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %edx,%edi
> > + addl (%rbp),%r12d
> > + xorl %edx,%r14d
> > +
> > + xorl %r8d,%edi
> > + rorl $6,%r13d
> > + movl %r8d,%ecx
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%ecx
> > + addl %r12d,%r10d
> > + addl %r12d,%ecx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 28(%rsp),%r13d
> > + movl 16(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%ecx
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 60(%rsp),%r12d
> > +
> > + addl 24(%rsp),%r12d
> > + movl %r10d,%r13d
> > + addl %r15d,%r12d
> > + movl %ecx,%r14d
> > + rorl $14,%r13d
> > + movl %r11d,%r15d
> > +
> > + xorl %r10d,%r13d
> > + rorl $9,%r14d
> > + xorl %eax,%r15d
> > +
> > + movl %r12d,24(%rsp)
> > + xorl %ecx,%r14d
> > + andl %r10d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %ebx,%r12d
> > + xorl %eax,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r10d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %ecx,%r15d
> > + addl (%rbp),%r12d
> > + xorl %ecx,%r14d
> > +
> > + xorl %edx,%r15d
> > + rorl $6,%r13d
> > + movl %edx,%ebx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%ebx
> > + addl %r12d,%r9d
> > + addl %r12d,%ebx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 32(%rsp),%r13d
> > + movl 20(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%ebx
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 0(%rsp),%r12d
> > +
> > + addl 28(%rsp),%r12d
> > + movl %r9d,%r13d
> > + addl %edi,%r12d
> > + movl %ebx,%r14d
> > + rorl $14,%r13d
> > + movl %r10d,%edi
> > +
> > + xorl %r9d,%r13d
> > + rorl $9,%r14d
> > + xorl %r11d,%edi
> > +
> > + movl %r12d,28(%rsp)
> > + xorl %ebx,%r14d
> > + andl %r9d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %eax,%r12d
> > + xorl %r11d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r9d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %ebx,%edi
> > + addl (%rbp),%r12d
> > + xorl %ebx,%r14d
> > +
> > + xorl %ecx,%edi
> > + rorl $6,%r13d
> > + movl %ecx,%eax
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%eax
> > + addl %r12d,%r8d
> > + addl %r12d,%eax
> > +
> > + leaq 20(%rbp),%rbp
> > + movl 36(%rsp),%r13d
> > + movl 24(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%eax
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 4(%rsp),%r12d
> > +
> > + addl 32(%rsp),%r12d
> > + movl %r8d,%r13d
> > + addl %r15d,%r12d
> > + movl %eax,%r14d
> > + rorl $14,%r13d
> > + movl %r9d,%r15d
> > +
> > + xorl %r8d,%r13d
> > + rorl $9,%r14d
> > + xorl %r10d,%r15d
> > +
> > + movl %r12d,32(%rsp)
> > + xorl %eax,%r14d
> > + andl %r8d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r11d,%r12d
> > + xorl %r10d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r8d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %eax,%r15d
> > + addl (%rbp),%r12d
> > + xorl %eax,%r14d
> > +
> > + xorl %ebx,%r15d
> > + rorl $6,%r13d
> > + movl %ebx,%r11d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r11d
> > + addl %r12d,%edx
> > + addl %r12d,%r11d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 40(%rsp),%r13d
> > + movl 28(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r11d
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 8(%rsp),%r12d
> > +
> > + addl 36(%rsp),%r12d
> > + movl %edx,%r13d
> > + addl %edi,%r12d
> > + movl %r11d,%r14d
> > + rorl $14,%r13d
> > + movl %r8d,%edi
> > +
> > + xorl %edx,%r13d
> > + rorl $9,%r14d
> > + xorl %r9d,%edi
> > +
> > + movl %r12d,36(%rsp)
> > + xorl %r11d,%r14d
> > + andl %edx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r10d,%r12d
> > + xorl %r9d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %edx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r11d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r11d,%r14d
> > +
> > + xorl %eax,%edi
> > + rorl $6,%r13d
> > + movl %eax,%r10d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r10d
> > + addl %r12d,%ecx
> > + addl %r12d,%r10d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 44(%rsp),%r13d
> > + movl 32(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r10d
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 12(%rsp),%r12d
> > +
> > + addl 40(%rsp),%r12d
> > + movl %ecx,%r13d
> > + addl %r15d,%r12d
> > + movl %r10d,%r14d
> > + rorl $14,%r13d
> > + movl %edx,%r15d
> > +
> > + xorl %ecx,%r13d
> > + rorl $9,%r14d
> > + xorl %r8d,%r15d
> > +
> > + movl %r12d,40(%rsp)
> > + xorl %r10d,%r14d
> > + andl %ecx,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %r9d,%r12d
> > + xorl %r8d,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %ecx,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r10d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r10d,%r14d
> > +
> > + xorl %r11d,%r15d
> > + rorl $6,%r13d
> > + movl %r11d,%r9d
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%r9d
> > + addl %r12d,%ebx
> > + addl %r12d,%r9d
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 48(%rsp),%r13d
> > + movl 36(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r9d
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 16(%rsp),%r12d
> > +
> > + addl 44(%rsp),%r12d
> > + movl %ebx,%r13d
> > + addl %edi,%r12d
> > + movl %r9d,%r14d
> > + rorl $14,%r13d
> > + movl %ecx,%edi
> > +
> > + xorl %ebx,%r13d
> > + rorl $9,%r14d
> > + xorl %edx,%edi
> > +
> > + movl %r12d,44(%rsp)
> > + xorl %r9d,%r14d
> > + andl %ebx,%edi
> > +
> > + rorl $5,%r13d
> > + addl %r8d,%r12d
> > + xorl %edx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %ebx,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %r9d,%edi
> > + addl (%rbp),%r12d
> > + xorl %r9d,%r14d
> > +
> > + xorl %r10d,%edi
> > + rorl $6,%r13d
> > + movl %r10d,%r8d
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%r8d
> > + addl %r12d,%eax
> > + addl %r12d,%r8d
> > +
> > + leaq 20(%rbp),%rbp
> > + movl 52(%rsp),%r13d
> > + movl 40(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%r8d
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 20(%rsp),%r12d
> > +
> > + addl 48(%rsp),%r12d
> > + movl %eax,%r13d
> > + addl %r15d,%r12d
> > + movl %r8d,%r14d
> > + rorl $14,%r13d
> > + movl %ebx,%r15d
> > +
> > + xorl %eax,%r13d
> > + rorl $9,%r14d
> > + xorl %ecx,%r15d
> > +
> > + movl %r12d,48(%rsp)
> > + xorl %r8d,%r14d
> > + andl %eax,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %edx,%r12d
> > + xorl %ecx,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %eax,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %r8d,%r15d
> > + addl (%rbp),%r12d
> > + xorl %r8d,%r14d
> > +
> > + xorl %r9d,%r15d
> > + rorl $6,%r13d
> > + movl %r9d,%edx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%edx
> > + addl %r12d,%r11d
> > + addl %r12d,%edx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 56(%rsp),%r13d
> > + movl 44(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%edx
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 24(%rsp),%r12d
> > +
> > + addl 52(%rsp),%r12d
> > + movl %r11d,%r13d
> > + addl %edi,%r12d
> > + movl %edx,%r14d
> > + rorl $14,%r13d
> > + movl %eax,%edi
> > +
> > + xorl %r11d,%r13d
> > + rorl $9,%r14d
> > + xorl %ebx,%edi
> > +
> > + movl %r12d,52(%rsp)
> > + xorl %edx,%r14d
> > + andl %r11d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %ecx,%r12d
> > + xorl %ebx,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r11d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %edx,%edi
> > + addl (%rbp),%r12d
> > + xorl %edx,%r14d
> > +
> > + xorl %r8d,%edi
> > + rorl $6,%r13d
> > + movl %r8d,%ecx
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%ecx
> > + addl %r12d,%r10d
> > + addl %r12d,%ecx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 60(%rsp),%r13d
> > + movl 48(%rsp),%r15d
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%ecx
> > + movl %r15d,%r14d
> > + rorl $2,%r15d
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%r15d
> > + shrl $10,%r14d
> > +
> > + rorl $17,%r15d
> > + xorl %r13d,%r12d
> > + xorl %r14d,%r15d
> > + addl 28(%rsp),%r12d
> > +
> > + addl 56(%rsp),%r12d
> > + movl %r10d,%r13d
> > + addl %r15d,%r12d
> > + movl %ecx,%r14d
> > + rorl $14,%r13d
> > + movl %r11d,%r15d
> > +
> > + xorl %r10d,%r13d
> > + rorl $9,%r14d
> > + xorl %eax,%r15d
> > +
> > + movl %r12d,56(%rsp)
> > + xorl %ecx,%r14d
> > + andl %r10d,%r15d
> > +
> > + rorl $5,%r13d
> > + addl %ebx,%r12d
> > + xorl %eax,%r15d
> > +
> > + rorl $11,%r14d
> > + xorl %r10d,%r13d
> > + addl %r15d,%r12d
> > +
> > + movl %ecx,%r15d
> > + addl (%rbp),%r12d
> > + xorl %ecx,%r14d
> > +
> > + xorl %edx,%r15d
> > + rorl $6,%r13d
> > + movl %edx,%ebx
> > +
> > + andl %r15d,%edi
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %edi,%ebx
> > + addl %r12d,%r9d
> > + addl %r12d,%ebx
> > +
> > + leaq 4(%rbp),%rbp
> > + movl 0(%rsp),%r13d
> > + movl 52(%rsp),%edi
> > +
> > + movl %r13d,%r12d
> > + rorl $11,%r13d
> > + addl %r14d,%ebx
> > + movl %edi,%r14d
> > + rorl $2,%edi
> > +
> > + xorl %r12d,%r13d
> > + shrl $3,%r12d
> > + rorl $7,%r13d
> > + xorl %r14d,%edi
> > + shrl $10,%r14d
> > +
> > + rorl $17,%edi
> > + xorl %r13d,%r12d
> > + xorl %r14d,%edi
> > + addl 32(%rsp),%r12d
> > +
> > + addl 60(%rsp),%r12d
> > + movl %r9d,%r13d
> > + addl %edi,%r12d
> > + movl %ebx,%r14d
> > + rorl $14,%r13d
> > + movl %r10d,%edi
> > +
> > + xorl %r9d,%r13d
> > + rorl $9,%r14d
> > + xorl %r11d,%edi
> > +
> > + movl %r12d,60(%rsp)
> > + xorl %ebx,%r14d
> > + andl %r9d,%edi
> > +
> > + rorl $5,%r13d
> > + addl %eax,%r12d
> > + xorl %r11d,%edi
> > +
> > + rorl $11,%r14d
> > + xorl %r9d,%r13d
> > + addl %edi,%r12d
> > +
> > + movl %ebx,%edi
> > + addl (%rbp),%r12d
> > + xorl %ebx,%r14d
> > +
> > + xorl %ecx,%edi
> > + rorl $6,%r13d
> > + movl %ecx,%eax
> > +
> > + andl %edi,%r15d
> > + rorl $2,%r14d
> > + addl %r13d,%r12d
> > +
> > + xorl %r15d,%eax
> > + addl %r12d,%r8d
> > + addl %r12d,%eax
> > +
> > + leaq 20(%rbp),%rbp
> > + cmpb $0,3(%rbp)
> > + jnz .Lrounds_16_xx
> > +
> > + movq 64+0(%rsp),%rdi
> > + addl %r14d,%eax
> > + leaq 64(%rsi),%rsi
> > +
> > + addl 0(%rdi),%eax
> > + addl 4(%rdi),%ebx
> > + addl 8(%rdi),%ecx
> > + addl 12(%rdi),%edx
> > + addl 16(%rdi),%r8d
> > + addl 20(%rdi),%r9d
> > + addl 24(%rdi),%r10d
> > + addl 28(%rdi),%r11d
> > +
> > + cmpq 64+16(%rsp),%rsi
> > +
> > + movl %eax,0(%rdi)
> > + movl %ebx,4(%rdi)
> > + movl %ecx,8(%rdi)
> > + movl %edx,12(%rdi)
> > + movl %r8d,16(%rdi)
> > + movl %r9d,20(%rdi)
> > + movl %r10d,24(%rdi)
> > + movl %r11d,28(%rdi)
> > + jb .Lloop
> > +
> > + movq 88(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -48(%rsi),%r15
> > +.cfi_restore %r15
> > + movq -40(%rsi),%r14
> > +.cfi_restore %r14
> > + movq -32(%rsi),%r13
> > +.cfi_restore %r13
> > + movq -24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq -16(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha256_block_data_order,.-sha256_block_data_order
> > +.align 64
> > +.type K256,@object
> > +K256:
> > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > +.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
> > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > +.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
> > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > +.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
> > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > +.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
> > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > +.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
> > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > +.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
> > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > +.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
> > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > +.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
> > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > +.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
> > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > +.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
> > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > +.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
> > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > +.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
> > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > +.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
> > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > +.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
> > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > +.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
> > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > +.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
> > +
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
> > +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
> > +.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff
> > +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
> > +.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
> > +.byte
> >
> 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,1
> >
>
09,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83
> ,
> >
> 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,
> 1
> > 14,103,62,0
> > +.type sha256_block_data_order_shaext,@function
> > +.align 64
> > +sha256_block_data_order_shaext:
> > +_shaext_shortcut:
> > +.cfi_startproc
> > + leaq K256+128(%rip),%rcx
> > + movdqu (%rdi),%xmm1
> > + movdqu 16(%rdi),%xmm2
> > + movdqa 512-128(%rcx),%xmm7
> > +
> > + pshufd $0x1b,%xmm1,%xmm0
> > + pshufd $0xb1,%xmm1,%xmm1
> > + pshufd $0x1b,%xmm2,%xmm2
> > + movdqa %xmm7,%xmm8
> > +.byte 102,15,58,15,202,8
> > + punpcklqdq %xmm0,%xmm2
> > + jmp .Loop_shaext
> > +
> > +.align 16
> > +.Loop_shaext:
> > + movdqu (%rsi),%xmm3
> > + movdqu 16(%rsi),%xmm4
> > + movdqu 32(%rsi),%xmm5
> > +.byte 102,15,56,0,223
> > + movdqu 48(%rsi),%xmm6
> > +
> > + movdqa 0-128(%rcx),%xmm0
> > + paddd %xmm3,%xmm0
> > +.byte 102,15,56,0,231
> > + movdqa %xmm2,%xmm10
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + nop
> > + movdqa %xmm1,%xmm9
> > +.byte 15,56,203,202
> > +
> > + movdqa 32-128(%rcx),%xmm0
> > + paddd %xmm4,%xmm0
> > +.byte 102,15,56,0,239
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + leaq 64(%rsi),%rsi
> > +.byte 15,56,204,220
> > +.byte 15,56,203,202
> > +
> > + movdqa 64-128(%rcx),%xmm0
> > + paddd %xmm5,%xmm0
> > +.byte 102,15,56,0,247
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm6,%xmm7
> > +.byte 102,15,58,15,253,4
> > + nop
> > + paddd %xmm7,%xmm3
> > +.byte 15,56,204,229
> > +.byte 15,56,203,202
> > +
> > + movdqa 96-128(%rcx),%xmm0
> > + paddd %xmm6,%xmm0
> > +.byte 15,56,205,222
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm3,%xmm7
> > +.byte 102,15,58,15,254,4
> > + nop
> > + paddd %xmm7,%xmm4
> > +.byte 15,56,204,238
> > +.byte 15,56,203,202
> > + movdqa 128-128(%rcx),%xmm0
> > + paddd %xmm3,%xmm0
> > +.byte 15,56,205,227
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm4,%xmm7
> > +.byte 102,15,58,15,251,4
> > + nop
> > + paddd %xmm7,%xmm5
> > +.byte 15,56,204,243
> > +.byte 15,56,203,202
> > + movdqa 160-128(%rcx),%xmm0
> > + paddd %xmm4,%xmm0
> > +.byte 15,56,205,236
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm5,%xmm7
> > +.byte 102,15,58,15,252,4
> > + nop
> > + paddd %xmm7,%xmm6
> > +.byte 15,56,204,220
> > +.byte 15,56,203,202
> > + movdqa 192-128(%rcx),%xmm0
> > + paddd %xmm5,%xmm0
> > +.byte 15,56,205,245
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm6,%xmm7
> > +.byte 102,15,58,15,253,4
> > + nop
> > + paddd %xmm7,%xmm3
> > +.byte 15,56,204,229
> > +.byte 15,56,203,202
> > + movdqa 224-128(%rcx),%xmm0
> > + paddd %xmm6,%xmm0
> > +.byte 15,56,205,222
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm3,%xmm7
> > +.byte 102,15,58,15,254,4
> > + nop
> > + paddd %xmm7,%xmm4
> > +.byte 15,56,204,238
> > +.byte 15,56,203,202
> > + movdqa 256-128(%rcx),%xmm0
> > + paddd %xmm3,%xmm0
> > +.byte 15,56,205,227
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm4,%xmm7
> > +.byte 102,15,58,15,251,4
> > + nop
> > + paddd %xmm7,%xmm5
> > +.byte 15,56,204,243
> > +.byte 15,56,203,202
> > + movdqa 288-128(%rcx),%xmm0
> > + paddd %xmm4,%xmm0
> > +.byte 15,56,205,236
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm5,%xmm7
> > +.byte 102,15,58,15,252,4
> > + nop
> > + paddd %xmm7,%xmm6
> > +.byte 15,56,204,220
> > +.byte 15,56,203,202
> > + movdqa 320-128(%rcx),%xmm0
> > + paddd %xmm5,%xmm0
> > +.byte 15,56,205,245
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm6,%xmm7
> > +.byte 102,15,58,15,253,4
> > + nop
> > + paddd %xmm7,%xmm3
> > +.byte 15,56,204,229
> > +.byte 15,56,203,202
> > + movdqa 352-128(%rcx),%xmm0
> > + paddd %xmm6,%xmm0
> > +.byte 15,56,205,222
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm3,%xmm7
> > +.byte 102,15,58,15,254,4
> > + nop
> > + paddd %xmm7,%xmm4
> > +.byte 15,56,204,238
> > +.byte 15,56,203,202
> > + movdqa 384-128(%rcx),%xmm0
> > + paddd %xmm3,%xmm0
> > +.byte 15,56,205,227
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm4,%xmm7
> > +.byte 102,15,58,15,251,4
> > + nop
> > + paddd %xmm7,%xmm5
> > +.byte 15,56,204,243
> > +.byte 15,56,203,202
> > + movdqa 416-128(%rcx),%xmm0
> > + paddd %xmm4,%xmm0
> > +.byte 15,56,205,236
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + movdqa %xmm5,%xmm7
> > +.byte 102,15,58,15,252,4
> > +.byte 15,56,203,202
> > + paddd %xmm7,%xmm6
> > +
> > + movdqa 448-128(%rcx),%xmm0
> > + paddd %xmm5,%xmm0
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > +.byte 15,56,205,245
> > + movdqa %xmm8,%xmm7
> > +.byte 15,56,203,202
> > +
> > + movdqa 480-128(%rcx),%xmm0
> > + paddd %xmm6,%xmm0
> > + nop
> > +.byte 15,56,203,209
> > + pshufd $0x0e,%xmm0,%xmm0
> > + decq %rdx
> > + nop
> > +.byte 15,56,203,202
> > +
> > + paddd %xmm10,%xmm2
> > + paddd %xmm9,%xmm1
> > + jnz .Loop_shaext
> > +
> > + pshufd $0xb1,%xmm2,%xmm2
> > + pshufd $0x1b,%xmm1,%xmm7
> > + pshufd $0xb1,%xmm1,%xmm1
> > + punpckhqdq %xmm2,%xmm1
> > +.byte 102,15,58,15,215,8
> > +
> > + movdqu %xmm1,(%rdi)
> > + movdqu %xmm2,16(%rdi)
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size
> sha256_block_data_order_shaext,.-sha256_block_data_order_shaext
> > +.type sha256_block_data_order_ssse3,@function
> > +.align 64
> > +sha256_block_data_order_ssse3:
> > +.cfi_startproc
> > +.Lssse3_shortcut:
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_offset %r15,-56
> > + shlq $4,%rdx
> > + subq $96,%rsp
> > + leaq (%rsi,%rdx,4),%rdx
> > + andq $-64,%rsp
> > + movq %rdi,64+0(%rsp)
> > + movq %rsi,64+8(%rsp)
> > + movq %rdx,64+16(%rsp)
> > + movq %rax,88(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08
> > +.Lprologue_ssse3:
> > +
> > + movl 0(%rdi),%eax
> > + movl 4(%rdi),%ebx
> > + movl 8(%rdi),%ecx
> > + movl 12(%rdi),%edx
> > + movl 16(%rdi),%r8d
> > + movl 20(%rdi),%r9d
> > + movl 24(%rdi),%r10d
> > + movl 28(%rdi),%r11d
> > +
> > +
> > + jmp .Lloop_ssse3
> > +.align 16
> > +.Lloop_ssse3:
> > + movdqa K256+512(%rip),%xmm7
> > + movdqu 0(%rsi),%xmm0
> > + movdqu 16(%rsi),%xmm1
> > + movdqu 32(%rsi),%xmm2
> > +.byte 102,15,56,0,199
> > + movdqu 48(%rsi),%xmm3
> > + leaq K256(%rip),%rbp
> > +.byte 102,15,56,0,207
> > + movdqa 0(%rbp),%xmm4
> > + movdqa 32(%rbp),%xmm5
> > +.byte 102,15,56,0,215
> > + paddd %xmm0,%xmm4
> > + movdqa 64(%rbp),%xmm6
> > +.byte 102,15,56,0,223
> > + movdqa 96(%rbp),%xmm7
> > + paddd %xmm1,%xmm5
> > + paddd %xmm2,%xmm6
> > + paddd %xmm3,%xmm7
> > + movdqa %xmm4,0(%rsp)
> > + movl %eax,%r14d
> > + movdqa %xmm5,16(%rsp)
> > + movl %ebx,%edi
> > + movdqa %xmm6,32(%rsp)
> > + xorl %ecx,%edi
> > + movdqa %xmm7,48(%rsp)
> > + movl %r8d,%r13d
> > + jmp .Lssse3_00_47
> > +
> > +.align 16
> > +.Lssse3_00_47:
> > + subq $-128,%rbp
> > + rorl $14,%r13d
> > + movdqa %xmm1,%xmm4
> > + movl %r14d,%eax
> > + movl %r9d,%r12d
> > + movdqa %xmm3,%xmm7
> > + rorl $9,%r14d
> > + xorl %r8d,%r13d
> > + xorl %r10d,%r12d
> > + rorl $5,%r13d
> > + xorl %eax,%r14d
> > +.byte 102,15,58,15,224,4
> > + andl %r8d,%r12d
> > + xorl %r8d,%r13d
> > +.byte 102,15,58,15,250,4
> > + addl 0(%rsp),%r11d
> > + movl %eax,%r15d
> > + xorl %r10d,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm4,%xmm5
> > + xorl %ebx,%r15d
> > + addl %r12d,%r11d
> > + movdqa %xmm4,%xmm6
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + psrld $3,%xmm4
> > + xorl %eax,%r14d
> > + addl %r13d,%r11d
> > + xorl %ebx,%edi
> > + paddd %xmm7,%xmm0
> > + rorl $2,%r14d
> > + addl %r11d,%edx
> > + psrld $7,%xmm6
> > + addl %edi,%r11d
> > + movl %edx,%r13d
> > + pshufd $250,%xmm3,%xmm7
> > + addl %r11d,%r14d
> > + rorl $14,%r13d
> > + pslld $14,%xmm5
> > + movl %r14d,%r11d
> > + movl %r8d,%r12d
> > + pxor %xmm6,%xmm4
> > + rorl $9,%r14d
> > + xorl %edx,%r13d
> > + xorl %r9d,%r12d
> > + rorl $5,%r13d
> > + psrld $11,%xmm6
> > + xorl %r11d,%r14d
> > + pxor %xmm5,%xmm4
> > + andl %edx,%r12d
> > + xorl %edx,%r13d
> > + pslld $11,%xmm5
> > + addl 4(%rsp),%r10d
> > + movl %r11d,%edi
> > + pxor %xmm6,%xmm4
> > + xorl %r9d,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm7,%xmm6
> > + xorl %eax,%edi
> > + addl %r12d,%r10d
> > + pxor %xmm5,%xmm4
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r11d,%r14d
> > + psrld $10,%xmm7
> > + addl %r13d,%r10d
> > + xorl %eax,%r15d
> > + paddd %xmm4,%xmm0
> > + rorl $2,%r14d
> > + addl %r10d,%ecx
> > + psrlq $17,%xmm6
> > + addl %r15d,%r10d
> > + movl %ecx,%r13d
> > + addl %r10d,%r14d
> > + pxor %xmm6,%xmm7
> > + rorl $14,%r13d
> > + movl %r14d,%r10d
> > + movl %edx,%r12d
> > + rorl $9,%r14d
> > + psrlq $2,%xmm6
> > + xorl %ecx,%r13d
> > + xorl %r8d,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $5,%r13d
> > + xorl %r10d,%r14d
> > + andl %ecx,%r12d
> > + pshufd $128,%xmm7,%xmm7
> > + xorl %ecx,%r13d
> > + addl 8(%rsp),%r9d
> > + movl %r10d,%r15d
> > + psrldq $8,%xmm7
> > + xorl %r8d,%r12d
> > + rorl $11,%r14d
> > + xorl %r11d,%r15d
> > + addl %r12d,%r9d
> > + rorl $6,%r13d
> > + paddd %xmm7,%xmm0
> > + andl %r15d,%edi
> > + xorl %r10d,%r14d
> > + addl %r13d,%r9d
> > + pshufd $80,%xmm0,%xmm7
> > + xorl %r11d,%edi
> > + rorl $2,%r14d
> > + addl %r9d,%ebx
> > + movdqa %xmm7,%xmm6
> > + addl %edi,%r9d
> > + movl %ebx,%r13d
> > + psrld $10,%xmm7
> > + addl %r9d,%r14d
> > + rorl $14,%r13d
> > + psrlq $17,%xmm6
> > + movl %r14d,%r9d
> > + movl %ecx,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $9,%r14d
> > + xorl %ebx,%r13d
> > + xorl %edx,%r12d
> > + rorl $5,%r13d
> > + xorl %r9d,%r14d
> > + psrlq $2,%xmm6
> > + andl %ebx,%r12d
> > + xorl %ebx,%r13d
> > + addl 12(%rsp),%r8d
> > + pxor %xmm6,%xmm7
> > + movl %r9d,%edi
> > + xorl %edx,%r12d
> > + rorl $11,%r14d
> > + pshufd $8,%xmm7,%xmm7
> > + xorl %r10d,%edi
> > + addl %r12d,%r8d
> > + movdqa 0(%rbp),%xmm6
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + pslldq $8,%xmm7
> > + xorl %r9d,%r14d
> > + addl %r13d,%r8d
> > + xorl %r10d,%r15d
> > + paddd %xmm7,%xmm0
> > + rorl $2,%r14d
> > + addl %r8d,%eax
> > + addl %r15d,%r8d
> > + paddd %xmm0,%xmm6
> > + movl %eax,%r13d
> > + addl %r8d,%r14d
> > + movdqa %xmm6,0(%rsp)
> > + rorl $14,%r13d
> > + movdqa %xmm2,%xmm4
> > + movl %r14d,%r8d
> > + movl %ebx,%r12d
> > + movdqa %xmm0,%xmm7
> > + rorl $9,%r14d
> > + xorl %eax,%r13d
> > + xorl %ecx,%r12d
> > + rorl $5,%r13d
> > + xorl %r8d,%r14d
> > +.byte 102,15,58,15,225,4
> > + andl %eax,%r12d
> > + xorl %eax,%r13d
> > +.byte 102,15,58,15,251,4
> > + addl 16(%rsp),%edx
> > + movl %r8d,%r15d
> > + xorl %ecx,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm4,%xmm5
> > + xorl %r9d,%r15d
> > + addl %r12d,%edx
> > + movdqa %xmm4,%xmm6
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + psrld $3,%xmm4
> > + xorl %r8d,%r14d
> > + addl %r13d,%edx
> > + xorl %r9d,%edi
> > + paddd %xmm7,%xmm1
> > + rorl $2,%r14d
> > + addl %edx,%r11d
> > + psrld $7,%xmm6
> > + addl %edi,%edx
> > + movl %r11d,%r13d
> > + pshufd $250,%xmm0,%xmm7
> > + addl %edx,%r14d
> > + rorl $14,%r13d
> > + pslld $14,%xmm5
> > + movl %r14d,%edx
> > + movl %eax,%r12d
> > + pxor %xmm6,%xmm4
> > + rorl $9,%r14d
> > + xorl %r11d,%r13d
> > + xorl %ebx,%r12d
> > + rorl $5,%r13d
> > + psrld $11,%xmm6
> > + xorl %edx,%r14d
> > + pxor %xmm5,%xmm4
> > + andl %r11d,%r12d
> > + xorl %r11d,%r13d
> > + pslld $11,%xmm5
> > + addl 20(%rsp),%ecx
> > + movl %edx,%edi
> > + pxor %xmm6,%xmm4
> > + xorl %ebx,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm7,%xmm6
> > + xorl %r8d,%edi
> > + addl %r12d,%ecx
> > + pxor %xmm5,%xmm4
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %edx,%r14d
> > + psrld $10,%xmm7
> > + addl %r13d,%ecx
> > + xorl %r8d,%r15d
> > + paddd %xmm4,%xmm1
> > + rorl $2,%r14d
> > + addl %ecx,%r10d
> > + psrlq $17,%xmm6
> > + addl %r15d,%ecx
> > + movl %r10d,%r13d
> > + addl %ecx,%r14d
> > + pxor %xmm6,%xmm7
> > + rorl $14,%r13d
> > + movl %r14d,%ecx
> > + movl %r11d,%r12d
> > + rorl $9,%r14d
> > + psrlq $2,%xmm6
> > + xorl %r10d,%r13d
> > + xorl %eax,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $5,%r13d
> > + xorl %ecx,%r14d
> > + andl %r10d,%r12d
> > + pshufd $128,%xmm7,%xmm7
> > + xorl %r10d,%r13d
> > + addl 24(%rsp),%ebx
> > + movl %ecx,%r15d
> > + psrldq $8,%xmm7
> > + xorl %eax,%r12d
> > + rorl $11,%r14d
> > + xorl %edx,%r15d
> > + addl %r12d,%ebx
> > + rorl $6,%r13d
> > + paddd %xmm7,%xmm1
> > + andl %r15d,%edi
> > + xorl %ecx,%r14d
> > + addl %r13d,%ebx
> > + pshufd $80,%xmm1,%xmm7
> > + xorl %edx,%edi
> > + rorl $2,%r14d
> > + addl %ebx,%r9d
> > + movdqa %xmm7,%xmm6
> > + addl %edi,%ebx
> > + movl %r9d,%r13d
> > + psrld $10,%xmm7
> > + addl %ebx,%r14d
> > + rorl $14,%r13d
> > + psrlq $17,%xmm6
> > + movl %r14d,%ebx
> > + movl %r10d,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $9,%r14d
> > + xorl %r9d,%r13d
> > + xorl %r11d,%r12d
> > + rorl $5,%r13d
> > + xorl %ebx,%r14d
> > + psrlq $2,%xmm6
> > + andl %r9d,%r12d
> > + xorl %r9d,%r13d
> > + addl 28(%rsp),%eax
> > + pxor %xmm6,%xmm7
> > + movl %ebx,%edi
> > + xorl %r11d,%r12d
> > + rorl $11,%r14d
> > + pshufd $8,%xmm7,%xmm7
> > + xorl %ecx,%edi
> > + addl %r12d,%eax
> > + movdqa 32(%rbp),%xmm6
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + pslldq $8,%xmm7
> > + xorl %ebx,%r14d
> > + addl %r13d,%eax
> > + xorl %ecx,%r15d
> > + paddd %xmm7,%xmm1
> > + rorl $2,%r14d
> > + addl %eax,%r8d
> > + addl %r15d,%eax
> > + paddd %xmm1,%xmm6
> > + movl %r8d,%r13d
> > + addl %eax,%r14d
> > + movdqa %xmm6,16(%rsp)
> > + rorl $14,%r13d
> > + movdqa %xmm3,%xmm4
> > + movl %r14d,%eax
> > + movl %r9d,%r12d
> > + movdqa %xmm1,%xmm7
> > + rorl $9,%r14d
> > + xorl %r8d,%r13d
> > + xorl %r10d,%r12d
> > + rorl $5,%r13d
> > + xorl %eax,%r14d
> > +.byte 102,15,58,15,226,4
> > + andl %r8d,%r12d
> > + xorl %r8d,%r13d
> > +.byte 102,15,58,15,248,4
> > + addl 32(%rsp),%r11d
> > + movl %eax,%r15d
> > + xorl %r10d,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm4,%xmm5
> > + xorl %ebx,%r15d
> > + addl %r12d,%r11d
> > + movdqa %xmm4,%xmm6
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + psrld $3,%xmm4
> > + xorl %eax,%r14d
> > + addl %r13d,%r11d
> > + xorl %ebx,%edi
> > + paddd %xmm7,%xmm2
> > + rorl $2,%r14d
> > + addl %r11d,%edx
> > + psrld $7,%xmm6
> > + addl %edi,%r11d
> > + movl %edx,%r13d
> > + pshufd $250,%xmm1,%xmm7
> > + addl %r11d,%r14d
> > + rorl $14,%r13d
> > + pslld $14,%xmm5
> > + movl %r14d,%r11d
> > + movl %r8d,%r12d
> > + pxor %xmm6,%xmm4
> > + rorl $9,%r14d
> > + xorl %edx,%r13d
> > + xorl %r9d,%r12d
> > + rorl $5,%r13d
> > + psrld $11,%xmm6
> > + xorl %r11d,%r14d
> > + pxor %xmm5,%xmm4
> > + andl %edx,%r12d
> > + xorl %edx,%r13d
> > + pslld $11,%xmm5
> > + addl 36(%rsp),%r10d
> > + movl %r11d,%edi
> > + pxor %xmm6,%xmm4
> > + xorl %r9d,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm7,%xmm6
> > + xorl %eax,%edi
> > + addl %r12d,%r10d
> > + pxor %xmm5,%xmm4
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r11d,%r14d
> > + psrld $10,%xmm7
> > + addl %r13d,%r10d
> > + xorl %eax,%r15d
> > + paddd %xmm4,%xmm2
> > + rorl $2,%r14d
> > + addl %r10d,%ecx
> > + psrlq $17,%xmm6
> > + addl %r15d,%r10d
> > + movl %ecx,%r13d
> > + addl %r10d,%r14d
> > + pxor %xmm6,%xmm7
> > + rorl $14,%r13d
> > + movl %r14d,%r10d
> > + movl %edx,%r12d
> > + rorl $9,%r14d
> > + psrlq $2,%xmm6
> > + xorl %ecx,%r13d
> > + xorl %r8d,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $5,%r13d
> > + xorl %r10d,%r14d
> > + andl %ecx,%r12d
> > + pshufd $128,%xmm7,%xmm7
> > + xorl %ecx,%r13d
> > + addl 40(%rsp),%r9d
> > + movl %r10d,%r15d
> > + psrldq $8,%xmm7
> > + xorl %r8d,%r12d
> > + rorl $11,%r14d
> > + xorl %r11d,%r15d
> > + addl %r12d,%r9d
> > + rorl $6,%r13d
> > + paddd %xmm7,%xmm2
> > + andl %r15d,%edi
> > + xorl %r10d,%r14d
> > + addl %r13d,%r9d
> > + pshufd $80,%xmm2,%xmm7
> > + xorl %r11d,%edi
> > + rorl $2,%r14d
> > + addl %r9d,%ebx
> > + movdqa %xmm7,%xmm6
> > + addl %edi,%r9d
> > + movl %ebx,%r13d
> > + psrld $10,%xmm7
> > + addl %r9d,%r14d
> > + rorl $14,%r13d
> > + psrlq $17,%xmm6
> > + movl %r14d,%r9d
> > + movl %ecx,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $9,%r14d
> > + xorl %ebx,%r13d
> > + xorl %edx,%r12d
> > + rorl $5,%r13d
> > + xorl %r9d,%r14d
> > + psrlq $2,%xmm6
> > + andl %ebx,%r12d
> > + xorl %ebx,%r13d
> > + addl 44(%rsp),%r8d
> > + pxor %xmm6,%xmm7
> > + movl %r9d,%edi
> > + xorl %edx,%r12d
> > + rorl $11,%r14d
> > + pshufd $8,%xmm7,%xmm7
> > + xorl %r10d,%edi
> > + addl %r12d,%r8d
> > + movdqa 64(%rbp),%xmm6
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + pslldq $8,%xmm7
> > + xorl %r9d,%r14d
> > + addl %r13d,%r8d
> > + xorl %r10d,%r15d
> > + paddd %xmm7,%xmm2
> > + rorl $2,%r14d
> > + addl %r8d,%eax
> > + addl %r15d,%r8d
> > + paddd %xmm2,%xmm6
> > + movl %eax,%r13d
> > + addl %r8d,%r14d
> > + movdqa %xmm6,32(%rsp)
> > + rorl $14,%r13d
> > + movdqa %xmm0,%xmm4
> > + movl %r14d,%r8d
> > + movl %ebx,%r12d
> > + movdqa %xmm2,%xmm7
> > + rorl $9,%r14d
> > + xorl %eax,%r13d
> > + xorl %ecx,%r12d
> > + rorl $5,%r13d
> > + xorl %r8d,%r14d
> > +.byte 102,15,58,15,227,4
> > + andl %eax,%r12d
> > + xorl %eax,%r13d
> > +.byte 102,15,58,15,249,4
> > + addl 48(%rsp),%edx
> > + movl %r8d,%r15d
> > + xorl %ecx,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm4,%xmm5
> > + xorl %r9d,%r15d
> > + addl %r12d,%edx
> > + movdqa %xmm4,%xmm6
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + psrld $3,%xmm4
> > + xorl %r8d,%r14d
> > + addl %r13d,%edx
> > + xorl %r9d,%edi
> > + paddd %xmm7,%xmm3
> > + rorl $2,%r14d
> > + addl %edx,%r11d
> > + psrld $7,%xmm6
> > + addl %edi,%edx
> > + movl %r11d,%r13d
> > + pshufd $250,%xmm2,%xmm7
> > + addl %edx,%r14d
> > + rorl $14,%r13d
> > + pslld $14,%xmm5
> > + movl %r14d,%edx
> > + movl %eax,%r12d
> > + pxor %xmm6,%xmm4
> > + rorl $9,%r14d
> > + xorl %r11d,%r13d
> > + xorl %ebx,%r12d
> > + rorl $5,%r13d
> > + psrld $11,%xmm6
> > + xorl %edx,%r14d
> > + pxor %xmm5,%xmm4
> > + andl %r11d,%r12d
> > + xorl %r11d,%r13d
> > + pslld $11,%xmm5
> > + addl 52(%rsp),%ecx
> > + movl %edx,%edi
> > + pxor %xmm6,%xmm4
> > + xorl %ebx,%r12d
> > + rorl $11,%r14d
> > + movdqa %xmm7,%xmm6
> > + xorl %r8d,%edi
> > + addl %r12d,%ecx
> > + pxor %xmm5,%xmm4
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %edx,%r14d
> > + psrld $10,%xmm7
> > + addl %r13d,%ecx
> > + xorl %r8d,%r15d
> > + paddd %xmm4,%xmm3
> > + rorl $2,%r14d
> > + addl %ecx,%r10d
> > + psrlq $17,%xmm6
> > + addl %r15d,%ecx
> > + movl %r10d,%r13d
> > + addl %ecx,%r14d
> > + pxor %xmm6,%xmm7
> > + rorl $14,%r13d
> > + movl %r14d,%ecx
> > + movl %r11d,%r12d
> > + rorl $9,%r14d
> > + psrlq $2,%xmm6
> > + xorl %r10d,%r13d
> > + xorl %eax,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $5,%r13d
> > + xorl %ecx,%r14d
> > + andl %r10d,%r12d
> > + pshufd $128,%xmm7,%xmm7
> > + xorl %r10d,%r13d
> > + addl 56(%rsp),%ebx
> > + movl %ecx,%r15d
> > + psrldq $8,%xmm7
> > + xorl %eax,%r12d
> > + rorl $11,%r14d
> > + xorl %edx,%r15d
> > + addl %r12d,%ebx
> > + rorl $6,%r13d
> > + paddd %xmm7,%xmm3
> > + andl %r15d,%edi
> > + xorl %ecx,%r14d
> > + addl %r13d,%ebx
> > + pshufd $80,%xmm3,%xmm7
> > + xorl %edx,%edi
> > + rorl $2,%r14d
> > + addl %ebx,%r9d
> > + movdqa %xmm7,%xmm6
> > + addl %edi,%ebx
> > + movl %r9d,%r13d
> > + psrld $10,%xmm7
> > + addl %ebx,%r14d
> > + rorl $14,%r13d
> > + psrlq $17,%xmm6
> > + movl %r14d,%ebx
> > + movl %r10d,%r12d
> > + pxor %xmm6,%xmm7
> > + rorl $9,%r14d
> > + xorl %r9d,%r13d
> > + xorl %r11d,%r12d
> > + rorl $5,%r13d
> > + xorl %ebx,%r14d
> > + psrlq $2,%xmm6
> > + andl %r9d,%r12d
> > + xorl %r9d,%r13d
> > + addl 60(%rsp),%eax
> > + pxor %xmm6,%xmm7
> > + movl %ebx,%edi
> > + xorl %r11d,%r12d
> > + rorl $11,%r14d
> > + pshufd $8,%xmm7,%xmm7
> > + xorl %ecx,%edi
> > + addl %r12d,%eax
> > + movdqa 96(%rbp),%xmm6
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + pslldq $8,%xmm7
> > + xorl %ebx,%r14d
> > + addl %r13d,%eax
> > + xorl %ecx,%r15d
> > + paddd %xmm7,%xmm3
> > + rorl $2,%r14d
> > + addl %eax,%r8d
> > + addl %r15d,%eax
> > + paddd %xmm3,%xmm6
> > + movl %r8d,%r13d
> > + addl %eax,%r14d
> > + movdqa %xmm6,48(%rsp)
> > + cmpb $0,131(%rbp)
> > + jne .Lssse3_00_47
> > + rorl $14,%r13d
> > + movl %r14d,%eax
> > + movl %r9d,%r12d
> > + rorl $9,%r14d
> > + xorl %r8d,%r13d
> > + xorl %r10d,%r12d
> > + rorl $5,%r13d
> > + xorl %eax,%r14d
> > + andl %r8d,%r12d
> > + xorl %r8d,%r13d
> > + addl 0(%rsp),%r11d
> > + movl %eax,%r15d
> > + xorl %r10d,%r12d
> > + rorl $11,%r14d
> > + xorl %ebx,%r15d
> > + addl %r12d,%r11d
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %eax,%r14d
> > + addl %r13d,%r11d
> > + xorl %ebx,%edi
> > + rorl $2,%r14d
> > + addl %r11d,%edx
> > + addl %edi,%r11d
> > + movl %edx,%r13d
> > + addl %r11d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r11d
> > + movl %r8d,%r12d
> > + rorl $9,%r14d
> > + xorl %edx,%r13d
> > + xorl %r9d,%r12d
> > + rorl $5,%r13d
> > + xorl %r11d,%r14d
> > + andl %edx,%r12d
> > + xorl %edx,%r13d
> > + addl 4(%rsp),%r10d
> > + movl %r11d,%edi
> > + xorl %r9d,%r12d
> > + rorl $11,%r14d
> > + xorl %eax,%edi
> > + addl %r12d,%r10d
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r11d,%r14d
> > + addl %r13d,%r10d
> > + xorl %eax,%r15d
> > + rorl $2,%r14d
> > + addl %r10d,%ecx
> > + addl %r15d,%r10d
> > + movl %ecx,%r13d
> > + addl %r10d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r10d
> > + movl %edx,%r12d
> > + rorl $9,%r14d
> > + xorl %ecx,%r13d
> > + xorl %r8d,%r12d
> > + rorl $5,%r13d
> > + xorl %r10d,%r14d
> > + andl %ecx,%r12d
> > + xorl %ecx,%r13d
> > + addl 8(%rsp),%r9d
> > + movl %r10d,%r15d
> > + xorl %r8d,%r12d
> > + rorl $11,%r14d
> > + xorl %r11d,%r15d
> > + addl %r12d,%r9d
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %r10d,%r14d
> > + addl %r13d,%r9d
> > + xorl %r11d,%edi
> > + rorl $2,%r14d
> > + addl %r9d,%ebx
> > + addl %edi,%r9d
> > + movl %ebx,%r13d
> > + addl %r9d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r9d
> > + movl %ecx,%r12d
> > + rorl $9,%r14d
> > + xorl %ebx,%r13d
> > + xorl %edx,%r12d
> > + rorl $5,%r13d
> > + xorl %r9d,%r14d
> > + andl %ebx,%r12d
> > + xorl %ebx,%r13d
> > + addl 12(%rsp),%r8d
> > + movl %r9d,%edi
> > + xorl %edx,%r12d
> > + rorl $11,%r14d
> > + xorl %r10d,%edi
> > + addl %r12d,%r8d
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r9d,%r14d
> > + addl %r13d,%r8d
> > + xorl %r10d,%r15d
> > + rorl $2,%r14d
> > + addl %r8d,%eax
> > + addl %r15d,%r8d
> > + movl %eax,%r13d
> > + addl %r8d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r8d
> > + movl %ebx,%r12d
> > + rorl $9,%r14d
> > + xorl %eax,%r13d
> > + xorl %ecx,%r12d
> > + rorl $5,%r13d
> > + xorl %r8d,%r14d
> > + andl %eax,%r12d
> > + xorl %eax,%r13d
> > + addl 16(%rsp),%edx
> > + movl %r8d,%r15d
> > + xorl %ecx,%r12d
> > + rorl $11,%r14d
> > + xorl %r9d,%r15d
> > + addl %r12d,%edx
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %r8d,%r14d
> > + addl %r13d,%edx
> > + xorl %r9d,%edi
> > + rorl $2,%r14d
> > + addl %edx,%r11d
> > + addl %edi,%edx
> > + movl %r11d,%r13d
> > + addl %edx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%edx
> > + movl %eax,%r12d
> > + rorl $9,%r14d
> > + xorl %r11d,%r13d
> > + xorl %ebx,%r12d
> > + rorl $5,%r13d
> > + xorl %edx,%r14d
> > + andl %r11d,%r12d
> > + xorl %r11d,%r13d
> > + addl 20(%rsp),%ecx
> > + movl %edx,%edi
> > + xorl %ebx,%r12d
> > + rorl $11,%r14d
> > + xorl %r8d,%edi
> > + addl %r12d,%ecx
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %edx,%r14d
> > + addl %r13d,%ecx
> > + xorl %r8d,%r15d
> > + rorl $2,%r14d
> > + addl %ecx,%r10d
> > + addl %r15d,%ecx
> > + movl %r10d,%r13d
> > + addl %ecx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%ecx
> > + movl %r11d,%r12d
> > + rorl $9,%r14d
> > + xorl %r10d,%r13d
> > + xorl %eax,%r12d
> > + rorl $5,%r13d
> > + xorl %ecx,%r14d
> > + andl %r10d,%r12d
> > + xorl %r10d,%r13d
> > + addl 24(%rsp),%ebx
> > + movl %ecx,%r15d
> > + xorl %eax,%r12d
> > + rorl $11,%r14d
> > + xorl %edx,%r15d
> > + addl %r12d,%ebx
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %ecx,%r14d
> > + addl %r13d,%ebx
> > + xorl %edx,%edi
> > + rorl $2,%r14d
> > + addl %ebx,%r9d
> > + addl %edi,%ebx
> > + movl %r9d,%r13d
> > + addl %ebx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%ebx
> > + movl %r10d,%r12d
> > + rorl $9,%r14d
> > + xorl %r9d,%r13d
> > + xorl %r11d,%r12d
> > + rorl $5,%r13d
> > + xorl %ebx,%r14d
> > + andl %r9d,%r12d
> > + xorl %r9d,%r13d
> > + addl 28(%rsp),%eax
> > + movl %ebx,%edi
> > + xorl %r11d,%r12d
> > + rorl $11,%r14d
> > + xorl %ecx,%edi
> > + addl %r12d,%eax
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %ebx,%r14d
> > + addl %r13d,%eax
> > + xorl %ecx,%r15d
> > + rorl $2,%r14d
> > + addl %eax,%r8d
> > + addl %r15d,%eax
> > + movl %r8d,%r13d
> > + addl %eax,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%eax
> > + movl %r9d,%r12d
> > + rorl $9,%r14d
> > + xorl %r8d,%r13d
> > + xorl %r10d,%r12d
> > + rorl $5,%r13d
> > + xorl %eax,%r14d
> > + andl %r8d,%r12d
> > + xorl %r8d,%r13d
> > + addl 32(%rsp),%r11d
> > + movl %eax,%r15d
> > + xorl %r10d,%r12d
> > + rorl $11,%r14d
> > + xorl %ebx,%r15d
> > + addl %r12d,%r11d
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %eax,%r14d
> > + addl %r13d,%r11d
> > + xorl %ebx,%edi
> > + rorl $2,%r14d
> > + addl %r11d,%edx
> > + addl %edi,%r11d
> > + movl %edx,%r13d
> > + addl %r11d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r11d
> > + movl %r8d,%r12d
> > + rorl $9,%r14d
> > + xorl %edx,%r13d
> > + xorl %r9d,%r12d
> > + rorl $5,%r13d
> > + xorl %r11d,%r14d
> > + andl %edx,%r12d
> > + xorl %edx,%r13d
> > + addl 36(%rsp),%r10d
> > + movl %r11d,%edi
> > + xorl %r9d,%r12d
> > + rorl $11,%r14d
> > + xorl %eax,%edi
> > + addl %r12d,%r10d
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r11d,%r14d
> > + addl %r13d,%r10d
> > + xorl %eax,%r15d
> > + rorl $2,%r14d
> > + addl %r10d,%ecx
> > + addl %r15d,%r10d
> > + movl %ecx,%r13d
> > + addl %r10d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r10d
> > + movl %edx,%r12d
> > + rorl $9,%r14d
> > + xorl %ecx,%r13d
> > + xorl %r8d,%r12d
> > + rorl $5,%r13d
> > + xorl %r10d,%r14d
> > + andl %ecx,%r12d
> > + xorl %ecx,%r13d
> > + addl 40(%rsp),%r9d
> > + movl %r10d,%r15d
> > + xorl %r8d,%r12d
> > + rorl $11,%r14d
> > + xorl %r11d,%r15d
> > + addl %r12d,%r9d
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %r10d,%r14d
> > + addl %r13d,%r9d
> > + xorl %r11d,%edi
> > + rorl $2,%r14d
> > + addl %r9d,%ebx
> > + addl %edi,%r9d
> > + movl %ebx,%r13d
> > + addl %r9d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r9d
> > + movl %ecx,%r12d
> > + rorl $9,%r14d
> > + xorl %ebx,%r13d
> > + xorl %edx,%r12d
> > + rorl $5,%r13d
> > + xorl %r9d,%r14d
> > + andl %ebx,%r12d
> > + xorl %ebx,%r13d
> > + addl 44(%rsp),%r8d
> > + movl %r9d,%edi
> > + xorl %edx,%r12d
> > + rorl $11,%r14d
> > + xorl %r10d,%edi
> > + addl %r12d,%r8d
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %r9d,%r14d
> > + addl %r13d,%r8d
> > + xorl %r10d,%r15d
> > + rorl $2,%r14d
> > + addl %r8d,%eax
> > + addl %r15d,%r8d
> > + movl %eax,%r13d
> > + addl %r8d,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%r8d
> > + movl %ebx,%r12d
> > + rorl $9,%r14d
> > + xorl %eax,%r13d
> > + xorl %ecx,%r12d
> > + rorl $5,%r13d
> > + xorl %r8d,%r14d
> > + andl %eax,%r12d
> > + xorl %eax,%r13d
> > + addl 48(%rsp),%edx
> > + movl %r8d,%r15d
> > + xorl %ecx,%r12d
> > + rorl $11,%r14d
> > + xorl %r9d,%r15d
> > + addl %r12d,%edx
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %r8d,%r14d
> > + addl %r13d,%edx
> > + xorl %r9d,%edi
> > + rorl $2,%r14d
> > + addl %edx,%r11d
> > + addl %edi,%edx
> > + movl %r11d,%r13d
> > + addl %edx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%edx
> > + movl %eax,%r12d
> > + rorl $9,%r14d
> > + xorl %r11d,%r13d
> > + xorl %ebx,%r12d
> > + rorl $5,%r13d
> > + xorl %edx,%r14d
> > + andl %r11d,%r12d
> > + xorl %r11d,%r13d
> > + addl 52(%rsp),%ecx
> > + movl %edx,%edi
> > + xorl %ebx,%r12d
> > + rorl $11,%r14d
> > + xorl %r8d,%edi
> > + addl %r12d,%ecx
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %edx,%r14d
> > + addl %r13d,%ecx
> > + xorl %r8d,%r15d
> > + rorl $2,%r14d
> > + addl %ecx,%r10d
> > + addl %r15d,%ecx
> > + movl %r10d,%r13d
> > + addl %ecx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%ecx
> > + movl %r11d,%r12d
> > + rorl $9,%r14d
> > + xorl %r10d,%r13d
> > + xorl %eax,%r12d
> > + rorl $5,%r13d
> > + xorl %ecx,%r14d
> > + andl %r10d,%r12d
> > + xorl %r10d,%r13d
> > + addl 56(%rsp),%ebx
> > + movl %ecx,%r15d
> > + xorl %eax,%r12d
> > + rorl $11,%r14d
> > + xorl %edx,%r15d
> > + addl %r12d,%ebx
> > + rorl $6,%r13d
> > + andl %r15d,%edi
> > + xorl %ecx,%r14d
> > + addl %r13d,%ebx
> > + xorl %edx,%edi
> > + rorl $2,%r14d
> > + addl %ebx,%r9d
> > + addl %edi,%ebx
> > + movl %r9d,%r13d
> > + addl %ebx,%r14d
> > + rorl $14,%r13d
> > + movl %r14d,%ebx
> > + movl %r10d,%r12d
> > + rorl $9,%r14d
> > + xorl %r9d,%r13d
> > + xorl %r11d,%r12d
> > + rorl $5,%r13d
> > + xorl %ebx,%r14d
> > + andl %r9d,%r12d
> > + xorl %r9d,%r13d
> > + addl 60(%rsp),%eax
> > + movl %ebx,%edi
> > + xorl %r11d,%r12d
> > + rorl $11,%r14d
> > + xorl %ecx,%edi
> > + addl %r12d,%eax
> > + rorl $6,%r13d
> > + andl %edi,%r15d
> > + xorl %ebx,%r14d
> > + addl %r13d,%eax
> > + xorl %ecx,%r15d
> > + rorl $2,%r14d
> > + addl %eax,%r8d
> > + addl %r15d,%eax
> > + movl %r8d,%r13d
> > + addl %eax,%r14d
> > + movq 64+0(%rsp),%rdi
> > + movl %r14d,%eax
> > +
> > + addl 0(%rdi),%eax
> > + leaq 64(%rsi),%rsi
> > + addl 4(%rdi),%ebx
> > + addl 8(%rdi),%ecx
> > + addl 12(%rdi),%edx
> > + addl 16(%rdi),%r8d
> > + addl 20(%rdi),%r9d
> > + addl 24(%rdi),%r10d
> > + addl 28(%rdi),%r11d
> > +
> > + cmpq 64+16(%rsp),%rsi
> > +
> > + movl %eax,0(%rdi)
> > + movl %ebx,4(%rdi)
> > + movl %ecx,8(%rdi)
> > + movl %edx,12(%rdi)
> > + movl %r8d,16(%rdi)
> > + movl %r9d,20(%rdi)
> > + movl %r10d,24(%rdi)
> > + movl %r11d,28(%rdi)
> > + jb .Lloop_ssse3
> > +
> > + movq 88(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -48(%rsi),%r15
> > +.cfi_restore %r15
> > + movq -40(%rsi),%r14
> > +.cfi_restore %r14
> > + movq -32(%rsi),%r13
> > +.cfi_restore %r13
> > + movq -24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq -16(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue_ssse3:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size
> sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3
> > diff --git
> a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> > new file mode 100644
> > index 0000000000..11e67e5ba1
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/sha/sha512-x86_64.S
> > @@ -0,0 +1,1811 @@
> > +# 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
> > +
> > +.text
> > +
> > +
> > +.globl sha512_block_data_order
> > +.type sha512_block_data_order,@function
> > +.align 16
> > +sha512_block_data_order:
> > +.cfi_startproc
> > + movq %rsp,%rax
> > +.cfi_def_cfa_register %rax
> > + pushq %rbx
> > +.cfi_offset %rbx,-16
> > + pushq %rbp
> > +.cfi_offset %rbp,-24
> > + pushq %r12
> > +.cfi_offset %r12,-32
> > + pushq %r13
> > +.cfi_offset %r13,-40
> > + pushq %r14
> > +.cfi_offset %r14,-48
> > + pushq %r15
> > +.cfi_offset %r15,-56
> > + shlq $4,%rdx
> > + subq $128+32,%rsp
> > + leaq (%rsi,%rdx,8),%rdx
> > + andq $-64,%rsp
> > + movq %rdi,128+0(%rsp)
> > + movq %rsi,128+8(%rsp)
> > + movq %rdx,128+16(%rsp)
> > + movq %rax,152(%rsp)
> > +.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
> > +.Lprologue:
> > +
> > + movq 0(%rdi),%rax
> > + movq 8(%rdi),%rbx
> > + movq 16(%rdi),%rcx
> > + movq 24(%rdi),%rdx
> > + movq 32(%rdi),%r8
> > + movq 40(%rdi),%r9
> > + movq 48(%rdi),%r10
> > + movq 56(%rdi),%r11
> > + jmp .Lloop
> > +
> > +.align 16
> > +.Lloop:
> > + movq %rbx,%rdi
> > + leaq K512(%rip),%rbp
> > + xorq %rcx,%rdi
> > + movq 0(%rsi),%r12
> > + movq %r8,%r13
> > + movq %rax,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r9,%r15
> > +
> > + xorq %r8,%r13
> > + rorq $5,%r14
> > + xorq %r10,%r15
> > +
> > + movq %r12,0(%rsp)
> > + xorq %rax,%r14
> > + andq %r8,%r15
> > +
> > + rorq $4,%r13
> > + addq %r11,%r12
> > + xorq %r10,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r8,%r13
> > + addq %r15,%r12
> > +
> > + movq %rax,%r15
> > + addq (%rbp),%r12
> > + xorq %rax,%r14
> > +
> > + xorq %rbx,%r15
> > + rorq $14,%r13
> > + movq %rbx,%r11
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r11
> > + addq %r12,%rdx
> > + addq %r12,%r11
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%r11
> > + movq 8(%rsi),%r12
> > + movq %rdx,%r13
> > + movq %r11,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r8,%rdi
> > +
> > + xorq %rdx,%r13
> > + rorq $5,%r14
> > + xorq %r9,%rdi
> > +
> > + movq %r12,8(%rsp)
> > + xorq %r11,%r14
> > + andq %rdx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r10,%r12
> > + xorq %r9,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rdx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r11,%rdi
> > + addq (%rbp),%r12
> > + xorq %r11,%r14
> > +
> > + xorq %rax,%rdi
> > + rorq $14,%r13
> > + movq %rax,%r10
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r10
> > + addq %r12,%rcx
> > + addq %r12,%r10
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%r10
> > + movq 16(%rsi),%r12
> > + movq %rcx,%r13
> > + movq %r10,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rdx,%r15
> > +
> > + xorq %rcx,%r13
> > + rorq $5,%r14
> > + xorq %r8,%r15
> > +
> > + movq %r12,16(%rsp)
> > + xorq %r10,%r14
> > + andq %rcx,%r15
> > +
> > + rorq $4,%r13
> > + addq %r9,%r12
> > + xorq %r8,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rcx,%r13
> > + addq %r15,%r12
> > +
> > + movq %r10,%r15
> > + addq (%rbp),%r12
> > + xorq %r10,%r14
> > +
> > + xorq %r11,%r15
> > + rorq $14,%r13
> > + movq %r11,%r9
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r9
> > + addq %r12,%rbx
> > + addq %r12,%r9
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%r9
> > + movq 24(%rsi),%r12
> > + movq %rbx,%r13
> > + movq %r9,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rcx,%rdi
> > +
> > + xorq %rbx,%r13
> > + rorq $5,%r14
> > + xorq %rdx,%rdi
> > +
> > + movq %r12,24(%rsp)
> > + xorq %r9,%r14
> > + andq %rbx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r8,%r12
> > + xorq %rdx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rbx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r9,%rdi
> > + addq (%rbp),%r12
> > + xorq %r9,%r14
> > +
> > + xorq %r10,%rdi
> > + rorq $14,%r13
> > + movq %r10,%r8
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r8
> > + addq %r12,%rax
> > + addq %r12,%r8
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%r8
> > + movq 32(%rsi),%r12
> > + movq %rax,%r13
> > + movq %r8,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rbx,%r15
> > +
> > + xorq %rax,%r13
> > + rorq $5,%r14
> > + xorq %rcx,%r15
> > +
> > + movq %r12,32(%rsp)
> > + xorq %r8,%r14
> > + andq %rax,%r15
> > +
> > + rorq $4,%r13
> > + addq %rdx,%r12
> > + xorq %rcx,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rax,%r13
> > + addq %r15,%r12
> > +
> > + movq %r8,%r15
> > + addq (%rbp),%r12
> > + xorq %r8,%r14
> > +
> > + xorq %r9,%r15
> > + rorq $14,%r13
> > + movq %r9,%rdx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rdx
> > + addq %r12,%r11
> > + addq %r12,%rdx
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%rdx
> > + movq 40(%rsi),%r12
> > + movq %r11,%r13
> > + movq %rdx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rax,%rdi
> > +
> > + xorq %r11,%r13
> > + rorq $5,%r14
> > + xorq %rbx,%rdi
> > +
> > + movq %r12,40(%rsp)
> > + xorq %rdx,%r14
> > + andq %r11,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rcx,%r12
> > + xorq %rbx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r11,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rdx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rdx,%r14
> > +
> > + xorq %r8,%rdi
> > + rorq $14,%r13
> > + movq %r8,%rcx
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rcx
> > + addq %r12,%r10
> > + addq %r12,%rcx
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%rcx
> > + movq 48(%rsi),%r12
> > + movq %r10,%r13
> > + movq %rcx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r11,%r15
> > +
> > + xorq %r10,%r13
> > + rorq $5,%r14
> > + xorq %rax,%r15
> > +
> > + movq %r12,48(%rsp)
> > + xorq %rcx,%r14
> > + andq %r10,%r15
> > +
> > + rorq $4,%r13
> > + addq %rbx,%r12
> > + xorq %rax,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r10,%r13
> > + addq %r15,%r12
> > +
> > + movq %rcx,%r15
> > + addq (%rbp),%r12
> > + xorq %rcx,%r14
> > +
> > + xorq %rdx,%r15
> > + rorq $14,%r13
> > + movq %rdx,%rbx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rbx
> > + addq %r12,%r9
> > + addq %r12,%rbx
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%rbx
> > + movq 56(%rsi),%r12
> > + movq %r9,%r13
> > + movq %rbx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r10,%rdi
> > +
> > + xorq %r9,%r13
> > + rorq $5,%r14
> > + xorq %r11,%rdi
> > +
> > + movq %r12,56(%rsp)
> > + xorq %rbx,%r14
> > + andq %r9,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rax,%r12
> > + xorq %r11,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r9,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rbx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rbx,%r14
> > +
> > + xorq %rcx,%rdi
> > + rorq $14,%r13
> > + movq %rcx,%rax
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rax
> > + addq %r12,%r8
> > + addq %r12,%rax
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%rax
> > + movq 64(%rsi),%r12
> > + movq %r8,%r13
> > + movq %rax,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r9,%r15
> > +
> > + xorq %r8,%r13
> > + rorq $5,%r14
> > + xorq %r10,%r15
> > +
> > + movq %r12,64(%rsp)
> > + xorq %rax,%r14
> > + andq %r8,%r15
> > +
> > + rorq $4,%r13
> > + addq %r11,%r12
> > + xorq %r10,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r8,%r13
> > + addq %r15,%r12
> > +
> > + movq %rax,%r15
> > + addq (%rbp),%r12
> > + xorq %rax,%r14
> > +
> > + xorq %rbx,%r15
> > + rorq $14,%r13
> > + movq %rbx,%r11
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r11
> > + addq %r12,%rdx
> > + addq %r12,%r11
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%r11
> > + movq 72(%rsi),%r12
> > + movq %rdx,%r13
> > + movq %r11,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r8,%rdi
> > +
> > + xorq %rdx,%r13
> > + rorq $5,%r14
> > + xorq %r9,%rdi
> > +
> > + movq %r12,72(%rsp)
> > + xorq %r11,%r14
> > + andq %rdx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r10,%r12
> > + xorq %r9,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rdx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r11,%rdi
> > + addq (%rbp),%r12
> > + xorq %r11,%r14
> > +
> > + xorq %rax,%rdi
> > + rorq $14,%r13
> > + movq %rax,%r10
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r10
> > + addq %r12,%rcx
> > + addq %r12,%r10
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%r10
> > + movq 80(%rsi),%r12
> > + movq %rcx,%r13
> > + movq %r10,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rdx,%r15
> > +
> > + xorq %rcx,%r13
> > + rorq $5,%r14
> > + xorq %r8,%r15
> > +
> > + movq %r12,80(%rsp)
> > + xorq %r10,%r14
> > + andq %rcx,%r15
> > +
> > + rorq $4,%r13
> > + addq %r9,%r12
> > + xorq %r8,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rcx,%r13
> > + addq %r15,%r12
> > +
> > + movq %r10,%r15
> > + addq (%rbp),%r12
> > + xorq %r10,%r14
> > +
> > + xorq %r11,%r15
> > + rorq $14,%r13
> > + movq %r11,%r9
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r9
> > + addq %r12,%rbx
> > + addq %r12,%r9
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%r9
> > + movq 88(%rsi),%r12
> > + movq %rbx,%r13
> > + movq %r9,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rcx,%rdi
> > +
> > + xorq %rbx,%r13
> > + rorq $5,%r14
> > + xorq %rdx,%rdi
> > +
> > + movq %r12,88(%rsp)
> > + xorq %r9,%r14
> > + andq %rbx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r8,%r12
> > + xorq %rdx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rbx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r9,%rdi
> > + addq (%rbp),%r12
> > + xorq %r9,%r14
> > +
> > + xorq %r10,%rdi
> > + rorq $14,%r13
> > + movq %r10,%r8
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r8
> > + addq %r12,%rax
> > + addq %r12,%r8
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%r8
> > + movq 96(%rsi),%r12
> > + movq %rax,%r13
> > + movq %r8,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rbx,%r15
> > +
> > + xorq %rax,%r13
> > + rorq $5,%r14
> > + xorq %rcx,%r15
> > +
> > + movq %r12,96(%rsp)
> > + xorq %r8,%r14
> > + andq %rax,%r15
> > +
> > + rorq $4,%r13
> > + addq %rdx,%r12
> > + xorq %rcx,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rax,%r13
> > + addq %r15,%r12
> > +
> > + movq %r8,%r15
> > + addq (%rbp),%r12
> > + xorq %r8,%r14
> > +
> > + xorq %r9,%r15
> > + rorq $14,%r13
> > + movq %r9,%rdx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rdx
> > + addq %r12,%r11
> > + addq %r12,%rdx
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%rdx
> > + movq 104(%rsi),%r12
> > + movq %r11,%r13
> > + movq %rdx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %rax,%rdi
> > +
> > + xorq %r11,%r13
> > + rorq $5,%r14
> > + xorq %rbx,%rdi
> > +
> > + movq %r12,104(%rsp)
> > + xorq %rdx,%r14
> > + andq %r11,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rcx,%r12
> > + xorq %rbx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r11,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rdx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rdx,%r14
> > +
> > + xorq %r8,%rdi
> > + rorq $14,%r13
> > + movq %r8,%rcx
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rcx
> > + addq %r12,%r10
> > + addq %r12,%rcx
> > +
> > + leaq 24(%rbp),%rbp
> > + addq %r14,%rcx
> > + movq 112(%rsi),%r12
> > + movq %r10,%r13
> > + movq %rcx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r11,%r15
> > +
> > + xorq %r10,%r13
> > + rorq $5,%r14
> > + xorq %rax,%r15
> > +
> > + movq %r12,112(%rsp)
> > + xorq %rcx,%r14
> > + andq %r10,%r15
> > +
> > + rorq $4,%r13
> > + addq %rbx,%r12
> > + xorq %rax,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r10,%r13
> > + addq %r15,%r12
> > +
> > + movq %rcx,%r15
> > + addq (%rbp),%r12
> > + xorq %rcx,%r14
> > +
> > + xorq %rdx,%r15
> > + rorq $14,%r13
> > + movq %rdx,%rbx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rbx
> > + addq %r12,%r9
> > + addq %r12,%rbx
> > +
> > + leaq 8(%rbp),%rbp
> > + addq %r14,%rbx
> > + movq 120(%rsi),%r12
> > + movq %r9,%r13
> > + movq %rbx,%r14
> > + bswapq %r12
> > + rorq $23,%r13
> > + movq %r10,%rdi
> > +
> > + xorq %r9,%r13
> > + rorq $5,%r14
> > + xorq %r11,%rdi
> > +
> > + movq %r12,120(%rsp)
> > + xorq %rbx,%r14
> > + andq %r9,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rax,%r12
> > + xorq %r11,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r9,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rbx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rbx,%r14
> > +
> > + xorq %rcx,%rdi
> > + rorq $14,%r13
> > + movq %rcx,%rax
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rax
> > + addq %r12,%r8
> > + addq %r12,%rax
> > +
> > + leaq 24(%rbp),%rbp
> > + jmp .Lrounds_16_xx
> > +.align 16
> > +.Lrounds_16_xx:
> > + movq 8(%rsp),%r13
> > + movq 112(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rax
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 72(%rsp),%r12
> > +
> > + addq 0(%rsp),%r12
> > + movq %r8,%r13
> > + addq %r15,%r12
> > + movq %rax,%r14
> > + rorq $23,%r13
> > + movq %r9,%r15
> > +
> > + xorq %r8,%r13
> > + rorq $5,%r14
> > + xorq %r10,%r15
> > +
> > + movq %r12,0(%rsp)
> > + xorq %rax,%r14
> > + andq %r8,%r15
> > +
> > + rorq $4,%r13
> > + addq %r11,%r12
> > + xorq %r10,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r8,%r13
> > + addq %r15,%r12
> > +
> > + movq %rax,%r15
> > + addq (%rbp),%r12
> > + xorq %rax,%r14
> > +
> > + xorq %rbx,%r15
> > + rorq $14,%r13
> > + movq %rbx,%r11
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r11
> > + addq %r12,%rdx
> > + addq %r12,%r11
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 16(%rsp),%r13
> > + movq 120(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r11
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 80(%rsp),%r12
> > +
> > + addq 8(%rsp),%r12
> > + movq %rdx,%r13
> > + addq %rdi,%r12
> > + movq %r11,%r14
> > + rorq $23,%r13
> > + movq %r8,%rdi
> > +
> > + xorq %rdx,%r13
> > + rorq $5,%r14
> > + xorq %r9,%rdi
> > +
> > + movq %r12,8(%rsp)
> > + xorq %r11,%r14
> > + andq %rdx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r10,%r12
> > + xorq %r9,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rdx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r11,%rdi
> > + addq (%rbp),%r12
> > + xorq %r11,%r14
> > +
> > + xorq %rax,%rdi
> > + rorq $14,%r13
> > + movq %rax,%r10
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r10
> > + addq %r12,%rcx
> > + addq %r12,%r10
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 24(%rsp),%r13
> > + movq 0(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r10
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 88(%rsp),%r12
> > +
> > + addq 16(%rsp),%r12
> > + movq %rcx,%r13
> > + addq %r15,%r12
> > + movq %r10,%r14
> > + rorq $23,%r13
> > + movq %rdx,%r15
> > +
> > + xorq %rcx,%r13
> > + rorq $5,%r14
> > + xorq %r8,%r15
> > +
> > + movq %r12,16(%rsp)
> > + xorq %r10,%r14
> > + andq %rcx,%r15
> > +
> > + rorq $4,%r13
> > + addq %r9,%r12
> > + xorq %r8,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rcx,%r13
> > + addq %r15,%r12
> > +
> > + movq %r10,%r15
> > + addq (%rbp),%r12
> > + xorq %r10,%r14
> > +
> > + xorq %r11,%r15
> > + rorq $14,%r13
> > + movq %r11,%r9
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r9
> > + addq %r12,%rbx
> > + addq %r12,%r9
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 32(%rsp),%r13
> > + movq 8(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r9
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 96(%rsp),%r12
> > +
> > + addq 24(%rsp),%r12
> > + movq %rbx,%r13
> > + addq %rdi,%r12
> > + movq %r9,%r14
> > + rorq $23,%r13
> > + movq %rcx,%rdi
> > +
> > + xorq %rbx,%r13
> > + rorq $5,%r14
> > + xorq %rdx,%rdi
> > +
> > + movq %r12,24(%rsp)
> > + xorq %r9,%r14
> > + andq %rbx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r8,%r12
> > + xorq %rdx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rbx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r9,%rdi
> > + addq (%rbp),%r12
> > + xorq %r9,%r14
> > +
> > + xorq %r10,%rdi
> > + rorq $14,%r13
> > + movq %r10,%r8
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r8
> > + addq %r12,%rax
> > + addq %r12,%r8
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 40(%rsp),%r13
> > + movq 16(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r8
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 104(%rsp),%r12
> > +
> > + addq 32(%rsp),%r12
> > + movq %rax,%r13
> > + addq %r15,%r12
> > + movq %r8,%r14
> > + rorq $23,%r13
> > + movq %rbx,%r15
> > +
> > + xorq %rax,%r13
> > + rorq $5,%r14
> > + xorq %rcx,%r15
> > +
> > + movq %r12,32(%rsp)
> > + xorq %r8,%r14
> > + andq %rax,%r15
> > +
> > + rorq $4,%r13
> > + addq %rdx,%r12
> > + xorq %rcx,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rax,%r13
> > + addq %r15,%r12
> > +
> > + movq %r8,%r15
> > + addq (%rbp),%r12
> > + xorq %r8,%r14
> > +
> > + xorq %r9,%r15
> > + rorq $14,%r13
> > + movq %r9,%rdx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rdx
> > + addq %r12,%r11
> > + addq %r12,%rdx
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 48(%rsp),%r13
> > + movq 24(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rdx
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 112(%rsp),%r12
> > +
> > + addq 40(%rsp),%r12
> > + movq %r11,%r13
> > + addq %rdi,%r12
> > + movq %rdx,%r14
> > + rorq $23,%r13
> > + movq %rax,%rdi
> > +
> > + xorq %r11,%r13
> > + rorq $5,%r14
> > + xorq %rbx,%rdi
> > +
> > + movq %r12,40(%rsp)
> > + xorq %rdx,%r14
> > + andq %r11,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rcx,%r12
> > + xorq %rbx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r11,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rdx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rdx,%r14
> > +
> > + xorq %r8,%rdi
> > + rorq $14,%r13
> > + movq %r8,%rcx
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rcx
> > + addq %r12,%r10
> > + addq %r12,%rcx
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 56(%rsp),%r13
> > + movq 32(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rcx
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 120(%rsp),%r12
> > +
> > + addq 48(%rsp),%r12
> > + movq %r10,%r13
> > + addq %r15,%r12
> > + movq %rcx,%r14
> > + rorq $23,%r13
> > + movq %r11,%r15
> > +
> > + xorq %r10,%r13
> > + rorq $5,%r14
> > + xorq %rax,%r15
> > +
> > + movq %r12,48(%rsp)
> > + xorq %rcx,%r14
> > + andq %r10,%r15
> > +
> > + rorq $4,%r13
> > + addq %rbx,%r12
> > + xorq %rax,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r10,%r13
> > + addq %r15,%r12
> > +
> > + movq %rcx,%r15
> > + addq (%rbp),%r12
> > + xorq %rcx,%r14
> > +
> > + xorq %rdx,%r15
> > + rorq $14,%r13
> > + movq %rdx,%rbx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rbx
> > + addq %r12,%r9
> > + addq %r12,%rbx
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 64(%rsp),%r13
> > + movq 40(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rbx
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 0(%rsp),%r12
> > +
> > + addq 56(%rsp),%r12
> > + movq %r9,%r13
> > + addq %rdi,%r12
> > + movq %rbx,%r14
> > + rorq $23,%r13
> > + movq %r10,%rdi
> > +
> > + xorq %r9,%r13
> > + rorq $5,%r14
> > + xorq %r11,%rdi
> > +
> > + movq %r12,56(%rsp)
> > + xorq %rbx,%r14
> > + andq %r9,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rax,%r12
> > + xorq %r11,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r9,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rbx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rbx,%r14
> > +
> > + xorq %rcx,%rdi
> > + rorq $14,%r13
> > + movq %rcx,%rax
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rax
> > + addq %r12,%r8
> > + addq %r12,%rax
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 72(%rsp),%r13
> > + movq 48(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rax
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 8(%rsp),%r12
> > +
> > + addq 64(%rsp),%r12
> > + movq %r8,%r13
> > + addq %r15,%r12
> > + movq %rax,%r14
> > + rorq $23,%r13
> > + movq %r9,%r15
> > +
> > + xorq %r8,%r13
> > + rorq $5,%r14
> > + xorq %r10,%r15
> > +
> > + movq %r12,64(%rsp)
> > + xorq %rax,%r14
> > + andq %r8,%r15
> > +
> > + rorq $4,%r13
> > + addq %r11,%r12
> > + xorq %r10,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r8,%r13
> > + addq %r15,%r12
> > +
> > + movq %rax,%r15
> > + addq (%rbp),%r12
> > + xorq %rax,%r14
> > +
> > + xorq %rbx,%r15
> > + rorq $14,%r13
> > + movq %rbx,%r11
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r11
> > + addq %r12,%rdx
> > + addq %r12,%r11
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 80(%rsp),%r13
> > + movq 56(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r11
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 16(%rsp),%r12
> > +
> > + addq 72(%rsp),%r12
> > + movq %rdx,%r13
> > + addq %rdi,%r12
> > + movq %r11,%r14
> > + rorq $23,%r13
> > + movq %r8,%rdi
> > +
> > + xorq %rdx,%r13
> > + rorq $5,%r14
> > + xorq %r9,%rdi
> > +
> > + movq %r12,72(%rsp)
> > + xorq %r11,%r14
> > + andq %rdx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r10,%r12
> > + xorq %r9,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rdx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r11,%rdi
> > + addq (%rbp),%r12
> > + xorq %r11,%r14
> > +
> > + xorq %rax,%rdi
> > + rorq $14,%r13
> > + movq %rax,%r10
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r10
> > + addq %r12,%rcx
> > + addq %r12,%r10
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 88(%rsp),%r13
> > + movq 64(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r10
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 24(%rsp),%r12
> > +
> > + addq 80(%rsp),%r12
> > + movq %rcx,%r13
> > + addq %r15,%r12
> > + movq %r10,%r14
> > + rorq $23,%r13
> > + movq %rdx,%r15
> > +
> > + xorq %rcx,%r13
> > + rorq $5,%r14
> > + xorq %r8,%r15
> > +
> > + movq %r12,80(%rsp)
> > + xorq %r10,%r14
> > + andq %rcx,%r15
> > +
> > + rorq $4,%r13
> > + addq %r9,%r12
> > + xorq %r8,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rcx,%r13
> > + addq %r15,%r12
> > +
> > + movq %r10,%r15
> > + addq (%rbp),%r12
> > + xorq %r10,%r14
> > +
> > + xorq %r11,%r15
> > + rorq $14,%r13
> > + movq %r11,%r9
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%r9
> > + addq %r12,%rbx
> > + addq %r12,%r9
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 96(%rsp),%r13
> > + movq 72(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r9
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 32(%rsp),%r12
> > +
> > + addq 88(%rsp),%r12
> > + movq %rbx,%r13
> > + addq %rdi,%r12
> > + movq %r9,%r14
> > + rorq $23,%r13
> > + movq %rcx,%rdi
> > +
> > + xorq %rbx,%r13
> > + rorq $5,%r14
> > + xorq %rdx,%rdi
> > +
> > + movq %r12,88(%rsp)
> > + xorq %r9,%r14
> > + andq %rbx,%rdi
> > +
> > + rorq $4,%r13
> > + addq %r8,%r12
> > + xorq %rdx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %rbx,%r13
> > + addq %rdi,%r12
> > +
> > + movq %r9,%rdi
> > + addq (%rbp),%r12
> > + xorq %r9,%r14
> > +
> > + xorq %r10,%rdi
> > + rorq $14,%r13
> > + movq %r10,%r8
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%r8
> > + addq %r12,%rax
> > + addq %r12,%r8
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 104(%rsp),%r13
> > + movq 80(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%r8
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 40(%rsp),%r12
> > +
> > + addq 96(%rsp),%r12
> > + movq %rax,%r13
> > + addq %r15,%r12
> > + movq %r8,%r14
> > + rorq $23,%r13
> > + movq %rbx,%r15
> > +
> > + xorq %rax,%r13
> > + rorq $5,%r14
> > + xorq %rcx,%r15
> > +
> > + movq %r12,96(%rsp)
> > + xorq %r8,%r14
> > + andq %rax,%r15
> > +
> > + rorq $4,%r13
> > + addq %rdx,%r12
> > + xorq %rcx,%r15
> > +
> > + rorq $6,%r14
> > + xorq %rax,%r13
> > + addq %r15,%r12
> > +
> > + movq %r8,%r15
> > + addq (%rbp),%r12
> > + xorq %r8,%r14
> > +
> > + xorq %r9,%r15
> > + rorq $14,%r13
> > + movq %r9,%rdx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rdx
> > + addq %r12,%r11
> > + addq %r12,%rdx
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 112(%rsp),%r13
> > + movq 88(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rdx
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 48(%rsp),%r12
> > +
> > + addq 104(%rsp),%r12
> > + movq %r11,%r13
> > + addq %rdi,%r12
> > + movq %rdx,%r14
> > + rorq $23,%r13
> > + movq %rax,%rdi
> > +
> > + xorq %r11,%r13
> > + rorq $5,%r14
> > + xorq %rbx,%rdi
> > +
> > + movq %r12,104(%rsp)
> > + xorq %rdx,%r14
> > + andq %r11,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rcx,%r12
> > + xorq %rbx,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r11,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rdx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rdx,%r14
> > +
> > + xorq %r8,%rdi
> > + rorq $14,%r13
> > + movq %r8,%rcx
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rcx
> > + addq %r12,%r10
> > + addq %r12,%rcx
> > +
> > + leaq 24(%rbp),%rbp
> > + movq 120(%rsp),%r13
> > + movq 96(%rsp),%r15
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rcx
> > + movq %r15,%r14
> > + rorq $42,%r15
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%r15
> > + shrq $6,%r14
> > +
> > + rorq $19,%r15
> > + xorq %r13,%r12
> > + xorq %r14,%r15
> > + addq 56(%rsp),%r12
> > +
> > + addq 112(%rsp),%r12
> > + movq %r10,%r13
> > + addq %r15,%r12
> > + movq %rcx,%r14
> > + rorq $23,%r13
> > + movq %r11,%r15
> > +
> > + xorq %r10,%r13
> > + rorq $5,%r14
> > + xorq %rax,%r15
> > +
> > + movq %r12,112(%rsp)
> > + xorq %rcx,%r14
> > + andq %r10,%r15
> > +
> > + rorq $4,%r13
> > + addq %rbx,%r12
> > + xorq %rax,%r15
> > +
> > + rorq $6,%r14
> > + xorq %r10,%r13
> > + addq %r15,%r12
> > +
> > + movq %rcx,%r15
> > + addq (%rbp),%r12
> > + xorq %rcx,%r14
> > +
> > + xorq %rdx,%r15
> > + rorq $14,%r13
> > + movq %rdx,%rbx
> > +
> > + andq %r15,%rdi
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %rdi,%rbx
> > + addq %r12,%r9
> > + addq %r12,%rbx
> > +
> > + leaq 8(%rbp),%rbp
> > + movq 0(%rsp),%r13
> > + movq 104(%rsp),%rdi
> > +
> > + movq %r13,%r12
> > + rorq $7,%r13
> > + addq %r14,%rbx
> > + movq %rdi,%r14
> > + rorq $42,%rdi
> > +
> > + xorq %r12,%r13
> > + shrq $7,%r12
> > + rorq $1,%r13
> > + xorq %r14,%rdi
> > + shrq $6,%r14
> > +
> > + rorq $19,%rdi
> > + xorq %r13,%r12
> > + xorq %r14,%rdi
> > + addq 64(%rsp),%r12
> > +
> > + addq 120(%rsp),%r12
> > + movq %r9,%r13
> > + addq %rdi,%r12
> > + movq %rbx,%r14
> > + rorq $23,%r13
> > + movq %r10,%rdi
> > +
> > + xorq %r9,%r13
> > + rorq $5,%r14
> > + xorq %r11,%rdi
> > +
> > + movq %r12,120(%rsp)
> > + xorq %rbx,%r14
> > + andq %r9,%rdi
> > +
> > + rorq $4,%r13
> > + addq %rax,%r12
> > + xorq %r11,%rdi
> > +
> > + rorq $6,%r14
> > + xorq %r9,%r13
> > + addq %rdi,%r12
> > +
> > + movq %rbx,%rdi
> > + addq (%rbp),%r12
> > + xorq %rbx,%r14
> > +
> > + xorq %rcx,%rdi
> > + rorq $14,%r13
> > + movq %rcx,%rax
> > +
> > + andq %rdi,%r15
> > + rorq $28,%r14
> > + addq %r13,%r12
> > +
> > + xorq %r15,%rax
> > + addq %r12,%r8
> > + addq %r12,%rax
> > +
> > + leaq 24(%rbp),%rbp
> > + cmpb $0,7(%rbp)
> > + jnz .Lrounds_16_xx
> > +
> > + movq 128+0(%rsp),%rdi
> > + addq %r14,%rax
> > + leaq 128(%rsi),%rsi
> > +
> > + addq 0(%rdi),%rax
> > + addq 8(%rdi),%rbx
> > + addq 16(%rdi),%rcx
> > + addq 24(%rdi),%rdx
> > + addq 32(%rdi),%r8
> > + addq 40(%rdi),%r9
> > + addq 48(%rdi),%r10
> > + addq 56(%rdi),%r11
> > +
> > + cmpq 128+16(%rsp),%rsi
> > +
> > + movq %rax,0(%rdi)
> > + movq %rbx,8(%rdi)
> > + movq %rcx,16(%rdi)
> > + movq %rdx,24(%rdi)
> > + movq %r8,32(%rdi)
> > + movq %r9,40(%rdi)
> > + movq %r10,48(%rdi)
> > + movq %r11,56(%rdi)
> > + jb .Lloop
> > +
> > + movq 152(%rsp),%rsi
> > +.cfi_def_cfa %rsi,8
> > + movq -48(%rsi),%r15
> > +.cfi_restore %r15
> > + movq -40(%rsi),%r14
> > +.cfi_restore %r14
> > + movq -32(%rsi),%r13
> > +.cfi_restore %r13
> > + movq -24(%rsi),%r12
> > +.cfi_restore %r12
> > + movq -16(%rsi),%rbp
> > +.cfi_restore %rbp
> > + movq -8(%rsi),%rbx
> > +.cfi_restore %rbx
> > + leaq (%rsi),%rsp
> > +.cfi_def_cfa_register %rsp
> > +.Lepilogue:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size sha512_block_data_order,.-sha512_block_data_order
> > +.align 64
> > +.type K512,@object
> > +K512:
> > +.quad 0x428a2f98d728ae22,0x7137449123ef65cd
> > +.quad 0x428a2f98d728ae22,0x7137449123ef65cd
> > +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
> > +.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
> > +.quad 0x3956c25bf348b538,0x59f111f1b605d019
> > +.quad 0x3956c25bf348b538,0x59f111f1b605d019
> > +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
> > +.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
> > +.quad 0xd807aa98a3030242,0x12835b0145706fbe
> > +.quad 0xd807aa98a3030242,0x12835b0145706fbe
> > +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
> > +.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
> > +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
> > +.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
> > +.quad 0x9bdc06a725c71235,0xc19bf174cf692694
> > +.quad 0x9bdc06a725c71235,0xc19bf174cf692694
> > +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
> > +.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
> > +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
> > +.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
> > +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
> > +.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
> > +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
> > +.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
> > +.quad 0x983e5152ee66dfab,0xa831c66d2db43210
> > +.quad 0x983e5152ee66dfab,0xa831c66d2db43210
> > +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
> > +.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
> > +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
> > +.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
> > +.quad 0x06ca6351e003826f,0x142929670a0e6e70
> > +.quad 0x06ca6351e003826f,0x142929670a0e6e70
> > +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
> > +.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
> > +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
> > +.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
> > +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
> > +.quad 0x650a73548baf63de,0x766a0abb3c77b2a8
> > +.quad 0x81c2c92e47edaee6,0x92722c851482353b
> > +.quad 0x81c2c92e47edaee6,0x92722c851482353b
> > +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
> > +.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
> > +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
> > +.quad 0xc24b8b70d0f89791,0xc76c51a30654be30
> > +.quad 0xd192e819d6ef5218,0xd69906245565a910
> > +.quad 0xd192e819d6ef5218,0xd69906245565a910
> > +.quad 0xf40e35855771202a,0x106aa07032bbd1b8
> > +.quad 0xf40e35855771202a,0x106aa07032bbd1b8
> > +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
> > +.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
> > +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
> > +.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
> > +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
> > +.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
> > +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
> > +.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
> > +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
> > +.quad 0x748f82ee5defb2fc,0x78a5636f43172f60
> > +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
> > +.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
> > +.quad 0x90befffa23631e28,0xa4506cebde82bde9
> > +.quad 0x90befffa23631e28,0xa4506cebde82bde9
> > +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
> > +.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
> > +.quad 0xca273eceea26619c,0xd186b8c721c0c207
> > +.quad 0xca273eceea26619c,0xd186b8c721c0c207
> > +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
> > +.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
> > +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
> > +.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
> > +.quad 0x113f9804bef90dae,0x1b710b35131c471b
> > +.quad 0x113f9804bef90dae,0x1b710b35131c471b
> > +.quad 0x28db77f523047d84,0x32caab7b40c72493
> > +.quad 0x28db77f523047d84,0x32caab7b40c72493
> > +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
> > +.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
> > +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
> > +.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
> > +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
> > +.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
> > +
> > +.quad 0x0001020304050607,0x08090a0b0c0d0e0f
> > +.quad 0x0001020304050607,0x08090a0b0c0d0e0f
> > +.byte
> >
> 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,1
> >
>
09,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83
> ,
> >
> 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,
> 1
> > 14,103,62,0
> > diff --git a/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> > b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> > new file mode 100644
> > index 0000000000..cac5f8f32c
> > --- /dev/null
> > +++ b/CryptoPkg/Library/OpensslLib/X64Gcc/crypto/x86_64cpuid.S
> > @@ -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
> > +
> > +
> > +.hidden OPENSSL_cpuid_setup
> > +.section .init
> > + call OPENSSL_cpuid_setup
> > +
> > +.hidden OPENSSL_ia32cap_P
> > +.comm OPENSSL_ia32cap_P,16,4
> > +
> > +.text
> > +
> > +.globl OPENSSL_atomic_add
> > +.type OPENSSL_atomic_add,@function
> > +.align 16
> > +OPENSSL_atomic_add:
> > +.cfi_startproc
> > + movl (%rdi),%eax
> > +.Lspin: leaq (%rsi,%rax,1),%r8
> > +.byte 0xf0
> > + cmpxchgl %r8d,(%rdi)
> > + jne .Lspin
> > + movl %r8d,%eax
> > +.byte 0x48,0x98
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
> > +
> > +.globl OPENSSL_rdtsc
> > +.type OPENSSL_rdtsc,@function
> > +.align 16
> > +OPENSSL_rdtsc:
> > +.cfi_startproc
> > + rdtsc
> > + shlq $32,%rdx
> > + orq %rdx,%rax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
> > +
> > +.globl OPENSSL_ia32_cpuid
> > +.type OPENSSL_ia32_cpuid,@function
> > +.align 16
> > +OPENSSL_ia32_cpuid:
> > +.cfi_startproc
> > + movq %rbx,%r8
> > +.cfi_register %rbx,%r8
> > +
> > + xorl %eax,%eax
> > + movq %rax,8(%rdi)
> > + cpuid
> > + movl %eax,%r11d
> > +
> > + xorl %eax,%eax
> > + cmpl $0x756e6547,%ebx
> > + setne %al
> > + movl %eax,%r9d
> > + cmpl $0x49656e69,%edx
> > + setne %al
> > + orl %eax,%r9d
> > + cmpl $0x6c65746e,%ecx
> > + setne %al
> > + orl %eax,%r9d
> > + jz .Lintel
> > +
> > + cmpl $0x68747541,%ebx
> > + setne %al
> > + movl %eax,%r10d
> > + cmpl $0x69746E65,%edx
> > + setne %al
> > + orl %eax,%r10d
> > + cmpl $0x444D4163,%ecx
> > + setne %al
> > + orl %eax,%r10d
> > + jnz .Lintel
> > +
> > +
> > + movl $0x80000000,%eax
> > + cpuid
> > + cmpl $0x80000001,%eax
> > + jb .Lintel
> > + movl %eax,%r10d
> > + movl $0x80000001,%eax
> > + cpuid
> > + orl %ecx,%r9d
> > + andl $0x00000801,%r9d
> > +
> > + cmpl $0x80000008,%r10d
> > + jb .Lintel
> > +
> > + movl $0x80000008,%eax
> > + cpuid
> > + movzbq %cl,%r10
> > + incq %r10
> > +
> > + movl $1,%eax
> > + cpuid
> > + btl $28,%edx
> > + jnc .Lgeneric
> > + shrl $16,%ebx
> > + cmpb %r10b,%bl
> > + ja .Lgeneric
> > + andl $0xefffffff,%edx
> > + jmp .Lgeneric
> > +
> > +.Lintel:
> > + cmpl $4,%r11d
> > + movl $-1,%r10d
> > + jb .Lnocacheinfo
> > +
> > + movl $4,%eax
> > + movl $0,%ecx
> > + cpuid
> > + movl %eax,%r10d
> > + shrl $14,%r10d
> > + andl $0xfff,%r10d
> > +
> > +.Lnocacheinfo:
> > + movl $1,%eax
> > + cpuid
> > + movd %eax,%xmm0
> > + andl $0xbfefffff,%edx
> > + cmpl $0,%r9d
> > + jne .Lnotintel
> > + orl $0x40000000,%edx
> > + andb $15,%ah
> > + cmpb $15,%ah
> > + jne .LnotP4
> > + orl $0x00100000,%edx
> > +.LnotP4:
> > + cmpb $6,%ah
> > + jne .Lnotintel
> > + andl $0x0fff0ff0,%eax
> > + cmpl $0x00050670,%eax
> > + je .Lknights
> > + cmpl $0x00080650,%eax
> > + jne .Lnotintel
> > +.Lknights:
> > + andl $0xfbffffff,%ecx
> > +
> > +.Lnotintel:
> > + btl $28,%edx
> > + jnc .Lgeneric
> > + andl $0xefffffff,%edx
> > + cmpl $0,%r10d
> > + je .Lgeneric
> > +
> > + orl $0x10000000,%edx
> > + shrl $16,%ebx
> > + cmpb $1,%bl
> > + ja .Lgeneric
> > + andl $0xefffffff,%edx
> > +.Lgeneric:
> > + andl $0x00000800,%r9d
> > + andl $0xfffff7ff,%ecx
> > + orl %ecx,%r9d
> > +
> > + movl %edx,%r10d
> > +
> > + cmpl $7,%r11d
> > + jb .Lno_extended_info
> > + movl $7,%eax
> > + xorl %ecx,%ecx
> > + cpuid
> > + btl $26,%r9d
> > + jc .Lnotknights
> > + andl $0xfff7ffff,%ebx
> > +.Lnotknights:
> > + movd %xmm0,%eax
> > + andl $0x0fff0ff0,%eax
> > + cmpl $0x00050650,%eax
> > + jne .Lnotskylakex
> > + andl $0xfffeffff,%ebx
> > +
> > +.Lnotskylakex:
> > + movl %ebx,8(%rdi)
> > + movl %ecx,12(%rdi)
> > +.Lno_extended_info:
> > +
> > + btl $27,%r9d
> > + jnc .Lclear_avx
> > + xorl %ecx,%ecx
> > +.byte 0x0f,0x01,0xd0
> > + andl $0xe6,%eax
> > + cmpl $0xe6,%eax
> > + je .Ldone
> > + andl $0x3fdeffff,8(%rdi)
> > +
> > +
> > +
> > +
> > + andl $6,%eax
> > + cmpl $6,%eax
> > + je .Ldone
> > +.Lclear_avx:
> > + movl $0xefffe7ff,%eax
> > + andl %eax,%r9d
> > + movl $0x3fdeffdf,%eax
> > + andl %eax,8(%rdi)
> > +.Ldone:
> > + shlq $32,%r9
> > + movl %r10d,%eax
> > + movq %r8,%rbx
> > +.cfi_restore %rbx
> > + orq %r9,%rax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
> > +
> > +.globl OPENSSL_cleanse
> > +.type OPENSSL_cleanse,@function
> > +.align 16
> > +OPENSSL_cleanse:
> > +.cfi_startproc
> > + xorq %rax,%rax
> > + cmpq $15,%rsi
> > + jae .Lot
> > + cmpq $0,%rsi
> > + je .Lret
> > +.Little:
> > + movb %al,(%rdi)
> > + subq $1,%rsi
> > + leaq 1(%rdi),%rdi
> > + jnz .Little
> > +.Lret:
> > + .byte 0xf3,0xc3
> > +.align 16
> > +.Lot:
> > + testq $7,%rdi
> > + jz .Laligned
> > + movb %al,(%rdi)
> > + leaq -1(%rsi),%rsi
> > + leaq 1(%rdi),%rdi
> > + jmp .Lot
> > +.Laligned:
> > + movq %rax,(%rdi)
> > + leaq -8(%rsi),%rsi
> > + testq $-8,%rsi
> > + leaq 8(%rdi),%rdi
> > + jnz .Laligned
> > + cmpq $0,%rsi
> > + jne .Little
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_cleanse,.-OPENSSL_cleanse
> > +
> > +.globl CRYPTO_memcmp
> > +.type CRYPTO_memcmp,@function
> > +.align 16
> > +CRYPTO_memcmp:
> > +.cfi_startproc
> > + xorq %rax,%rax
> > + xorq %r10,%r10
> > + cmpq $0,%rdx
> > + je .Lno_data
> > + cmpq $16,%rdx
> > + jne .Loop_cmp
> > + movq (%rdi),%r10
> > + movq 8(%rdi),%r11
> > + movq $1,%rdx
> > + xorq (%rsi),%r10
> > + xorq 8(%rsi),%r11
> > + orq %r11,%r10
> > + cmovnzq %rdx,%rax
> > + .byte 0xf3,0xc3
> > +
> > +.align 16
> > +.Loop_cmp:
> > + movb (%rdi),%r10b
> > + leaq 1(%rdi),%rdi
> > + xorb (%rsi),%r10b
> > + leaq 1(%rsi),%rsi
> > + orb %r10b,%al
> > + decq %rdx
> > + jnz .Loop_cmp
> > + negq %rax
> > + shrq $63,%rax
> > +.Lno_data:
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size CRYPTO_memcmp,.-CRYPTO_memcmp
> > +.globl OPENSSL_wipe_cpu
> > +.type OPENSSL_wipe_cpu,@function
> > +.align 16
> > +OPENSSL_wipe_cpu:
> > +.cfi_startproc
> > + pxor %xmm0,%xmm0
> > + pxor %xmm1,%xmm1
> > + pxor %xmm2,%xmm2
> > + pxor %xmm3,%xmm3
> > + pxor %xmm4,%xmm4
> > + pxor %xmm5,%xmm5
> > + pxor %xmm6,%xmm6
> > + pxor %xmm7,%xmm7
> > + pxor %xmm8,%xmm8
> > + pxor %xmm9,%xmm9
> > + pxor %xmm10,%xmm10
> > + pxor %xmm11,%xmm11
> > + pxor %xmm12,%xmm12
> > + pxor %xmm13,%xmm13
> > + pxor %xmm14,%xmm14
> > + pxor %xmm15,%xmm15
> > + xorq %rcx,%rcx
> > + xorq %rdx,%rdx
> > + xorq %rsi,%rsi
> > + xorq %rdi,%rdi
> > + xorq %r8,%r8
> > + xorq %r9,%r9
> > + xorq %r10,%r10
> > + xorq %r11,%r11
> > + leaq 8(%rsp),%rax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
> > +.globl OPENSSL_instrument_bus
> > +.type OPENSSL_instrument_bus,@function
> > +.align 16
> > +OPENSSL_instrument_bus:
> > +.cfi_startproc
> > + movq %rdi,%r10
> > + movq %rsi,%rcx
> > + movq %rsi,%r11
> > +
> > + rdtsc
> > + movl %eax,%r8d
> > + movl $0,%r9d
> > + clflush (%r10)
> > +.byte 0xf0
> > + addl %r9d,(%r10)
> > + jmp .Loop
> > +.align 16
> > +.Loop: rdtsc
> > + movl %eax,%edx
> > + subl %r8d,%eax
> > + movl %edx,%r8d
> > + movl %eax,%r9d
> > + clflush (%r10)
> > +.byte 0xf0
> > + addl %eax,(%r10)
> > + leaq 4(%r10),%r10
> > + subq $1,%rcx
> > + jnz .Loop
> > +
> > + movq %r11,%rax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
> > +
> > +.globl OPENSSL_instrument_bus2
> > +.type OPENSSL_instrument_bus2,@function
> > +.align 16
> > +OPENSSL_instrument_bus2:
> > +.cfi_startproc
> > + movq %rdi,%r10
> > + movq %rsi,%rcx
> > + movq %rdx,%r11
> > + movq %rcx,8(%rsp)
> > +
> > + rdtsc
> > + movl %eax,%r8d
> > + movl $0,%r9d
> > +
> > + clflush (%r10)
> > +.byte 0xf0
> > + addl %r9d,(%r10)
> > +
> > + rdtsc
> > + movl %eax,%edx
> > + subl %r8d,%eax
> > + movl %edx,%r8d
> > + movl %eax,%r9d
> > +.Loop2:
> > + clflush (%r10)
> > +.byte 0xf0
> > + addl %eax,(%r10)
> > +
> > + subq $1,%r11
> > + jz .Ldone2
> > +
> > + rdtsc
> > + movl %eax,%edx
> > + subl %r8d,%eax
> > + movl %edx,%r8d
> > + cmpl %r9d,%eax
> > + movl %eax,%r9d
> > + movl $0,%edx
> > + setne %dl
> > + subq %rdx,%rcx
> > + leaq (%r10,%rdx,4),%r10
> > + jnz .Loop2
> > +
> > +.Ldone2:
> > + movq 8(%rsp),%rax
> > + subq %rcx,%rax
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
> > +.globl OPENSSL_ia32_rdrand_bytes
> > +.type OPENSSL_ia32_rdrand_bytes,@function
> > +.align 16
> > +OPENSSL_ia32_rdrand_bytes:
> > +.cfi_startproc
> > + xorq %rax,%rax
> > + cmpq $0,%rsi
> > + je .Ldone_rdrand_bytes
> > +
> > + movq $8,%r11
> > +.Loop_rdrand_bytes:
> > +.byte 73,15,199,242
> > + jc .Lbreak_rdrand_bytes
> > + decq %r11
> > + jnz .Loop_rdrand_bytes
> > + jmp .Ldone_rdrand_bytes
> > +
> > +.align 16
> > +.Lbreak_rdrand_bytes:
> > + cmpq $8,%rsi
> > + jb .Ltail_rdrand_bytes
> > + movq %r10,(%rdi)
> > + leaq 8(%rdi),%rdi
> > + addq $8,%rax
> > + subq $8,%rsi
> > + jz .Ldone_rdrand_bytes
> > + movq $8,%r11
> > + jmp .Loop_rdrand_bytes
> > +
> > +.align 16
> > +.Ltail_rdrand_bytes:
> > + movb %r10b,(%rdi)
> > + leaq 1(%rdi),%rdi
> > + incq %rax
> > + shrq $8,%r10
> > + decq %rsi
> > + jnz .Ltail_rdrand_bytes
> > +
> > +.Ldone_rdrand_bytes:
> > + xorq %r10,%r10
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes
> > +.globl OPENSSL_ia32_rdseed_bytes
> > +.type OPENSSL_ia32_rdseed_bytes,@function
> > +.align 16
> > +OPENSSL_ia32_rdseed_bytes:
> > +.cfi_startproc
> > + xorq %rax,%rax
> > + cmpq $0,%rsi
> > + je .Ldone_rdseed_bytes
> > +
> > + movq $8,%r11
> > +.Loop_rdseed_bytes:
> > +.byte 73,15,199,250
> > + jc .Lbreak_rdseed_bytes
> > + decq %r11
> > + jnz .Loop_rdseed_bytes
> > + jmp .Ldone_rdseed_bytes
> > +
> > +.align 16
> > +.Lbreak_rdseed_bytes:
> > + cmpq $8,%rsi
> > + jb .Ltail_rdseed_bytes
> > + movq %r10,(%rdi)
> > + leaq 8(%rdi),%rdi
> > + addq $8,%rax
> > + subq $8,%rsi
> > + jz .Ldone_rdseed_bytes
> > + movq $8,%r11
> > + jmp .Loop_rdseed_bytes
> > +
> > +.align 16
> > +.Ltail_rdseed_bytes:
> > + movb %r10b,(%rdi)
> > + leaq 1(%rdi),%rdi
> > + incq %rax
> > + shrq $8,%r10
> > + decq %rsi
> > + jnz .Ltail_rdseed_bytes
> > +
> > +.Ldone_rdseed_bytes:
> > + xorq %r10,%r10
> > + .byte 0xf3,0xc3
> > +.cfi_endproc
> > +.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes
> > --
> > 2.32.0.windows.1
>
>
>
>
>
prev parent reply other threads:[~2021-07-26 10:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20210720220646.659-1-christopher.zurcher@outlook.com>
2021-07-20 22:06 ` [PATCH v7 1/3] BaseTools: Remove COMMON section from the GCC discard list Christopher Zurcher
2021-07-21 1:11 ` 回复: " gaoliming
2021-07-21 1:14 ` [edk2-devel] " Christopher Zurcher
2021-07-21 1:46 ` 回复: " gaoliming
2021-07-21 11:44 ` [edk2-devel] " Yao, Jiewen
2021-08-04 12:26 ` Ard Biesheuvel
2021-08-05 5:04 ` 回复: " gaoliming
2021-08-06 20:01 ` Christopher Zurcher
2021-07-20 22:06 ` [PATCH v7 2/3] CryptoPkg/OpensslLib: Add native instruction support for X64 Christopher Zurcher
2021-07-21 11:44 ` Yao, Jiewen
2021-07-20 22:06 ` [PATCH v7 3/3] CryptoPkg/OpensslLib: Commit the auto-generated assembly files " Christopher Zurcher
2021-07-21 11:44 ` Yao, Jiewen
2021-07-26 10:08 ` gaoliming [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='009701d78206$3f5ad110$be107330$@byosoft.com.cn' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox