--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl\r
+;\r
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global aesni_multi_cbc_encrypt\r
+\r
+ALIGN 32\r
+aesni_multi_cbc_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_multi_cbc_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[64+rsp],xmm10\r
+ movaps XMMWORD[80+rsp],xmm11\r
+ movaps XMMWORD[96+rsp],xmm12\r
+ movaps XMMWORD[(-104)+rax],xmm13\r
+ movaps XMMWORD[(-88)+rax],xmm14\r
+ movaps XMMWORD[(-72)+rax],xmm15\r
+\r
+\r
+\r
+\r
+\r
+\r
+ sub rsp,48\r
+ and rsp,-64\r
+ mov QWORD[16+rsp],rax\r
+\r
+\r
+$L$enc4x_body:\r
+ movdqu xmm12,XMMWORD[rsi]\r
+ lea rsi,[120+rsi]\r
+ lea rdi,[80+rdi]\r
+\r
+$L$enc4x_loop_grande:\r
+ mov DWORD[24+rsp],edx\r
+ xor edx,edx\r
+ mov ecx,DWORD[((-64))+rdi]\r
+ mov r8,QWORD[((-80))+rdi]\r
+ cmp ecx,edx\r
+ mov r12,QWORD[((-72))+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm2,XMMWORD[((-56))+rdi]\r
+ mov DWORD[32+rsp],ecx\r
+ cmovle r8,rsp\r
+ mov ecx,DWORD[((-24))+rdi]\r
+ mov r9,QWORD[((-40))+rdi]\r
+ cmp ecx,edx\r
+ mov r13,QWORD[((-32))+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm3,XMMWORD[((-16))+rdi]\r
+ mov DWORD[36+rsp],ecx\r
+ cmovle r9,rsp\r
+ mov ecx,DWORD[16+rdi]\r
+ mov r10,QWORD[rdi]\r
+ cmp ecx,edx\r
+ mov r14,QWORD[8+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm4,XMMWORD[24+rdi]\r
+ mov DWORD[40+rsp],ecx\r
+ cmovle r10,rsp\r
+ mov ecx,DWORD[56+rdi]\r
+ mov r11,QWORD[40+rdi]\r
+ cmp ecx,edx\r
+ mov r15,QWORD[48+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm5,XMMWORD[64+rdi]\r
+ mov DWORD[44+rsp],ecx\r
+ cmovle r11,rsp\r
+ test edx,edx\r
+ jz NEAR $L$enc4x_done\r
+\r
+ movups xmm1,XMMWORD[((16-120))+rsi]\r
+ pxor xmm2,xmm12\r
+ movups xmm0,XMMWORD[((32-120))+rsi]\r
+ pxor xmm3,xmm12\r
+ mov eax,DWORD[((240-120))+rsi]\r
+ pxor xmm4,xmm12\r
+ movdqu xmm6,XMMWORD[r8]\r
+ pxor xmm5,xmm12\r
+ movdqu xmm7,XMMWORD[r9]\r
+ pxor xmm2,xmm6\r
+ movdqu xmm8,XMMWORD[r10]\r
+ pxor xmm3,xmm7\r
+ movdqu xmm9,XMMWORD[r11]\r
+ pxor xmm4,xmm8\r
+ pxor xmm5,xmm9\r
+ movdqa xmm10,XMMWORD[32+rsp]\r
+ xor rbx,rbx\r
+ jmp NEAR $L$oop_enc4x\r
+\r
+ALIGN 32\r
+$L$oop_enc4x:\r
+ add rbx,16\r
+ lea rbp,[16+rsp]\r
+ mov ecx,1\r
+ sub rbp,rbx\r
+\r
+DB 102,15,56,220,209\r
+ prefetcht0 [31+rbx*1+r8]\r
+ prefetcht0 [31+rbx*1+r9]\r
+DB 102,15,56,220,217\r
+ prefetcht0 [31+rbx*1+r10]\r
+ prefetcht0 [31+rbx*1+r10]\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((48-120))+rsi]\r
+ cmp ecx,DWORD[32+rsp]\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+ cmovge r8,rbp\r
+ cmovg r12,rbp\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((-56))+rsi]\r
+ cmp ecx,DWORD[36+rsp]\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+ cmovge r9,rbp\r
+ cmovg r13,rbp\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((-40))+rsi]\r
+ cmp ecx,DWORD[40+rsp]\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+ cmovge r10,rbp\r
+ cmovg r14,rbp\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((-24))+rsi]\r
+ cmp ecx,DWORD[44+rsp]\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+ cmovge r11,rbp\r
+ cmovg r15,rbp\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((-8))+rsi]\r
+ movdqa xmm11,xmm10\r
+DB 102,15,56,220,208\r
+ prefetcht0 [15+rbx*1+r12]\r
+ prefetcht0 [15+rbx*1+r13]\r
+DB 102,15,56,220,216\r
+ prefetcht0 [15+rbx*1+r14]\r
+ prefetcht0 [15+rbx*1+r15]\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((128-120))+rsi]\r
+ pxor xmm12,xmm12\r
+\r
+DB 102,15,56,220,209\r
+ pcmpgtd xmm11,xmm12\r
+ movdqu xmm12,XMMWORD[((-120))+rsi]\r
+DB 102,15,56,220,217\r
+ paddd xmm10,xmm11\r
+ movdqa XMMWORD[32+rsp],xmm10\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((144-120))+rsi]\r
+\r
+ cmp eax,11\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((160-120))+rsi]\r
+\r
+ jb NEAR $L$enc4x_tail\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((176-120))+rsi]\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((192-120))+rsi]\r
+\r
+ je NEAR $L$enc4x_tail\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[((208-120))+rsi]\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((224-120))+rsi]\r
+ jmp NEAR $L$enc4x_tail\r
+\r
+ALIGN 32\r
+$L$enc4x_tail:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movdqu xmm6,XMMWORD[rbx*1+r8]\r
+ movdqu xmm1,XMMWORD[((16-120))+rsi]\r
+\r
+DB 102,15,56,221,208\r
+ movdqu xmm7,XMMWORD[rbx*1+r9]\r
+ pxor xmm6,xmm12\r
+DB 102,15,56,221,216\r
+ movdqu xmm8,XMMWORD[rbx*1+r10]\r
+ pxor xmm7,xmm12\r
+DB 102,15,56,221,224\r
+ movdqu xmm9,XMMWORD[rbx*1+r11]\r
+ pxor xmm8,xmm12\r
+DB 102,15,56,221,232\r
+ movdqu xmm0,XMMWORD[((32-120))+rsi]\r
+ pxor xmm9,xmm12\r
+\r
+ movups XMMWORD[(-16)+rbx*1+r12],xmm2\r
+ pxor xmm2,xmm6\r
+ movups XMMWORD[(-16)+rbx*1+r13],xmm3\r
+ pxor xmm3,xmm7\r
+ movups XMMWORD[(-16)+rbx*1+r14],xmm4\r
+ pxor xmm4,xmm8\r
+ movups XMMWORD[(-16)+rbx*1+r15],xmm5\r
+ pxor xmm5,xmm9\r
+\r
+ dec edx\r
+ jnz NEAR $L$oop_enc4x\r
+\r
+ mov rax,QWORD[16+rsp]\r
+\r
+ mov edx,DWORD[24+rsp]\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ lea rdi,[160+rdi]\r
+ dec edx\r
+ jnz NEAR $L$enc4x_loop_grande\r
+\r
+$L$enc4x_done:\r
+ movaps xmm6,XMMWORD[((-216))+rax]\r
+ movaps xmm7,XMMWORD[((-200))+rax]\r
+ movaps xmm8,XMMWORD[((-184))+rax]\r
+ movaps xmm9,XMMWORD[((-168))+rax]\r
+ movaps xmm10,XMMWORD[((-152))+rax]\r
+ movaps xmm11,XMMWORD[((-136))+rax]\r
+ movaps xmm12,XMMWORD[((-120))+rax]\r
+\r
+\r
+\r
+ mov r15,QWORD[((-48))+rax]\r
+\r
+ mov r14,QWORD[((-40))+rax]\r
+\r
+ mov r13,QWORD[((-32))+rax]\r
+\r
+ mov r12,QWORD[((-24))+rax]\r
+\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$enc4x_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_multi_cbc_encrypt:\r
+\r
+global aesni_multi_cbc_decrypt\r
+\r
+ALIGN 32\r
+aesni_multi_cbc_decrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_multi_cbc_decrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[64+rsp],xmm10\r
+ movaps XMMWORD[80+rsp],xmm11\r
+ movaps XMMWORD[96+rsp],xmm12\r
+ movaps XMMWORD[(-104)+rax],xmm13\r
+ movaps XMMWORD[(-88)+rax],xmm14\r
+ movaps XMMWORD[(-72)+rax],xmm15\r
+\r
+\r
+\r
+\r
+\r
+\r
+ sub rsp,48\r
+ and rsp,-64\r
+ mov QWORD[16+rsp],rax\r
+\r
+\r
+$L$dec4x_body:\r
+ movdqu xmm12,XMMWORD[rsi]\r
+ lea rsi,[120+rsi]\r
+ lea rdi,[80+rdi]\r
+\r
+$L$dec4x_loop_grande:\r
+ mov DWORD[24+rsp],edx\r
+ xor edx,edx\r
+ mov ecx,DWORD[((-64))+rdi]\r
+ mov r8,QWORD[((-80))+rdi]\r
+ cmp ecx,edx\r
+ mov r12,QWORD[((-72))+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm6,XMMWORD[((-56))+rdi]\r
+ mov DWORD[32+rsp],ecx\r
+ cmovle r8,rsp\r
+ mov ecx,DWORD[((-24))+rdi]\r
+ mov r9,QWORD[((-40))+rdi]\r
+ cmp ecx,edx\r
+ mov r13,QWORD[((-32))+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm7,XMMWORD[((-16))+rdi]\r
+ mov DWORD[36+rsp],ecx\r
+ cmovle r9,rsp\r
+ mov ecx,DWORD[16+rdi]\r
+ mov r10,QWORD[rdi]\r
+ cmp ecx,edx\r
+ mov r14,QWORD[8+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm8,XMMWORD[24+rdi]\r
+ mov DWORD[40+rsp],ecx\r
+ cmovle r10,rsp\r
+ mov ecx,DWORD[56+rdi]\r
+ mov r11,QWORD[40+rdi]\r
+ cmp ecx,edx\r
+ mov r15,QWORD[48+rdi]\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ movdqu xmm9,XMMWORD[64+rdi]\r
+ mov DWORD[44+rsp],ecx\r
+ cmovle r11,rsp\r
+ test edx,edx\r
+ jz NEAR $L$dec4x_done\r
+\r
+ movups xmm1,XMMWORD[((16-120))+rsi]\r
+ movups xmm0,XMMWORD[((32-120))+rsi]\r
+ mov eax,DWORD[((240-120))+rsi]\r
+ movdqu xmm2,XMMWORD[r8]\r
+ movdqu xmm3,XMMWORD[r9]\r
+ pxor xmm2,xmm12\r
+ movdqu xmm4,XMMWORD[r10]\r
+ pxor xmm3,xmm12\r
+ movdqu xmm5,XMMWORD[r11]\r
+ pxor xmm4,xmm12\r
+ pxor xmm5,xmm12\r
+ movdqa xmm10,XMMWORD[32+rsp]\r
+ xor rbx,rbx\r
+ jmp NEAR $L$oop_dec4x\r
+\r
+ALIGN 32\r
+$L$oop_dec4x:\r
+ add rbx,16\r
+ lea rbp,[16+rsp]\r
+ mov ecx,1\r
+ sub rbp,rbx\r
+\r
+DB 102,15,56,222,209\r
+ prefetcht0 [31+rbx*1+r8]\r
+ prefetcht0 [31+rbx*1+r9]\r
+DB 102,15,56,222,217\r
+ prefetcht0 [31+rbx*1+r10]\r
+ prefetcht0 [31+rbx*1+r11]\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((48-120))+rsi]\r
+ cmp ecx,DWORD[32+rsp]\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+ cmovge r8,rbp\r
+ cmovg r12,rbp\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((-56))+rsi]\r
+ cmp ecx,DWORD[36+rsp]\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+ cmovge r9,rbp\r
+ cmovg r13,rbp\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((-40))+rsi]\r
+ cmp ecx,DWORD[40+rsp]\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+ cmovge r10,rbp\r
+ cmovg r14,rbp\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((-24))+rsi]\r
+ cmp ecx,DWORD[44+rsp]\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+ cmovge r11,rbp\r
+ cmovg r15,rbp\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((-8))+rsi]\r
+ movdqa xmm11,xmm10\r
+DB 102,15,56,222,208\r
+ prefetcht0 [15+rbx*1+r12]\r
+ prefetcht0 [15+rbx*1+r13]\r
+DB 102,15,56,222,216\r
+ prefetcht0 [15+rbx*1+r14]\r
+ prefetcht0 [15+rbx*1+r15]\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((128-120))+rsi]\r
+ pxor xmm12,xmm12\r
+\r
+DB 102,15,56,222,209\r
+ pcmpgtd xmm11,xmm12\r
+ movdqu xmm12,XMMWORD[((-120))+rsi]\r
+DB 102,15,56,222,217\r
+ paddd xmm10,xmm11\r
+ movdqa XMMWORD[32+rsp],xmm10\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((144-120))+rsi]\r
+\r
+ cmp eax,11\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((160-120))+rsi]\r
+\r
+ jb NEAR $L$dec4x_tail\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((176-120))+rsi]\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((192-120))+rsi]\r
+\r
+ je NEAR $L$dec4x_tail\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[((208-120))+rsi]\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((224-120))+rsi]\r
+ jmp NEAR $L$dec4x_tail\r
+\r
+ALIGN 32\r
+$L$dec4x_tail:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+ pxor xmm6,xmm0\r
+ pxor xmm7,xmm0\r
+DB 102,15,56,222,233\r
+ movdqu xmm1,XMMWORD[((16-120))+rsi]\r
+ pxor xmm8,xmm0\r
+ pxor xmm9,xmm0\r
+ movdqu xmm0,XMMWORD[((32-120))+rsi]\r
+\r
+DB 102,15,56,223,214\r
+DB 102,15,56,223,223\r
+ movdqu xmm6,XMMWORD[((-16))+rbx*1+r8]\r
+ movdqu xmm7,XMMWORD[((-16))+rbx*1+r9]\r
+DB 102,65,15,56,223,224\r
+DB 102,65,15,56,223,233\r
+ movdqu xmm8,XMMWORD[((-16))+rbx*1+r10]\r
+ movdqu xmm9,XMMWORD[((-16))+rbx*1+r11]\r
+\r
+ movups XMMWORD[(-16)+rbx*1+r12],xmm2\r
+ movdqu xmm2,XMMWORD[rbx*1+r8]\r
+ movups XMMWORD[(-16)+rbx*1+r13],xmm3\r
+ movdqu xmm3,XMMWORD[rbx*1+r9]\r
+ pxor xmm2,xmm12\r
+ movups XMMWORD[(-16)+rbx*1+r14],xmm4\r
+ movdqu xmm4,XMMWORD[rbx*1+r10]\r
+ pxor xmm3,xmm12\r
+ movups XMMWORD[(-16)+rbx*1+r15],xmm5\r
+ movdqu xmm5,XMMWORD[rbx*1+r11]\r
+ pxor xmm4,xmm12\r
+ pxor xmm5,xmm12\r
+\r
+ dec edx\r
+ jnz NEAR $L$oop_dec4x\r
+\r
+ mov rax,QWORD[16+rsp]\r
+\r
+ mov edx,DWORD[24+rsp]\r
+\r
+ lea rdi,[160+rdi]\r
+ dec edx\r
+ jnz NEAR $L$dec4x_loop_grande\r
+\r
+$L$dec4x_done:\r
+ movaps xmm6,XMMWORD[((-216))+rax]\r
+ movaps xmm7,XMMWORD[((-200))+rax]\r
+ movaps xmm8,XMMWORD[((-184))+rax]\r
+ movaps xmm9,XMMWORD[((-168))+rax]\r
+ movaps xmm10,XMMWORD[((-152))+rax]\r
+ movaps xmm11,XMMWORD[((-136))+rax]\r
+ movaps xmm12,XMMWORD[((-120))+rax]\r
+\r
+\r
+\r
+ mov r15,QWORD[((-48))+rax]\r
+\r
+ mov r14,QWORD[((-40))+rax]\r
+\r
+ mov r13,QWORD[((-32))+rax]\r
+\r
+ mov r12,QWORD[((-24))+rax]\r
+\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$dec4x_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_multi_cbc_decrypt:\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[16+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov r15,QWORD[((-48))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+ mov QWORD[240+r8],r15\r
+\r
+ lea rsi,[((-56-160))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase\r
+ DD $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_aesni_multi_cbc_encrypt:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue wrt ..imagebase\r
+$L$SEH_info_aesni_multi_cbc_decrypt:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl\r
+;\r
+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global aesni_cbc_sha1_enc\r
+\r
+ALIGN 32\r
+aesni_cbc_sha1_enc:\r
+\r
+\r
+ mov r10d,DWORD[((OPENSSL_ia32cap_P+0))]\r
+ mov r11,QWORD[((OPENSSL_ia32cap_P+4))]\r
+ bt r11,61\r
+ jc NEAR aesni_cbc_sha1_enc_shaext\r
+ jmp NEAR aesni_cbc_sha1_enc_ssse3\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 32\r
+aesni_cbc_sha1_enc_ssse3:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_cbc_sha1_enc_ssse3:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ mov r10,QWORD[56+rsp]\r
+\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ lea rsp,[((-264))+rsp]\r
+\r
+\r
+\r
+ movaps XMMWORD[(96+0)+rsp],xmm6\r
+ movaps XMMWORD[(96+16)+rsp],xmm7\r
+ movaps XMMWORD[(96+32)+rsp],xmm8\r
+ movaps XMMWORD[(96+48)+rsp],xmm9\r
+ movaps XMMWORD[(96+64)+rsp],xmm10\r
+ movaps XMMWORD[(96+80)+rsp],xmm11\r
+ movaps XMMWORD[(96+96)+rsp],xmm12\r
+ movaps XMMWORD[(96+112)+rsp],xmm13\r
+ movaps XMMWORD[(96+128)+rsp],xmm14\r
+ movaps XMMWORD[(96+144)+rsp],xmm15\r
+$L$prologue_ssse3:\r
+ mov r12,rdi\r
+ mov r13,rsi\r
+ mov r14,rdx\r
+ lea r15,[112+rcx]\r
+ movdqu xmm2,XMMWORD[r8]\r
+ mov QWORD[88+rsp],r8\r
+ shl r14,6\r
+ sub r13,r12\r
+ mov r8d,DWORD[((240-112))+r15]\r
+ add r14,r10\r
+\r
+ lea r11,[K_XX_XX]\r
+ mov eax,DWORD[r9]\r
+ mov ebx,DWORD[4+r9]\r
+ mov ecx,DWORD[8+r9]\r
+ mov edx,DWORD[12+r9]\r
+ mov esi,ebx\r
+ mov ebp,DWORD[16+r9]\r
+ mov edi,ecx\r
+ xor edi,edx\r
+ and esi,edi\r
+\r
+ movdqa xmm3,XMMWORD[64+r11]\r
+ movdqa xmm13,XMMWORD[r11]\r
+ movdqu xmm4,XMMWORD[r10]\r
+ movdqu xmm5,XMMWORD[16+r10]\r
+ movdqu xmm6,XMMWORD[32+r10]\r
+ movdqu xmm7,XMMWORD[48+r10]\r
+DB 102,15,56,0,227\r
+DB 102,15,56,0,235\r
+DB 102,15,56,0,243\r
+ add r10,64\r
+ paddd xmm4,xmm13\r
+DB 102,15,56,0,251\r
+ paddd xmm5,xmm13\r
+ paddd xmm6,xmm13\r
+ movdqa XMMWORD[rsp],xmm4\r
+ psubd xmm4,xmm13\r
+ movdqa XMMWORD[16+rsp],xmm5\r
+ psubd xmm5,xmm13\r
+ movdqa XMMWORD[32+rsp],xmm6\r
+ psubd xmm6,xmm13\r
+ movups xmm15,XMMWORD[((-112))+r15]\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ jmp NEAR $L$oop_ssse3\r
+ALIGN 32\r
+$L$oop_ssse3:\r
+ ror ebx,2\r
+ movups xmm14,XMMWORD[r12]\r
+ xorps xmm14,xmm15\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+r15]\r
+DB 102,15,56,220,208\r
+ pshufd xmm8,xmm4,238\r
+ xor esi,edx\r
+ movdqa xmm12,xmm7\r
+ paddd xmm13,xmm7\r
+ mov edi,eax\r
+ add ebp,DWORD[rsp]\r
+ punpcklqdq xmm8,xmm5\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ add ebp,esi\r
+ psrldq xmm12,4\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ pxor xmm8,xmm4\r
+ add ebp,eax\r
+ ror eax,7\r
+ pxor xmm12,xmm6\r
+ xor edi,ecx\r
+ mov esi,ebp\r
+ add edx,DWORD[4+rsp]\r
+ pxor xmm8,xmm12\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ movdqa XMMWORD[48+rsp],xmm13\r
+ add edx,edi\r
+ movups xmm0,XMMWORD[((-64))+r15]\r
+DB 102,15,56,220,209\r
+ and esi,eax\r
+ movdqa xmm3,xmm8\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ ror ebp,7\r
+ movdqa xmm12,xmm8\r
+ xor esi,ebx\r
+ pslldq xmm3,12\r
+ paddd xmm8,xmm8\r
+ mov edi,edx\r
+ add ecx,DWORD[8+rsp]\r
+ psrld xmm12,31\r
+ xor ebp,eax\r
+ rol edx,5\r
+ add ecx,esi\r
+ movdqa xmm13,xmm3\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ psrld xmm3,30\r
+ add ecx,edx\r
+ ror edx,7\r
+ por xmm8,xmm12\r
+ xor edi,eax\r
+ mov esi,ecx\r
+ add ebx,DWORD[12+rsp]\r
+ movups xmm1,XMMWORD[((-48))+r15]\r
+DB 102,15,56,220,208\r
+ pslld xmm13,2\r
+ pxor xmm8,xmm3\r
+ xor edx,ebp\r
+ movdqa xmm3,XMMWORD[r11]\r
+ rol ecx,5\r
+ add ebx,edi\r
+ and esi,edx\r
+ pxor xmm8,xmm13\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ pshufd xmm9,xmm5,238\r
+ xor esi,ebp\r
+ movdqa xmm13,xmm8\r
+ paddd xmm3,xmm8\r
+ mov edi,ebx\r
+ add eax,DWORD[16+rsp]\r
+ punpcklqdq xmm9,xmm6\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ add eax,esi\r
+ psrldq xmm13,4\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ pxor xmm9,xmm5\r
+ add eax,ebx\r
+ ror ebx,7\r
+ movups xmm0,XMMWORD[((-32))+r15]\r
+DB 102,15,56,220,209\r
+ pxor xmm13,xmm7\r
+ xor edi,edx\r
+ mov esi,eax\r
+ add ebp,DWORD[20+rsp]\r
+ pxor xmm9,xmm13\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ movdqa XMMWORD[rsp],xmm3\r
+ add ebp,edi\r
+ and esi,ebx\r
+ movdqa xmm12,xmm9\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ ror eax,7\r
+ movdqa xmm13,xmm9\r
+ xor esi,ecx\r
+ pslldq xmm12,12\r
+ paddd xmm9,xmm9\r
+ mov edi,ebp\r
+ add edx,DWORD[24+rsp]\r
+ psrld xmm13,31\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ add edx,esi\r
+ movups xmm1,XMMWORD[((-16))+r15]\r
+DB 102,15,56,220,208\r
+ movdqa xmm3,xmm12\r
+ and edi,eax\r
+ xor eax,ebx\r
+ psrld xmm12,30\r
+ add edx,ebp\r
+ ror ebp,7\r
+ por xmm9,xmm13\r
+ xor edi,ebx\r
+ mov esi,edx\r
+ add ecx,DWORD[28+rsp]\r
+ pslld xmm3,2\r
+ pxor xmm9,xmm12\r
+ xor ebp,eax\r
+ movdqa xmm12,XMMWORD[16+r11]\r
+ rol edx,5\r
+ add ecx,edi\r
+ and esi,ebp\r
+ pxor xmm9,xmm3\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ ror edx,7\r
+ pshufd xmm10,xmm6,238\r
+ xor esi,eax\r
+ movdqa xmm3,xmm9\r
+ paddd xmm12,xmm9\r
+ mov edi,ecx\r
+ add ebx,DWORD[32+rsp]\r
+ movups xmm0,XMMWORD[r15]\r
+DB 102,15,56,220,209\r
+ punpcklqdq xmm10,xmm7\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ add ebx,esi\r
+ psrldq xmm3,4\r
+ and edi,edx\r
+ xor edx,ebp\r
+ pxor xmm10,xmm6\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ pxor xmm3,xmm8\r
+ xor edi,ebp\r
+ mov esi,ebx\r
+ add eax,DWORD[36+rsp]\r
+ pxor xmm10,xmm3\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ movdqa XMMWORD[16+rsp],xmm12\r
+ add eax,edi\r
+ and esi,ecx\r
+ movdqa xmm13,xmm10\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ ror ebx,7\r
+ movups xmm1,XMMWORD[16+r15]\r
+DB 102,15,56,220,208\r
+ movdqa xmm3,xmm10\r
+ xor esi,edx\r
+ pslldq xmm13,12\r
+ paddd xmm10,xmm10\r
+ mov edi,eax\r
+ add ebp,DWORD[40+rsp]\r
+ psrld xmm3,31\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ add ebp,esi\r
+ movdqa xmm12,xmm13\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ psrld xmm13,30\r
+ add ebp,eax\r
+ ror eax,7\r
+ por xmm10,xmm3\r
+ xor edi,ecx\r
+ mov esi,ebp\r
+ add edx,DWORD[44+rsp]\r
+ pslld xmm12,2\r
+ pxor xmm10,xmm13\r
+ xor eax,ebx\r
+ movdqa xmm13,XMMWORD[16+r11]\r
+ rol ebp,5\r
+ add edx,edi\r
+ movups xmm0,XMMWORD[32+r15]\r
+DB 102,15,56,220,209\r
+ and esi,eax\r
+ pxor xmm10,xmm12\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ ror ebp,7\r
+ pshufd xmm11,xmm7,238\r
+ xor esi,ebx\r
+ movdqa xmm12,xmm10\r
+ paddd xmm13,xmm10\r
+ mov edi,edx\r
+ add ecx,DWORD[48+rsp]\r
+ punpcklqdq xmm11,xmm8\r
+ xor ebp,eax\r
+ rol edx,5\r
+ add ecx,esi\r
+ psrldq xmm12,4\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ pxor xmm11,xmm7\r
+ add ecx,edx\r
+ ror edx,7\r
+ pxor xmm12,xmm9\r
+ xor edi,eax\r
+ mov esi,ecx\r
+ add ebx,DWORD[52+rsp]\r
+ movups xmm1,XMMWORD[48+r15]\r
+DB 102,15,56,220,208\r
+ pxor xmm11,xmm12\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ movdqa XMMWORD[32+rsp],xmm13\r
+ add ebx,edi\r
+ and esi,edx\r
+ movdqa xmm3,xmm11\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ movdqa xmm12,xmm11\r
+ xor esi,ebp\r
+ pslldq xmm3,12\r
+ paddd xmm11,xmm11\r
+ mov edi,ebx\r
+ add eax,DWORD[56+rsp]\r
+ psrld xmm12,31\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ add eax,esi\r
+ movdqa xmm13,xmm3\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ psrld xmm3,30\r
+ add eax,ebx\r
+ ror ebx,7\r
+ cmp r8d,11\r
+ jb NEAR $L$aesenclast1\r
+ movups xmm0,XMMWORD[64+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+r15]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast1\r
+ movups xmm0,XMMWORD[96+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+r15]\r
+DB 102,15,56,220,208\r
+$L$aesenclast1:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ por xmm11,xmm12\r
+ xor edi,edx\r
+ mov esi,eax\r
+ add ebp,DWORD[60+rsp]\r
+ pslld xmm13,2\r
+ pxor xmm11,xmm3\r
+ xor ebx,ecx\r
+ movdqa xmm3,XMMWORD[16+r11]\r
+ rol eax,5\r
+ add ebp,edi\r
+ and esi,ebx\r
+ pxor xmm11,xmm13\r
+ pshufd xmm13,xmm10,238\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ ror eax,7\r
+ pxor xmm4,xmm8\r
+ xor esi,ecx\r
+ mov edi,ebp\r
+ add edx,DWORD[rsp]\r
+ punpcklqdq xmm13,xmm11\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ pxor xmm4,xmm5\r
+ add edx,esi\r
+ movups xmm14,XMMWORD[16+r12]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[r13*1+r12],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+r15]\r
+DB 102,15,56,220,208\r
+ and edi,eax\r
+ movdqa xmm12,xmm3\r
+ xor eax,ebx\r
+ paddd xmm3,xmm11\r
+ add edx,ebp\r
+ pxor xmm4,xmm13\r
+ ror ebp,7\r
+ xor edi,ebx\r
+ mov esi,edx\r
+ add ecx,DWORD[4+rsp]\r
+ movdqa xmm13,xmm4\r
+ xor ebp,eax\r
+ rol edx,5\r
+ movdqa XMMWORD[48+rsp],xmm3\r
+ add ecx,edi\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ pslld xmm4,2\r
+ add ecx,edx\r
+ ror edx,7\r
+ psrld xmm13,30\r
+ xor esi,eax\r
+ mov edi,ecx\r
+ add ebx,DWORD[8+rsp]\r
+ movups xmm0,XMMWORD[((-64))+r15]\r
+DB 102,15,56,220,209\r
+ por xmm4,xmm13\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ pshufd xmm3,xmm11,238\r
+ add ebx,esi\r
+ and edi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ add eax,DWORD[12+rsp]\r
+ xor edi,ebp\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ pxor xmm5,xmm9\r
+ add ebp,DWORD[16+rsp]\r
+ movups xmm1,XMMWORD[((-48))+r15]\r
+DB 102,15,56,220,208\r
+ xor esi,ecx\r
+ punpcklqdq xmm3,xmm4\r
+ mov edi,eax\r
+ rol eax,5\r
+ pxor xmm5,xmm6\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ movdqa xmm13,xmm12\r
+ ror ebx,7\r
+ paddd xmm12,xmm4\r
+ add ebp,eax\r
+ pxor xmm5,xmm3\r
+ add edx,DWORD[20+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ movdqa xmm3,xmm5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ movdqa XMMWORD[rsp],xmm12\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[24+rsp]\r
+ pslld xmm5,2\r
+ xor esi,eax\r
+ mov edi,edx\r
+ psrld xmm3,30\r
+ rol edx,5\r
+ add ecx,esi\r
+ movups xmm0,XMMWORD[((-32))+r15]\r
+DB 102,15,56,220,209\r
+ xor edi,eax\r
+ ror ebp,7\r
+ por xmm5,xmm3\r
+ add ecx,edx\r
+ add ebx,DWORD[28+rsp]\r
+ pshufd xmm12,xmm4,238\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ pxor xmm6,xmm10\r
+ add eax,DWORD[32+rsp]\r
+ xor esi,edx\r
+ punpcklqdq xmm12,xmm5\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ pxor xmm6,xmm7\r
+ add eax,esi\r
+ xor edi,edx\r
+ movdqa xmm3,XMMWORD[32+r11]\r
+ ror ecx,7\r
+ paddd xmm13,xmm5\r
+ add eax,ebx\r
+ pxor xmm6,xmm12\r
+ add ebp,DWORD[36+rsp]\r
+ movups xmm1,XMMWORD[((-16))+r15]\r
+DB 102,15,56,220,208\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ movdqa xmm12,xmm6\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ movdqa XMMWORD[16+rsp],xmm13\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[40+rsp]\r
+ pslld xmm6,2\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ psrld xmm12,30\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ por xmm6,xmm12\r
+ add edx,ebp\r
+ add ecx,DWORD[44+rsp]\r
+ pshufd xmm13,xmm5,238\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ movups xmm0,XMMWORD[r15]\r
+DB 102,15,56,220,209\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ pxor xmm7,xmm11\r
+ add ebx,DWORD[48+rsp]\r
+ xor esi,ebp\r
+ punpcklqdq xmm13,xmm6\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ pxor xmm7,xmm8\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ movdqa xmm12,xmm3\r
+ ror edx,7\r
+ paddd xmm3,xmm6\r
+ add ebx,ecx\r
+ pxor xmm7,xmm13\r
+ add eax,DWORD[52+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ movdqa xmm13,xmm7\r
+ add eax,edi\r
+ xor esi,edx\r
+ movdqa XMMWORD[32+rsp],xmm3\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[56+rsp]\r
+ movups xmm1,XMMWORD[16+r15]\r
+DB 102,15,56,220,208\r
+ pslld xmm7,2\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ psrld xmm13,30\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ por xmm7,xmm13\r
+ add ebp,eax\r
+ add edx,DWORD[60+rsp]\r
+ pshufd xmm3,xmm6,238\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ pxor xmm8,xmm4\r
+ add ecx,DWORD[rsp]\r
+ xor esi,eax\r
+ punpcklqdq xmm3,xmm7\r
+ mov edi,edx\r
+ rol edx,5\r
+ pxor xmm8,xmm9\r
+ add ecx,esi\r
+ movups xmm0,XMMWORD[32+r15]\r
+DB 102,15,56,220,209\r
+ xor edi,eax\r
+ movdqa xmm13,xmm12\r
+ ror ebp,7\r
+ paddd xmm12,xmm7\r
+ add ecx,edx\r
+ pxor xmm8,xmm3\r
+ add ebx,DWORD[4+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ movdqa xmm3,xmm8\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ movdqa XMMWORD[48+rsp],xmm12\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[8+rsp]\r
+ pslld xmm8,2\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ psrld xmm3,30\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ por xmm8,xmm3\r
+ add eax,ebx\r
+ add ebp,DWORD[12+rsp]\r
+ movups xmm1,XMMWORD[48+r15]\r
+DB 102,15,56,220,208\r
+ pshufd xmm12,xmm7,238\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ pxor xmm9,xmm5\r
+ add edx,DWORD[16+rsp]\r
+ xor esi,ebx\r
+ punpcklqdq xmm12,xmm8\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ pxor xmm9,xmm10\r
+ add edx,esi\r
+ xor edi,ebx\r
+ movdqa xmm3,xmm13\r
+ ror eax,7\r
+ paddd xmm13,xmm8\r
+ add edx,ebp\r
+ pxor xmm9,xmm12\r
+ add ecx,DWORD[20+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ movdqa xmm12,xmm9\r
+ add ecx,edi\r
+ cmp r8d,11\r
+ jb NEAR $L$aesenclast2\r
+ movups xmm0,XMMWORD[64+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+r15]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast2\r
+ movups xmm0,XMMWORD[96+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+r15]\r
+DB 102,15,56,220,208\r
+$L$aesenclast2:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ xor esi,eax\r
+ movdqa XMMWORD[rsp],xmm13\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[24+rsp]\r
+ pslld xmm9,2\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ psrld xmm12,30\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ por xmm9,xmm12\r
+ add ebx,ecx\r
+ add eax,DWORD[28+rsp]\r
+ pshufd xmm13,xmm8,238\r
+ ror ecx,7\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,ecx\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ pxor xmm10,xmm6\r
+ add ebp,DWORD[32+rsp]\r
+ movups xmm14,XMMWORD[32+r12]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[16+r12*1+r13],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+r15]\r
+DB 102,15,56,220,208\r
+ and esi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ punpcklqdq xmm13,xmm9\r
+ mov edi,eax\r
+ xor esi,ecx\r
+ pxor xmm10,xmm11\r
+ rol eax,5\r
+ add ebp,esi\r
+ movdqa xmm12,xmm3\r
+ xor edi,ebx\r
+ paddd xmm3,xmm9\r
+ xor ebx,ecx\r
+ pxor xmm10,xmm13\r
+ add ebp,eax\r
+ add edx,DWORD[36+rsp]\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ movdqa xmm13,xmm10\r
+ mov esi,ebp\r
+ xor edi,ebx\r
+ movdqa XMMWORD[16+rsp],xmm3\r
+ rol ebp,5\r
+ add edx,edi\r
+ movups xmm0,XMMWORD[((-64))+r15]\r
+DB 102,15,56,220,209\r
+ xor esi,eax\r
+ pslld xmm10,2\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ psrld xmm13,30\r
+ add ecx,DWORD[40+rsp]\r
+ and esi,eax\r
+ xor eax,ebx\r
+ por xmm10,xmm13\r
+ ror ebp,7\r
+ mov edi,edx\r
+ xor esi,eax\r
+ rol edx,5\r
+ pshufd xmm3,xmm9,238\r
+ add ecx,esi\r
+ xor edi,ebp\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ add ebx,DWORD[44+rsp]\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ movups xmm1,XMMWORD[((-48))+r15]\r
+DB 102,15,56,220,208\r
+ mov esi,ecx\r
+ xor edi,ebp\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ pxor xmm11,xmm7\r
+ add eax,DWORD[48+rsp]\r
+ and esi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ punpcklqdq xmm3,xmm10\r
+ mov edi,ebx\r
+ xor esi,edx\r
+ pxor xmm11,xmm4\r
+ rol ebx,5\r
+ add eax,esi\r
+ movdqa xmm13,XMMWORD[48+r11]\r
+ xor edi,ecx\r
+ paddd xmm12,xmm10\r
+ xor ecx,edx\r
+ pxor xmm11,xmm3\r
+ add eax,ebx\r
+ add ebp,DWORD[52+rsp]\r
+ movups xmm0,XMMWORD[((-32))+r15]\r
+DB 102,15,56,220,209\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ movdqa xmm3,xmm11\r
+ mov esi,eax\r
+ xor edi,ecx\r
+ movdqa XMMWORD[32+rsp],xmm12\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ebx\r
+ pslld xmm11,2\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ psrld xmm3,30\r
+ add edx,DWORD[56+rsp]\r
+ and esi,ebx\r
+ xor ebx,ecx\r
+ por xmm11,xmm3\r
+ ror eax,7\r
+ mov edi,ebp\r
+ xor esi,ebx\r
+ rol ebp,5\r
+ pshufd xmm12,xmm10,238\r
+ add edx,esi\r
+ movups xmm1,XMMWORD[((-16))+r15]\r
+DB 102,15,56,220,208\r
+ xor edi,eax\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ add ecx,DWORD[60+rsp]\r
+ and edi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ mov esi,edx\r
+ xor edi,eax\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,ebp\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ pxor xmm4,xmm8\r
+ add ebx,DWORD[rsp]\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ movups xmm0,XMMWORD[r15]\r
+DB 102,15,56,220,209\r
+ punpcklqdq xmm12,xmm11\r
+ mov edi,ecx\r
+ xor esi,ebp\r
+ pxor xmm4,xmm5\r
+ rol ecx,5\r
+ add ebx,esi\r
+ movdqa xmm3,xmm13\r
+ xor edi,edx\r
+ paddd xmm13,xmm11\r
+ xor edx,ebp\r
+ pxor xmm4,xmm12\r
+ add ebx,ecx\r
+ add eax,DWORD[4+rsp]\r
+ and edi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ movdqa xmm12,xmm4\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ movdqa XMMWORD[48+rsp],xmm13\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,ecx\r
+ pslld xmm4,2\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ psrld xmm12,30\r
+ add ebp,DWORD[8+rsp]\r
+ movups xmm1,XMMWORD[16+r15]\r
+DB 102,15,56,220,208\r
+ and esi,ecx\r
+ xor ecx,edx\r
+ por xmm4,xmm12\r
+ ror ebx,7\r
+ mov edi,eax\r
+ xor esi,ecx\r
+ rol eax,5\r
+ pshufd xmm13,xmm11,238\r
+ add ebp,esi\r
+ xor edi,ebx\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ add edx,DWORD[12+rsp]\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ mov esi,ebp\r
+ xor edi,ebx\r
+ rol ebp,5\r
+ add edx,edi\r
+ movups xmm0,XMMWORD[32+r15]\r
+DB 102,15,56,220,209\r
+ xor esi,eax\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ pxor xmm5,xmm9\r
+ add ecx,DWORD[16+rsp]\r
+ and esi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ punpcklqdq xmm13,xmm4\r
+ mov edi,edx\r
+ xor esi,eax\r
+ pxor xmm5,xmm6\r
+ rol edx,5\r
+ add ecx,esi\r
+ movdqa xmm12,xmm3\r
+ xor edi,ebp\r
+ paddd xmm3,xmm4\r
+ xor ebp,eax\r
+ pxor xmm5,xmm13\r
+ add ecx,edx\r
+ add ebx,DWORD[20+rsp]\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ movups xmm1,XMMWORD[48+r15]\r
+DB 102,15,56,220,208\r
+ movdqa xmm13,xmm5\r
+ mov esi,ecx\r
+ xor edi,ebp\r
+ movdqa XMMWORD[rsp],xmm3\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,edx\r
+ pslld xmm5,2\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ psrld xmm13,30\r
+ add eax,DWORD[24+rsp]\r
+ and esi,edx\r
+ xor edx,ebp\r
+ por xmm5,xmm13\r
+ ror ecx,7\r
+ mov edi,ebx\r
+ xor esi,edx\r
+ rol ebx,5\r
+ pshufd xmm3,xmm4,238\r
+ add eax,esi\r
+ xor edi,ecx\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ add ebp,DWORD[28+rsp]\r
+ cmp r8d,11\r
+ jb NEAR $L$aesenclast3\r
+ movups xmm0,XMMWORD[64+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+r15]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast3\r
+ movups xmm0,XMMWORD[96+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+r15]\r
+DB 102,15,56,220,208\r
+$L$aesenclast3:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ mov esi,eax\r
+ xor edi,ecx\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ebx\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ pxor xmm6,xmm10\r
+ add edx,DWORD[32+rsp]\r
+ and esi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ punpcklqdq xmm3,xmm5\r
+ mov edi,ebp\r
+ xor esi,ebx\r
+ pxor xmm6,xmm7\r
+ rol ebp,5\r
+ add edx,esi\r
+ movups xmm14,XMMWORD[48+r12]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[32+r12*1+r13],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+r15]\r
+DB 102,15,56,220,208\r
+ movdqa xmm13,xmm12\r
+ xor edi,eax\r
+ paddd xmm12,xmm5\r
+ xor eax,ebx\r
+ pxor xmm6,xmm3\r
+ add edx,ebp\r
+ add ecx,DWORD[36+rsp]\r
+ and edi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ movdqa xmm3,xmm6\r
+ mov esi,edx\r
+ xor edi,eax\r
+ movdqa XMMWORD[16+rsp],xmm12\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,ebp\r
+ pslld xmm6,2\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ psrld xmm3,30\r
+ add ebx,DWORD[40+rsp]\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ por xmm6,xmm3\r
+ ror edx,7\r
+ movups xmm0,XMMWORD[((-64))+r15]\r
+DB 102,15,56,220,209\r
+ mov edi,ecx\r
+ xor esi,ebp\r
+ rol ecx,5\r
+ pshufd xmm12,xmm5,238\r
+ add ebx,esi\r
+ xor edi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ add eax,DWORD[44+rsp]\r
+ and edi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ add eax,ebx\r
+ pxor xmm7,xmm11\r
+ add ebp,DWORD[48+rsp]\r
+ movups xmm1,XMMWORD[((-48))+r15]\r
+DB 102,15,56,220,208\r
+ xor esi,ecx\r
+ punpcklqdq xmm12,xmm6\r
+ mov edi,eax\r
+ rol eax,5\r
+ pxor xmm7,xmm8\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ movdqa xmm3,xmm13\r
+ ror ebx,7\r
+ paddd xmm13,xmm6\r
+ add ebp,eax\r
+ pxor xmm7,xmm12\r
+ add edx,DWORD[52+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ movdqa xmm12,xmm7\r
+ add edx,edi\r
+ xor esi,ebx\r
+ movdqa XMMWORD[32+rsp],xmm13\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[56+rsp]\r
+ pslld xmm7,2\r
+ xor esi,eax\r
+ mov edi,edx\r
+ psrld xmm12,30\r
+ rol edx,5\r
+ add ecx,esi\r
+ movups xmm0,XMMWORD[((-32))+r15]\r
+DB 102,15,56,220,209\r
+ xor edi,eax\r
+ ror ebp,7\r
+ por xmm7,xmm12\r
+ add ecx,edx\r
+ add ebx,DWORD[60+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ paddd xmm3,xmm7\r
+ add eax,esi\r
+ xor edi,edx\r
+ movdqa XMMWORD[48+rsp],xmm3\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[4+rsp]\r
+ movups xmm1,XMMWORD[((-16))+r15]\r
+DB 102,15,56,220,208\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[8+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[12+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ movups xmm0,XMMWORD[r15]\r
+DB 102,15,56,220,209\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ cmp r10,r14\r
+ je NEAR $L$done_ssse3\r
+ movdqa xmm3,XMMWORD[64+r11]\r
+ movdqa xmm13,XMMWORD[r11]\r
+ movdqu xmm4,XMMWORD[r10]\r
+ movdqu xmm5,XMMWORD[16+r10]\r
+ movdqu xmm6,XMMWORD[32+r10]\r
+ movdqu xmm7,XMMWORD[48+r10]\r
+DB 102,15,56,0,227\r
+ add r10,64\r
+ add ebx,DWORD[16+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+DB 102,15,56,0,235\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ paddd xmm4,xmm13\r
+ add ebx,ecx\r
+ add eax,DWORD[20+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ movdqa XMMWORD[rsp],xmm4\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ psubd xmm4,xmm13\r
+ add eax,ebx\r
+ add ebp,DWORD[24+rsp]\r
+ movups xmm1,XMMWORD[16+r15]\r
+DB 102,15,56,220,208\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[28+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[32+rsp]\r
+ xor esi,eax\r
+ mov edi,edx\r
+DB 102,15,56,0,243\r
+ rol edx,5\r
+ add ecx,esi\r
+ movups xmm0,XMMWORD[32+r15]\r
+DB 102,15,56,220,209\r
+ xor edi,eax\r
+ ror ebp,7\r
+ paddd xmm5,xmm13\r
+ add ecx,edx\r
+ add ebx,DWORD[36+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ movdqa XMMWORD[16+rsp],xmm5\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ psubd xmm5,xmm13\r
+ add ebx,ecx\r
+ add eax,DWORD[40+rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[44+rsp]\r
+ movups xmm1,XMMWORD[48+r15]\r
+DB 102,15,56,220,208\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[48+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+DB 102,15,56,0,251\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ paddd xmm6,xmm13\r
+ add edx,ebp\r
+ add ecx,DWORD[52+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ movdqa XMMWORD[32+rsp],xmm6\r
+ rol edx,5\r
+ add ecx,edi\r
+ cmp r8d,11\r
+ jb NEAR $L$aesenclast4\r
+ movups xmm0,XMMWORD[64+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+r15]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast4\r
+ movups xmm0,XMMWORD[96+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+r15]\r
+DB 102,15,56,220,208\r
+$L$aesenclast4:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ xor esi,eax\r
+ ror ebp,7\r
+ psubd xmm6,xmm13\r
+ add ecx,edx\r
+ add ebx,DWORD[56+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[60+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ ror ecx,7\r
+ add eax,ebx\r
+ movups XMMWORD[48+r12*1+r13],xmm2\r
+ lea r12,[64+r12]\r
+\r
+ add eax,DWORD[r9]\r
+ add esi,DWORD[4+r9]\r
+ add ecx,DWORD[8+r9]\r
+ add edx,DWORD[12+r9]\r
+ mov DWORD[r9],eax\r
+ add ebp,DWORD[16+r9]\r
+ mov DWORD[4+r9],esi\r
+ mov ebx,esi\r
+ mov DWORD[8+r9],ecx\r
+ mov edi,ecx\r
+ mov DWORD[12+r9],edx\r
+ xor edi,edx\r
+ mov DWORD[16+r9],ebp\r
+ and esi,edi\r
+ jmp NEAR $L$oop_ssse3\r
+\r
+$L$done_ssse3:\r
+ add ebx,DWORD[16+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[20+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[24+rsp]\r
+ movups xmm1,XMMWORD[16+r15]\r
+DB 102,15,56,220,208\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[28+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[32+rsp]\r
+ xor esi,eax\r
+ mov edi,edx\r
+ rol edx,5\r
+ add ecx,esi\r
+ movups xmm0,XMMWORD[32+r15]\r
+DB 102,15,56,220,209\r
+ xor edi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[36+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[40+rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[44+rsp]\r
+ movups xmm1,XMMWORD[48+r15]\r
+DB 102,15,56,220,208\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[48+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[52+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ cmp r8d,11\r
+ jb NEAR $L$aesenclast5\r
+ movups xmm0,XMMWORD[64+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+r15]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast5\r
+ movups xmm0,XMMWORD[96+r15]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+r15]\r
+DB 102,15,56,220,208\r
+$L$aesenclast5:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+r15]\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[56+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[60+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ ror ecx,7\r
+ add eax,ebx\r
+ movups XMMWORD[48+r12*1+r13],xmm2\r
+ mov r8,QWORD[88+rsp]\r
+\r
+ add eax,DWORD[r9]\r
+ add esi,DWORD[4+r9]\r
+ add ecx,DWORD[8+r9]\r
+ mov DWORD[r9],eax\r
+ add edx,DWORD[12+r9]\r
+ mov DWORD[4+r9],esi\r
+ add ebp,DWORD[16+r9]\r
+ mov DWORD[8+r9],ecx\r
+ mov DWORD[12+r9],edx\r
+ mov DWORD[16+r9],ebp\r
+ movups XMMWORD[r8],xmm2\r
+ movaps xmm6,XMMWORD[((96+0))+rsp]\r
+ movaps xmm7,XMMWORD[((96+16))+rsp]\r
+ movaps xmm8,XMMWORD[((96+32))+rsp]\r
+ movaps xmm9,XMMWORD[((96+48))+rsp]\r
+ movaps xmm10,XMMWORD[((96+64))+rsp]\r
+ movaps xmm11,XMMWORD[((96+80))+rsp]\r
+ movaps xmm12,XMMWORD[((96+96))+rsp]\r
+ movaps xmm13,XMMWORD[((96+112))+rsp]\r
+ movaps xmm14,XMMWORD[((96+128))+rsp]\r
+ movaps xmm15,XMMWORD[((96+144))+rsp]\r
+ lea rsi,[264+rsp]\r
+\r
+ mov r15,QWORD[rsi]\r
+\r
+ mov r14,QWORD[8+rsi]\r
+\r
+ mov r13,QWORD[16+rsi]\r
+\r
+ mov r12,QWORD[24+rsi]\r
+\r
+ mov rbp,QWORD[32+rsi]\r
+\r
+ mov rbx,QWORD[40+rsi]\r
+\r
+ lea rsp,[48+rsi]\r
+\r
+$L$epilogue_ssse3:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_cbc_sha1_enc_ssse3:\r
+ALIGN 64\r
+K_XX_XX:\r
+ DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+ DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+ DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+ DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+\r
+DB 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115\r
+DB 116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52\r
+DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32\r
+DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111\r
+DB 114,103,62,0\r
+ALIGN 64\r
+\r
+ALIGN 32\r
+aesni_cbc_sha1_enc_shaext:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_cbc_sha1_enc_shaext:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ mov r10,QWORD[56+rsp]\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[(-8-160)+rax],xmm6\r
+ movaps XMMWORD[(-8-144)+rax],xmm7\r
+ movaps XMMWORD[(-8-128)+rax],xmm8\r
+ movaps XMMWORD[(-8-112)+rax],xmm9\r
+ movaps XMMWORD[(-8-96)+rax],xmm10\r
+ movaps XMMWORD[(-8-80)+rax],xmm11\r
+ movaps XMMWORD[(-8-64)+rax],xmm12\r
+ movaps XMMWORD[(-8-48)+rax],xmm13\r
+ movaps XMMWORD[(-8-32)+rax],xmm14\r
+ movaps XMMWORD[(-8-16)+rax],xmm15\r
+$L$prologue_shaext:\r
+ movdqu xmm8,XMMWORD[r9]\r
+ movd xmm9,DWORD[16+r9]\r
+ movdqa xmm7,XMMWORD[((K_XX_XX+80))]\r
+\r
+ mov r11d,DWORD[240+rcx]\r
+ sub rsi,rdi\r
+ movups xmm15,XMMWORD[rcx]\r
+ movups xmm2,XMMWORD[r8]\r
+ movups xmm0,XMMWORD[16+rcx]\r
+ lea rcx,[112+rcx]\r
+\r
+ pshufd xmm8,xmm8,27\r
+ pshufd xmm9,xmm9,27\r
+ jmp NEAR $L$oop_shaext\r
+\r
+ALIGN 16\r
+$L$oop_shaext:\r
+ movups xmm14,XMMWORD[rdi]\r
+ xorps xmm14,xmm15\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+rcx]\r
+DB 102,15,56,220,208\r
+ movdqu xmm3,XMMWORD[r10]\r
+ movdqa xmm12,xmm9\r
+DB 102,15,56,0,223\r
+ movdqu xmm4,XMMWORD[16+r10]\r
+ movdqa xmm11,xmm8\r
+ movups xmm0,XMMWORD[((-64))+rcx]\r
+DB 102,15,56,220,209\r
+DB 102,15,56,0,231\r
+\r
+ paddd xmm9,xmm3\r
+ movdqu xmm5,XMMWORD[32+r10]\r
+ lea r10,[64+r10]\r
+ pxor xmm3,xmm12\r
+ movups xmm1,XMMWORD[((-48))+rcx]\r
+DB 102,15,56,220,208\r
+ pxor xmm3,xmm12\r
+ movdqa xmm10,xmm8\r
+DB 102,15,56,0,239\r
+DB 69,15,58,204,193,0\r
+DB 68,15,56,200,212\r
+ movups xmm0,XMMWORD[((-32))+rcx]\r
+DB 102,15,56,220,209\r
+DB 15,56,201,220\r
+ movdqu xmm6,XMMWORD[((-16))+r10]\r
+ movdqa xmm9,xmm8\r
+DB 102,15,56,0,247\r
+ movups xmm1,XMMWORD[((-16))+rcx]\r
+DB 102,15,56,220,208\r
+DB 69,15,58,204,194,0\r
+DB 68,15,56,200,205\r
+ pxor xmm3,xmm5\r
+DB 15,56,201,229\r
+ movups xmm0,XMMWORD[rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,0\r
+DB 68,15,56,200,214\r
+ movups xmm1,XMMWORD[16+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,222\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ movups xmm0,XMMWORD[32+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,0\r
+DB 68,15,56,200,203\r
+ movups xmm1,XMMWORD[48+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,227\r
+ pxor xmm5,xmm3\r
+DB 15,56,201,243\r
+ cmp r11d,11\r
+ jb NEAR $L$aesenclast6\r
+ movups xmm0,XMMWORD[64+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+rcx]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast6\r
+ movups xmm0,XMMWORD[96+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+rcx]\r
+DB 102,15,56,220,208\r
+$L$aesenclast6:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+rcx]\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,0\r
+DB 68,15,56,200,212\r
+ movups xmm14,XMMWORD[16+rdi]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[rdi*1+rsi],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,236\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,220\r
+ movups xmm0,XMMWORD[((-64))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,1\r
+DB 68,15,56,200,205\r
+ movups xmm1,XMMWORD[((-48))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,245\r
+ pxor xmm3,xmm5\r
+DB 15,56,201,229\r
+ movups xmm0,XMMWORD[((-32))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,1\r
+DB 68,15,56,200,214\r
+ movups xmm1,XMMWORD[((-16))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,222\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ movups xmm0,XMMWORD[rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,1\r
+DB 68,15,56,200,203\r
+ movups xmm1,XMMWORD[16+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,227\r
+ pxor xmm5,xmm3\r
+DB 15,56,201,243\r
+ movups xmm0,XMMWORD[32+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,1\r
+DB 68,15,56,200,212\r
+ movups xmm1,XMMWORD[48+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,236\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,220\r
+ cmp r11d,11\r
+ jb NEAR $L$aesenclast7\r
+ movups xmm0,XMMWORD[64+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+rcx]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast7\r
+ movups xmm0,XMMWORD[96+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+rcx]\r
+DB 102,15,56,220,208\r
+$L$aesenclast7:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+rcx]\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,1\r
+DB 68,15,56,200,205\r
+ movups xmm14,XMMWORD[32+rdi]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[16+rdi*1+rsi],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,245\r
+ pxor xmm3,xmm5\r
+DB 15,56,201,229\r
+ movups xmm0,XMMWORD[((-64))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,2\r
+DB 68,15,56,200,214\r
+ movups xmm1,XMMWORD[((-48))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,222\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ movups xmm0,XMMWORD[((-32))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,2\r
+DB 68,15,56,200,203\r
+ movups xmm1,XMMWORD[((-16))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,227\r
+ pxor xmm5,xmm3\r
+DB 15,56,201,243\r
+ movups xmm0,XMMWORD[rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,2\r
+DB 68,15,56,200,212\r
+ movups xmm1,XMMWORD[16+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,236\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,220\r
+ movups xmm0,XMMWORD[32+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,2\r
+DB 68,15,56,200,205\r
+ movups xmm1,XMMWORD[48+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,245\r
+ pxor xmm3,xmm5\r
+DB 15,56,201,229\r
+ cmp r11d,11\r
+ jb NEAR $L$aesenclast8\r
+ movups xmm0,XMMWORD[64+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+rcx]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast8\r
+ movups xmm0,XMMWORD[96+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+rcx]\r
+DB 102,15,56,220,208\r
+$L$aesenclast8:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+rcx]\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,2\r
+DB 68,15,56,200,214\r
+ movups xmm14,XMMWORD[48+rdi]\r
+ xorps xmm14,xmm15\r
+ movups XMMWORD[32+rdi*1+rsi],xmm2\r
+ xorps xmm2,xmm14\r
+ movups xmm1,XMMWORD[((-80))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,222\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ movups xmm0,XMMWORD[((-64))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,3\r
+DB 68,15,56,200,203\r
+ movups xmm1,XMMWORD[((-48))+rcx]\r
+DB 102,15,56,220,208\r
+DB 15,56,202,227\r
+ pxor xmm5,xmm3\r
+DB 15,56,201,243\r
+ movups xmm0,XMMWORD[((-32))+rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,3\r
+DB 68,15,56,200,212\r
+DB 15,56,202,236\r
+ pxor xmm6,xmm4\r
+ movups xmm1,XMMWORD[((-16))+rcx]\r
+DB 102,15,56,220,208\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,3\r
+DB 68,15,56,200,205\r
+DB 15,56,202,245\r
+ movups xmm0,XMMWORD[rcx]\r
+DB 102,15,56,220,209\r
+ movdqa xmm5,xmm12\r
+ movdqa xmm10,xmm8\r
+DB 69,15,58,204,193,3\r
+DB 68,15,56,200,214\r
+ movups xmm1,XMMWORD[16+rcx]\r
+DB 102,15,56,220,208\r
+ movdqa xmm9,xmm8\r
+DB 69,15,58,204,194,3\r
+DB 68,15,56,200,205\r
+ movups xmm0,XMMWORD[32+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[48+rcx]\r
+DB 102,15,56,220,208\r
+ cmp r11d,11\r
+ jb NEAR $L$aesenclast9\r
+ movups xmm0,XMMWORD[64+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[80+rcx]\r
+DB 102,15,56,220,208\r
+ je NEAR $L$aesenclast9\r
+ movups xmm0,XMMWORD[96+rcx]\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[112+rcx]\r
+DB 102,15,56,220,208\r
+$L$aesenclast9:\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[((16-112))+rcx]\r
+ dec rdx\r
+\r
+ paddd xmm8,xmm11\r
+ movups XMMWORD[48+rdi*1+rsi],xmm2\r
+ lea rdi,[64+rdi]\r
+ jnz NEAR $L$oop_shaext\r
+\r
+ pshufd xmm8,xmm8,27\r
+ pshufd xmm9,xmm9,27\r
+ movups XMMWORD[r8],xmm2\r
+ movdqu XMMWORD[r9],xmm8\r
+ movd DWORD[16+r9],xmm9\r
+ movaps xmm6,XMMWORD[((-8-160))+rax]\r
+ movaps xmm7,XMMWORD[((-8-144))+rax]\r
+ movaps xmm8,XMMWORD[((-8-128))+rax]\r
+ movaps xmm9,XMMWORD[((-8-112))+rax]\r
+ movaps xmm10,XMMWORD[((-8-96))+rax]\r
+ movaps xmm11,XMMWORD[((-8-80))+rax]\r
+ movaps xmm12,XMMWORD[((-8-64))+rax]\r
+ movaps xmm13,XMMWORD[((-8-48))+rax]\r
+ movaps xmm14,XMMWORD[((-8-32))+rax]\r
+ movaps xmm15,XMMWORD[((-8-16))+rax]\r
+ mov rsp,rax\r
+$L$epilogue_shaext:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_cbc_sha1_enc_shaext:\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+ssse3_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+ lea r10,[aesni_cbc_sha1_enc_shaext]\r
+ cmp rbx,r10\r
+ jb NEAR $L$seh_no_shaext\r
+\r
+ lea rsi,[rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+ lea rax,[168+rax]\r
+ jmp NEAR $L$common_seh_tail\r
+$L$seh_no_shaext:\r
+ lea rsi,[96+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+ lea rax,[264+rax]\r
+\r
+ mov r15,QWORD[rax]\r
+ mov r14,QWORD[8+rax]\r
+ mov r13,QWORD[16+rax]\r
+ mov r12,QWORD[24+rax]\r
+ mov rbp,QWORD[32+rax]\r
+ mov rbx,QWORD[40+rax]\r
+ lea rax,[48+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+ mov QWORD[240+r8],r15\r
+\r
+$L$common_seh_tail:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase\r
+ DD $L$SEH_end_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase\r
+ DD $L$SEH_info_aesni_cbc_sha1_enc_ssse3 wrt ..imagebase\r
+ DD $L$SEH_begin_aesni_cbc_sha1_enc_shaext wrt ..imagebase\r
+ DD $L$SEH_end_aesni_cbc_sha1_enc_shaext wrt ..imagebase\r
+ DD $L$SEH_info_aesni_cbc_sha1_enc_shaext wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_aesni_cbc_sha1_enc_ssse3:\r
+DB 9,0,0,0\r
+ DD ssse3_handler wrt ..imagebase\r
+ DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase\r
+$L$SEH_info_aesni_cbc_sha1_enc_shaext:\r
+DB 9,0,0,0\r
+ DD ssse3_handler wrt ..imagebase\r
+ DD $L$prologue_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl\r
+;\r
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+global aesni_cbc_sha256_enc\r
+\r
+ALIGN 16\r
+aesni_cbc_sha256_enc:\r
+\r
+ xor eax,eax\r
+ cmp rcx,0\r
+ je NEAR $L$probe\r
+ ud2\r
+$L$probe:\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 64\r
+\r
+K256:\r
+ DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+ DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+ DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+ DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+ DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+ DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+ DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+ DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+ DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+ DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+ DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+ DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+ DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+ DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+ DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+ DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+ DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+ DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+ DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+ DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+ DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+ DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+ DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+ DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+ DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+ DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+ DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+ DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+ DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+ DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+ DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+ DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0,0,0,0,0,0,0,0,-1,-1,-1,-1\r
+ DD 0,0,0,0,0,0,0,0\r
+DB 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54\r
+DB 32,115,116,105,116,99,104,32,102,111,114,32,120,56,54,95\r
+DB 54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98\r
+DB 121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108\r
+DB 46,111,114,103,62,0\r
+ALIGN 64\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/aesni-x86_64.pl\r
+;\r
+; Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+global aesni_encrypt\r
+\r
+ALIGN 16\r
+aesni_encrypt:\r
+\r
+ movups xmm2,XMMWORD[rcx]\r
+ mov eax,DWORD[240+r8]\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[16+r8]\r
+ lea r8,[32+r8]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_1:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[r8]\r
+ lea r8,[16+r8]\r
+ jnz NEAR $L$oop_enc1_1\r
+DB 102,15,56,221,209\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movups XMMWORD[rdx],xmm2\r
+ pxor xmm2,xmm2\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global aesni_decrypt\r
+\r
+ALIGN 16\r
+aesni_decrypt:\r
+\r
+ movups xmm2,XMMWORD[rcx]\r
+ mov eax,DWORD[240+r8]\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[16+r8]\r
+ lea r8,[32+r8]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_2:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[r8]\r
+ lea r8,[16+r8]\r
+ jnz NEAR $L$oop_dec1_2\r
+DB 102,15,56,223,209\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movups XMMWORD[rdx],xmm2\r
+ pxor xmm2,xmm2\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_encrypt2:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+ add rax,16\r
+\r
+$L$enc_loop2:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$enc_loop2\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_decrypt2:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+ add rax,16\r
+\r
+$L$dec_loop2:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$dec_loop2\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,223,208\r
+DB 102,15,56,223,216\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_encrypt3:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ xorps xmm4,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+ add rax,16\r
+\r
+$L$enc_loop3:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$enc_loop3\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+DB 102,15,56,221,224\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_decrypt3:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ xorps xmm4,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+ add rax,16\r
+\r
+$L$dec_loop3:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$dec_loop3\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,223,208\r
+DB 102,15,56,223,216\r
+DB 102,15,56,223,224\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_encrypt4:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ xorps xmm4,xmm0\r
+ xorps xmm5,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 0x0f,0x1f,0x00\r
+ add rax,16\r
+\r
+$L$enc_loop4:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$enc_loop4\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+DB 102,15,56,221,224\r
+DB 102,15,56,221,232\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_decrypt4:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ xorps xmm4,xmm0\r
+ xorps xmm5,xmm0\r
+ movups xmm0,XMMWORD[32+rcx]\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 0x0f,0x1f,0x00\r
+ add rax,16\r
+\r
+$L$dec_loop4:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$dec_loop4\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,223,208\r
+DB 102,15,56,223,216\r
+DB 102,15,56,223,224\r
+DB 102,15,56,223,232\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_encrypt6:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ pxor xmm3,xmm0\r
+ pxor xmm4,xmm0\r
+DB 102,15,56,220,209\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 102,15,56,220,217\r
+ pxor xmm5,xmm0\r
+ pxor xmm6,xmm0\r
+DB 102,15,56,220,225\r
+ pxor xmm7,xmm0\r
+ movups xmm0,XMMWORD[rax*1+rcx]\r
+ add rax,16\r
+ jmp NEAR $L$enc_loop6_enter\r
+ALIGN 16\r
+$L$enc_loop6:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+$L$enc_loop6_enter:\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$enc_loop6\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+DB 102,15,56,221,224\r
+DB 102,15,56,221,232\r
+DB 102,15,56,221,240\r
+DB 102,15,56,221,248\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_decrypt6:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ pxor xmm3,xmm0\r
+ pxor xmm4,xmm0\r
+DB 102,15,56,222,209\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 102,15,56,222,217\r
+ pxor xmm5,xmm0\r
+ pxor xmm6,xmm0\r
+DB 102,15,56,222,225\r
+ pxor xmm7,xmm0\r
+ movups xmm0,XMMWORD[rax*1+rcx]\r
+ add rax,16\r
+ jmp NEAR $L$dec_loop6_enter\r
+ALIGN 16\r
+$L$dec_loop6:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+$L$dec_loop6_enter:\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$dec_loop6\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,15,56,223,208\r
+DB 102,15,56,223,216\r
+DB 102,15,56,223,224\r
+DB 102,15,56,223,232\r
+DB 102,15,56,223,240\r
+DB 102,15,56,223,248\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_encrypt8:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ pxor xmm4,xmm0\r
+ pxor xmm5,xmm0\r
+ pxor xmm6,xmm0\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 102,15,56,220,209\r
+ pxor xmm7,xmm0\r
+ pxor xmm8,xmm0\r
+DB 102,15,56,220,217\r
+ pxor xmm9,xmm0\r
+ movups xmm0,XMMWORD[rax*1+rcx]\r
+ add rax,16\r
+ jmp NEAR $L$enc_loop8_inner\r
+ALIGN 16\r
+$L$enc_loop8:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+$L$enc_loop8_inner:\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+$L$enc_loop8_enter:\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$enc_loop8\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+DB 102,15,56,221,224\r
+DB 102,15,56,221,232\r
+DB 102,15,56,221,240\r
+DB 102,15,56,221,248\r
+DB 102,68,15,56,221,192\r
+DB 102,68,15,56,221,200\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 16\r
+_aesni_decrypt8:\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ shl eax,4\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm0\r
+ pxor xmm4,xmm0\r
+ pxor xmm5,xmm0\r
+ pxor xmm6,xmm0\r
+ lea rcx,[32+rax*1+rcx]\r
+ neg rax\r
+DB 102,15,56,222,209\r
+ pxor xmm7,xmm0\r
+ pxor xmm8,xmm0\r
+DB 102,15,56,222,217\r
+ pxor xmm9,xmm0\r
+ movups xmm0,XMMWORD[rax*1+rcx]\r
+ add rax,16\r
+ jmp NEAR $L$dec_loop8_inner\r
+ALIGN 16\r
+$L$dec_loop8:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+$L$dec_loop8_inner:\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+$L$dec_loop8_enter:\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$dec_loop8\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+DB 102,15,56,223,208\r
+DB 102,15,56,223,216\r
+DB 102,15,56,223,224\r
+DB 102,15,56,223,232\r
+DB 102,15,56,223,240\r
+DB 102,15,56,223,248\r
+DB 102,68,15,56,223,192\r
+DB 102,68,15,56,223,200\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global aesni_ecb_encrypt\r
+\r
+ALIGN 16\r
+aesni_ecb_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ecb_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+\r
+\r
+\r
+ lea rsp,[((-88))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+$L$ecb_enc_body:\r
+ and rdx,-16\r
+ jz NEAR $L$ecb_ret\r
+\r
+ mov eax,DWORD[240+rcx]\r
+ movups xmm0,XMMWORD[rcx]\r
+ mov r11,rcx\r
+ mov r10d,eax\r
+ test r8d,r8d\r
+ jz NEAR $L$ecb_decrypt\r
+\r
+ cmp rdx,0x80\r
+ jb NEAR $L$ecb_enc_tail\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ movdqu xmm9,XMMWORD[112+rdi]\r
+ lea rdi,[128+rdi]\r
+ sub rdx,0x80\r
+ jmp NEAR $L$ecb_enc_loop8_enter\r
+ALIGN 16\r
+$L$ecb_enc_loop8:\r
+ movups XMMWORD[rsi],xmm2\r
+ mov rcx,r11\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ mov eax,r10d\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movups XMMWORD[96+rsi],xmm8\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ movups XMMWORD[112+rsi],xmm9\r
+ lea rsi,[128+rsi]\r
+ movdqu xmm9,XMMWORD[112+rdi]\r
+ lea rdi,[128+rdi]\r
+$L$ecb_enc_loop8_enter:\r
+\r
+ call _aesni_encrypt8\r
+\r
+ sub rdx,0x80\r
+ jnc NEAR $L$ecb_enc_loop8\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ mov rcx,r11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ mov eax,r10d\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movups XMMWORD[96+rsi],xmm8\r
+ movups XMMWORD[112+rsi],xmm9\r
+ lea rsi,[128+rsi]\r
+ add rdx,0x80\r
+ jz NEAR $L$ecb_ret\r
+\r
+$L$ecb_enc_tail:\r
+ movups xmm2,XMMWORD[rdi]\r
+ cmp rdx,0x20\r
+ jb NEAR $L$ecb_enc_one\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ je NEAR $L$ecb_enc_two\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ cmp rdx,0x40\r
+ jb NEAR $L$ecb_enc_three\r
+ movups xmm5,XMMWORD[48+rdi]\r
+ je NEAR $L$ecb_enc_four\r
+ movups xmm6,XMMWORD[64+rdi]\r
+ cmp rdx,0x60\r
+ jb NEAR $L$ecb_enc_five\r
+ movups xmm7,XMMWORD[80+rdi]\r
+ je NEAR $L$ecb_enc_six\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ xorps xmm9,xmm9\r
+ call _aesni_encrypt8\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movups XMMWORD[96+rsi],xmm8\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_one:\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_3:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_3\r
+DB 102,15,56,221,209\r
+ movups XMMWORD[rsi],xmm2\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_two:\r
+ call _aesni_encrypt2\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_three:\r
+ call _aesni_encrypt3\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_four:\r
+ call _aesni_encrypt4\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_five:\r
+ xorps xmm7,xmm7\r
+ call _aesni_encrypt6\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_enc_six:\r
+ call _aesni_encrypt6\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ jmp NEAR $L$ecb_ret\r
+\r
+ALIGN 16\r
+$L$ecb_decrypt:\r
+ cmp rdx,0x80\r
+ jb NEAR $L$ecb_dec_tail\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ movdqu xmm9,XMMWORD[112+rdi]\r
+ lea rdi,[128+rdi]\r
+ sub rdx,0x80\r
+ jmp NEAR $L$ecb_dec_loop8_enter\r
+ALIGN 16\r
+$L$ecb_dec_loop8:\r
+ movups XMMWORD[rsi],xmm2\r
+ mov rcx,r11\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ mov eax,r10d\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movups XMMWORD[96+rsi],xmm8\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ movups XMMWORD[112+rsi],xmm9\r
+ lea rsi,[128+rsi]\r
+ movdqu xmm9,XMMWORD[112+rdi]\r
+ lea rdi,[128+rdi]\r
+$L$ecb_dec_loop8_enter:\r
+\r
+ call _aesni_decrypt8\r
+\r
+ movups xmm0,XMMWORD[r11]\r
+ sub rdx,0x80\r
+ jnc NEAR $L$ecb_dec_loop8\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ mov rcx,r11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ mov eax,r10d\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ pxor xmm7,xmm7\r
+ movups XMMWORD[96+rsi],xmm8\r
+ pxor xmm8,xmm8\r
+ movups XMMWORD[112+rsi],xmm9\r
+ pxor xmm9,xmm9\r
+ lea rsi,[128+rsi]\r
+ add rdx,0x80\r
+ jz NEAR $L$ecb_ret\r
+\r
+$L$ecb_dec_tail:\r
+ movups xmm2,XMMWORD[rdi]\r
+ cmp rdx,0x20\r
+ jb NEAR $L$ecb_dec_one\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ je NEAR $L$ecb_dec_two\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ cmp rdx,0x40\r
+ jb NEAR $L$ecb_dec_three\r
+ movups xmm5,XMMWORD[48+rdi]\r
+ je NEAR $L$ecb_dec_four\r
+ movups xmm6,XMMWORD[64+rdi]\r
+ cmp rdx,0x60\r
+ jb NEAR $L$ecb_dec_five\r
+ movups xmm7,XMMWORD[80+rdi]\r
+ je NEAR $L$ecb_dec_six\r
+ movups xmm8,XMMWORD[96+rdi]\r
+ movups xmm0,XMMWORD[rcx]\r
+ xorps xmm9,xmm9\r
+ call _aesni_decrypt8\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ pxor xmm7,xmm7\r
+ movups XMMWORD[96+rsi],xmm8\r
+ pxor xmm8,xmm8\r
+ pxor xmm9,xmm9\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_one:\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_4:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_4\r
+DB 102,15,56,223,209\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_two:\r
+ call _aesni_decrypt2\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_three:\r
+ call _aesni_decrypt3\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_four:\r
+ call _aesni_decrypt4\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_five:\r
+ xorps xmm7,xmm7\r
+ call _aesni_decrypt6\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ pxor xmm7,xmm7\r
+ jmp NEAR $L$ecb_ret\r
+ALIGN 16\r
+$L$ecb_dec_six:\r
+ call _aesni_decrypt6\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ pxor xmm7,xmm7\r
+\r
+$L$ecb_ret:\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ lea rsp,[88+rsp]\r
+$L$ecb_enc_ret:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ecb_encrypt:\r
+global aesni_ccm64_encrypt_blocks\r
+\r
+ALIGN 16\r
+aesni_ccm64_encrypt_blocks:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ccm64_encrypt_blocks:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea rsp,[((-88))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+$L$ccm64_enc_body:\r
+ mov eax,DWORD[240+rcx]\r
+ movdqu xmm6,XMMWORD[r8]\r
+ movdqa xmm9,XMMWORD[$L$increment64]\r
+ movdqa xmm7,XMMWORD[$L$bswap_mask]\r
+\r
+ shl eax,4\r
+ mov r10d,16\r
+ lea r11,[rcx]\r
+ movdqu xmm3,XMMWORD[r9]\r
+ movdqa xmm2,xmm6\r
+ lea rcx,[32+rax*1+rcx]\r
+DB 102,15,56,0,247\r
+ sub r10,rax\r
+ jmp NEAR $L$ccm64_enc_outer\r
+ALIGN 16\r
+$L$ccm64_enc_outer:\r
+ movups xmm0,XMMWORD[r11]\r
+ mov rax,r10\r
+ movups xmm8,XMMWORD[rdi]\r
+\r
+ xorps xmm2,xmm0\r
+ movups xmm1,XMMWORD[16+r11]\r
+ xorps xmm0,xmm8\r
+ xorps xmm3,xmm0\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+$L$ccm64_enc2_loop:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ccm64_enc2_loop\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ paddq xmm6,xmm9\r
+ dec rdx\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+\r
+ lea rdi,[16+rdi]\r
+ xorps xmm8,xmm2\r
+ movdqa xmm2,xmm6\r
+ movups XMMWORD[rsi],xmm8\r
+DB 102,15,56,0,215\r
+ lea rsi,[16+rsi]\r
+ jnz NEAR $L$ccm64_enc_outer\r
+\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[r9],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm8,xmm8\r
+ pxor xmm6,xmm6\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ lea rsp,[88+rsp]\r
+$L$ccm64_enc_ret:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ccm64_encrypt_blocks:\r
+global aesni_ccm64_decrypt_blocks\r
+\r
+ALIGN 16\r
+aesni_ccm64_decrypt_blocks:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ccm64_decrypt_blocks:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea rsp,[((-88))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+$L$ccm64_dec_body:\r
+ mov eax,DWORD[240+rcx]\r
+ movups xmm6,XMMWORD[r8]\r
+ movdqu xmm3,XMMWORD[r9]\r
+ movdqa xmm9,XMMWORD[$L$increment64]\r
+ movdqa xmm7,XMMWORD[$L$bswap_mask]\r
+\r
+ movaps xmm2,xmm6\r
+ mov r10d,eax\r
+ mov r11,rcx\r
+DB 102,15,56,0,247\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_5:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_5\r
+DB 102,15,56,221,209\r
+ shl r10d,4\r
+ mov eax,16\r
+ movups xmm8,XMMWORD[rdi]\r
+ paddq xmm6,xmm9\r
+ lea rdi,[16+rdi]\r
+ sub rax,r10\r
+ lea rcx,[32+r10*1+r11]\r
+ mov r10,rax\r
+ jmp NEAR $L$ccm64_dec_outer\r
+ALIGN 16\r
+$L$ccm64_dec_outer:\r
+ xorps xmm8,xmm2\r
+ movdqa xmm2,xmm6\r
+ movups XMMWORD[rsi],xmm8\r
+ lea rsi,[16+rsi]\r
+DB 102,15,56,0,215\r
+\r
+ sub rdx,1\r
+ jz NEAR $L$ccm64_dec_break\r
+\r
+ movups xmm0,XMMWORD[r11]\r
+ mov rax,r10\r
+ movups xmm1,XMMWORD[16+r11]\r
+ xorps xmm8,xmm0\r
+ xorps xmm2,xmm0\r
+ xorps xmm3,xmm8\r
+ movups xmm0,XMMWORD[32+r11]\r
+ jmp NEAR $L$ccm64_dec2_loop\r
+ALIGN 16\r
+$L$ccm64_dec2_loop:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ccm64_dec2_loop\r
+ movups xmm8,XMMWORD[rdi]\r
+ paddq xmm6,xmm9\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,221,208\r
+DB 102,15,56,221,216\r
+ lea rdi,[16+rdi]\r
+ jmp NEAR $L$ccm64_dec_outer\r
+\r
+ALIGN 16\r
+$L$ccm64_dec_break:\r
+\r
+ mov eax,DWORD[240+r11]\r
+ movups xmm0,XMMWORD[r11]\r
+ movups xmm1,XMMWORD[16+r11]\r
+ xorps xmm8,xmm0\r
+ lea r11,[32+r11]\r
+ xorps xmm3,xmm8\r
+$L$oop_enc1_6:\r
+DB 102,15,56,220,217\r
+ dec eax\r
+ movups xmm1,XMMWORD[r11]\r
+ lea r11,[16+r11]\r
+ jnz NEAR $L$oop_enc1_6\r
+DB 102,15,56,221,217\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ movups XMMWORD[r9],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm8,xmm8\r
+ pxor xmm6,xmm6\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ lea rsp,[88+rsp]\r
+$L$ccm64_dec_ret:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ccm64_decrypt_blocks:\r
+global aesni_ctr32_encrypt_blocks\r
+\r
+ALIGN 16\r
+aesni_ctr32_encrypt_blocks:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ctr32_encrypt_blocks:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+\r
+\r
+\r
+ cmp rdx,1\r
+ jne NEAR $L$ctr32_bulk\r
+\r
+\r
+\r
+ movups xmm2,XMMWORD[r8]\r
+ movups xmm3,XMMWORD[rdi]\r
+ mov edx,DWORD[240+rcx]\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_7:\r
+DB 102,15,56,220,209\r
+ dec edx\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_7\r
+DB 102,15,56,221,209\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ xorps xmm2,xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm2,xmm2\r
+ jmp NEAR $L$ctr32_epilogue\r
+\r
+ALIGN 16\r
+$L$ctr32_bulk:\r
+ lea r11,[rsp]\r
+\r
+ push rbp\r
+\r
+ sub rsp,288\r
+ and rsp,-16\r
+ movaps XMMWORD[(-168)+r11],xmm6\r
+ movaps XMMWORD[(-152)+r11],xmm7\r
+ movaps XMMWORD[(-136)+r11],xmm8\r
+ movaps XMMWORD[(-120)+r11],xmm9\r
+ movaps XMMWORD[(-104)+r11],xmm10\r
+ movaps XMMWORD[(-88)+r11],xmm11\r
+ movaps XMMWORD[(-72)+r11],xmm12\r
+ movaps XMMWORD[(-56)+r11],xmm13\r
+ movaps XMMWORD[(-40)+r11],xmm14\r
+ movaps XMMWORD[(-24)+r11],xmm15\r
+$L$ctr32_body:\r
+\r
+\r
+\r
+\r
+ movdqu xmm2,XMMWORD[r8]\r
+ movdqu xmm0,XMMWORD[rcx]\r
+ mov r8d,DWORD[12+r8]\r
+ pxor xmm2,xmm0\r
+ mov ebp,DWORD[12+rcx]\r
+ movdqa XMMWORD[rsp],xmm2\r
+ bswap r8d\r
+ movdqa xmm3,xmm2\r
+ movdqa xmm4,xmm2\r
+ movdqa xmm5,xmm2\r
+ movdqa XMMWORD[64+rsp],xmm2\r
+ movdqa XMMWORD[80+rsp],xmm2\r
+ movdqa XMMWORD[96+rsp],xmm2\r
+ mov r10,rdx\r
+ movdqa XMMWORD[112+rsp],xmm2\r
+\r
+ lea rax,[1+r8]\r
+ lea rdx,[2+r8]\r
+ bswap eax\r
+ bswap edx\r
+ xor eax,ebp\r
+ xor edx,ebp\r
+DB 102,15,58,34,216,3\r
+ lea rax,[3+r8]\r
+ movdqa XMMWORD[16+rsp],xmm3\r
+DB 102,15,58,34,226,3\r
+ bswap eax\r
+ mov rdx,r10\r
+ lea r10,[4+r8]\r
+ movdqa XMMWORD[32+rsp],xmm4\r
+ xor eax,ebp\r
+ bswap r10d\r
+DB 102,15,58,34,232,3\r
+ xor r10d,ebp\r
+ movdqa XMMWORD[48+rsp],xmm5\r
+ lea r9,[5+r8]\r
+ mov DWORD[((64+12))+rsp],r10d\r
+ bswap r9d\r
+ lea r10,[6+r8]\r
+ mov eax,DWORD[240+rcx]\r
+ xor r9d,ebp\r
+ bswap r10d\r
+ mov DWORD[((80+12))+rsp],r9d\r
+ xor r10d,ebp\r
+ lea r9,[7+r8]\r
+ mov DWORD[((96+12))+rsp],r10d\r
+ bswap r9d\r
+ mov r10d,DWORD[((OPENSSL_ia32cap_P+4))]\r
+ xor r9d,ebp\r
+ and r10d,71303168\r
+ mov DWORD[((112+12))+rsp],r9d\r
+\r
+ movups xmm1,XMMWORD[16+rcx]\r
+\r
+ movdqa xmm6,XMMWORD[64+rsp]\r
+ movdqa xmm7,XMMWORD[80+rsp]\r
+\r
+ cmp rdx,8\r
+ jb NEAR $L$ctr32_tail\r
+\r
+ sub rdx,6\r
+ cmp r10d,4194304\r
+ je NEAR $L$ctr32_6x\r
+\r
+ lea rcx,[128+rcx]\r
+ sub rdx,2\r
+ jmp NEAR $L$ctr32_loop8\r
+\r
+ALIGN 16\r
+$L$ctr32_6x:\r
+ shl eax,4\r
+ mov r10d,48\r
+ bswap ebp\r
+ lea rcx,[32+rax*1+rcx]\r
+ sub r10,rax\r
+ jmp NEAR $L$ctr32_loop6\r
+\r
+ALIGN 16\r
+$L$ctr32_loop6:\r
+ add r8d,6\r
+ movups xmm0,XMMWORD[((-48))+r10*1+rcx]\r
+DB 102,15,56,220,209\r
+ mov eax,r8d\r
+ xor eax,ebp\r
+DB 102,15,56,220,217\r
+DB 0x0f,0x38,0xf1,0x44,0x24,12\r
+ lea eax,[1+r8]\r
+DB 102,15,56,220,225\r
+ xor eax,ebp\r
+DB 0x0f,0x38,0xf1,0x44,0x24,28\r
+DB 102,15,56,220,233\r
+ lea eax,[2+r8]\r
+ xor eax,ebp\r
+DB 102,15,56,220,241\r
+DB 0x0f,0x38,0xf1,0x44,0x24,44\r
+ lea eax,[3+r8]\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[((-32))+r10*1+rcx]\r
+ xor eax,ebp\r
+\r
+DB 102,15,56,220,208\r
+DB 0x0f,0x38,0xf1,0x44,0x24,60\r
+ lea eax,[4+r8]\r
+DB 102,15,56,220,216\r
+ xor eax,ebp\r
+DB 0x0f,0x38,0xf1,0x44,0x24,76\r
+DB 102,15,56,220,224\r
+ lea eax,[5+r8]\r
+ xor eax,ebp\r
+DB 102,15,56,220,232\r
+DB 0x0f,0x38,0xf1,0x44,0x24,92\r
+ mov rax,r10\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[((-16))+r10*1+rcx]\r
+\r
+ call $L$enc_loop6\r
+\r
+ movdqu xmm8,XMMWORD[rdi]\r
+ movdqu xmm9,XMMWORD[16+rdi]\r
+ movdqu xmm10,XMMWORD[32+rdi]\r
+ movdqu xmm11,XMMWORD[48+rdi]\r
+ movdqu xmm12,XMMWORD[64+rdi]\r
+ movdqu xmm13,XMMWORD[80+rdi]\r
+ lea rdi,[96+rdi]\r
+ movups xmm1,XMMWORD[((-64))+r10*1+rcx]\r
+ pxor xmm8,xmm2\r
+ movaps xmm2,XMMWORD[rsp]\r
+ pxor xmm9,xmm3\r
+ movaps xmm3,XMMWORD[16+rsp]\r
+ pxor xmm10,xmm4\r
+ movaps xmm4,XMMWORD[32+rsp]\r
+ pxor xmm11,xmm5\r
+ movaps xmm5,XMMWORD[48+rsp]\r
+ pxor xmm12,xmm6\r
+ movaps xmm6,XMMWORD[64+rsp]\r
+ pxor xmm13,xmm7\r
+ movaps xmm7,XMMWORD[80+rsp]\r
+ movdqu XMMWORD[rsi],xmm8\r
+ movdqu XMMWORD[16+rsi],xmm9\r
+ movdqu XMMWORD[32+rsi],xmm10\r
+ movdqu XMMWORD[48+rsi],xmm11\r
+ movdqu XMMWORD[64+rsi],xmm12\r
+ movdqu XMMWORD[80+rsi],xmm13\r
+ lea rsi,[96+rsi]\r
+\r
+ sub rdx,6\r
+ jnc NEAR $L$ctr32_loop6\r
+\r
+ add rdx,6\r
+ jz NEAR $L$ctr32_done\r
+\r
+ lea eax,[((-48))+r10]\r
+ lea rcx,[((-80))+r10*1+rcx]\r
+ neg eax\r
+ shr eax,4\r
+ jmp NEAR $L$ctr32_tail\r
+\r
+ALIGN 32\r
+$L$ctr32_loop8:\r
+ add r8d,8\r
+ movdqa xmm8,XMMWORD[96+rsp]\r
+DB 102,15,56,220,209\r
+ mov r9d,r8d\r
+ movdqa xmm9,XMMWORD[112+rsp]\r
+DB 102,15,56,220,217\r
+ bswap r9d\r
+ movups xmm0,XMMWORD[((32-128))+rcx]\r
+DB 102,15,56,220,225\r
+ xor r9d,ebp\r
+ nop\r
+DB 102,15,56,220,233\r
+ mov DWORD[((0+12))+rsp],r9d\r
+ lea r9,[1+r8]\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((48-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ mov DWORD[((16+12))+rsp],r9d\r
+ lea r9,[2+r8]\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((64-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ mov DWORD[((32+12))+rsp],r9d\r
+ lea r9,[3+r8]\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((80-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ mov DWORD[((48+12))+rsp],r9d\r
+ lea r9,[4+r8]\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((96-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ mov DWORD[((64+12))+rsp],r9d\r
+ lea r9,[5+r8]\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((112-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ mov DWORD[((80+12))+rsp],r9d\r
+ lea r9,[6+r8]\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((128-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ xor r9d,ebp\r
+DB 0x66,0x90\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ mov DWORD[((96+12))+rsp],r9d\r
+ lea r9,[7+r8]\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((144-128))+rcx]\r
+ bswap r9d\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+ xor r9d,ebp\r
+ movdqu xmm10,XMMWORD[rdi]\r
+DB 102,15,56,220,232\r
+ mov DWORD[((112+12))+rsp],r9d\r
+ cmp eax,11\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((160-128))+rcx]\r
+\r
+ jb NEAR $L$ctr32_enc_done\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((176-128))+rcx]\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((192-128))+rcx]\r
+ je NEAR $L$ctr32_enc_done\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movups xmm1,XMMWORD[((208-128))+rcx]\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+DB 102,68,15,56,220,192\r
+DB 102,68,15,56,220,200\r
+ movups xmm0,XMMWORD[((224-128))+rcx]\r
+ jmp NEAR $L$ctr32_enc_done\r
+\r
+ALIGN 16\r
+$L$ctr32_enc_done:\r
+ movdqu xmm11,XMMWORD[16+rdi]\r
+ pxor xmm10,xmm0\r
+ movdqu xmm12,XMMWORD[32+rdi]\r
+ pxor xmm11,xmm0\r
+ movdqu xmm13,XMMWORD[48+rdi]\r
+ pxor xmm12,xmm0\r
+ movdqu xmm14,XMMWORD[64+rdi]\r
+ pxor xmm13,xmm0\r
+ movdqu xmm15,XMMWORD[80+rdi]\r
+ pxor xmm14,xmm0\r
+ pxor xmm15,xmm0\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+DB 102,68,15,56,220,201\r
+ movdqu xmm1,XMMWORD[96+rdi]\r
+ lea rdi,[128+rdi]\r
+\r
+DB 102,65,15,56,221,210\r
+ pxor xmm1,xmm0\r
+ movdqu xmm10,XMMWORD[((112-128))+rdi]\r
+DB 102,65,15,56,221,219\r
+ pxor xmm10,xmm0\r
+ movdqa xmm11,XMMWORD[rsp]\r
+DB 102,65,15,56,221,228\r
+DB 102,65,15,56,221,237\r
+ movdqa xmm12,XMMWORD[16+rsp]\r
+ movdqa xmm13,XMMWORD[32+rsp]\r
+DB 102,65,15,56,221,246\r
+DB 102,65,15,56,221,255\r
+ movdqa xmm14,XMMWORD[48+rsp]\r
+ movdqa xmm15,XMMWORD[64+rsp]\r
+DB 102,68,15,56,221,193\r
+ movdqa xmm0,XMMWORD[80+rsp]\r
+ movups xmm1,XMMWORD[((16-128))+rcx]\r
+DB 102,69,15,56,221,202\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ movdqa xmm2,xmm11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movdqa xmm3,xmm12\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movdqa xmm4,xmm13\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movdqa xmm5,xmm14\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movdqa xmm6,xmm15\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movdqa xmm7,xmm0\r
+ movups XMMWORD[96+rsi],xmm8\r
+ movups XMMWORD[112+rsi],xmm9\r
+ lea rsi,[128+rsi]\r
+\r
+ sub rdx,8\r
+ jnc NEAR $L$ctr32_loop8\r
+\r
+ add rdx,8\r
+ jz NEAR $L$ctr32_done\r
+ lea rcx,[((-128))+rcx]\r
+\r
+$L$ctr32_tail:\r
+\r
+\r
+ lea rcx,[16+rcx]\r
+ cmp rdx,4\r
+ jb NEAR $L$ctr32_loop3\r
+ je NEAR $L$ctr32_loop4\r
+\r
+\r
+ shl eax,4\r
+ movdqa xmm8,XMMWORD[96+rsp]\r
+ pxor xmm9,xmm9\r
+\r
+ movups xmm0,XMMWORD[16+rcx]\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+ lea rcx,[((32-16))+rax*1+rcx]\r
+ neg rax\r
+DB 102,15,56,220,225\r
+ add rax,16\r
+ movups xmm10,XMMWORD[rdi]\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+ movups xmm11,XMMWORD[16+rdi]\r
+ movups xmm12,XMMWORD[32+rdi]\r
+DB 102,15,56,220,249\r
+DB 102,68,15,56,220,193\r
+\r
+ call $L$enc_loop8_enter\r
+\r
+ movdqu xmm13,XMMWORD[48+rdi]\r
+ pxor xmm2,xmm10\r
+ movdqu xmm10,XMMWORD[64+rdi]\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm6,xmm10\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ cmp rdx,6\r
+ jb NEAR $L$ctr32_done\r
+\r
+ movups xmm11,XMMWORD[80+rdi]\r
+ xorps xmm7,xmm11\r
+ movups XMMWORD[80+rsi],xmm7\r
+ je NEAR $L$ctr32_done\r
+\r
+ movups xmm12,XMMWORD[96+rdi]\r
+ xorps xmm8,xmm12\r
+ movups XMMWORD[96+rsi],xmm8\r
+ jmp NEAR $L$ctr32_done\r
+\r
+ALIGN 32\r
+$L$ctr32_loop4:\r
+DB 102,15,56,220,209\r
+ lea rcx,[16+rcx]\r
+ dec eax\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[rcx]\r
+ jnz NEAR $L$ctr32_loop4\r
+DB 102,15,56,221,209\r
+DB 102,15,56,221,217\r
+ movups xmm10,XMMWORD[rdi]\r
+ movups xmm11,XMMWORD[16+rdi]\r
+DB 102,15,56,221,225\r
+DB 102,15,56,221,233\r
+ movups xmm12,XMMWORD[32+rdi]\r
+ movups xmm13,XMMWORD[48+rdi]\r
+\r
+ xorps xmm2,xmm10\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm3,xmm11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ jmp NEAR $L$ctr32_done\r
+\r
+ALIGN 32\r
+$L$ctr32_loop3:\r
+DB 102,15,56,220,209\r
+ lea rcx,[16+rcx]\r
+ dec eax\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+ movups xmm1,XMMWORD[rcx]\r
+ jnz NEAR $L$ctr32_loop3\r
+DB 102,15,56,221,209\r
+DB 102,15,56,221,217\r
+DB 102,15,56,221,225\r
+\r
+ movups xmm10,XMMWORD[rdi]\r
+ xorps xmm2,xmm10\r
+ movups XMMWORD[rsi],xmm2\r
+ cmp rdx,2\r
+ jb NEAR $L$ctr32_done\r
+\r
+ movups xmm11,XMMWORD[16+rdi]\r
+ xorps xmm3,xmm11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ je NEAR $L$ctr32_done\r
+\r
+ movups xmm12,XMMWORD[32+rdi]\r
+ xorps xmm4,xmm12\r
+ movups XMMWORD[32+rsi],xmm4\r
+\r
+$L$ctr32_done:\r
+ xorps xmm0,xmm0\r
+ xor ebp,ebp\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ movaps xmm6,XMMWORD[((-168))+r11]\r
+ movaps XMMWORD[(-168)+r11],xmm0\r
+ movaps xmm7,XMMWORD[((-152))+r11]\r
+ movaps XMMWORD[(-152)+r11],xmm0\r
+ movaps xmm8,XMMWORD[((-136))+r11]\r
+ movaps XMMWORD[(-136)+r11],xmm0\r
+ movaps xmm9,XMMWORD[((-120))+r11]\r
+ movaps XMMWORD[(-120)+r11],xmm0\r
+ movaps xmm10,XMMWORD[((-104))+r11]\r
+ movaps XMMWORD[(-104)+r11],xmm0\r
+ movaps xmm11,XMMWORD[((-88))+r11]\r
+ movaps XMMWORD[(-88)+r11],xmm0\r
+ movaps xmm12,XMMWORD[((-72))+r11]\r
+ movaps XMMWORD[(-72)+r11],xmm0\r
+ movaps xmm13,XMMWORD[((-56))+r11]\r
+ movaps XMMWORD[(-56)+r11],xmm0\r
+ movaps xmm14,XMMWORD[((-40))+r11]\r
+ movaps XMMWORD[(-40)+r11],xmm0\r
+ movaps xmm15,XMMWORD[((-24))+r11]\r
+ movaps XMMWORD[(-24)+r11],xmm0\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ movaps XMMWORD[112+rsp],xmm0\r
+ mov rbp,QWORD[((-8))+r11]\r
+\r
+ lea rsp,[r11]\r
+\r
+$L$ctr32_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ctr32_encrypt_blocks:\r
+global aesni_xts_encrypt\r
+\r
+ALIGN 16\r
+aesni_xts_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_xts_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea r11,[rsp]\r
+\r
+ push rbp\r
+\r
+ sub rsp,272\r
+ and rsp,-16\r
+ movaps XMMWORD[(-168)+r11],xmm6\r
+ movaps XMMWORD[(-152)+r11],xmm7\r
+ movaps XMMWORD[(-136)+r11],xmm8\r
+ movaps XMMWORD[(-120)+r11],xmm9\r
+ movaps XMMWORD[(-104)+r11],xmm10\r
+ movaps XMMWORD[(-88)+r11],xmm11\r
+ movaps XMMWORD[(-72)+r11],xmm12\r
+ movaps XMMWORD[(-56)+r11],xmm13\r
+ movaps XMMWORD[(-40)+r11],xmm14\r
+ movaps XMMWORD[(-24)+r11],xmm15\r
+$L$xts_enc_body:\r
+ movups xmm2,XMMWORD[r9]\r
+ mov eax,DWORD[240+r8]\r
+ mov r10d,DWORD[240+rcx]\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[16+r8]\r
+ lea r8,[32+r8]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_8:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[r8]\r
+ lea r8,[16+r8]\r
+ jnz NEAR $L$oop_enc1_8\r
+DB 102,15,56,221,209\r
+ movups xmm0,XMMWORD[rcx]\r
+ mov rbp,rcx\r
+ mov eax,r10d\r
+ shl r10d,4\r
+ mov r9,rdx\r
+ and rdx,-16\r
+\r
+ movups xmm1,XMMWORD[16+r10*1+rcx]\r
+\r
+ movdqa xmm8,XMMWORD[$L$xts_magic]\r
+ movdqa xmm15,xmm2\r
+ pshufd xmm9,xmm2,0x5f\r
+ pxor xmm1,xmm0\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm10,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm10,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm11,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm11,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm12,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm12,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm13,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm13,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm15\r
+ psrad xmm9,31\r
+ paddq xmm15,xmm15\r
+ pand xmm9,xmm8\r
+ pxor xmm14,xmm0\r
+ pxor xmm15,xmm9\r
+ movaps XMMWORD[96+rsp],xmm1\r
+\r
+ sub rdx,16*6\r
+ jc NEAR $L$xts_enc_short\r
+\r
+ mov eax,16+96\r
+ lea rcx,[32+r10*1+rbp]\r
+ sub rax,r10\r
+ movups xmm1,XMMWORD[16+rbp]\r
+ mov r10,rax\r
+ lea r8,[$L$xts_magic]\r
+ jmp NEAR $L$xts_enc_grandloop\r
+\r
+ALIGN 32\r
+$L$xts_enc_grandloop:\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqa xmm8,xmm0\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ pxor xmm2,xmm10\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ pxor xmm3,xmm11\r
+DB 102,15,56,220,209\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ pxor xmm4,xmm12\r
+DB 102,15,56,220,217\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ pxor xmm5,xmm13\r
+DB 102,15,56,220,225\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ pxor xmm8,xmm15\r
+ movdqa xmm9,XMMWORD[96+rsp]\r
+ pxor xmm6,xmm14\r
+DB 102,15,56,220,233\r
+ movups xmm0,XMMWORD[32+rbp]\r
+ lea rdi,[96+rdi]\r
+ pxor xmm7,xmm8\r
+\r
+ pxor xmm10,xmm9\r
+DB 102,15,56,220,241\r
+ pxor xmm11,xmm9\r
+ movdqa XMMWORD[rsp],xmm10\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[48+rbp]\r
+ pxor xmm12,xmm9\r
+\r
+DB 102,15,56,220,208\r
+ pxor xmm13,xmm9\r
+ movdqa XMMWORD[16+rsp],xmm11\r
+DB 102,15,56,220,216\r
+ pxor xmm14,xmm9\r
+ movdqa XMMWORD[32+rsp],xmm12\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ pxor xmm8,xmm9\r
+ movdqa XMMWORD[64+rsp],xmm14\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[64+rbp]\r
+ movdqa XMMWORD[80+rsp],xmm8\r
+ pshufd xmm9,xmm15,0x5f\r
+ jmp NEAR $L$xts_enc_loop6\r
+ALIGN 32\r
+$L$xts_enc_loop6:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[((-64))+rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[((-80))+rax*1+rcx]\r
+ jnz NEAR $L$xts_enc_loop6\r
+\r
+ movdqa xmm8,XMMWORD[r8]\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,220,209\r
+ paddq xmm15,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,220,217\r
+ pand xmm14,xmm8\r
+ movups xmm10,XMMWORD[rbp]\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+ pxor xmm15,xmm14\r
+ movaps xmm11,xmm10\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[((-64))+rcx]\r
+\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,220,208\r
+ paddd xmm9,xmm9\r
+ pxor xmm10,xmm15\r
+DB 102,15,56,220,216\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ pand xmm14,xmm8\r
+ movaps xmm12,xmm11\r
+DB 102,15,56,220,240\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[((-48))+rcx]\r
+\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,220,209\r
+ pxor xmm11,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,220,217\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movdqa XMMWORD[48+rsp],xmm13\r
+ pxor xmm15,xmm14\r
+DB 102,15,56,220,241\r
+ movaps xmm13,xmm12\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[((-32))+rcx]\r
+\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,220,208\r
+ pxor xmm12,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,220,216\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+ pxor xmm15,xmm14\r
+ movaps xmm14,xmm13\r
+DB 102,15,56,220,248\r
+\r
+ movdqa xmm0,xmm9\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,220,209\r
+ pxor xmm13,xmm15\r
+ psrad xmm0,31\r
+DB 102,15,56,220,217\r
+ paddq xmm15,xmm15\r
+ pand xmm0,xmm8\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ pxor xmm15,xmm0\r
+ movups xmm0,XMMWORD[rbp]\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[16+rbp]\r
+\r
+ pxor xmm14,xmm15\r
+DB 102,15,56,221,84,36,0\r
+ psrad xmm9,31\r
+ paddq xmm15,xmm15\r
+DB 102,15,56,221,92,36,16\r
+DB 102,15,56,221,100,36,32\r
+ pand xmm9,xmm8\r
+ mov rax,r10\r
+DB 102,15,56,221,108,36,48\r
+DB 102,15,56,221,116,36,64\r
+DB 102,15,56,221,124,36,80\r
+ pxor xmm15,xmm9\r
+\r
+ lea rsi,[96+rsi]\r
+ movups XMMWORD[(-96)+rsi],xmm2\r
+ movups XMMWORD[(-80)+rsi],xmm3\r
+ movups XMMWORD[(-64)+rsi],xmm4\r
+ movups XMMWORD[(-48)+rsi],xmm5\r
+ movups XMMWORD[(-32)+rsi],xmm6\r
+ movups XMMWORD[(-16)+rsi],xmm7\r
+ sub rdx,16*6\r
+ jnc NEAR $L$xts_enc_grandloop\r
+\r
+ mov eax,16+96\r
+ sub eax,r10d\r
+ mov rcx,rbp\r
+ shr eax,4\r
+\r
+$L$xts_enc_short:\r
+\r
+ mov r10d,eax\r
+ pxor xmm10,xmm0\r
+ add rdx,16*6\r
+ jz NEAR $L$xts_enc_done\r
+\r
+ pxor xmm11,xmm0\r
+ cmp rdx,0x20\r
+ jb NEAR $L$xts_enc_one\r
+ pxor xmm12,xmm0\r
+ je NEAR $L$xts_enc_two\r
+\r
+ pxor xmm13,xmm0\r
+ cmp rdx,0x40\r
+ jb NEAR $L$xts_enc_three\r
+ pxor xmm14,xmm0\r
+ je NEAR $L$xts_enc_four\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ pxor xmm2,xmm10\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ pxor xmm3,xmm11\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ lea rdi,[80+rdi]\r
+ pxor xmm4,xmm12\r
+ pxor xmm5,xmm13\r
+ pxor xmm6,xmm14\r
+ pxor xmm7,xmm7\r
+\r
+ call _aesni_encrypt6\r
+\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm15\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+ movdqu XMMWORD[rsi],xmm2\r
+ xorps xmm5,xmm13\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ xorps xmm6,xmm14\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ lea rsi,[80+rsi]\r
+ jmp NEAR $L$xts_enc_done\r
+\r
+ALIGN 16\r
+$L$xts_enc_one:\r
+ movups xmm2,XMMWORD[rdi]\r
+ lea rdi,[16+rdi]\r
+ xorps xmm2,xmm10\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_9:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_9\r
+DB 102,15,56,221,209\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+ lea rsi,[16+rsi]\r
+ jmp NEAR $L$xts_enc_done\r
+\r
+ALIGN 16\r
+$L$xts_enc_two:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ lea rdi,[32+rdi]\r
+ xorps xmm2,xmm10\r
+ xorps xmm3,xmm11\r
+\r
+ call _aesni_encrypt2\r
+\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm12\r
+ xorps xmm3,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ lea rsi,[32+rsi]\r
+ jmp NEAR $L$xts_enc_done\r
+\r
+ALIGN 16\r
+$L$xts_enc_three:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ lea rdi,[48+rdi]\r
+ xorps xmm2,xmm10\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+\r
+ call _aesni_encrypt3\r
+\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm13\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ lea rsi,[48+rsi]\r
+ jmp NEAR $L$xts_enc_done\r
+\r
+ALIGN 16\r
+$L$xts_enc_four:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ xorps xmm2,xmm10\r
+ movups xmm5,XMMWORD[48+rdi]\r
+ lea rdi,[64+rdi]\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+ xorps xmm5,xmm13\r
+\r
+ call _aesni_encrypt4\r
+\r
+ pxor xmm2,xmm10\r
+ movdqa xmm10,xmm14\r
+ pxor xmm3,xmm11\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ lea rsi,[64+rsi]\r
+ jmp NEAR $L$xts_enc_done\r
+\r
+ALIGN 16\r
+$L$xts_enc_done:\r
+ and r9,15\r
+ jz NEAR $L$xts_enc_ret\r
+ mov rdx,r9\r
+\r
+$L$xts_enc_steal:\r
+ movzx eax,BYTE[rdi]\r
+ movzx ecx,BYTE[((-16))+rsi]\r
+ lea rdi,[1+rdi]\r
+ mov BYTE[((-16))+rsi],al\r
+ mov BYTE[rsi],cl\r
+ lea rsi,[1+rsi]\r
+ sub rdx,1\r
+ jnz NEAR $L$xts_enc_steal\r
+\r
+ sub rsi,r9\r
+ mov rcx,rbp\r
+ mov eax,r10d\r
+\r
+ movups xmm2,XMMWORD[((-16))+rsi]\r
+ xorps xmm2,xmm10\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_10:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_10\r
+DB 102,15,56,221,209\r
+ xorps xmm2,xmm10\r
+ movups XMMWORD[(-16)+rsi],xmm2\r
+\r
+$L$xts_enc_ret:\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ movaps xmm6,XMMWORD[((-168))+r11]\r
+ movaps XMMWORD[(-168)+r11],xmm0\r
+ movaps xmm7,XMMWORD[((-152))+r11]\r
+ movaps XMMWORD[(-152)+r11],xmm0\r
+ movaps xmm8,XMMWORD[((-136))+r11]\r
+ movaps XMMWORD[(-136)+r11],xmm0\r
+ movaps xmm9,XMMWORD[((-120))+r11]\r
+ movaps XMMWORD[(-120)+r11],xmm0\r
+ movaps xmm10,XMMWORD[((-104))+r11]\r
+ movaps XMMWORD[(-104)+r11],xmm0\r
+ movaps xmm11,XMMWORD[((-88))+r11]\r
+ movaps XMMWORD[(-88)+r11],xmm0\r
+ movaps xmm12,XMMWORD[((-72))+r11]\r
+ movaps XMMWORD[(-72)+r11],xmm0\r
+ movaps xmm13,XMMWORD[((-56))+r11]\r
+ movaps XMMWORD[(-56)+r11],xmm0\r
+ movaps xmm14,XMMWORD[((-40))+r11]\r
+ movaps XMMWORD[(-40)+r11],xmm0\r
+ movaps xmm15,XMMWORD[((-24))+r11]\r
+ movaps XMMWORD[(-24)+r11],xmm0\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ mov rbp,QWORD[((-8))+r11]\r
+\r
+ lea rsp,[r11]\r
+\r
+$L$xts_enc_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_xts_encrypt:\r
+global aesni_xts_decrypt\r
+\r
+ALIGN 16\r
+aesni_xts_decrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_xts_decrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea r11,[rsp]\r
+\r
+ push rbp\r
+\r
+ sub rsp,272\r
+ and rsp,-16\r
+ movaps XMMWORD[(-168)+r11],xmm6\r
+ movaps XMMWORD[(-152)+r11],xmm7\r
+ movaps XMMWORD[(-136)+r11],xmm8\r
+ movaps XMMWORD[(-120)+r11],xmm9\r
+ movaps XMMWORD[(-104)+r11],xmm10\r
+ movaps XMMWORD[(-88)+r11],xmm11\r
+ movaps XMMWORD[(-72)+r11],xmm12\r
+ movaps XMMWORD[(-56)+r11],xmm13\r
+ movaps XMMWORD[(-40)+r11],xmm14\r
+ movaps XMMWORD[(-24)+r11],xmm15\r
+$L$xts_dec_body:\r
+ movups xmm2,XMMWORD[r9]\r
+ mov eax,DWORD[240+r8]\r
+ mov r10d,DWORD[240+rcx]\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[16+r8]\r
+ lea r8,[32+r8]\r
+ xorps xmm2,xmm0\r
+$L$oop_enc1_11:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[r8]\r
+ lea r8,[16+r8]\r
+ jnz NEAR $L$oop_enc1_11\r
+DB 102,15,56,221,209\r
+ xor eax,eax\r
+ test rdx,15\r
+ setnz al\r
+ shl rax,4\r
+ sub rdx,rax\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ mov rbp,rcx\r
+ mov eax,r10d\r
+ shl r10d,4\r
+ mov r9,rdx\r
+ and rdx,-16\r
+\r
+ movups xmm1,XMMWORD[16+r10*1+rcx]\r
+\r
+ movdqa xmm8,XMMWORD[$L$xts_magic]\r
+ movdqa xmm15,xmm2\r
+ pshufd xmm9,xmm2,0x5f\r
+ pxor xmm1,xmm0\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm10,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm10,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm11,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm11,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm12,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm12,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+ movdqa xmm13,xmm15\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+ pxor xmm13,xmm0\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm15\r
+ psrad xmm9,31\r
+ paddq xmm15,xmm15\r
+ pand xmm9,xmm8\r
+ pxor xmm14,xmm0\r
+ pxor xmm15,xmm9\r
+ movaps XMMWORD[96+rsp],xmm1\r
+\r
+ sub rdx,16*6\r
+ jc NEAR $L$xts_dec_short\r
+\r
+ mov eax,16+96\r
+ lea rcx,[32+r10*1+rbp]\r
+ sub rax,r10\r
+ movups xmm1,XMMWORD[16+rbp]\r
+ mov r10,rax\r
+ lea r8,[$L$xts_magic]\r
+ jmp NEAR $L$xts_dec_grandloop\r
+\r
+ALIGN 32\r
+$L$xts_dec_grandloop:\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqa xmm8,xmm0\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ pxor xmm2,xmm10\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ pxor xmm3,xmm11\r
+DB 102,15,56,222,209\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ pxor xmm4,xmm12\r
+DB 102,15,56,222,217\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ pxor xmm5,xmm13\r
+DB 102,15,56,222,225\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ pxor xmm8,xmm15\r
+ movdqa xmm9,XMMWORD[96+rsp]\r
+ pxor xmm6,xmm14\r
+DB 102,15,56,222,233\r
+ movups xmm0,XMMWORD[32+rbp]\r
+ lea rdi,[96+rdi]\r
+ pxor xmm7,xmm8\r
+\r
+ pxor xmm10,xmm9\r
+DB 102,15,56,222,241\r
+ pxor xmm11,xmm9\r
+ movdqa XMMWORD[rsp],xmm10\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[48+rbp]\r
+ pxor xmm12,xmm9\r
+\r
+DB 102,15,56,222,208\r
+ pxor xmm13,xmm9\r
+ movdqa XMMWORD[16+rsp],xmm11\r
+DB 102,15,56,222,216\r
+ pxor xmm14,xmm9\r
+ movdqa XMMWORD[32+rsp],xmm12\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ pxor xmm8,xmm9\r
+ movdqa XMMWORD[64+rsp],xmm14\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[64+rbp]\r
+ movdqa XMMWORD[80+rsp],xmm8\r
+ pshufd xmm9,xmm15,0x5f\r
+ jmp NEAR $L$xts_dec_loop6\r
+ALIGN 32\r
+$L$xts_dec_loop6:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[((-64))+rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[((-80))+rax*1+rcx]\r
+ jnz NEAR $L$xts_dec_loop6\r
+\r
+ movdqa xmm8,XMMWORD[r8]\r
+ movdqa xmm14,xmm9\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,222,209\r
+ paddq xmm15,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,222,217\r
+ pand xmm14,xmm8\r
+ movups xmm10,XMMWORD[rbp]\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+ pxor xmm15,xmm14\r
+ movaps xmm11,xmm10\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[((-64))+rcx]\r
+\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,222,208\r
+ paddd xmm9,xmm9\r
+ pxor xmm10,xmm15\r
+DB 102,15,56,222,216\r
+ psrad xmm14,31\r
+ paddq xmm15,xmm15\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ pand xmm14,xmm8\r
+ movaps xmm12,xmm11\r
+DB 102,15,56,222,240\r
+ pxor xmm15,xmm14\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[((-48))+rcx]\r
+\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,222,209\r
+ pxor xmm11,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,222,217\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movdqa XMMWORD[48+rsp],xmm13\r
+ pxor xmm15,xmm14\r
+DB 102,15,56,222,241\r
+ movaps xmm13,xmm12\r
+ movdqa xmm14,xmm9\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[((-32))+rcx]\r
+\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,222,208\r
+ pxor xmm12,xmm15\r
+ psrad xmm14,31\r
+DB 102,15,56,222,216\r
+ paddq xmm15,xmm15\r
+ pand xmm14,xmm8\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+ pxor xmm15,xmm14\r
+ movaps xmm14,xmm13\r
+DB 102,15,56,222,248\r
+\r
+ movdqa xmm0,xmm9\r
+ paddd xmm9,xmm9\r
+DB 102,15,56,222,209\r
+ pxor xmm13,xmm15\r
+ psrad xmm0,31\r
+DB 102,15,56,222,217\r
+ paddq xmm15,xmm15\r
+ pand xmm0,xmm8\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ pxor xmm15,xmm0\r
+ movups xmm0,XMMWORD[rbp]\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[16+rbp]\r
+\r
+ pxor xmm14,xmm15\r
+DB 102,15,56,223,84,36,0\r
+ psrad xmm9,31\r
+ paddq xmm15,xmm15\r
+DB 102,15,56,223,92,36,16\r
+DB 102,15,56,223,100,36,32\r
+ pand xmm9,xmm8\r
+ mov rax,r10\r
+DB 102,15,56,223,108,36,48\r
+DB 102,15,56,223,116,36,64\r
+DB 102,15,56,223,124,36,80\r
+ pxor xmm15,xmm9\r
+\r
+ lea rsi,[96+rsi]\r
+ movups XMMWORD[(-96)+rsi],xmm2\r
+ movups XMMWORD[(-80)+rsi],xmm3\r
+ movups XMMWORD[(-64)+rsi],xmm4\r
+ movups XMMWORD[(-48)+rsi],xmm5\r
+ movups XMMWORD[(-32)+rsi],xmm6\r
+ movups XMMWORD[(-16)+rsi],xmm7\r
+ sub rdx,16*6\r
+ jnc NEAR $L$xts_dec_grandloop\r
+\r
+ mov eax,16+96\r
+ sub eax,r10d\r
+ mov rcx,rbp\r
+ shr eax,4\r
+\r
+$L$xts_dec_short:\r
+\r
+ mov r10d,eax\r
+ pxor xmm10,xmm0\r
+ pxor xmm11,xmm0\r
+ add rdx,16*6\r
+ jz NEAR $L$xts_dec_done\r
+\r
+ pxor xmm12,xmm0\r
+ cmp rdx,0x20\r
+ jb NEAR $L$xts_dec_one\r
+ pxor xmm13,xmm0\r
+ je NEAR $L$xts_dec_two\r
+\r
+ pxor xmm14,xmm0\r
+ cmp rdx,0x40\r
+ jb NEAR $L$xts_dec_three\r
+ je NEAR $L$xts_dec_four\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ pxor xmm2,xmm10\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ pxor xmm3,xmm11\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ lea rdi,[80+rdi]\r
+ pxor xmm4,xmm12\r
+ pxor xmm5,xmm13\r
+ pxor xmm6,xmm14\r
+\r
+ call _aesni_decrypt6\r
+\r
+ xorps xmm2,xmm10\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+ movdqu XMMWORD[rsi],xmm2\r
+ xorps xmm5,xmm13\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ xorps xmm6,xmm14\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm14,xmm14\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ pcmpgtd xmm14,xmm15\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ lea rsi,[80+rsi]\r
+ pshufd xmm11,xmm14,0x13\r
+ and r9,15\r
+ jz NEAR $L$xts_dec_ret\r
+\r
+ movdqa xmm10,xmm15\r
+ paddq xmm15,xmm15\r
+ pand xmm11,xmm8\r
+ pxor xmm11,xmm15\r
+ jmp NEAR $L$xts_dec_done2\r
+\r
+ALIGN 16\r
+$L$xts_dec_one:\r
+ movups xmm2,XMMWORD[rdi]\r
+ lea rdi,[16+rdi]\r
+ xorps xmm2,xmm10\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_12:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_12\r
+DB 102,15,56,223,209\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+ movdqa xmm11,xmm12\r
+ lea rsi,[16+rsi]\r
+ jmp NEAR $L$xts_dec_done\r
+\r
+ALIGN 16\r
+$L$xts_dec_two:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ lea rdi,[32+rdi]\r
+ xorps xmm2,xmm10\r
+ xorps xmm3,xmm11\r
+\r
+ call _aesni_decrypt2\r
+\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm12\r
+ xorps xmm3,xmm11\r
+ movdqa xmm11,xmm13\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ lea rsi,[32+rsi]\r
+ jmp NEAR $L$xts_dec_done\r
+\r
+ALIGN 16\r
+$L$xts_dec_three:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ lea rdi,[48+rdi]\r
+ xorps xmm2,xmm10\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+\r
+ call _aesni_decrypt3\r
+\r
+ xorps xmm2,xmm10\r
+ movdqa xmm10,xmm13\r
+ xorps xmm3,xmm11\r
+ movdqa xmm11,xmm14\r
+ xorps xmm4,xmm12\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ lea rsi,[48+rsi]\r
+ jmp NEAR $L$xts_dec_done\r
+\r
+ALIGN 16\r
+$L$xts_dec_four:\r
+ movups xmm2,XMMWORD[rdi]\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ xorps xmm2,xmm10\r
+ movups xmm5,XMMWORD[48+rdi]\r
+ lea rdi,[64+rdi]\r
+ xorps xmm3,xmm11\r
+ xorps xmm4,xmm12\r
+ xorps xmm5,xmm13\r
+\r
+ call _aesni_decrypt4\r
+\r
+ pxor xmm2,xmm10\r
+ movdqa xmm10,xmm14\r
+ pxor xmm3,xmm11\r
+ movdqa xmm11,xmm15\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ lea rsi,[64+rsi]\r
+ jmp NEAR $L$xts_dec_done\r
+\r
+ALIGN 16\r
+$L$xts_dec_done:\r
+ and r9,15\r
+ jz NEAR $L$xts_dec_ret\r
+$L$xts_dec_done2:\r
+ mov rdx,r9\r
+ mov rcx,rbp\r
+ mov eax,r10d\r
+\r
+ movups xmm2,XMMWORD[rdi]\r
+ xorps xmm2,xmm11\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_13:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_13\r
+DB 102,15,56,223,209\r
+ xorps xmm2,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+\r
+$L$xts_dec_steal:\r
+ movzx eax,BYTE[16+rdi]\r
+ movzx ecx,BYTE[rsi]\r
+ lea rdi,[1+rdi]\r
+ mov BYTE[rsi],al\r
+ mov BYTE[16+rsi],cl\r
+ lea rsi,[1+rsi]\r
+ sub rdx,1\r
+ jnz NEAR $L$xts_dec_steal\r
+\r
+ sub rsi,r9\r
+ mov rcx,rbp\r
+ mov eax,r10d\r
+\r
+ movups xmm2,XMMWORD[rsi]\r
+ xorps xmm2,xmm10\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_14:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_14\r
+DB 102,15,56,223,209\r
+ xorps xmm2,xmm10\r
+ movups XMMWORD[rsi],xmm2\r
+\r
+$L$xts_dec_ret:\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ movaps xmm6,XMMWORD[((-168))+r11]\r
+ movaps XMMWORD[(-168)+r11],xmm0\r
+ movaps xmm7,XMMWORD[((-152))+r11]\r
+ movaps XMMWORD[(-152)+r11],xmm0\r
+ movaps xmm8,XMMWORD[((-136))+r11]\r
+ movaps XMMWORD[(-136)+r11],xmm0\r
+ movaps xmm9,XMMWORD[((-120))+r11]\r
+ movaps XMMWORD[(-120)+r11],xmm0\r
+ movaps xmm10,XMMWORD[((-104))+r11]\r
+ movaps XMMWORD[(-104)+r11],xmm0\r
+ movaps xmm11,XMMWORD[((-88))+r11]\r
+ movaps XMMWORD[(-88)+r11],xmm0\r
+ movaps xmm12,XMMWORD[((-72))+r11]\r
+ movaps XMMWORD[(-72)+r11],xmm0\r
+ movaps xmm13,XMMWORD[((-56))+r11]\r
+ movaps XMMWORD[(-56)+r11],xmm0\r
+ movaps xmm14,XMMWORD[((-40))+r11]\r
+ movaps XMMWORD[(-40)+r11],xmm0\r
+ movaps xmm15,XMMWORD[((-24))+r11]\r
+ movaps XMMWORD[(-24)+r11],xmm0\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ mov rbp,QWORD[((-8))+r11]\r
+\r
+ lea rsp,[r11]\r
+\r
+$L$xts_dec_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_xts_decrypt:\r
+global aesni_ocb_encrypt\r
+\r
+ALIGN 32\r
+aesni_ocb_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ocb_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea rax,[rsp]\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ lea rsp,[((-160))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[64+rsp],xmm10\r
+ movaps XMMWORD[80+rsp],xmm11\r
+ movaps XMMWORD[96+rsp],xmm12\r
+ movaps XMMWORD[112+rsp],xmm13\r
+ movaps XMMWORD[128+rsp],xmm14\r
+ movaps XMMWORD[144+rsp],xmm15\r
+$L$ocb_enc_body:\r
+ mov rbx,QWORD[56+rax]\r
+ mov rbp,QWORD[((56+8))+rax]\r
+\r
+ mov r10d,DWORD[240+rcx]\r
+ mov r11,rcx\r
+ shl r10d,4\r
+ movups xmm9,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+r10*1+rcx]\r
+\r
+ movdqu xmm15,XMMWORD[r9]\r
+ pxor xmm9,xmm1\r
+ pxor xmm15,xmm1\r
+\r
+ mov eax,16+32\r
+ lea rcx,[32+r10*1+r11]\r
+ movups xmm1,XMMWORD[16+r11]\r
+ sub rax,r10\r
+ mov r10,rax\r
+\r
+ movdqu xmm10,XMMWORD[rbx]\r
+ movdqu xmm8,XMMWORD[rbp]\r
+\r
+ test r8,1\r
+ jnz NEAR $L$ocb_enc_odd\r
+\r
+ bsf r12,r8\r
+ add r8,1\r
+ shl r12,4\r
+ movdqu xmm7,XMMWORD[r12*1+rbx]\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ lea rdi,[16+rdi]\r
+\r
+ call __ocb_encrypt1\r
+\r
+ movdqa xmm15,xmm7\r
+ movups XMMWORD[rsi],xmm2\r
+ lea rsi,[16+rsi]\r
+ sub rdx,1\r
+ jz NEAR $L$ocb_enc_done\r
+\r
+$L$ocb_enc_odd:\r
+ lea r12,[1+r8]\r
+ lea r13,[3+r8]\r
+ lea r14,[5+r8]\r
+ lea r8,[6+r8]\r
+ bsf r12,r12\r
+ bsf r13,r13\r
+ bsf r14,r14\r
+ shl r12,4\r
+ shl r13,4\r
+ shl r14,4\r
+\r
+ sub rdx,6\r
+ jc NEAR $L$ocb_enc_short\r
+ jmp NEAR $L$ocb_enc_grandloop\r
+\r
+ALIGN 32\r
+$L$ocb_enc_grandloop:\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ lea rdi,[96+rdi]\r
+\r
+ call __ocb_encrypt6\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ lea rsi,[96+rsi]\r
+ sub rdx,6\r
+ jnc NEAR $L$ocb_enc_grandloop\r
+\r
+$L$ocb_enc_short:\r
+ add rdx,6\r
+ jz NEAR $L$ocb_enc_done\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ cmp rdx,2\r
+ jb NEAR $L$ocb_enc_one\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ je NEAR $L$ocb_enc_two\r
+\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ cmp rdx,4\r
+ jb NEAR $L$ocb_enc_three\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ je NEAR $L$ocb_enc_four\r
+\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ pxor xmm7,xmm7\r
+\r
+ call __ocb_encrypt6\r
+\r
+ movdqa xmm15,xmm14\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+\r
+ jmp NEAR $L$ocb_enc_done\r
+\r
+ALIGN 16\r
+$L$ocb_enc_one:\r
+ movdqa xmm7,xmm10\r
+\r
+ call __ocb_encrypt1\r
+\r
+ movdqa xmm15,xmm7\r
+ movups XMMWORD[rsi],xmm2\r
+ jmp NEAR $L$ocb_enc_done\r
+\r
+ALIGN 16\r
+$L$ocb_enc_two:\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+\r
+ call __ocb_encrypt4\r
+\r
+ movdqa xmm15,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+\r
+ jmp NEAR $L$ocb_enc_done\r
+\r
+ALIGN 16\r
+$L$ocb_enc_three:\r
+ pxor xmm5,xmm5\r
+\r
+ call __ocb_encrypt4\r
+\r
+ movdqa xmm15,xmm12\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+\r
+ jmp NEAR $L$ocb_enc_done\r
+\r
+ALIGN 16\r
+$L$ocb_enc_four:\r
+ call __ocb_encrypt4\r
+\r
+ movdqa xmm15,xmm13\r
+ movups XMMWORD[rsi],xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+\r
+$L$ocb_enc_done:\r
+ pxor xmm15,xmm0\r
+ movdqu XMMWORD[rbp],xmm8\r
+ movdqu XMMWORD[r9],xmm15\r
+\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps xmm10,XMMWORD[64+rsp]\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps xmm11,XMMWORD[80+rsp]\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps xmm12,XMMWORD[96+rsp]\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ movaps xmm13,XMMWORD[112+rsp]\r
+ movaps XMMWORD[112+rsp],xmm0\r
+ movaps xmm14,XMMWORD[128+rsp]\r
+ movaps XMMWORD[128+rsp],xmm0\r
+ movaps xmm15,XMMWORD[144+rsp]\r
+ movaps XMMWORD[144+rsp],xmm0\r
+ lea rax,[((160+40))+rsp]\r
+$L$ocb_enc_pop:\r
+ mov r14,QWORD[((-40))+rax]\r
+\r
+ mov r13,QWORD[((-32))+rax]\r
+\r
+ mov r12,QWORD[((-24))+rax]\r
+\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$ocb_enc_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ocb_encrypt:\r
+\r
+\r
+ALIGN 32\r
+__ocb_encrypt6:\r
+\r
+ pxor xmm15,xmm9\r
+ movdqu xmm11,XMMWORD[r12*1+rbx]\r
+ movdqa xmm12,xmm10\r
+ movdqu xmm13,XMMWORD[r13*1+rbx]\r
+ movdqa xmm14,xmm10\r
+ pxor xmm10,xmm15\r
+ movdqu xmm15,XMMWORD[r14*1+rbx]\r
+ pxor xmm11,xmm10\r
+ pxor xmm8,xmm2\r
+ pxor xmm2,xmm10\r
+ pxor xmm12,xmm11\r
+ pxor xmm8,xmm3\r
+ pxor xmm3,xmm11\r
+ pxor xmm13,xmm12\r
+ pxor xmm8,xmm4\r
+ pxor xmm4,xmm12\r
+ pxor xmm14,xmm13\r
+ pxor xmm8,xmm5\r
+ pxor xmm5,xmm13\r
+ pxor xmm15,xmm14\r
+ pxor xmm8,xmm6\r
+ pxor xmm6,xmm14\r
+ pxor xmm8,xmm7\r
+ pxor xmm7,xmm15\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+ lea r12,[1+r8]\r
+ lea r13,[3+r8]\r
+ lea r14,[5+r8]\r
+ add r8,6\r
+ pxor xmm10,xmm9\r
+ bsf r12,r12\r
+ bsf r13,r13\r
+ bsf r14,r14\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ pxor xmm11,xmm9\r
+ pxor xmm12,xmm9\r
+DB 102,15,56,220,241\r
+ pxor xmm13,xmm9\r
+ pxor xmm14,xmm9\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[48+r11]\r
+ pxor xmm15,xmm9\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[64+r11]\r
+ shl r12,4\r
+ shl r13,4\r
+ jmp NEAR $L$ocb_enc_loop6\r
+\r
+ALIGN 32\r
+$L$ocb_enc_loop6:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+DB 102,15,56,220,240\r
+DB 102,15,56,220,248\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_enc_loop6\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+DB 102,15,56,220,241\r
+DB 102,15,56,220,249\r
+ movups xmm1,XMMWORD[16+r11]\r
+ shl r14,4\r
+\r
+DB 102,65,15,56,221,210\r
+ movdqu xmm10,XMMWORD[rbx]\r
+ mov rax,r10\r
+DB 102,65,15,56,221,219\r
+DB 102,65,15,56,221,228\r
+DB 102,65,15,56,221,237\r
+DB 102,65,15,56,221,246\r
+DB 102,65,15,56,221,255\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+ALIGN 32\r
+__ocb_encrypt4:\r
+\r
+ pxor xmm15,xmm9\r
+ movdqu xmm11,XMMWORD[r12*1+rbx]\r
+ movdqa xmm12,xmm10\r
+ movdqu xmm13,XMMWORD[r13*1+rbx]\r
+ pxor xmm10,xmm15\r
+ pxor xmm11,xmm10\r
+ pxor xmm8,xmm2\r
+ pxor xmm2,xmm10\r
+ pxor xmm12,xmm11\r
+ pxor xmm8,xmm3\r
+ pxor xmm3,xmm11\r
+ pxor xmm13,xmm12\r
+ pxor xmm8,xmm4\r
+ pxor xmm4,xmm12\r
+ pxor xmm8,xmm5\r
+ pxor xmm5,xmm13\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+ pxor xmm10,xmm9\r
+ pxor xmm11,xmm9\r
+ pxor xmm12,xmm9\r
+ pxor xmm13,xmm9\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[48+r11]\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[64+r11]\r
+ jmp NEAR $L$ocb_enc_loop4\r
+\r
+ALIGN 32\r
+$L$ocb_enc_loop4:\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,220,208\r
+DB 102,15,56,220,216\r
+DB 102,15,56,220,224\r
+DB 102,15,56,220,232\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_enc_loop4\r
+\r
+DB 102,15,56,220,209\r
+DB 102,15,56,220,217\r
+DB 102,15,56,220,225\r
+DB 102,15,56,220,233\r
+ movups xmm1,XMMWORD[16+r11]\r
+ mov rax,r10\r
+\r
+DB 102,65,15,56,221,210\r
+DB 102,65,15,56,221,219\r
+DB 102,65,15,56,221,228\r
+DB 102,65,15,56,221,237\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+ALIGN 32\r
+__ocb_encrypt1:\r
+\r
+ pxor xmm7,xmm15\r
+ pxor xmm7,xmm9\r
+ pxor xmm8,xmm2\r
+ pxor xmm2,xmm7\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[48+r11]\r
+ pxor xmm7,xmm9\r
+\r
+DB 102,15,56,220,208\r
+ movups xmm0,XMMWORD[64+r11]\r
+ jmp NEAR $L$ocb_enc_loop1\r
+\r
+ALIGN 32\r
+$L$ocb_enc_loop1:\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,220,208\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_enc_loop1\r
+\r
+DB 102,15,56,220,209\r
+ movups xmm1,XMMWORD[16+r11]\r
+ mov rax,r10\r
+\r
+DB 102,15,56,221,215\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global aesni_ocb_decrypt\r
+\r
+ALIGN 32\r
+aesni_ocb_decrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_ocb_decrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ lea rax,[rsp]\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ lea rsp,[((-160))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[64+rsp],xmm10\r
+ movaps XMMWORD[80+rsp],xmm11\r
+ movaps XMMWORD[96+rsp],xmm12\r
+ movaps XMMWORD[112+rsp],xmm13\r
+ movaps XMMWORD[128+rsp],xmm14\r
+ movaps XMMWORD[144+rsp],xmm15\r
+$L$ocb_dec_body:\r
+ mov rbx,QWORD[56+rax]\r
+ mov rbp,QWORD[((56+8))+rax]\r
+\r
+ mov r10d,DWORD[240+rcx]\r
+ mov r11,rcx\r
+ shl r10d,4\r
+ movups xmm9,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+r10*1+rcx]\r
+\r
+ movdqu xmm15,XMMWORD[r9]\r
+ pxor xmm9,xmm1\r
+ pxor xmm15,xmm1\r
+\r
+ mov eax,16+32\r
+ lea rcx,[32+r10*1+r11]\r
+ movups xmm1,XMMWORD[16+r11]\r
+ sub rax,r10\r
+ mov r10,rax\r
+\r
+ movdqu xmm10,XMMWORD[rbx]\r
+ movdqu xmm8,XMMWORD[rbp]\r
+\r
+ test r8,1\r
+ jnz NEAR $L$ocb_dec_odd\r
+\r
+ bsf r12,r8\r
+ add r8,1\r
+ shl r12,4\r
+ movdqu xmm7,XMMWORD[r12*1+rbx]\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ lea rdi,[16+rdi]\r
+\r
+ call __ocb_decrypt1\r
+\r
+ movdqa xmm15,xmm7\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm8,xmm2\r
+ lea rsi,[16+rsi]\r
+ sub rdx,1\r
+ jz NEAR $L$ocb_dec_done\r
+\r
+$L$ocb_dec_odd:\r
+ lea r12,[1+r8]\r
+ lea r13,[3+r8]\r
+ lea r14,[5+r8]\r
+ lea r8,[6+r8]\r
+ bsf r12,r12\r
+ bsf r13,r13\r
+ bsf r14,r14\r
+ shl r12,4\r
+ shl r13,4\r
+ shl r14,4\r
+\r
+ sub rdx,6\r
+ jc NEAR $L$ocb_dec_short\r
+ jmp NEAR $L$ocb_dec_grandloop\r
+\r
+ALIGN 32\r
+$L$ocb_dec_grandloop:\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ lea rdi,[96+rdi]\r
+\r
+ call __ocb_decrypt6\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm8,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm8,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm8,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm8,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm8,xmm6\r
+ movups XMMWORD[80+rsi],xmm7\r
+ pxor xmm8,xmm7\r
+ lea rsi,[96+rsi]\r
+ sub rdx,6\r
+ jnc NEAR $L$ocb_dec_grandloop\r
+\r
+$L$ocb_dec_short:\r
+ add rdx,6\r
+ jz NEAR $L$ocb_dec_done\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ cmp rdx,2\r
+ jb NEAR $L$ocb_dec_one\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ je NEAR $L$ocb_dec_two\r
+\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ cmp rdx,4\r
+ jb NEAR $L$ocb_dec_three\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ je NEAR $L$ocb_dec_four\r
+\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ pxor xmm7,xmm7\r
+\r
+ call __ocb_decrypt6\r
+\r
+ movdqa xmm15,xmm14\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm8,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm8,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm8,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm8,xmm5\r
+ movups XMMWORD[64+rsi],xmm6\r
+ pxor xmm8,xmm6\r
+\r
+ jmp NEAR $L$ocb_dec_done\r
+\r
+ALIGN 16\r
+$L$ocb_dec_one:\r
+ movdqa xmm7,xmm10\r
+\r
+ call __ocb_decrypt1\r
+\r
+ movdqa xmm15,xmm7\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm8,xmm2\r
+ jmp NEAR $L$ocb_dec_done\r
+\r
+ALIGN 16\r
+$L$ocb_dec_two:\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+\r
+ call __ocb_decrypt4\r
+\r
+ movdqa xmm15,xmm11\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm8,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ xorps xmm8,xmm3\r
+\r
+ jmp NEAR $L$ocb_dec_done\r
+\r
+ALIGN 16\r
+$L$ocb_dec_three:\r
+ pxor xmm5,xmm5\r
+\r
+ call __ocb_decrypt4\r
+\r
+ movdqa xmm15,xmm12\r
+ movups XMMWORD[rsi],xmm2\r
+ xorps xmm8,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ xorps xmm8,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ xorps xmm8,xmm4\r
+\r
+ jmp NEAR $L$ocb_dec_done\r
+\r
+ALIGN 16\r
+$L$ocb_dec_four:\r
+ call __ocb_decrypt4\r
+\r
+ movdqa xmm15,xmm13\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm8,xmm2\r
+ movups XMMWORD[16+rsi],xmm3\r
+ pxor xmm8,xmm3\r
+ movups XMMWORD[32+rsi],xmm4\r
+ pxor xmm8,xmm4\r
+ movups XMMWORD[48+rsi],xmm5\r
+ pxor xmm8,xmm5\r
+\r
+$L$ocb_dec_done:\r
+ pxor xmm15,xmm0\r
+ movdqu XMMWORD[rbp],xmm8\r
+ movdqu XMMWORD[r9],xmm15\r
+\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps XMMWORD[rsp],xmm0\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps xmm10,XMMWORD[64+rsp]\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps xmm11,XMMWORD[80+rsp]\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps xmm12,XMMWORD[96+rsp]\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ movaps xmm13,XMMWORD[112+rsp]\r
+ movaps XMMWORD[112+rsp],xmm0\r
+ movaps xmm14,XMMWORD[128+rsp]\r
+ movaps XMMWORD[128+rsp],xmm0\r
+ movaps xmm15,XMMWORD[144+rsp]\r
+ movaps XMMWORD[144+rsp],xmm0\r
+ lea rax,[((160+40))+rsp]\r
+$L$ocb_dec_pop:\r
+ mov r14,QWORD[((-40))+rax]\r
+\r
+ mov r13,QWORD[((-32))+rax]\r
+\r
+ mov r12,QWORD[((-24))+rax]\r
+\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$ocb_dec_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_ocb_decrypt:\r
+\r
+\r
+ALIGN 32\r
+__ocb_decrypt6:\r
+\r
+ pxor xmm15,xmm9\r
+ movdqu xmm11,XMMWORD[r12*1+rbx]\r
+ movdqa xmm12,xmm10\r
+ movdqu xmm13,XMMWORD[r13*1+rbx]\r
+ movdqa xmm14,xmm10\r
+ pxor xmm10,xmm15\r
+ movdqu xmm15,XMMWORD[r14*1+rbx]\r
+ pxor xmm11,xmm10\r
+ pxor xmm2,xmm10\r
+ pxor xmm12,xmm11\r
+ pxor xmm3,xmm11\r
+ pxor xmm13,xmm12\r
+ pxor xmm4,xmm12\r
+ pxor xmm14,xmm13\r
+ pxor xmm5,xmm13\r
+ pxor xmm15,xmm14\r
+ pxor xmm6,xmm14\r
+ pxor xmm7,xmm15\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+ lea r12,[1+r8]\r
+ lea r13,[3+r8]\r
+ lea r14,[5+r8]\r
+ add r8,6\r
+ pxor xmm10,xmm9\r
+ bsf r12,r12\r
+ bsf r13,r13\r
+ bsf r14,r14\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ pxor xmm11,xmm9\r
+ pxor xmm12,xmm9\r
+DB 102,15,56,222,241\r
+ pxor xmm13,xmm9\r
+ pxor xmm14,xmm9\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[48+r11]\r
+ pxor xmm15,xmm9\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[64+r11]\r
+ shl r12,4\r
+ shl r13,4\r
+ jmp NEAR $L$ocb_dec_loop6\r
+\r
+ALIGN 32\r
+$L$ocb_dec_loop6:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_dec_loop6\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ movups xmm1,XMMWORD[16+r11]\r
+ shl r14,4\r
+\r
+DB 102,65,15,56,223,210\r
+ movdqu xmm10,XMMWORD[rbx]\r
+ mov rax,r10\r
+DB 102,65,15,56,223,219\r
+DB 102,65,15,56,223,228\r
+DB 102,65,15,56,223,237\r
+DB 102,65,15,56,223,246\r
+DB 102,65,15,56,223,255\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+ALIGN 32\r
+__ocb_decrypt4:\r
+\r
+ pxor xmm15,xmm9\r
+ movdqu xmm11,XMMWORD[r12*1+rbx]\r
+ movdqa xmm12,xmm10\r
+ movdqu xmm13,XMMWORD[r13*1+rbx]\r
+ pxor xmm10,xmm15\r
+ pxor xmm11,xmm10\r
+ pxor xmm2,xmm10\r
+ pxor xmm12,xmm11\r
+ pxor xmm3,xmm11\r
+ pxor xmm13,xmm12\r
+ pxor xmm4,xmm12\r
+ pxor xmm5,xmm13\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+ pxor xmm10,xmm9\r
+ pxor xmm11,xmm9\r
+ pxor xmm12,xmm9\r
+ pxor xmm13,xmm9\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[48+r11]\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[64+r11]\r
+ jmp NEAR $L$ocb_dec_loop4\r
+\r
+ALIGN 32\r
+$L$ocb_dec_loop4:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_dec_loop4\r
+\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ movups xmm1,XMMWORD[16+r11]\r
+ mov rax,r10\r
+\r
+DB 102,65,15,56,223,210\r
+DB 102,65,15,56,223,219\r
+DB 102,65,15,56,223,228\r
+DB 102,65,15,56,223,237\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+ALIGN 32\r
+__ocb_decrypt1:\r
+\r
+ pxor xmm7,xmm15\r
+ pxor xmm7,xmm9\r
+ pxor xmm2,xmm7\r
+ movups xmm0,XMMWORD[32+r11]\r
+\r
+DB 102,15,56,222,209\r
+ movups xmm1,XMMWORD[48+r11]\r
+ pxor xmm7,xmm9\r
+\r
+DB 102,15,56,222,208\r
+ movups xmm0,XMMWORD[64+r11]\r
+ jmp NEAR $L$ocb_dec_loop1\r
+\r
+ALIGN 32\r
+$L$ocb_dec_loop1:\r
+DB 102,15,56,222,209\r
+ movups xmm1,XMMWORD[rax*1+rcx]\r
+ add rax,32\r
+\r
+DB 102,15,56,222,208\r
+ movups xmm0,XMMWORD[((-16))+rax*1+rcx]\r
+ jnz NEAR $L$ocb_dec_loop1\r
+\r
+DB 102,15,56,222,209\r
+ movups xmm1,XMMWORD[16+r11]\r
+ mov rax,r10\r
+\r
+DB 102,15,56,223,215\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global aesni_cbc_encrypt\r
+\r
+ALIGN 16\r
+aesni_cbc_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_aesni_cbc_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ test rdx,rdx\r
+ jz NEAR $L$cbc_ret\r
+\r
+ mov r10d,DWORD[240+rcx]\r
+ mov r11,rcx\r
+ test r9d,r9d\r
+ jz NEAR $L$cbc_decrypt\r
+\r
+ movups xmm2,XMMWORD[r8]\r
+ mov eax,r10d\r
+ cmp rdx,16\r
+ jb NEAR $L$cbc_enc_tail\r
+ sub rdx,16\r
+ jmp NEAR $L$cbc_enc_loop\r
+ALIGN 16\r
+$L$cbc_enc_loop:\r
+ movups xmm3,XMMWORD[rdi]\r
+ lea rdi,[16+rdi]\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ xorps xmm3,xmm0\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm3\r
+$L$oop_enc1_15:\r
+DB 102,15,56,220,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_enc1_15\r
+DB 102,15,56,221,209\r
+ mov eax,r10d\r
+ mov rcx,r11\r
+ movups XMMWORD[rsi],xmm2\r
+ lea rsi,[16+rsi]\r
+ sub rdx,16\r
+ jnc NEAR $L$cbc_enc_loop\r
+ add rdx,16\r
+ jnz NEAR $L$cbc_enc_tail\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movups XMMWORD[r8],xmm2\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ jmp NEAR $L$cbc_ret\r
+\r
+$L$cbc_enc_tail:\r
+ mov rcx,rdx\r
+ xchg rsi,rdi\r
+ DD 0x9066A4F3\r
+ mov ecx,16\r
+ sub rcx,rdx\r
+ xor eax,eax\r
+ DD 0x9066AAF3\r
+ lea rdi,[((-16))+rdi]\r
+ mov eax,r10d\r
+ mov rsi,rdi\r
+ mov rcx,r11\r
+ xor rdx,rdx\r
+ jmp NEAR $L$cbc_enc_loop\r
+\r
+ALIGN 16\r
+$L$cbc_decrypt:\r
+ cmp rdx,16\r
+ jne NEAR $L$cbc_decrypt_bulk\r
+\r
+\r
+\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[r8]\r
+ movdqa xmm4,xmm2\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_16:\r
+DB 102,15,56,222,209\r
+ dec r10d\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_16\r
+DB 102,15,56,223,209\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movdqu XMMWORD[r8],xmm4\r
+ xorps xmm2,xmm3\r
+ pxor xmm3,xmm3\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ jmp NEAR $L$cbc_ret\r
+ALIGN 16\r
+$L$cbc_decrypt_bulk:\r
+ lea r11,[rsp]\r
+\r
+ push rbp\r
+\r
+ sub rsp,176\r
+ and rsp,-16\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$cbc_decrypt_body:\r
+ mov rbp,rcx\r
+ movups xmm10,XMMWORD[r8]\r
+ mov eax,r10d\r
+ cmp rdx,0x50\r
+ jbe NEAR $L$cbc_dec_tail\r
+\r
+ movups xmm0,XMMWORD[rcx]\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqa xmm11,xmm2\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqa xmm12,xmm3\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqa xmm13,xmm4\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqa xmm14,xmm5\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movdqa xmm15,xmm6\r
+ mov r9d,DWORD[((OPENSSL_ia32cap_P+4))]\r
+ cmp rdx,0x70\r
+ jbe NEAR $L$cbc_dec_six_or_seven\r
+\r
+ and r9d,71303168\r
+ sub rdx,0x50\r
+ cmp r9d,4194304\r
+ je NEAR $L$cbc_dec_loop6_enter\r
+ sub rdx,0x20\r
+ lea rcx,[112+rcx]\r
+ jmp NEAR $L$cbc_dec_loop8_enter\r
+ALIGN 16\r
+$L$cbc_dec_loop8:\r
+ movups XMMWORD[rsi],xmm9\r
+ lea rsi,[16+rsi]\r
+$L$cbc_dec_loop8_enter:\r
+ movdqu xmm8,XMMWORD[96+rdi]\r
+ pxor xmm2,xmm0\r
+ movdqu xmm9,XMMWORD[112+rdi]\r
+ pxor xmm3,xmm0\r
+ movups xmm1,XMMWORD[((16-112))+rcx]\r
+ pxor xmm4,xmm0\r
+ mov rbp,-1\r
+ cmp rdx,0x70\r
+ pxor xmm5,xmm0\r
+ pxor xmm6,xmm0\r
+ pxor xmm7,xmm0\r
+ pxor xmm8,xmm0\r
+\r
+DB 102,15,56,222,209\r
+ pxor xmm9,xmm0\r
+ movups xmm0,XMMWORD[((32-112))+rcx]\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+ adc rbp,0\r
+ and rbp,128\r
+DB 102,68,15,56,222,201\r
+ add rbp,rdi\r
+ movups xmm1,XMMWORD[((48-112))+rcx]\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((64-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movups xmm1,XMMWORD[((80-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((96-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movups xmm1,XMMWORD[((112-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((128-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movups xmm1,XMMWORD[((144-112))+rcx]\r
+ cmp eax,11\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((160-112))+rcx]\r
+ jb NEAR $L$cbc_dec_done\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movups xmm1,XMMWORD[((176-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((192-112))+rcx]\r
+ je NEAR $L$cbc_dec_done\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movups xmm1,XMMWORD[((208-112))+rcx]\r
+ nop\r
+DB 102,15,56,222,208\r
+DB 102,15,56,222,216\r
+DB 102,15,56,222,224\r
+DB 102,15,56,222,232\r
+DB 102,15,56,222,240\r
+DB 102,15,56,222,248\r
+DB 102,68,15,56,222,192\r
+DB 102,68,15,56,222,200\r
+ movups xmm0,XMMWORD[((224-112))+rcx]\r
+ jmp NEAR $L$cbc_dec_done\r
+ALIGN 16\r
+$L$cbc_dec_done:\r
+DB 102,15,56,222,209\r
+DB 102,15,56,222,217\r
+ pxor xmm10,xmm0\r
+ pxor xmm11,xmm0\r
+DB 102,15,56,222,225\r
+DB 102,15,56,222,233\r
+ pxor xmm12,xmm0\r
+ pxor xmm13,xmm0\r
+DB 102,15,56,222,241\r
+DB 102,15,56,222,249\r
+ pxor xmm14,xmm0\r
+ pxor xmm15,xmm0\r
+DB 102,68,15,56,222,193\r
+DB 102,68,15,56,222,201\r
+ movdqu xmm1,XMMWORD[80+rdi]\r
+\r
+DB 102,65,15,56,223,210\r
+ movdqu xmm10,XMMWORD[96+rdi]\r
+ pxor xmm1,xmm0\r
+DB 102,65,15,56,223,219\r
+ pxor xmm10,xmm0\r
+ movdqu xmm0,XMMWORD[112+rdi]\r
+DB 102,65,15,56,223,228\r
+ lea rdi,[128+rdi]\r
+ movdqu xmm11,XMMWORD[rbp]\r
+DB 102,65,15,56,223,237\r
+DB 102,65,15,56,223,246\r
+ movdqu xmm12,XMMWORD[16+rbp]\r
+ movdqu xmm13,XMMWORD[32+rbp]\r
+DB 102,65,15,56,223,255\r
+DB 102,68,15,56,223,193\r
+ movdqu xmm14,XMMWORD[48+rbp]\r
+ movdqu xmm15,XMMWORD[64+rbp]\r
+DB 102,69,15,56,223,202\r
+ movdqa xmm10,xmm0\r
+ movdqu xmm1,XMMWORD[80+rbp]\r
+ movups xmm0,XMMWORD[((-112))+rcx]\r
+\r
+ movups XMMWORD[rsi],xmm2\r
+ movdqa xmm2,xmm11\r
+ movups XMMWORD[16+rsi],xmm3\r
+ movdqa xmm3,xmm12\r
+ movups XMMWORD[32+rsi],xmm4\r
+ movdqa xmm4,xmm13\r
+ movups XMMWORD[48+rsi],xmm5\r
+ movdqa xmm5,xmm14\r
+ movups XMMWORD[64+rsi],xmm6\r
+ movdqa xmm6,xmm15\r
+ movups XMMWORD[80+rsi],xmm7\r
+ movdqa xmm7,xmm1\r
+ movups XMMWORD[96+rsi],xmm8\r
+ lea rsi,[112+rsi]\r
+\r
+ sub rdx,0x80\r
+ ja NEAR $L$cbc_dec_loop8\r
+\r
+ movaps xmm2,xmm9\r
+ lea rcx,[((-112))+rcx]\r
+ add rdx,0x70\r
+ jle NEAR $L$cbc_dec_clear_tail_collected\r
+ movups XMMWORD[rsi],xmm9\r
+ lea rsi,[16+rsi]\r
+ cmp rdx,0x50\r
+ jbe NEAR $L$cbc_dec_tail\r
+\r
+ movaps xmm2,xmm11\r
+$L$cbc_dec_six_or_seven:\r
+ cmp rdx,0x60\r
+ ja NEAR $L$cbc_dec_seven\r
+\r
+ movaps xmm8,xmm7\r
+ call _aesni_decrypt6\r
+ pxor xmm2,xmm10\r
+ movaps xmm10,xmm8\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ pxor xmm6,xmm14\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ pxor xmm7,xmm15\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ lea rsi,[80+rsi]\r
+ movdqa xmm2,xmm7\r
+ pxor xmm7,xmm7\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+\r
+ALIGN 16\r
+$L$cbc_dec_seven:\r
+ movups xmm8,XMMWORD[96+rdi]\r
+ xorps xmm9,xmm9\r
+ call _aesni_decrypt8\r
+ movups xmm9,XMMWORD[80+rdi]\r
+ pxor xmm2,xmm10\r
+ movups xmm10,XMMWORD[96+rdi]\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ pxor xmm6,xmm14\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ pxor xmm7,xmm15\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ pxor xmm6,xmm6\r
+ pxor xmm8,xmm9\r
+ movdqu XMMWORD[80+rsi],xmm7\r
+ pxor xmm7,xmm7\r
+ lea rsi,[96+rsi]\r
+ movdqa xmm2,xmm8\r
+ pxor xmm8,xmm8\r
+ pxor xmm9,xmm9\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+\r
+ALIGN 16\r
+$L$cbc_dec_loop6:\r
+ movups XMMWORD[rsi],xmm7\r
+ lea rsi,[16+rsi]\r
+ movdqu xmm2,XMMWORD[rdi]\r
+ movdqu xmm3,XMMWORD[16+rdi]\r
+ movdqa xmm11,xmm2\r
+ movdqu xmm4,XMMWORD[32+rdi]\r
+ movdqa xmm12,xmm3\r
+ movdqu xmm5,XMMWORD[48+rdi]\r
+ movdqa xmm13,xmm4\r
+ movdqu xmm6,XMMWORD[64+rdi]\r
+ movdqa xmm14,xmm5\r
+ movdqu xmm7,XMMWORD[80+rdi]\r
+ movdqa xmm15,xmm6\r
+$L$cbc_dec_loop6_enter:\r
+ lea rdi,[96+rdi]\r
+ movdqa xmm8,xmm7\r
+\r
+ call _aesni_decrypt6\r
+\r
+ pxor xmm2,xmm10\r
+ movdqa xmm10,xmm8\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm6,xmm14\r
+ mov rcx,rbp\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ pxor xmm7,xmm15\r
+ mov eax,r10d\r
+ movdqu XMMWORD[64+rsi],xmm6\r
+ lea rsi,[80+rsi]\r
+ sub rdx,0x60\r
+ ja NEAR $L$cbc_dec_loop6\r
+\r
+ movdqa xmm2,xmm7\r
+ add rdx,0x50\r
+ jle NEAR $L$cbc_dec_clear_tail_collected\r
+ movups XMMWORD[rsi],xmm7\r
+ lea rsi,[16+rsi]\r
+\r
+$L$cbc_dec_tail:\r
+ movups xmm2,XMMWORD[rdi]\r
+ sub rdx,0x10\r
+ jbe NEAR $L$cbc_dec_one\r
+\r
+ movups xmm3,XMMWORD[16+rdi]\r
+ movaps xmm11,xmm2\r
+ sub rdx,0x10\r
+ jbe NEAR $L$cbc_dec_two\r
+\r
+ movups xmm4,XMMWORD[32+rdi]\r
+ movaps xmm12,xmm3\r
+ sub rdx,0x10\r
+ jbe NEAR $L$cbc_dec_three\r
+\r
+ movups xmm5,XMMWORD[48+rdi]\r
+ movaps xmm13,xmm4\r
+ sub rdx,0x10\r
+ jbe NEAR $L$cbc_dec_four\r
+\r
+ movups xmm6,XMMWORD[64+rdi]\r
+ movaps xmm14,xmm5\r
+ movaps xmm15,xmm6\r
+ xorps xmm7,xmm7\r
+ call _aesni_decrypt6\r
+ pxor xmm2,xmm10\r
+ movaps xmm10,xmm15\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ pxor xmm6,xmm14\r
+ movdqu XMMWORD[48+rsi],xmm5\r
+ pxor xmm5,xmm5\r
+ lea rsi,[64+rsi]\r
+ movdqa xmm2,xmm6\r
+ pxor xmm6,xmm6\r
+ pxor xmm7,xmm7\r
+ sub rdx,0x10\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+\r
+ALIGN 16\r
+$L$cbc_dec_one:\r
+ movaps xmm11,xmm2\r
+ movups xmm0,XMMWORD[rcx]\r
+ movups xmm1,XMMWORD[16+rcx]\r
+ lea rcx,[32+rcx]\r
+ xorps xmm2,xmm0\r
+$L$oop_dec1_17:\r
+DB 102,15,56,222,209\r
+ dec eax\r
+ movups xmm1,XMMWORD[rcx]\r
+ lea rcx,[16+rcx]\r
+ jnz NEAR $L$oop_dec1_17\r
+DB 102,15,56,223,209\r
+ xorps xmm2,xmm10\r
+ movaps xmm10,xmm11\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+ALIGN 16\r
+$L$cbc_dec_two:\r
+ movaps xmm12,xmm3\r
+ call _aesni_decrypt2\r
+ pxor xmm2,xmm10\r
+ movaps xmm10,xmm12\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ movdqa xmm2,xmm3\r
+ pxor xmm3,xmm3\r
+ lea rsi,[16+rsi]\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+ALIGN 16\r
+$L$cbc_dec_three:\r
+ movaps xmm13,xmm4\r
+ call _aesni_decrypt3\r
+ pxor xmm2,xmm10\r
+ movaps xmm10,xmm13\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ movdqa xmm2,xmm4\r
+ pxor xmm4,xmm4\r
+ lea rsi,[32+rsi]\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+ALIGN 16\r
+$L$cbc_dec_four:\r
+ movaps xmm14,xmm5\r
+ call _aesni_decrypt4\r
+ pxor xmm2,xmm10\r
+ movaps xmm10,xmm14\r
+ pxor xmm3,xmm11\r
+ movdqu XMMWORD[rsi],xmm2\r
+ pxor xmm4,xmm12\r
+ movdqu XMMWORD[16+rsi],xmm3\r
+ pxor xmm3,xmm3\r
+ pxor xmm5,xmm13\r
+ movdqu XMMWORD[32+rsi],xmm4\r
+ pxor xmm4,xmm4\r
+ movdqa xmm2,xmm5\r
+ pxor xmm5,xmm5\r
+ lea rsi,[48+rsi]\r
+ jmp NEAR $L$cbc_dec_tail_collected\r
+\r
+ALIGN 16\r
+$L$cbc_dec_clear_tail_collected:\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+$L$cbc_dec_tail_collected:\r
+ movups XMMWORD[r8],xmm10\r
+ and rdx,15\r
+ jnz NEAR $L$cbc_dec_tail_partial\r
+ movups XMMWORD[rsi],xmm2\r
+ pxor xmm2,xmm2\r
+ jmp NEAR $L$cbc_dec_ret\r
+ALIGN 16\r
+$L$cbc_dec_tail_partial:\r
+ movaps XMMWORD[rsp],xmm2\r
+ pxor xmm2,xmm2\r
+ mov rcx,16\r
+ mov rdi,rsi\r
+ sub rcx,rdx\r
+ lea rsi,[rsp]\r
+ DD 0x9066A4F3\r
+ movdqa XMMWORD[rsp],xmm2\r
+\r
+$L$cbc_dec_ret:\r
+ xorps xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps XMMWORD[16+rsp],xmm0\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps XMMWORD[32+rsp],xmm0\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps XMMWORD[48+rsp],xmm0\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps XMMWORD[64+rsp],xmm0\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps XMMWORD[80+rsp],xmm0\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps XMMWORD[96+rsp],xmm0\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps XMMWORD[112+rsp],xmm0\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps XMMWORD[128+rsp],xmm0\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps XMMWORD[144+rsp],xmm0\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ movaps XMMWORD[160+rsp],xmm0\r
+ mov rbp,QWORD[((-8))+r11]\r
+\r
+ lea rsp,[r11]\r
+\r
+$L$cbc_ret:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_aesni_cbc_encrypt:\r
+global aesni_set_decrypt_key\r
+\r
+ALIGN 16\r
+aesni_set_decrypt_key:\r
+\r
+DB 0x48,0x83,0xEC,0x08\r
+\r
+ call __aesni_set_encrypt_key\r
+ shl edx,4\r
+ test eax,eax\r
+ jnz NEAR $L$dec_key_ret\r
+ lea rcx,[16+rdx*1+r8]\r
+\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[rcx]\r
+ movups XMMWORD[rcx],xmm0\r
+ movups XMMWORD[r8],xmm1\r
+ lea r8,[16+r8]\r
+ lea rcx,[((-16))+rcx]\r
+\r
+$L$dec_key_inverse:\r
+ movups xmm0,XMMWORD[r8]\r
+ movups xmm1,XMMWORD[rcx]\r
+DB 102,15,56,219,192\r
+DB 102,15,56,219,201\r
+ lea r8,[16+r8]\r
+ lea rcx,[((-16))+rcx]\r
+ movups XMMWORD[16+rcx],xmm0\r
+ movups XMMWORD[(-16)+r8],xmm1\r
+ cmp rcx,r8\r
+ ja NEAR $L$dec_key_inverse\r
+\r
+ movups xmm0,XMMWORD[r8]\r
+DB 102,15,56,219,192\r
+ pxor xmm1,xmm1\r
+ movups XMMWORD[rcx],xmm0\r
+ pxor xmm0,xmm0\r
+$L$dec_key_ret:\r
+ add rsp,8\r
+\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_set_decrypt_key:\r
+\r
+global aesni_set_encrypt_key\r
+\r
+ALIGN 16\r
+aesni_set_encrypt_key:\r
+__aesni_set_encrypt_key:\r
+\r
+DB 0x48,0x83,0xEC,0x08\r
+\r
+ mov rax,-1\r
+ test rcx,rcx\r
+ jz NEAR $L$enc_key_ret\r
+ test r8,r8\r
+ jz NEAR $L$enc_key_ret\r
+\r
+ mov r10d,268437504\r
+ movups xmm0,XMMWORD[rcx]\r
+ xorps xmm4,xmm4\r
+ and r10d,DWORD[((OPENSSL_ia32cap_P+4))]\r
+ lea rax,[16+r8]\r
+ cmp edx,256\r
+ je NEAR $L$14rounds\r
+ cmp edx,192\r
+ je NEAR $L$12rounds\r
+ cmp edx,128\r
+ jne NEAR $L$bad_keybits\r
+\r
+$L$10rounds:\r
+ mov edx,9\r
+ cmp r10d,268435456\r
+ je NEAR $L$10rounds_alt\r
+\r
+ movups XMMWORD[r8],xmm0\r
+DB 102,15,58,223,200,1\r
+ call $L$key_expansion_128_cold\r
+DB 102,15,58,223,200,2\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,4\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,8\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,16\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,32\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,64\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,128\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,27\r
+ call $L$key_expansion_128\r
+DB 102,15,58,223,200,54\r
+ call $L$key_expansion_128\r
+ movups XMMWORD[rax],xmm0\r
+ mov DWORD[80+rax],edx\r
+ xor eax,eax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$10rounds_alt:\r
+ movdqa xmm5,XMMWORD[$L$key_rotate]\r
+ mov r10d,8\r
+ movdqa xmm4,XMMWORD[$L$key_rcon1]\r
+ movdqa xmm2,xmm0\r
+ movdqu XMMWORD[r8],xmm0\r
+ jmp NEAR $L$oop_key128\r
+\r
+ALIGN 16\r
+$L$oop_key128:\r
+DB 102,15,56,0,197\r
+DB 102,15,56,221,196\r
+ pslld xmm4,1\r
+ lea rax,[16+rax]\r
+\r
+ movdqa xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm2,xmm3\r
+\r
+ pxor xmm0,xmm2\r
+ movdqu XMMWORD[(-16)+rax],xmm0\r
+ movdqa xmm2,xmm0\r
+\r
+ dec r10d\r
+ jnz NEAR $L$oop_key128\r
+\r
+ movdqa xmm4,XMMWORD[$L$key_rcon1b]\r
+\r
+DB 102,15,56,0,197\r
+DB 102,15,56,221,196\r
+ pslld xmm4,1\r
+\r
+ movdqa xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm2,xmm3\r
+\r
+ pxor xmm0,xmm2\r
+ movdqu XMMWORD[rax],xmm0\r
+\r
+ movdqa xmm2,xmm0\r
+DB 102,15,56,0,197\r
+DB 102,15,56,221,196\r
+\r
+ movdqa xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm3,xmm2\r
+ pslldq xmm2,4\r
+ pxor xmm2,xmm3\r
+\r
+ pxor xmm0,xmm2\r
+ movdqu XMMWORD[16+rax],xmm0\r
+\r
+ mov DWORD[96+rax],edx\r
+ xor eax,eax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$12rounds:\r
+ movq xmm2,QWORD[16+rcx]\r
+ mov edx,11\r
+ cmp r10d,268435456\r
+ je NEAR $L$12rounds_alt\r
+\r
+ movups XMMWORD[r8],xmm0\r
+DB 102,15,58,223,202,1\r
+ call $L$key_expansion_192a_cold\r
+DB 102,15,58,223,202,2\r
+ call $L$key_expansion_192b\r
+DB 102,15,58,223,202,4\r
+ call $L$key_expansion_192a\r
+DB 102,15,58,223,202,8\r
+ call $L$key_expansion_192b\r
+DB 102,15,58,223,202,16\r
+ call $L$key_expansion_192a\r
+DB 102,15,58,223,202,32\r
+ call $L$key_expansion_192b\r
+DB 102,15,58,223,202,64\r
+ call $L$key_expansion_192a\r
+DB 102,15,58,223,202,128\r
+ call $L$key_expansion_192b\r
+ movups XMMWORD[rax],xmm0\r
+ mov DWORD[48+rax],edx\r
+ xor rax,rax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$12rounds_alt:\r
+ movdqa xmm5,XMMWORD[$L$key_rotate192]\r
+ movdqa xmm4,XMMWORD[$L$key_rcon1]\r
+ mov r10d,8\r
+ movdqu XMMWORD[r8],xmm0\r
+ jmp NEAR $L$oop_key192\r
+\r
+ALIGN 16\r
+$L$oop_key192:\r
+ movq QWORD[rax],xmm2\r
+ movdqa xmm1,xmm2\r
+DB 102,15,56,0,213\r
+DB 102,15,56,221,212\r
+ pslld xmm4,1\r
+ lea rax,[24+rax]\r
+\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm0,xmm3\r
+\r
+ pshufd xmm3,xmm0,0xff\r
+ pxor xmm3,xmm1\r
+ pslldq xmm1,4\r
+ pxor xmm3,xmm1\r
+\r
+ pxor xmm0,xmm2\r
+ pxor xmm2,xmm3\r
+ movdqu XMMWORD[(-16)+rax],xmm0\r
+\r
+ dec r10d\r
+ jnz NEAR $L$oop_key192\r
+\r
+ mov DWORD[32+rax],edx\r
+ xor eax,eax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$14rounds:\r
+ movups xmm2,XMMWORD[16+rcx]\r
+ mov edx,13\r
+ lea rax,[16+rax]\r
+ cmp r10d,268435456\r
+ je NEAR $L$14rounds_alt\r
+\r
+ movups XMMWORD[r8],xmm0\r
+ movups XMMWORD[16+r8],xmm2\r
+DB 102,15,58,223,202,1\r
+ call $L$key_expansion_256a_cold\r
+DB 102,15,58,223,200,1\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,2\r
+ call $L$key_expansion_256a\r
+DB 102,15,58,223,200,2\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,4\r
+ call $L$key_expansion_256a\r
+DB 102,15,58,223,200,4\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,8\r
+ call $L$key_expansion_256a\r
+DB 102,15,58,223,200,8\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,16\r
+ call $L$key_expansion_256a\r
+DB 102,15,58,223,200,16\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,32\r
+ call $L$key_expansion_256a\r
+DB 102,15,58,223,200,32\r
+ call $L$key_expansion_256b\r
+DB 102,15,58,223,202,64\r
+ call $L$key_expansion_256a\r
+ movups XMMWORD[rax],xmm0\r
+ mov DWORD[16+rax],edx\r
+ xor rax,rax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$14rounds_alt:\r
+ movdqa xmm5,XMMWORD[$L$key_rotate]\r
+ movdqa xmm4,XMMWORD[$L$key_rcon1]\r
+ mov r10d,7\r
+ movdqu XMMWORD[r8],xmm0\r
+ movdqa xmm1,xmm2\r
+ movdqu XMMWORD[16+r8],xmm2\r
+ jmp NEAR $L$oop_key256\r
+\r
+ALIGN 16\r
+$L$oop_key256:\r
+DB 102,15,56,0,213\r
+DB 102,15,56,221,212\r
+\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm3,xmm0\r
+ pslldq xmm0,4\r
+ pxor xmm0,xmm3\r
+ pslld xmm4,1\r
+\r
+ pxor xmm0,xmm2\r
+ movdqu XMMWORD[rax],xmm0\r
+\r
+ dec r10d\r
+ jz NEAR $L$done_key256\r
+\r
+ pshufd xmm2,xmm0,0xff\r
+ pxor xmm3,xmm3\r
+DB 102,15,56,221,211\r
+\r
+ movdqa xmm3,xmm1\r
+ pslldq xmm1,4\r
+ pxor xmm3,xmm1\r
+ pslldq xmm1,4\r
+ pxor xmm3,xmm1\r
+ pslldq xmm1,4\r
+ pxor xmm1,xmm3\r
+\r
+ pxor xmm2,xmm1\r
+ movdqu XMMWORD[16+rax],xmm2\r
+ lea rax,[32+rax]\r
+ movdqa xmm1,xmm2\r
+\r
+ jmp NEAR $L$oop_key256\r
+\r
+$L$done_key256:\r
+ mov DWORD[16+rax],edx\r
+ xor eax,eax\r
+ jmp NEAR $L$enc_key_ret\r
+\r
+ALIGN 16\r
+$L$bad_keybits:\r
+ mov rax,-2\r
+$L$enc_key_ret:\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ add rsp,8\r
+\r
+ DB 0F3h,0C3h ;repret\r
+$L$SEH_end_set_encrypt_key:\r
+\r
+ALIGN 16\r
+$L$key_expansion_128:\r
+ movups XMMWORD[rax],xmm0\r
+ lea rax,[16+rax]\r
+$L$key_expansion_128_cold:\r
+ shufps xmm4,xmm0,16\r
+ xorps xmm0,xmm4\r
+ shufps xmm4,xmm0,140\r
+ xorps xmm0,xmm4\r
+ shufps xmm1,xmm1,255\r
+ xorps xmm0,xmm1\r
+ DB 0F3h,0C3h ;repret\r
+\r
+ALIGN 16\r
+$L$key_expansion_192a:\r
+ movups XMMWORD[rax],xmm0\r
+ lea rax,[16+rax]\r
+$L$key_expansion_192a_cold:\r
+ movaps xmm5,xmm2\r
+$L$key_expansion_192b_warm:\r
+ shufps xmm4,xmm0,16\r
+ movdqa xmm3,xmm2\r
+ xorps xmm0,xmm4\r
+ shufps xmm4,xmm0,140\r
+ pslldq xmm3,4\r
+ xorps xmm0,xmm4\r
+ pshufd xmm1,xmm1,85\r
+ pxor xmm2,xmm3\r
+ pxor xmm0,xmm1\r
+ pshufd xmm3,xmm0,255\r
+ pxor xmm2,xmm3\r
+ DB 0F3h,0C3h ;repret\r
+\r
+ALIGN 16\r
+$L$key_expansion_192b:\r
+ movaps xmm3,xmm0\r
+ shufps xmm5,xmm0,68\r
+ movups XMMWORD[rax],xmm5\r
+ shufps xmm3,xmm2,78\r
+ movups XMMWORD[16+rax],xmm3\r
+ lea rax,[32+rax]\r
+ jmp NEAR $L$key_expansion_192b_warm\r
+\r
+ALIGN 16\r
+$L$key_expansion_256a:\r
+ movups XMMWORD[rax],xmm2\r
+ lea rax,[16+rax]\r
+$L$key_expansion_256a_cold:\r
+ shufps xmm4,xmm0,16\r
+ xorps xmm0,xmm4\r
+ shufps xmm4,xmm0,140\r
+ xorps xmm0,xmm4\r
+ shufps xmm1,xmm1,255\r
+ xorps xmm0,xmm1\r
+ DB 0F3h,0C3h ;repret\r
+\r
+ALIGN 16\r
+$L$key_expansion_256b:\r
+ movups XMMWORD[rax],xmm0\r
+ lea rax,[16+rax]\r
+\r
+ shufps xmm4,xmm2,16\r
+ xorps xmm2,xmm4\r
+ shufps xmm4,xmm2,140\r
+ xorps xmm2,xmm4\r
+ shufps xmm1,xmm1,170\r
+ xorps xmm2,xmm1\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+ALIGN 64\r
+$L$bswap_mask:\r
+DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0\r
+$L$increment32:\r
+ DD 6,6,6,0\r
+$L$increment64:\r
+ DD 1,0,0,0\r
+$L$xts_magic:\r
+ DD 0x87,0,1,0\r
+$L$increment1:\r
+DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1\r
+$L$key_rotate:\r
+ DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d\r
+$L$key_rotate192:\r
+ DD 0x04070605,0x04070605,0x04070605,0x04070605\r
+$L$key_rcon1:\r
+ DD 1,1,1,1\r
+$L$key_rcon1b:\r
+ DD 0x1b,0x1b,0x1b,0x1b\r
+\r
+DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69\r
+DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83\r
+DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115\r
+DB 115,108,46,111,114,103,62,0\r
+ALIGN 64\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+ecb_ccm64_se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ lea rsi,[rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,8\r
+ DD 0xa548f3fc\r
+ lea rax,[88+rax]\r
+\r
+ jmp NEAR $L$common_seh_tail\r
+\r
+\r
+\r
+ALIGN 16\r
+ctr_xts_se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[208+r8]\r
+\r
+ lea rsi,[((-168))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+\r
+ mov rbp,QWORD[((-8))+rax]\r
+ mov QWORD[160+r8],rbp\r
+ jmp NEAR $L$common_seh_tail\r
+\r
+\r
+\r
+ALIGN 16\r
+ocb_se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ mov r10d,DWORD[8+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$ocb_no_xmm\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ lea rsi,[rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+ lea rax,[((160+40))+rax]\r
+\r
+$L$ocb_no_xmm:\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+\r
+ jmp NEAR $L$common_seh_tail\r
+\r
+\r
+ALIGN 16\r
+cbc_se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[152+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ lea r10,[$L$cbc_decrypt_bulk]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[120+r8]\r
+\r
+ lea r10,[$L$cbc_decrypt_body]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ lea r10,[$L$cbc_ret]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ lea rsi,[16+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+\r
+ mov rax,QWORD[208+r8]\r
+\r
+ mov rbp,QWORD[((-8))+rax]\r
+ mov QWORD[160+r8],rbp\r
+\r
+$L$common_seh_tail:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_ecb wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_info_ccm64_enc wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_info_ccm64_dec wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase\r
+ DD $L$SEH_info_ctr32 wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_xts_enc wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase\r
+ DD $L$SEH_info_xts_dec wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ocb_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_ocb_enc wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_ocb_decrypt wrt ..imagebase\r
+ DD $L$SEH_info_ocb_dec wrt ..imagebase\r
+ DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_cbc wrt ..imagebase\r
+\r
+ DD aesni_set_decrypt_key wrt ..imagebase\r
+ DD $L$SEH_end_set_decrypt_key wrt ..imagebase\r
+ DD $L$SEH_info_key wrt ..imagebase\r
+\r
+ DD aesni_set_encrypt_key wrt ..imagebase\r
+ DD $L$SEH_end_set_encrypt_key wrt ..imagebase\r
+ DD $L$SEH_info_key wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_ecb:\r
+DB 9,0,0,0\r
+ DD ecb_ccm64_se_handler wrt ..imagebase\r
+ DD $L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase\r
+$L$SEH_info_ccm64_enc:\r
+DB 9,0,0,0\r
+ DD ecb_ccm64_se_handler wrt ..imagebase\r
+ DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase\r
+$L$SEH_info_ccm64_dec:\r
+DB 9,0,0,0\r
+ DD ecb_ccm64_se_handler wrt ..imagebase\r
+ DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase\r
+$L$SEH_info_ctr32:\r
+DB 9,0,0,0\r
+ DD ctr_xts_se_handler wrt ..imagebase\r
+ DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase\r
+$L$SEH_info_xts_enc:\r
+DB 9,0,0,0\r
+ DD ctr_xts_se_handler wrt ..imagebase\r
+ DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase\r
+$L$SEH_info_xts_dec:\r
+DB 9,0,0,0\r
+ DD ctr_xts_se_handler wrt ..imagebase\r
+ DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase\r
+$L$SEH_info_ocb_enc:\r
+DB 9,0,0,0\r
+ DD ocb_se_handler wrt ..imagebase\r
+ DD $L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imagebase\r
+ DD $L$ocb_enc_pop wrt ..imagebase\r
+ DD 0\r
+$L$SEH_info_ocb_dec:\r
+DB 9,0,0,0\r
+ DD ocb_se_handler wrt ..imagebase\r
+ DD $L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imagebase\r
+ DD $L$ocb_dec_pop wrt ..imagebase\r
+ DD 0\r
+$L$SEH_info_cbc:\r
+DB 9,0,0,0\r
+ DD cbc_se_handler wrt ..imagebase\r
+$L$SEH_info_key:\r
+DB 0x01,0x04,0x01,0x00\r
+DB 0x04,0x02,0x00,0x00\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl\r
+;\r
+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_encrypt_core:\r
+\r
+ mov r9,rdx\r
+ mov r11,16\r
+ mov eax,DWORD[240+rdx]\r
+ movdqa xmm1,xmm9\r
+ movdqa xmm2,XMMWORD[$L$k_ipt]\r
+ pandn xmm1,xmm0\r
+ movdqu xmm5,XMMWORD[r9]\r
+ psrld xmm1,4\r
+ pand xmm0,xmm9\r
+DB 102,15,56,0,208\r
+ movdqa xmm0,XMMWORD[(($L$k_ipt+16))]\r
+DB 102,15,56,0,193\r
+ pxor xmm2,xmm5\r
+ add r9,16\r
+ pxor xmm0,xmm2\r
+ lea r10,[$L$k_mc_backward]\r
+ jmp NEAR $L$enc_entry\r
+\r
+ALIGN 16\r
+$L$enc_loop:\r
+\r
+ movdqa xmm4,xmm13\r
+ movdqa xmm0,xmm12\r
+DB 102,15,56,0,226\r
+DB 102,15,56,0,195\r
+ pxor xmm4,xmm5\r
+ movdqa xmm5,xmm15\r
+ pxor xmm0,xmm4\r
+ movdqa xmm1,XMMWORD[((-64))+r10*1+r11]\r
+DB 102,15,56,0,234\r
+ movdqa xmm4,XMMWORD[r10*1+r11]\r
+ movdqa xmm2,xmm14\r
+DB 102,15,56,0,211\r
+ movdqa xmm3,xmm0\r
+ pxor xmm2,xmm5\r
+DB 102,15,56,0,193\r
+ add r9,16\r
+ pxor xmm0,xmm2\r
+DB 102,15,56,0,220\r
+ add r11,16\r
+ pxor xmm3,xmm0\r
+DB 102,15,56,0,193\r
+ and r11,0x30\r
+ sub rax,1\r
+ pxor xmm0,xmm3\r
+\r
+$L$enc_entry:\r
+\r
+ movdqa xmm1,xmm9\r
+ movdqa xmm5,xmm11\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm9\r
+DB 102,15,56,0,232\r
+ movdqa xmm3,xmm10\r
+ pxor xmm0,xmm1\r
+DB 102,15,56,0,217\r
+ movdqa xmm4,xmm10\r
+ pxor xmm3,xmm5\r
+DB 102,15,56,0,224\r
+ movdqa xmm2,xmm10\r
+ pxor xmm4,xmm5\r
+DB 102,15,56,0,211\r
+ movdqa xmm3,xmm10\r
+ pxor xmm2,xmm0\r
+DB 102,15,56,0,220\r
+ movdqu xmm5,XMMWORD[r9]\r
+ pxor xmm3,xmm1\r
+ jnz NEAR $L$enc_loop\r
+\r
+\r
+ movdqa xmm4,XMMWORD[((-96))+r10]\r
+ movdqa xmm0,XMMWORD[((-80))+r10]\r
+DB 102,15,56,0,226\r
+ pxor xmm4,xmm5\r
+DB 102,15,56,0,195\r
+ movdqa xmm1,XMMWORD[64+r10*1+r11]\r
+ pxor xmm0,xmm4\r
+DB 102,15,56,0,193\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_decrypt_core:\r
+\r
+ mov r9,rdx\r
+ mov eax,DWORD[240+rdx]\r
+ movdqa xmm1,xmm9\r
+ movdqa xmm2,XMMWORD[$L$k_dipt]\r
+ pandn xmm1,xmm0\r
+ mov r11,rax\r
+ psrld xmm1,4\r
+ movdqu xmm5,XMMWORD[r9]\r
+ shl r11,4\r
+ pand xmm0,xmm9\r
+DB 102,15,56,0,208\r
+ movdqa xmm0,XMMWORD[(($L$k_dipt+16))]\r
+ xor r11,0x30\r
+ lea r10,[$L$k_dsbd]\r
+DB 102,15,56,0,193\r
+ and r11,0x30\r
+ pxor xmm2,xmm5\r
+ movdqa xmm5,XMMWORD[(($L$k_mc_forward+48))]\r
+ pxor xmm0,xmm2\r
+ add r9,16\r
+ add r11,r10\r
+ jmp NEAR $L$dec_entry\r
+\r
+ALIGN 16\r
+$L$dec_loop:\r
+\r
+\r
+\r
+ movdqa xmm4,XMMWORD[((-32))+r10]\r
+ movdqa xmm1,XMMWORD[((-16))+r10]\r
+DB 102,15,56,0,226\r
+DB 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,XMMWORD[r10]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,XMMWORD[16+r10]\r
+\r
+DB 102,15,56,0,226\r
+DB 102,15,56,0,197\r
+DB 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,XMMWORD[32+r10]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,XMMWORD[48+r10]\r
+\r
+DB 102,15,56,0,226\r
+DB 102,15,56,0,197\r
+DB 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,XMMWORD[64+r10]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,XMMWORD[80+r10]\r
+\r
+DB 102,15,56,0,226\r
+DB 102,15,56,0,197\r
+DB 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ add r9,16\r
+DB 102,15,58,15,237,12\r
+ pxor xmm0,xmm1\r
+ sub rax,1\r
+\r
+$L$dec_entry:\r
+\r
+ movdqa xmm1,xmm9\r
+ pandn xmm1,xmm0\r
+ movdqa xmm2,xmm11\r
+ psrld xmm1,4\r
+ pand xmm0,xmm9\r
+DB 102,15,56,0,208\r
+ movdqa xmm3,xmm10\r
+ pxor xmm0,xmm1\r
+DB 102,15,56,0,217\r
+ movdqa xmm4,xmm10\r
+ pxor xmm3,xmm2\r
+DB 102,15,56,0,224\r
+ pxor xmm4,xmm2\r
+ movdqa xmm2,xmm10\r
+DB 102,15,56,0,211\r
+ movdqa xmm3,xmm10\r
+ pxor xmm2,xmm0\r
+DB 102,15,56,0,220\r
+ movdqu xmm0,XMMWORD[r9]\r
+ pxor xmm3,xmm1\r
+ jnz NEAR $L$dec_loop\r
+\r
+\r
+ movdqa xmm4,XMMWORD[96+r10]\r
+DB 102,15,56,0,226\r
+ pxor xmm4,xmm0\r
+ movdqa xmm0,XMMWORD[112+r10]\r
+ movdqa xmm2,XMMWORD[((-352))+r11]\r
+DB 102,15,56,0,195\r
+ pxor xmm0,xmm4\r
+DB 102,15,56,0,194\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_schedule_core:\r
+\r
+\r
+\r
+\r
+\r
+\r
+ call _vpaes_preheat\r
+ movdqa xmm8,XMMWORD[$L$k_rcon]\r
+ movdqu xmm0,XMMWORD[rdi]\r
+\r
+\r
+ movdqa xmm3,xmm0\r
+ lea r11,[$L$k_ipt]\r
+ call _vpaes_schedule_transform\r
+ movdqa xmm7,xmm0\r
+\r
+ lea r10,[$L$k_sr]\r
+ test rcx,rcx\r
+ jnz NEAR $L$schedule_am_decrypting\r
+\r
+\r
+ movdqu XMMWORD[rdx],xmm0\r
+ jmp NEAR $L$schedule_go\r
+\r
+$L$schedule_am_decrypting:\r
+\r
+ movdqa xmm1,XMMWORD[r10*1+r8]\r
+DB 102,15,56,0,217\r
+ movdqu XMMWORD[rdx],xmm3\r
+ xor r8,0x30\r
+\r
+$L$schedule_go:\r
+ cmp esi,192\r
+ ja NEAR $L$schedule_256\r
+ je NEAR $L$schedule_192\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+$L$schedule_128:\r
+ mov esi,10\r
+\r
+$L$oop_schedule_128:\r
+ call _vpaes_schedule_round\r
+ dec rsi\r
+ jz NEAR $L$schedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+ jmp NEAR $L$oop_schedule_128\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+$L$schedule_192:\r
+ movdqu xmm0,XMMWORD[8+rdi]\r
+ call _vpaes_schedule_transform\r
+ movdqa xmm6,xmm0\r
+ pxor xmm4,xmm4\r
+ movhlps xmm6,xmm4\r
+ mov esi,4\r
+\r
+$L$oop_schedule_192:\r
+ call _vpaes_schedule_round\r
+DB 102,15,58,15,198,8\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_192_smear\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_round\r
+ dec rsi\r
+ jz NEAR $L$schedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_192_smear\r
+ jmp NEAR $L$oop_schedule_192\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+$L$schedule_256:\r
+ movdqu xmm0,XMMWORD[16+rdi]\r
+ call _vpaes_schedule_transform\r
+ mov esi,7\r
+\r
+$L$oop_schedule_256:\r
+ call _vpaes_schedule_mangle\r
+ movdqa xmm6,xmm0\r
+\r
+\r
+ call _vpaes_schedule_round\r
+ dec rsi\r
+ jz NEAR $L$schedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+\r
+\r
+ pshufd xmm0,xmm0,0xFF\r
+ movdqa xmm5,xmm7\r
+ movdqa xmm7,xmm6\r
+ call _vpaes_schedule_low_round\r
+ movdqa xmm7,xmm5\r
+\r
+ jmp NEAR $L$oop_schedule_256\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+$L$schedule_mangle_last:\r
+\r
+ lea r11,[$L$k_deskew]\r
+ test rcx,rcx\r
+ jnz NEAR $L$schedule_mangle_last_dec\r
+\r
+\r
+ movdqa xmm1,XMMWORD[r10*1+r8]\r
+DB 102,15,56,0,193\r
+ lea r11,[$L$k_opt]\r
+ add rdx,32\r
+\r
+$L$schedule_mangle_last_dec:\r
+ add rdx,-16\r
+ pxor xmm0,XMMWORD[$L$k_s63]\r
+ call _vpaes_schedule_transform\r
+ movdqu XMMWORD[rdx],xmm0\r
+\r
+\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ pxor xmm6,xmm6\r
+ pxor xmm7,xmm7\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_schedule_192_smear:\r
+\r
+ pshufd xmm1,xmm6,0x80\r
+ pshufd xmm0,xmm7,0xFE\r
+ pxor xmm6,xmm1\r
+ pxor xmm1,xmm1\r
+ pxor xmm6,xmm0\r
+ movdqa xmm0,xmm6\r
+ movhlps xmm6,xmm1\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_schedule_round:\r
+\r
+\r
+ pxor xmm1,xmm1\r
+DB 102,65,15,58,15,200,15\r
+DB 102,69,15,58,15,192,15\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ pshufd xmm0,xmm0,0xFF\r
+DB 102,15,58,15,192,1\r
+\r
+\r
+\r
+\r
+_vpaes_schedule_low_round:\r
+\r
+ movdqa xmm1,xmm7\r
+ pslldq xmm7,4\r
+ pxor xmm7,xmm1\r
+ movdqa xmm1,xmm7\r
+ pslldq xmm7,8\r
+ pxor xmm7,xmm1\r
+ pxor xmm7,XMMWORD[$L$k_s63]\r
+\r
+\r
+ movdqa xmm1,xmm9\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm9\r
+ movdqa xmm2,xmm11\r
+DB 102,15,56,0,208\r
+ pxor xmm0,xmm1\r
+ movdqa xmm3,xmm10\r
+DB 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+ movdqa xmm4,xmm10\r
+DB 102,15,56,0,224\r
+ pxor xmm4,xmm2\r
+ movdqa xmm2,xmm10\r
+DB 102,15,56,0,211\r
+ pxor xmm2,xmm0\r
+ movdqa xmm3,xmm10\r
+DB 102,15,56,0,220\r
+ pxor xmm3,xmm1\r
+ movdqa xmm4,xmm13\r
+DB 102,15,56,0,226\r
+ movdqa xmm0,xmm12\r
+DB 102,15,56,0,195\r
+ pxor xmm0,xmm4\r
+\r
+\r
+ pxor xmm0,xmm7\r
+ movdqa xmm7,xmm0\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_schedule_transform:\r
+\r
+ movdqa xmm1,xmm9\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm9\r
+ movdqa xmm2,XMMWORD[r11]\r
+DB 102,15,56,0,208\r
+ movdqa xmm0,XMMWORD[16+r11]\r
+DB 102,15,56,0,193\r
+ pxor xmm0,xmm2\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_schedule_mangle:\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm5,XMMWORD[$L$k_mc_forward]\r
+ test rcx,rcx\r
+ jnz NEAR $L$schedule_mangle_dec\r
+\r
+\r
+ add rdx,16\r
+ pxor xmm4,XMMWORD[$L$k_s63]\r
+DB 102,15,56,0,229\r
+ movdqa xmm3,xmm4\r
+DB 102,15,56,0,229\r
+ pxor xmm3,xmm4\r
+DB 102,15,56,0,229\r
+ pxor xmm3,xmm4\r
+\r
+ jmp NEAR $L$schedule_mangle_both\r
+ALIGN 16\r
+$L$schedule_mangle_dec:\r
+\r
+ lea r11,[$L$k_dksd]\r
+ movdqa xmm1,xmm9\r
+ pandn xmm1,xmm4\r
+ psrld xmm1,4\r
+ pand xmm4,xmm9\r
+\r
+ movdqa xmm2,XMMWORD[r11]\r
+DB 102,15,56,0,212\r
+ movdqa xmm3,XMMWORD[16+r11]\r
+DB 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+DB 102,15,56,0,221\r
+\r
+ movdqa xmm2,XMMWORD[32+r11]\r
+DB 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,XMMWORD[48+r11]\r
+DB 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+DB 102,15,56,0,221\r
+\r
+ movdqa xmm2,XMMWORD[64+r11]\r
+DB 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,XMMWORD[80+r11]\r
+DB 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+DB 102,15,56,0,221\r
+\r
+ movdqa xmm2,XMMWORD[96+r11]\r
+DB 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,XMMWORD[112+r11]\r
+DB 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+\r
+ add rdx,-16\r
+\r
+$L$schedule_mangle_both:\r
+ movdqa xmm1,XMMWORD[r10*1+r8]\r
+DB 102,15,56,0,217\r
+ add r8,-16\r
+ and r8,0x30\r
+ movdqu XMMWORD[rdx],xmm3\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+global vpaes_set_encrypt_key\r
+\r
+ALIGN 16\r
+vpaes_set_encrypt_key:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_vpaes_set_encrypt_key:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ lea rsp,[((-184))+rsp]\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$enc_key_body:\r
+ mov eax,esi\r
+ shr eax,5\r
+ add eax,5\r
+ mov DWORD[240+rdx],eax\r
+\r
+ mov ecx,0\r
+ mov r8d,0x30\r
+ call _vpaes_schedule_core\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ lea rsp,[184+rsp]\r
+$L$enc_key_epilogue:\r
+ xor eax,eax\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_vpaes_set_encrypt_key:\r
+\r
+global vpaes_set_decrypt_key\r
+\r
+ALIGN 16\r
+vpaes_set_decrypt_key:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_vpaes_set_decrypt_key:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ lea rsp,[((-184))+rsp]\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$dec_key_body:\r
+ mov eax,esi\r
+ shr eax,5\r
+ add eax,5\r
+ mov DWORD[240+rdx],eax\r
+ shl eax,4\r
+ lea rdx,[16+rax*1+rdx]\r
+\r
+ mov ecx,1\r
+ mov r8d,esi\r
+ shr r8d,1\r
+ and r8d,32\r
+ xor r8d,32\r
+ call _vpaes_schedule_core\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ lea rsp,[184+rsp]\r
+$L$dec_key_epilogue:\r
+ xor eax,eax\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_vpaes_set_decrypt_key:\r
+\r
+global vpaes_encrypt\r
+\r
+ALIGN 16\r
+vpaes_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_vpaes_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ lea rsp,[((-184))+rsp]\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$enc_body:\r
+ movdqu xmm0,XMMWORD[rdi]\r
+ call _vpaes_preheat\r
+ call _vpaes_encrypt_core\r
+ movdqu XMMWORD[rsi],xmm0\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ lea rsp,[184+rsp]\r
+$L$enc_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_vpaes_encrypt:\r
+\r
+global vpaes_decrypt\r
+\r
+ALIGN 16\r
+vpaes_decrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_vpaes_decrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ lea rsp,[((-184))+rsp]\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$dec_body:\r
+ movdqu xmm0,XMMWORD[rdi]\r
+ call _vpaes_preheat\r
+ call _vpaes_decrypt_core\r
+ movdqu XMMWORD[rsi],xmm0\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ lea rsp,[184+rsp]\r
+$L$dec_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_vpaes_decrypt:\r
+global vpaes_cbc_encrypt\r
+\r
+ALIGN 16\r
+vpaes_cbc_encrypt:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_vpaes_cbc_encrypt:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+ mov r8,QWORD[40+rsp]\r
+ mov r9,QWORD[48+rsp]\r
+\r
+\r
+\r
+ xchg rdx,rcx\r
+ sub rcx,16\r
+ jc NEAR $L$cbc_abort\r
+ lea rsp,[((-184))+rsp]\r
+ movaps XMMWORD[16+rsp],xmm6\r
+ movaps XMMWORD[32+rsp],xmm7\r
+ movaps XMMWORD[48+rsp],xmm8\r
+ movaps XMMWORD[64+rsp],xmm9\r
+ movaps XMMWORD[80+rsp],xmm10\r
+ movaps XMMWORD[96+rsp],xmm11\r
+ movaps XMMWORD[112+rsp],xmm12\r
+ movaps XMMWORD[128+rsp],xmm13\r
+ movaps XMMWORD[144+rsp],xmm14\r
+ movaps XMMWORD[160+rsp],xmm15\r
+$L$cbc_body:\r
+ movdqu xmm6,XMMWORD[r8]\r
+ sub rsi,rdi\r
+ call _vpaes_preheat\r
+ cmp r9d,0\r
+ je NEAR $L$cbc_dec_loop\r
+ jmp NEAR $L$cbc_enc_loop\r
+ALIGN 16\r
+$L$cbc_enc_loop:\r
+ movdqu xmm0,XMMWORD[rdi]\r
+ pxor xmm0,xmm6\r
+ call _vpaes_encrypt_core\r
+ movdqa xmm6,xmm0\r
+ movdqu XMMWORD[rdi*1+rsi],xmm0\r
+ lea rdi,[16+rdi]\r
+ sub rcx,16\r
+ jnc NEAR $L$cbc_enc_loop\r
+ jmp NEAR $L$cbc_done\r
+ALIGN 16\r
+$L$cbc_dec_loop:\r
+ movdqu xmm0,XMMWORD[rdi]\r
+ movdqa xmm7,xmm0\r
+ call _vpaes_decrypt_core\r
+ pxor xmm0,xmm6\r
+ movdqa xmm6,xmm7\r
+ movdqu XMMWORD[rdi*1+rsi],xmm0\r
+ lea rdi,[16+rdi]\r
+ sub rcx,16\r
+ jnc NEAR $L$cbc_dec_loop\r
+$L$cbc_done:\r
+ movdqu XMMWORD[r8],xmm6\r
+ movaps xmm6,XMMWORD[16+rsp]\r
+ movaps xmm7,XMMWORD[32+rsp]\r
+ movaps xmm8,XMMWORD[48+rsp]\r
+ movaps xmm9,XMMWORD[64+rsp]\r
+ movaps xmm10,XMMWORD[80+rsp]\r
+ movaps xmm11,XMMWORD[96+rsp]\r
+ movaps xmm12,XMMWORD[112+rsp]\r
+ movaps xmm13,XMMWORD[128+rsp]\r
+ movaps xmm14,XMMWORD[144+rsp]\r
+ movaps xmm15,XMMWORD[160+rsp]\r
+ lea rsp,[184+rsp]\r
+$L$cbc_epilogue:\r
+$L$cbc_abort:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_vpaes_cbc_encrypt:\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 16\r
+_vpaes_preheat:\r
+\r
+ lea r10,[$L$k_s0F]\r
+ movdqa xmm10,XMMWORD[((-32))+r10]\r
+ movdqa xmm11,XMMWORD[((-16))+r10]\r
+ movdqa xmm9,XMMWORD[r10]\r
+ movdqa xmm13,XMMWORD[48+r10]\r
+ movdqa xmm12,XMMWORD[64+r10]\r
+ movdqa xmm15,XMMWORD[80+r10]\r
+ movdqa xmm14,XMMWORD[96+r10]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ALIGN 64\r
+_vpaes_consts:\r
+$L$k_inv:\r
+ DQ 0x0E05060F0D080180,0x040703090A0B0C02\r
+ DQ 0x01040A060F0B0780,0x030D0E0C02050809\r
+\r
+$L$k_s0F:\r
+ DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F\r
+\r
+$L$k_ipt:\r
+ DQ 0xC2B2E8985A2A7000,0xCABAE09052227808\r
+ DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81\r
+\r
+$L$k_sb1:\r
+ DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544\r
+ DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF\r
+$L$k_sb2:\r
+ DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD\r
+ DQ 0x69EB88400AE12900,0xC2A163C8AB82234A\r
+$L$k_sbo:\r
+ DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878\r
+ DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA\r
+\r
+$L$k_mc_forward:\r
+ DQ 0x0407060500030201,0x0C0F0E0D080B0A09\r
+ DQ 0x080B0A0904070605,0x000302010C0F0E0D\r
+ DQ 0x0C0F0E0D080B0A09,0x0407060500030201\r
+ DQ 0x000302010C0F0E0D,0x080B0A0904070605\r
+\r
+$L$k_mc_backward:\r
+ DQ 0x0605040702010003,0x0E0D0C0F0A09080B\r
+ DQ 0x020100030E0D0C0F,0x0A09080B06050407\r
+ DQ 0x0E0D0C0F0A09080B,0x0605040702010003\r
+ DQ 0x0A09080B06050407,0x020100030E0D0C0F\r
+\r
+$L$k_sr:\r
+ DQ 0x0706050403020100,0x0F0E0D0C0B0A0908\r
+ DQ 0x030E09040F0A0500,0x0B06010C07020D08\r
+ DQ 0x0F060D040B020900,0x070E050C030A0108\r
+ DQ 0x0B0E0104070A0D00,0x0306090C0F020508\r
+\r
+$L$k_rcon:\r
+ DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81\r
+\r
+$L$k_s63:\r
+ DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B\r
+\r
+$L$k_opt:\r
+ DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808\r
+ DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0\r
+\r
+$L$k_deskew:\r
+ DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A\r
+ DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77\r
+\r
+\r
+\r
+\r
+\r
+$L$k_dksd:\r
+ DQ 0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9\r
+ DQ 0x41C277F4B5368300,0x5FDC69EAAB289D1E\r
+$L$k_dksb:\r
+ DQ 0x9A4FCA1F8550D500,0x03D653861CC94C99\r
+ DQ 0x115BEDA7B6FC4A00,0xD993256F7E3482C8\r
+$L$k_dkse:\r
+ DQ 0xD5031CCA1FC9D600,0x53859A4C994F5086\r
+ DQ 0xA23196054FDC7BE8,0xCD5EF96A20B31487\r
+$L$k_dks9:\r
+ DQ 0xB6116FC87ED9A700,0x4AED933482255BFC\r
+ DQ 0x4576516227143300,0x8BB89FACE9DAFDCE\r
+\r
+\r
+\r
+\r
+\r
+$L$k_dipt:\r
+ DQ 0x0F505B040B545F00,0x154A411E114E451A\r
+ DQ 0x86E383E660056500,0x12771772F491F194\r
+\r
+$L$k_dsb9:\r
+ DQ 0x851C03539A86D600,0xCAD51F504F994CC9\r
+ DQ 0xC03B1789ECD74900,0x725E2C9EB2FBA565\r
+$L$k_dsbd:\r
+ DQ 0x7D57CCDFE6B1A200,0xF56E9B13882A4439\r
+ DQ 0x3CE2FAF724C6CB00,0x2931180D15DEEFD3\r
+$L$k_dsbb:\r
+ DQ 0xD022649296B44200,0x602646F6B0F2D404\r
+ DQ 0xC19498A6CD596700,0xF3FF0C3E3255AA6B\r
+$L$k_dsbe:\r
+ DQ 0x46F2929626D4D000,0x2242600464B4F6B0\r
+ DQ 0x0C55A6CDFFAAC100,0x9467F36B98593E32\r
+$L$k_dsbo:\r
+ DQ 0x1387EA537EF94000,0xC7AA6DB9D4943E2D\r
+ DQ 0x12D7560F93441D00,0xCA4B8159D8C58E9C\r
+DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105\r
+DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54\r
+DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97\r
+DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32\r
+DB 85,110,105,118,101,114,115,105,116,121,41,0\r
+ALIGN 64\r
+\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ lea rsi,[16+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+ lea rax,[184+rax]\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase\r
+ DD $L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase\r
+ DD $L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase\r
+ DD $L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase\r
+ DD $L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_vpaes_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_vpaes_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_vpaes_encrypt wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_vpaes_decrypt wrt ..imagebase\r
+ DD $L$SEH_end_vpaes_decrypt wrt ..imagebase\r
+ DD $L$SEH_info_vpaes_decrypt wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase\r
+ DD $L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase\r
+\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_vpaes_set_encrypt_key:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase\r
+$L$SEH_info_vpaes_set_decrypt_key:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase\r
+$L$SEH_info_vpaes_encrypt:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase\r
+$L$SEH_info_vpaes_decrypt:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase\r
+$L$SEH_info_vpaes_cbc_encrypt:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl\r
+;\r
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+global aesni_gcm_encrypt\r
+\r
+aesni_gcm_encrypt:\r
+\r
+ xor eax,eax\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global aesni_gcm_decrypt\r
+\r
+aesni_gcm_decrypt:\r
+\r
+ xor eax,eax\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/modes/asm/ghash-x86_64.pl\r
+;\r
+; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global gcm_gmult_4bit\r
+\r
+ALIGN 16\r
+gcm_gmult_4bit:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_gcm_gmult_4bit:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+\r
+\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ sub rsp,280\r
+\r
+$L$gmult_prologue:\r
+\r
+ movzx r8,BYTE[15+rdi]\r
+ lea r11,[$L$rem_4bit]\r
+ xor rax,rax\r
+ xor rbx,rbx\r
+ mov al,r8b\r
+ mov bl,r8b\r
+ shl al,4\r
+ mov rcx,14\r
+ mov r8,QWORD[8+rax*1+rsi]\r
+ mov r9,QWORD[rax*1+rsi]\r
+ and bl,0xf0\r
+ mov rdx,r8\r
+ jmp NEAR $L$oop1\r
+\r
+ALIGN 16\r
+$L$oop1:\r
+ shr r8,4\r
+ and rdx,0xf\r
+ mov r10,r9\r
+ mov al,BYTE[rcx*1+rdi]\r
+ shr r9,4\r
+ xor r8,QWORD[8+rbx*1+rsi]\r
+ shl r10,60\r
+ xor r9,QWORD[rbx*1+rsi]\r
+ mov bl,al\r
+ xor r9,QWORD[rdx*8+r11]\r
+ mov rdx,r8\r
+ shl al,4\r
+ xor r8,r10\r
+ dec rcx\r
+ js NEAR $L$break1\r
+\r
+ shr r8,4\r
+ and rdx,0xf\r
+ mov r10,r9\r
+ shr r9,4\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ shl r10,60\r
+ xor r9,QWORD[rax*1+rsi]\r
+ and bl,0xf0\r
+ xor r9,QWORD[rdx*8+r11]\r
+ mov rdx,r8\r
+ xor r8,r10\r
+ jmp NEAR $L$oop1\r
+\r
+ALIGN 16\r
+$L$break1:\r
+ shr r8,4\r
+ and rdx,0xf\r
+ mov r10,r9\r
+ shr r9,4\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ shl r10,60\r
+ xor r9,QWORD[rax*1+rsi]\r
+ and bl,0xf0\r
+ xor r9,QWORD[rdx*8+r11]\r
+ mov rdx,r8\r
+ xor r8,r10\r
+\r
+ shr r8,4\r
+ and rdx,0xf\r
+ mov r10,r9\r
+ shr r9,4\r
+ xor r8,QWORD[8+rbx*1+rsi]\r
+ shl r10,60\r
+ xor r9,QWORD[rbx*1+rsi]\r
+ xor r8,r10\r
+ xor r9,QWORD[rdx*8+r11]\r
+\r
+ bswap r8\r
+ bswap r9\r
+ mov QWORD[8+rdi],r8\r
+ mov QWORD[rdi],r9\r
+\r
+ lea rsi,[((280+48))+rsp]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$gmult_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_gcm_gmult_4bit:\r
+global gcm_ghash_4bit\r
+\r
+ALIGN 16\r
+gcm_ghash_4bit:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_gcm_ghash_4bit:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+ mov rcx,r9\r
+\r
+\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ sub rsp,280\r
+\r
+$L$ghash_prologue:\r
+ mov r14,rdx\r
+ mov r15,rcx\r
+ sub rsi,-128\r
+ lea rbp,[((16+128))+rsp]\r
+ xor edx,edx\r
+ mov r8,QWORD[((0+0-128))+rsi]\r
+ mov rax,QWORD[((0+8-128))+rsi]\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov r9,QWORD[((16+0-128))+rsi]\r
+ shl dl,4\r
+ mov rbx,QWORD[((16+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[rbp],r8\r
+ mov r8,QWORD[((32+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((0-128))+rbp],rax\r
+ mov rax,QWORD[((32+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[1+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[8+rbp],r9\r
+ mov r9,QWORD[((48+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((8-128))+rbp],rbx\r
+ mov rbx,QWORD[((48+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[2+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[16+rbp],r8\r
+ mov r8,QWORD[((64+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((16-128))+rbp],rax\r
+ mov rax,QWORD[((64+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[3+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[24+rbp],r9\r
+ mov r9,QWORD[((80+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((24-128))+rbp],rbx\r
+ mov rbx,QWORD[((80+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[4+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[32+rbp],r8\r
+ mov r8,QWORD[((96+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((32-128))+rbp],rax\r
+ mov rax,QWORD[((96+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[5+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[40+rbp],r9\r
+ mov r9,QWORD[((112+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((40-128))+rbp],rbx\r
+ mov rbx,QWORD[((112+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[6+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[48+rbp],r8\r
+ mov r8,QWORD[((128+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((48-128))+rbp],rax\r
+ mov rax,QWORD[((128+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[7+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[56+rbp],r9\r
+ mov r9,QWORD[((144+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((56-128))+rbp],rbx\r
+ mov rbx,QWORD[((144+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[8+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[64+rbp],r8\r
+ mov r8,QWORD[((160+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((64-128))+rbp],rax\r
+ mov rax,QWORD[((160+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[9+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[72+rbp],r9\r
+ mov r9,QWORD[((176+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((72-128))+rbp],rbx\r
+ mov rbx,QWORD[((176+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[10+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[80+rbp],r8\r
+ mov r8,QWORD[((192+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((80-128))+rbp],rax\r
+ mov rax,QWORD[((192+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[11+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[88+rbp],r9\r
+ mov r9,QWORD[((208+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((88-128))+rbp],rbx\r
+ mov rbx,QWORD[((208+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[12+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[96+rbp],r8\r
+ mov r8,QWORD[((224+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((96-128))+rbp],rax\r
+ mov rax,QWORD[((224+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[13+rsp],dl\r
+ or rbx,r10\r
+ mov dl,al\r
+ shr rax,4\r
+ mov r10,r8\r
+ shr r8,4\r
+ mov QWORD[104+rbp],r9\r
+ mov r9,QWORD[((240+0-128))+rsi]\r
+ shl dl,4\r
+ mov QWORD[((104-128))+rbp],rbx\r
+ mov rbx,QWORD[((240+8-128))+rsi]\r
+ shl r10,60\r
+ mov BYTE[14+rsp],dl\r
+ or rax,r10\r
+ mov dl,bl\r
+ shr rbx,4\r
+ mov r10,r9\r
+ shr r9,4\r
+ mov QWORD[112+rbp],r8\r
+ shl dl,4\r
+ mov QWORD[((112-128))+rbp],rax\r
+ shl r10,60\r
+ mov BYTE[15+rsp],dl\r
+ or rbx,r10\r
+ mov QWORD[120+rbp],r9\r
+ mov QWORD[((120-128))+rbp],rbx\r
+ add rsi,-128\r
+ mov r8,QWORD[8+rdi]\r
+ mov r9,QWORD[rdi]\r
+ add r15,r14\r
+ lea r11,[$L$rem_8bit]\r
+ jmp NEAR $L$outer_loop\r
+ALIGN 16\r
+$L$outer_loop:\r
+ xor r9,QWORD[r14]\r
+ mov rdx,QWORD[8+r14]\r
+ lea r14,[16+r14]\r
+ xor rdx,r8\r
+ mov QWORD[rdi],r9\r
+ mov QWORD[8+rdi],rdx\r
+ shr rdx,32\r
+ xor rax,rax\r
+ rol edx,8\r
+ mov al,dl\r
+ movzx ebx,dl\r
+ shl al,4\r
+ shr ebx,4\r
+ rol edx,8\r
+ mov r8,QWORD[8+rax*1+rsi]\r
+ mov r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ xor r12,r8\r
+ mov r10,r9\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ mov edx,DWORD[8+rdi]\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ mov edx,DWORD[4+rdi]\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ mov edx,DWORD[rdi]\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ shr ecx,4\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r12,WORD[r12*2+r11]\r
+ movzx ebx,dl\r
+ shl al,4\r
+ movzx r13,BYTE[rcx*1+rsp]\r
+ shr ebx,4\r
+ shl r12,48\r
+ xor r13,r8\r
+ mov r10,r9\r
+ xor r9,r12\r
+ shr r8,8\r
+ movzx r13,r13b\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rcx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rcx*8+rbp]\r
+ rol edx,8\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ mov al,dl\r
+ xor r8,r10\r
+ movzx r13,WORD[r13*2+r11]\r
+ movzx ecx,dl\r
+ shl al,4\r
+ movzx r12,BYTE[rbx*1+rsp]\r
+ and ecx,240\r
+ shl r13,48\r
+ xor r12,r8\r
+ mov r10,r9\r
+ xor r9,r13\r
+ shr r8,8\r
+ movzx r12,r12b\r
+ mov edx,DWORD[((-4))+rdi]\r
+ shr r9,8\r
+ xor r8,QWORD[((-128))+rbx*8+rbp]\r
+ shl r10,56\r
+ xor r9,QWORD[rbx*8+rbp]\r
+ movzx r12,WORD[r12*2+r11]\r
+ xor r8,QWORD[8+rax*1+rsi]\r
+ xor r9,QWORD[rax*1+rsi]\r
+ shl r12,48\r
+ xor r8,r10\r
+ xor r9,r12\r
+ movzx r13,r8b\r
+ shr r8,4\r
+ mov r10,r9\r
+ shl r13b,4\r
+ shr r9,4\r
+ xor r8,QWORD[8+rcx*1+rsi]\r
+ movzx r13,WORD[r13*2+r11]\r
+ shl r10,60\r
+ xor r9,QWORD[rcx*1+rsi]\r
+ xor r8,r10\r
+ shl r13,48\r
+ bswap r8\r
+ xor r9,r13\r
+ bswap r9\r
+ cmp r14,r15\r
+ jb NEAR $L$outer_loop\r
+ mov QWORD[8+rdi],r8\r
+ mov QWORD[rdi],r9\r
+\r
+ lea rsi,[((280+48))+rsp]\r
+\r
+ mov r15,QWORD[((-48))+rsi]\r
+\r
+ mov r14,QWORD[((-40))+rsi]\r
+\r
+ mov r13,QWORD[((-32))+rsi]\r
+\r
+ mov r12,QWORD[((-24))+rsi]\r
+\r
+ mov rbp,QWORD[((-16))+rsi]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$ghash_epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_gcm_ghash_4bit:\r
+global gcm_init_clmul\r
+\r
+ALIGN 16\r
+gcm_init_clmul:\r
+\r
+$L$_init_clmul:\r
+$L$SEH_begin_gcm_init_clmul:\r
+\r
+DB 0x48,0x83,0xec,0x18\r
+DB 0x0f,0x29,0x34,0x24\r
+ movdqu xmm2,XMMWORD[rdx]\r
+ pshufd xmm2,xmm2,78\r
+\r
+\r
+ pshufd xmm4,xmm2,255\r
+ movdqa xmm3,xmm2\r
+ psllq xmm2,1\r
+ pxor xmm5,xmm5\r
+ psrlq xmm3,63\r
+ pcmpgtd xmm5,xmm4\r
+ pslldq xmm3,8\r
+ por xmm2,xmm3\r
+\r
+\r
+ pand xmm5,XMMWORD[$L$0x1c2_polynomial]\r
+ pxor xmm2,xmm5\r
+\r
+\r
+ pshufd xmm6,xmm2,78\r
+ movdqa xmm0,xmm2\r
+ pxor xmm6,xmm2\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm3,xmm0,78\r
+ pxor xmm3,xmm0\r
+DB 102,15,58,68,194,0\r
+DB 102,15,58,68,202,17\r
+DB 102,15,58,68,222,0\r
+ pxor xmm3,xmm0\r
+ pxor xmm3,xmm1\r
+\r
+ movdqa xmm4,xmm3\r
+ psrldq xmm3,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm3\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ pshufd xmm3,xmm2,78\r
+ pshufd xmm4,xmm0,78\r
+ pxor xmm3,xmm2\r
+ movdqu XMMWORD[rcx],xmm2\r
+ pxor xmm4,xmm0\r
+ movdqu XMMWORD[16+rcx],xmm0\r
+DB 102,15,58,15,227,8\r
+ movdqu XMMWORD[32+rcx],xmm4\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm3,xmm0,78\r
+ pxor xmm3,xmm0\r
+DB 102,15,58,68,194,0\r
+DB 102,15,58,68,202,17\r
+DB 102,15,58,68,222,0\r
+ pxor xmm3,xmm0\r
+ pxor xmm3,xmm1\r
+\r
+ movdqa xmm4,xmm3\r
+ psrldq xmm3,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm3\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ movdqa xmm5,xmm0\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm3,xmm0,78\r
+ pxor xmm3,xmm0\r
+DB 102,15,58,68,194,0\r
+DB 102,15,58,68,202,17\r
+DB 102,15,58,68,222,0\r
+ pxor xmm3,xmm0\r
+ pxor xmm3,xmm1\r
+\r
+ movdqa xmm4,xmm3\r
+ psrldq xmm3,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm3\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ pshufd xmm3,xmm5,78\r
+ pshufd xmm4,xmm0,78\r
+ pxor xmm3,xmm5\r
+ movdqu XMMWORD[48+rcx],xmm5\r
+ pxor xmm4,xmm0\r
+ movdqu XMMWORD[64+rcx],xmm0\r
+DB 102,15,58,15,227,8\r
+ movdqu XMMWORD[80+rcx],xmm4\r
+ movaps xmm6,XMMWORD[rsp]\r
+ lea rsp,[24+rsp]\r
+$L$SEH_end_gcm_init_clmul:\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global gcm_gmult_clmul\r
+\r
+ALIGN 16\r
+gcm_gmult_clmul:\r
+\r
+$L$_gmult_clmul:\r
+ movdqu xmm0,XMMWORD[rcx]\r
+ movdqa xmm5,XMMWORD[$L$bswap_mask]\r
+ movdqu xmm2,XMMWORD[rdx]\r
+ movdqu xmm4,XMMWORD[32+rdx]\r
+DB 102,15,56,0,197\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm3,xmm0,78\r
+ pxor xmm3,xmm0\r
+DB 102,15,58,68,194,0\r
+DB 102,15,58,68,202,17\r
+DB 102,15,58,68,220,0\r
+ pxor xmm3,xmm0\r
+ pxor xmm3,xmm1\r
+\r
+ movdqa xmm4,xmm3\r
+ psrldq xmm3,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm3\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+DB 102,15,56,0,197\r
+ movdqu XMMWORD[rcx],xmm0\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global gcm_ghash_clmul\r
+\r
+ALIGN 32\r
+gcm_ghash_clmul:\r
+\r
+$L$_ghash_clmul:\r
+ lea rax,[((-136))+rsp]\r
+$L$SEH_begin_gcm_ghash_clmul:\r
+\r
+DB 0x48,0x8d,0x60,0xe0\r
+DB 0x0f,0x29,0x70,0xe0\r
+DB 0x0f,0x29,0x78,0xf0\r
+DB 0x44,0x0f,0x29,0x00\r
+DB 0x44,0x0f,0x29,0x48,0x10\r
+DB 0x44,0x0f,0x29,0x50,0x20\r
+DB 0x44,0x0f,0x29,0x58,0x30\r
+DB 0x44,0x0f,0x29,0x60,0x40\r
+DB 0x44,0x0f,0x29,0x68,0x50\r
+DB 0x44,0x0f,0x29,0x70,0x60\r
+DB 0x44,0x0f,0x29,0x78,0x70\r
+ movdqa xmm10,XMMWORD[$L$bswap_mask]\r
+\r
+ movdqu xmm0,XMMWORD[rcx]\r
+ movdqu xmm2,XMMWORD[rdx]\r
+ movdqu xmm7,XMMWORD[32+rdx]\r
+DB 102,65,15,56,0,194\r
+\r
+ sub r9,0x10\r
+ jz NEAR $L$odd_tail\r
+\r
+ movdqu xmm6,XMMWORD[16+rdx]\r
+ mov eax,DWORD[((OPENSSL_ia32cap_P+4))]\r
+ cmp r9,0x30\r
+ jb NEAR $L$skip4x\r
+\r
+ and eax,71303168\r
+ cmp eax,4194304\r
+ je NEAR $L$skip4x\r
+\r
+ sub r9,0x30\r
+ mov rax,0xA040608020C0E000\r
+ movdqu xmm14,XMMWORD[48+rdx]\r
+ movdqu xmm15,XMMWORD[64+rdx]\r
+\r
+\r
+\r
+\r
+ movdqu xmm3,XMMWORD[48+r8]\r
+ movdqu xmm11,XMMWORD[32+r8]\r
+DB 102,65,15,56,0,218\r
+DB 102,69,15,56,0,218\r
+ movdqa xmm5,xmm3\r
+ pshufd xmm4,xmm3,78\r
+ pxor xmm4,xmm3\r
+DB 102,15,58,68,218,0\r
+DB 102,15,58,68,234,17\r
+DB 102,15,58,68,231,0\r
+\r
+ movdqa xmm13,xmm11\r
+ pshufd xmm12,xmm11,78\r
+ pxor xmm12,xmm11\r
+DB 102,68,15,58,68,222,0\r
+DB 102,68,15,58,68,238,17\r
+DB 102,68,15,58,68,231,16\r
+ xorps xmm3,xmm11\r
+ xorps xmm5,xmm13\r
+ movups xmm7,XMMWORD[80+rdx]\r
+ xorps xmm4,xmm12\r
+\r
+ movdqu xmm11,XMMWORD[16+r8]\r
+ movdqu xmm8,XMMWORD[r8]\r
+DB 102,69,15,56,0,218\r
+DB 102,69,15,56,0,194\r
+ movdqa xmm13,xmm11\r
+ pshufd xmm12,xmm11,78\r
+ pxor xmm0,xmm8\r
+ pxor xmm12,xmm11\r
+DB 102,69,15,58,68,222,0\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm8,xmm0,78\r
+ pxor xmm8,xmm0\r
+DB 102,69,15,58,68,238,17\r
+DB 102,68,15,58,68,231,0\r
+ xorps xmm3,xmm11\r
+ xorps xmm5,xmm13\r
+\r
+ lea r8,[64+r8]\r
+ sub r9,0x40\r
+ jc NEAR $L$tail4x\r
+\r
+ jmp NEAR $L$mod4_loop\r
+ALIGN 32\r
+$L$mod4_loop:\r
+DB 102,65,15,58,68,199,0\r
+ xorps xmm4,xmm12\r
+ movdqu xmm11,XMMWORD[48+r8]\r
+DB 102,69,15,56,0,218\r
+DB 102,65,15,58,68,207,17\r
+ xorps xmm0,xmm3\r
+ movdqu xmm3,XMMWORD[32+r8]\r
+ movdqa xmm13,xmm11\r
+DB 102,68,15,58,68,199,16\r
+ pshufd xmm12,xmm11,78\r
+ xorps xmm1,xmm5\r
+ pxor xmm12,xmm11\r
+DB 102,65,15,56,0,218\r
+ movups xmm7,XMMWORD[32+rdx]\r
+ xorps xmm8,xmm4\r
+DB 102,68,15,58,68,218,0\r
+ pshufd xmm4,xmm3,78\r
+\r
+ pxor xmm8,xmm0\r
+ movdqa xmm5,xmm3\r
+ pxor xmm8,xmm1\r
+ pxor xmm4,xmm3\r
+ movdqa xmm9,xmm8\r
+DB 102,68,15,58,68,234,17\r
+ pslldq xmm8,8\r
+ psrldq xmm9,8\r
+ pxor xmm0,xmm8\r
+ movdqa xmm8,XMMWORD[$L$7_mask]\r
+ pxor xmm1,xmm9\r
+DB 102,76,15,110,200\r
+\r
+ pand xmm8,xmm0\r
+DB 102,69,15,56,0,200\r
+ pxor xmm9,xmm0\r
+DB 102,68,15,58,68,231,0\r
+ psllq xmm9,57\r
+ movdqa xmm8,xmm9\r
+ pslldq xmm9,8\r
+DB 102,15,58,68,222,0\r
+ psrldq xmm8,8\r
+ pxor xmm0,xmm9\r
+ pxor xmm1,xmm8\r
+ movdqu xmm8,XMMWORD[r8]\r
+\r
+ movdqa xmm9,xmm0\r
+ psrlq xmm0,1\r
+DB 102,15,58,68,238,17\r
+ xorps xmm3,xmm11\r
+ movdqu xmm11,XMMWORD[16+r8]\r
+DB 102,69,15,56,0,218\r
+DB 102,15,58,68,231,16\r
+ xorps xmm5,xmm13\r
+ movups xmm7,XMMWORD[80+rdx]\r
+DB 102,69,15,56,0,194\r
+ pxor xmm1,xmm9\r
+ pxor xmm9,xmm0\r
+ psrlq xmm0,5\r
+\r
+ movdqa xmm13,xmm11\r
+ pxor xmm4,xmm12\r
+ pshufd xmm12,xmm11,78\r
+ pxor xmm0,xmm9\r
+ pxor xmm1,xmm8\r
+ pxor xmm12,xmm11\r
+DB 102,69,15,58,68,222,0\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,xmm0\r
+DB 102,69,15,58,68,238,17\r
+ xorps xmm3,xmm11\r
+ pshufd xmm8,xmm0,78\r
+ pxor xmm8,xmm0\r
+\r
+DB 102,68,15,58,68,231,0\r
+ xorps xmm5,xmm13\r
+\r
+ lea r8,[64+r8]\r
+ sub r9,0x40\r
+ jnc NEAR $L$mod4_loop\r
+\r
+$L$tail4x:\r
+DB 102,65,15,58,68,199,0\r
+DB 102,65,15,58,68,207,17\r
+DB 102,68,15,58,68,199,16\r
+ xorps xmm4,xmm12\r
+ xorps xmm0,xmm3\r
+ xorps xmm1,xmm5\r
+ pxor xmm1,xmm0\r
+ pxor xmm8,xmm4\r
+\r
+ pxor xmm8,xmm1\r
+ pxor xmm1,xmm0\r
+\r
+ movdqa xmm9,xmm8\r
+ psrldq xmm8,8\r
+ pslldq xmm9,8\r
+ pxor xmm1,xmm8\r
+ pxor xmm0,xmm9\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ add r9,0x40\r
+ jz NEAR $L$done\r
+ movdqu xmm7,XMMWORD[32+rdx]\r
+ sub r9,0x10\r
+ jz NEAR $L$odd_tail\r
+$L$skip4x:\r
+\r
+\r
+\r
+\r
+\r
+ movdqu xmm8,XMMWORD[r8]\r
+ movdqu xmm3,XMMWORD[16+r8]\r
+DB 102,69,15,56,0,194\r
+DB 102,65,15,56,0,218\r
+ pxor xmm0,xmm8\r
+\r
+ movdqa xmm5,xmm3\r
+ pshufd xmm4,xmm3,78\r
+ pxor xmm4,xmm3\r
+DB 102,15,58,68,218,0\r
+DB 102,15,58,68,234,17\r
+DB 102,15,58,68,231,0\r
+\r
+ lea r8,[32+r8]\r
+ nop\r
+ sub r9,0x20\r
+ jbe NEAR $L$even_tail\r
+ nop\r
+ jmp NEAR $L$mod_loop\r
+\r
+ALIGN 32\r
+$L$mod_loop:\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm8,xmm4\r
+ pshufd xmm4,xmm0,78\r
+ pxor xmm4,xmm0\r
+\r
+DB 102,15,58,68,198,0\r
+DB 102,15,58,68,206,17\r
+DB 102,15,58,68,231,16\r
+\r
+ pxor xmm0,xmm3\r
+ pxor xmm1,xmm5\r
+ movdqu xmm9,XMMWORD[r8]\r
+ pxor xmm8,xmm0\r
+DB 102,69,15,56,0,202\r
+ movdqu xmm3,XMMWORD[16+r8]\r
+\r
+ pxor xmm8,xmm1\r
+ pxor xmm1,xmm9\r
+ pxor xmm4,xmm8\r
+DB 102,65,15,56,0,218\r
+ movdqa xmm8,xmm4\r
+ psrldq xmm8,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm8\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm5,xmm3\r
+\r
+ movdqa xmm9,xmm0\r
+ movdqa xmm8,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm8,xmm0\r
+DB 102,15,58,68,218,0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm8\r
+ psllq xmm0,57\r
+ movdqa xmm8,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm8,8\r
+ pxor xmm0,xmm9\r
+ pshufd xmm4,xmm5,78\r
+ pxor xmm1,xmm8\r
+ pxor xmm4,xmm5\r
+\r
+ movdqa xmm9,xmm0\r
+ psrlq xmm0,1\r
+DB 102,15,58,68,234,17\r
+ pxor xmm1,xmm9\r
+ pxor xmm9,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm9\r
+ lea r8,[32+r8]\r
+ psrlq xmm0,1\r
+DB 102,15,58,68,231,0\r
+ pxor xmm0,xmm1\r
+\r
+ sub r9,0x20\r
+ ja NEAR $L$mod_loop\r
+\r
+$L$even_tail:\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm8,xmm4\r
+ pshufd xmm4,xmm0,78\r
+ pxor xmm4,xmm0\r
+\r
+DB 102,15,58,68,198,0\r
+DB 102,15,58,68,206,17\r
+DB 102,15,58,68,231,16\r
+\r
+ pxor xmm0,xmm3\r
+ pxor xmm1,xmm5\r
+ pxor xmm8,xmm0\r
+ pxor xmm8,xmm1\r
+ pxor xmm4,xmm8\r
+ movdqa xmm8,xmm4\r
+ psrldq xmm8,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm8\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+ test r9,r9\r
+ jnz NEAR $L$done\r
+\r
+$L$odd_tail:\r
+ movdqu xmm8,XMMWORD[r8]\r
+DB 102,69,15,56,0,194\r
+ pxor xmm0,xmm8\r
+ movdqa xmm1,xmm0\r
+ pshufd xmm3,xmm0,78\r
+ pxor xmm3,xmm0\r
+DB 102,15,58,68,194,0\r
+DB 102,15,58,68,202,17\r
+DB 102,15,58,68,223,0\r
+ pxor xmm3,xmm0\r
+ pxor xmm3,xmm1\r
+\r
+ movdqa xmm4,xmm3\r
+ psrldq xmm3,8\r
+ pslldq xmm4,8\r
+ pxor xmm1,xmm3\r
+ pxor xmm0,xmm4\r
+\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm3,xmm0\r
+ psllq xmm0,5\r
+ pxor xmm3,xmm0\r
+ psllq xmm0,1\r
+ pxor xmm0,xmm3\r
+ psllq xmm0,57\r
+ movdqa xmm3,xmm0\r
+ pslldq xmm0,8\r
+ psrldq xmm3,8\r
+ pxor xmm0,xmm4\r
+ pxor xmm1,xmm3\r
+\r
+\r
+ movdqa xmm4,xmm0\r
+ psrlq xmm0,1\r
+ pxor xmm1,xmm4\r
+ pxor xmm4,xmm0\r
+ psrlq xmm0,5\r
+ pxor xmm0,xmm4\r
+ psrlq xmm0,1\r
+ pxor xmm0,xmm1\r
+$L$done:\r
+DB 102,65,15,56,0,194\r
+ movdqu XMMWORD[rcx],xmm0\r
+ movaps xmm6,XMMWORD[rsp]\r
+ movaps xmm7,XMMWORD[16+rsp]\r
+ movaps xmm8,XMMWORD[32+rsp]\r
+ movaps xmm9,XMMWORD[48+rsp]\r
+ movaps xmm10,XMMWORD[64+rsp]\r
+ movaps xmm11,XMMWORD[80+rsp]\r
+ movaps xmm12,XMMWORD[96+rsp]\r
+ movaps xmm13,XMMWORD[112+rsp]\r
+ movaps xmm14,XMMWORD[128+rsp]\r
+ movaps xmm15,XMMWORD[144+rsp]\r
+ lea rsp,[168+rsp]\r
+$L$SEH_end_gcm_ghash_clmul:\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global gcm_init_avx\r
+\r
+ALIGN 32\r
+gcm_init_avx:\r
+\r
+ jmp NEAR $L$_init_clmul\r
+\r
+\r
+global gcm_gmult_avx\r
+\r
+ALIGN 32\r
+gcm_gmult_avx:\r
+\r
+ jmp NEAR $L$_gmult_clmul\r
+\r
+\r
+global gcm_ghash_avx\r
+\r
+ALIGN 32\r
+gcm_ghash_avx:\r
+\r
+ jmp NEAR $L$_ghash_clmul\r
+\r
+\r
+ALIGN 64\r
+$L$bswap_mask:\r
+DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0\r
+$L$0x1c2_polynomial:\r
+DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2\r
+$L$7_mask:\r
+ DD 7,0,7,0\r
+$L$7_mask_poly:\r
+ DD 7,0,450,0\r
+ALIGN 64\r
+\r
+$L$rem_4bit:\r
+ DD 0,0,0,471859200,0,943718400,0,610271232\r
+ DD 0,1887436800,0,1822425088,0,1220542464,0,1423966208\r
+ DD 0,3774873600,0,4246732800,0,3644850176,0,3311403008\r
+ DD 0,2441084928,0,2376073216,0,2847932416,0,3051356160\r
+\r
+$L$rem_8bit:\r
+ DW 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E\r
+ DW 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E\r
+ DW 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E\r
+ DW 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E\r
+ DW 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E\r
+ DW 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E\r
+ DW 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E\r
+ DW 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E\r
+ DW 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE\r
+ DW 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE\r
+ DW 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE\r
+ DW 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE\r
+ DW 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E\r
+ DW 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E\r
+ DW 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE\r
+ DW 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE\r
+ DW 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E\r
+ DW 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E\r
+ DW 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E\r
+ DW 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E\r
+ DW 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E\r
+ DW 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E\r
+ DW 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E\r
+ DW 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E\r
+ DW 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE\r
+ DW 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE\r
+ DW 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE\r
+ DW 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE\r
+ DW 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E\r
+ DW 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E\r
+ DW 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE\r
+ DW 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE\r
+\r
+DB 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52\r
+DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32\r
+DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111\r
+DB 114,103,62,0\r
+ALIGN 64\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ lea rax,[((48+280))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov r15,QWORD[((-48))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+ mov QWORD[240+r8],r15\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_gcm_gmult_4bit wrt ..imagebase\r
+ DD $L$SEH_end_gcm_gmult_4bit wrt ..imagebase\r
+ DD $L$SEH_info_gcm_gmult_4bit wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_gcm_ghash_4bit wrt ..imagebase\r
+ DD $L$SEH_end_gcm_ghash_4bit wrt ..imagebase\r
+ DD $L$SEH_info_gcm_ghash_4bit wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_gcm_init_clmul wrt ..imagebase\r
+ DD $L$SEH_end_gcm_init_clmul wrt ..imagebase\r
+ DD $L$SEH_info_gcm_init_clmul wrt ..imagebase\r
+\r
+ DD $L$SEH_begin_gcm_ghash_clmul wrt ..imagebase\r
+ DD $L$SEH_end_gcm_ghash_clmul wrt ..imagebase\r
+ DD $L$SEH_info_gcm_ghash_clmul wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_gcm_gmult_4bit:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue wrt ..imagebase\r
+$L$SEH_info_gcm_ghash_4bit:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue wrt ..imagebase\r
+$L$SEH_info_gcm_init_clmul:\r
+DB 0x01,0x08,0x03,0x00\r
+DB 0x08,0x68,0x00,0x00\r
+DB 0x04,0x22,0x00,0x00\r
+$L$SEH_info_gcm_ghash_clmul:\r
+DB 0x01,0x33,0x16,0x00\r
+DB 0x33,0xf8,0x09,0x00\r
+DB 0x2e,0xe8,0x08,0x00\r
+DB 0x29,0xd8,0x07,0x00\r
+DB 0x24,0xc8,0x06,0x00\r
+DB 0x1f,0xb8,0x05,0x00\r
+DB 0x1a,0xa8,0x04,0x00\r
+DB 0x15,0x98,0x03,0x00\r
+DB 0x10,0x88,0x02,0x00\r
+DB 0x0c,0x78,0x01,0x00\r
+DB 0x08,0x68,0x00,0x00\r
+DB 0x04,0x01,0x15,0x00\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl\r
+;\r
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global sha1_multi_block\r
+\r
+ALIGN 32\r
+sha1_multi_block:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha1_multi_block:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov rcx,QWORD[((OPENSSL_ia32cap_P+4))]\r
+ bt rcx,61\r
+ jc NEAR _shaext_shortcut\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[(-120)+rax],xmm10\r
+ movaps XMMWORD[(-104)+rax],xmm11\r
+ movaps XMMWORD[(-88)+rax],xmm12\r
+ movaps XMMWORD[(-72)+rax],xmm13\r
+ movaps XMMWORD[(-56)+rax],xmm14\r
+ movaps XMMWORD[(-40)+rax],xmm15\r
+ sub rsp,288\r
+ and rsp,-256\r
+ mov QWORD[272+rsp],rax\r
+\r
+$L$body:\r
+ lea rbp,[K_XX_XX]\r
+ lea rbx,[256+rsp]\r
+\r
+$L$oop_grande:\r
+ mov DWORD[280+rsp],edx\r
+ xor edx,edx\r
+ mov r8,QWORD[rsi]\r
+ mov ecx,DWORD[8+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[rbx],ecx\r
+ cmovle r8,rbp\r
+ mov r9,QWORD[16+rsi]\r
+ mov ecx,DWORD[24+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[4+rbx],ecx\r
+ cmovle r9,rbp\r
+ mov r10,QWORD[32+rsi]\r
+ mov ecx,DWORD[40+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[8+rbx],ecx\r
+ cmovle r10,rbp\r
+ mov r11,QWORD[48+rsi]\r
+ mov ecx,DWORD[56+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[12+rbx],ecx\r
+ cmovle r11,rbp\r
+ test edx,edx\r
+ jz NEAR $L$done\r
+\r
+ movdqu xmm10,XMMWORD[rdi]\r
+ lea rax,[128+rsp]\r
+ movdqu xmm11,XMMWORD[32+rdi]\r
+ movdqu xmm12,XMMWORD[64+rdi]\r
+ movdqu xmm13,XMMWORD[96+rdi]\r
+ movdqu xmm14,XMMWORD[128+rdi]\r
+ movdqa xmm5,XMMWORD[96+rbp]\r
+ movdqa xmm15,XMMWORD[((-32))+rbp]\r
+ jmp NEAR $L$oop\r
+\r
+ALIGN 32\r
+$L$oop:\r
+ movd xmm0,DWORD[r8]\r
+ lea r8,[64+r8]\r
+ movd xmm2,DWORD[r9]\r
+ lea r9,[64+r9]\r
+ movd xmm3,DWORD[r10]\r
+ lea r10,[64+r10]\r
+ movd xmm4,DWORD[r11]\r
+ lea r11,[64+r11]\r
+ punpckldq xmm0,xmm3\r
+ movd xmm1,DWORD[((-60))+r8]\r
+ punpckldq xmm2,xmm4\r
+ movd xmm9,DWORD[((-60))+r9]\r
+ punpckldq xmm0,xmm2\r
+ movd xmm8,DWORD[((-60))+r10]\r
+DB 102,15,56,0,197\r
+ movd xmm7,DWORD[((-60))+r11]\r
+ punpckldq xmm1,xmm8\r
+ movdqa xmm8,xmm10\r
+ paddd xmm14,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm11\r
+ movdqa xmm6,xmm11\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm13\r
+ pand xmm6,xmm12\r
+ punpckldq xmm1,xmm9\r
+ movdqa xmm9,xmm10\r
+\r
+ movdqa XMMWORD[(0-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ movd xmm2,DWORD[((-56))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm11\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-56))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+DB 102,15,56,0,205\r
+ movd xmm8,DWORD[((-56))+r10]\r
+ por xmm11,xmm7\r
+ movd xmm7,DWORD[((-56))+r11]\r
+ punpckldq xmm2,xmm8\r
+ movdqa xmm8,xmm14\r
+ paddd xmm13,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm10\r
+ movdqa xmm6,xmm10\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm12\r
+ pand xmm6,xmm11\r
+ punpckldq xmm2,xmm9\r
+ movdqa xmm9,xmm14\r
+\r
+ movdqa XMMWORD[(16-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ movd xmm3,DWORD[((-52))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm10\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-52))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+DB 102,15,56,0,213\r
+ movd xmm8,DWORD[((-52))+r10]\r
+ por xmm10,xmm7\r
+ movd xmm7,DWORD[((-52))+r11]\r
+ punpckldq xmm3,xmm8\r
+ movdqa xmm8,xmm13\r
+ paddd xmm12,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm14\r
+ movdqa xmm6,xmm14\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm11\r
+ pand xmm6,xmm10\r
+ punpckldq xmm3,xmm9\r
+ movdqa xmm9,xmm13\r
+\r
+ movdqa XMMWORD[(32-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ movd xmm4,DWORD[((-48))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm14\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-48))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+DB 102,15,56,0,221\r
+ movd xmm8,DWORD[((-48))+r10]\r
+ por xmm14,xmm7\r
+ movd xmm7,DWORD[((-48))+r11]\r
+ punpckldq xmm4,xmm8\r
+ movdqa xmm8,xmm12\r
+ paddd xmm11,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm13\r
+ movdqa xmm6,xmm13\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm10\r
+ pand xmm6,xmm14\r
+ punpckldq xmm4,xmm9\r
+ movdqa xmm9,xmm12\r
+\r
+ movdqa XMMWORD[(48-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ movd xmm0,DWORD[((-44))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm13\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-44))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+DB 102,15,56,0,229\r
+ movd xmm8,DWORD[((-44))+r10]\r
+ por xmm13,xmm7\r
+ movd xmm7,DWORD[((-44))+r11]\r
+ punpckldq xmm0,xmm8\r
+ movdqa xmm8,xmm11\r
+ paddd xmm10,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm12\r
+ movdqa xmm6,xmm12\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm14\r
+ pand xmm6,xmm13\r
+ punpckldq xmm0,xmm9\r
+ movdqa xmm9,xmm11\r
+\r
+ movdqa XMMWORD[(64-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ movd xmm1,DWORD[((-40))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm12\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-40))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+DB 102,15,56,0,197\r
+ movd xmm8,DWORD[((-40))+r10]\r
+ por xmm12,xmm7\r
+ movd xmm7,DWORD[((-40))+r11]\r
+ punpckldq xmm1,xmm8\r
+ movdqa xmm8,xmm10\r
+ paddd xmm14,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm11\r
+ movdqa xmm6,xmm11\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm13\r
+ pand xmm6,xmm12\r
+ punpckldq xmm1,xmm9\r
+ movdqa xmm9,xmm10\r
+\r
+ movdqa XMMWORD[(80-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ movd xmm2,DWORD[((-36))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm11\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-36))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+DB 102,15,56,0,205\r
+ movd xmm8,DWORD[((-36))+r10]\r
+ por xmm11,xmm7\r
+ movd xmm7,DWORD[((-36))+r11]\r
+ punpckldq xmm2,xmm8\r
+ movdqa xmm8,xmm14\r
+ paddd xmm13,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm10\r
+ movdqa xmm6,xmm10\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm12\r
+ pand xmm6,xmm11\r
+ punpckldq xmm2,xmm9\r
+ movdqa xmm9,xmm14\r
+\r
+ movdqa XMMWORD[(96-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ movd xmm3,DWORD[((-32))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm10\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-32))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+DB 102,15,56,0,213\r
+ movd xmm8,DWORD[((-32))+r10]\r
+ por xmm10,xmm7\r
+ movd xmm7,DWORD[((-32))+r11]\r
+ punpckldq xmm3,xmm8\r
+ movdqa xmm8,xmm13\r
+ paddd xmm12,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm14\r
+ movdqa xmm6,xmm14\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm11\r
+ pand xmm6,xmm10\r
+ punpckldq xmm3,xmm9\r
+ movdqa xmm9,xmm13\r
+\r
+ movdqa XMMWORD[(112-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ movd xmm4,DWORD[((-28))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm14\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-28))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+DB 102,15,56,0,221\r
+ movd xmm8,DWORD[((-28))+r10]\r
+ por xmm14,xmm7\r
+ movd xmm7,DWORD[((-28))+r11]\r
+ punpckldq xmm4,xmm8\r
+ movdqa xmm8,xmm12\r
+ paddd xmm11,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm13\r
+ movdqa xmm6,xmm13\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm10\r
+ pand xmm6,xmm14\r
+ punpckldq xmm4,xmm9\r
+ movdqa xmm9,xmm12\r
+\r
+ movdqa XMMWORD[(128-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ movd xmm0,DWORD[((-24))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm13\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-24))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+DB 102,15,56,0,229\r
+ movd xmm8,DWORD[((-24))+r10]\r
+ por xmm13,xmm7\r
+ movd xmm7,DWORD[((-24))+r11]\r
+ punpckldq xmm0,xmm8\r
+ movdqa xmm8,xmm11\r
+ paddd xmm10,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm12\r
+ movdqa xmm6,xmm12\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm14\r
+ pand xmm6,xmm13\r
+ punpckldq xmm0,xmm9\r
+ movdqa xmm9,xmm11\r
+\r
+ movdqa XMMWORD[(144-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ movd xmm1,DWORD[((-20))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm12\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-20))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+DB 102,15,56,0,197\r
+ movd xmm8,DWORD[((-20))+r10]\r
+ por xmm12,xmm7\r
+ movd xmm7,DWORD[((-20))+r11]\r
+ punpckldq xmm1,xmm8\r
+ movdqa xmm8,xmm10\r
+ paddd xmm14,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm11\r
+ movdqa xmm6,xmm11\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm13\r
+ pand xmm6,xmm12\r
+ punpckldq xmm1,xmm9\r
+ movdqa xmm9,xmm10\r
+\r
+ movdqa XMMWORD[(160-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ movd xmm2,DWORD[((-16))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm11\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-16))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+DB 102,15,56,0,205\r
+ movd xmm8,DWORD[((-16))+r10]\r
+ por xmm11,xmm7\r
+ movd xmm7,DWORD[((-16))+r11]\r
+ punpckldq xmm2,xmm8\r
+ movdqa xmm8,xmm14\r
+ paddd xmm13,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm10\r
+ movdqa xmm6,xmm10\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm12\r
+ pand xmm6,xmm11\r
+ punpckldq xmm2,xmm9\r
+ movdqa xmm9,xmm14\r
+\r
+ movdqa XMMWORD[(176-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ movd xmm3,DWORD[((-12))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm10\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-12))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+DB 102,15,56,0,213\r
+ movd xmm8,DWORD[((-12))+r10]\r
+ por xmm10,xmm7\r
+ movd xmm7,DWORD[((-12))+r11]\r
+ punpckldq xmm3,xmm8\r
+ movdqa xmm8,xmm13\r
+ paddd xmm12,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm14\r
+ movdqa xmm6,xmm14\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm11\r
+ pand xmm6,xmm10\r
+ punpckldq xmm3,xmm9\r
+ movdqa xmm9,xmm13\r
+\r
+ movdqa XMMWORD[(192-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ movd xmm4,DWORD[((-8))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm14\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-8))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+DB 102,15,56,0,221\r
+ movd xmm8,DWORD[((-8))+r10]\r
+ por xmm14,xmm7\r
+ movd xmm7,DWORD[((-8))+r11]\r
+ punpckldq xmm4,xmm8\r
+ movdqa xmm8,xmm12\r
+ paddd xmm11,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm13\r
+ movdqa xmm6,xmm13\r
+ pslld xmm8,5\r
+ pandn xmm7,xmm10\r
+ pand xmm6,xmm14\r
+ punpckldq xmm4,xmm9\r
+ movdqa xmm9,xmm12\r
+\r
+ movdqa XMMWORD[(208-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ movd xmm0,DWORD[((-4))+r8]\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm13\r
+\r
+ por xmm8,xmm9\r
+ movd xmm9,DWORD[((-4))+r9]\r
+ pslld xmm7,30\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+DB 102,15,56,0,229\r
+ movd xmm8,DWORD[((-4))+r10]\r
+ por xmm13,xmm7\r
+ movdqa xmm1,XMMWORD[((0-128))+rax]\r
+ movd xmm7,DWORD[((-4))+r11]\r
+ punpckldq xmm0,xmm8\r
+ movdqa xmm8,xmm11\r
+ paddd xmm10,xmm15\r
+ punpckldq xmm9,xmm7\r
+ movdqa xmm7,xmm12\r
+ movdqa xmm6,xmm12\r
+ pslld xmm8,5\r
+ prefetcht0 [63+r8]\r
+ pandn xmm7,xmm14\r
+ pand xmm6,xmm13\r
+ punpckldq xmm0,xmm9\r
+ movdqa xmm9,xmm11\r
+\r
+ movdqa XMMWORD[(224-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+ movdqa xmm7,xmm12\r
+ prefetcht0 [63+r9]\r
+\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm10,xmm6\r
+ prefetcht0 [63+r10]\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+DB 102,15,56,0,197\r
+ prefetcht0 [63+r11]\r
+ por xmm12,xmm7\r
+ movdqa xmm2,XMMWORD[((16-128))+rax]\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((32-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ pxor xmm1,XMMWORD[((128-128))+rax]\r
+ paddd xmm14,xmm15\r
+ movdqa xmm7,xmm11\r
+ pslld xmm8,5\r
+ pxor xmm1,xmm3\r
+ movdqa xmm6,xmm11\r
+ pandn xmm7,xmm13\r
+ movdqa xmm5,xmm1\r
+ pand xmm6,xmm12\r
+ movdqa xmm9,xmm10\r
+ psrld xmm5,31\r
+ paddd xmm1,xmm1\r
+\r
+ movdqa XMMWORD[(240-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+\r
+ movdqa xmm7,xmm11\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((48-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ pxor xmm2,XMMWORD[((144-128))+rax]\r
+ paddd xmm13,xmm15\r
+ movdqa xmm7,xmm10\r
+ pslld xmm8,5\r
+ pxor xmm2,xmm4\r
+ movdqa xmm6,xmm10\r
+ pandn xmm7,xmm12\r
+ movdqa xmm5,xmm2\r
+ pand xmm6,xmm11\r
+ movdqa xmm9,xmm14\r
+ psrld xmm5,31\r
+ paddd xmm2,xmm2\r
+\r
+ movdqa XMMWORD[(0-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+\r
+ movdqa xmm7,xmm10\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((64-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ pxor xmm3,XMMWORD[((160-128))+rax]\r
+ paddd xmm12,xmm15\r
+ movdqa xmm7,xmm14\r
+ pslld xmm8,5\r
+ pxor xmm3,xmm0\r
+ movdqa xmm6,xmm14\r
+ pandn xmm7,xmm11\r
+ movdqa xmm5,xmm3\r
+ pand xmm6,xmm10\r
+ movdqa xmm9,xmm13\r
+ psrld xmm5,31\r
+ paddd xmm3,xmm3\r
+\r
+ movdqa XMMWORD[(16-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+\r
+ movdqa xmm7,xmm14\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((80-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ pxor xmm4,XMMWORD[((176-128))+rax]\r
+ paddd xmm11,xmm15\r
+ movdqa xmm7,xmm13\r
+ pslld xmm8,5\r
+ pxor xmm4,xmm1\r
+ movdqa xmm6,xmm13\r
+ pandn xmm7,xmm10\r
+ movdqa xmm5,xmm4\r
+ pand xmm6,xmm14\r
+ movdqa xmm9,xmm12\r
+ psrld xmm5,31\r
+ paddd xmm4,xmm4\r
+\r
+ movdqa XMMWORD[(32-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+\r
+ movdqa xmm7,xmm13\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((96-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ pxor xmm0,XMMWORD[((192-128))+rax]\r
+ paddd xmm10,xmm15\r
+ movdqa xmm7,xmm12\r
+ pslld xmm8,5\r
+ pxor xmm0,xmm2\r
+ movdqa xmm6,xmm12\r
+ pandn xmm7,xmm14\r
+ movdqa xmm5,xmm0\r
+ pand xmm6,xmm13\r
+ movdqa xmm9,xmm11\r
+ psrld xmm5,31\r
+ paddd xmm0,xmm0\r
+\r
+ movdqa XMMWORD[(48-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm7\r
+\r
+ movdqa xmm7,xmm12\r
+ por xmm8,xmm9\r
+ pslld xmm7,30\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ movdqa xmm15,XMMWORD[rbp]\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((112-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((208-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(64-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((128-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((224-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(80-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((144-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((240-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(96-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((160-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((0-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(112-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((176-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((16-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(128-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((192-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((32-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(144-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((208-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((48-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(160-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((224-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((64-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(176-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((240-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((80-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(192-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((0-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((96-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(208-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((16-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((112-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(224-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((32-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((128-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(240-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((48-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((144-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(0-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((64-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((160-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(16-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((80-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((176-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(32-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((96-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((192-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(48-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((112-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((208-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(64-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((128-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((224-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(80-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((144-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((240-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(96-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((160-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((0-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(112-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ movdqa xmm15,XMMWORD[32+rbp]\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((176-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm7,xmm13\r
+ pxor xmm1,XMMWORD[((16-128))+rax]\r
+ pxor xmm1,xmm3\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm10\r
+ pand xmm7,xmm12\r
+\r
+ movdqa xmm6,xmm13\r
+ movdqa xmm5,xmm1\r
+ psrld xmm9,27\r
+ paddd xmm14,xmm7\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa XMMWORD[(128-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm11\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ paddd xmm1,xmm1\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((192-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm7,xmm12\r
+ pxor xmm2,XMMWORD[((32-128))+rax]\r
+ pxor xmm2,xmm4\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm14\r
+ pand xmm7,xmm11\r
+\r
+ movdqa xmm6,xmm12\r
+ movdqa xmm5,xmm2\r
+ psrld xmm9,27\r
+ paddd xmm13,xmm7\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa XMMWORD[(144-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm10\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ paddd xmm2,xmm2\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((208-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm7,xmm11\r
+ pxor xmm3,XMMWORD[((48-128))+rax]\r
+ pxor xmm3,xmm0\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm13\r
+ pand xmm7,xmm10\r
+\r
+ movdqa xmm6,xmm11\r
+ movdqa xmm5,xmm3\r
+ psrld xmm9,27\r
+ paddd xmm12,xmm7\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa XMMWORD[(160-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm14\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ paddd xmm3,xmm3\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((224-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm7,xmm10\r
+ pxor xmm4,XMMWORD[((64-128))+rax]\r
+ pxor xmm4,xmm1\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm12\r
+ pand xmm7,xmm14\r
+\r
+ movdqa xmm6,xmm10\r
+ movdqa xmm5,xmm4\r
+ psrld xmm9,27\r
+ paddd xmm11,xmm7\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa XMMWORD[(176-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm13\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ paddd xmm4,xmm4\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((240-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm7,xmm14\r
+ pxor xmm0,XMMWORD[((80-128))+rax]\r
+ pxor xmm0,xmm2\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm11\r
+ pand xmm7,xmm13\r
+\r
+ movdqa xmm6,xmm14\r
+ movdqa xmm5,xmm0\r
+ psrld xmm9,27\r
+ paddd xmm10,xmm7\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa XMMWORD[(192-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm12\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ paddd xmm0,xmm0\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((0-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm7,xmm13\r
+ pxor xmm1,XMMWORD[((96-128))+rax]\r
+ pxor xmm1,xmm3\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm10\r
+ pand xmm7,xmm12\r
+\r
+ movdqa xmm6,xmm13\r
+ movdqa xmm5,xmm1\r
+ psrld xmm9,27\r
+ paddd xmm14,xmm7\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa XMMWORD[(208-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm11\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ paddd xmm1,xmm1\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((16-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm7,xmm12\r
+ pxor xmm2,XMMWORD[((112-128))+rax]\r
+ pxor xmm2,xmm4\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm14\r
+ pand xmm7,xmm11\r
+\r
+ movdqa xmm6,xmm12\r
+ movdqa xmm5,xmm2\r
+ psrld xmm9,27\r
+ paddd xmm13,xmm7\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa XMMWORD[(224-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm10\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ paddd xmm2,xmm2\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((32-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm7,xmm11\r
+ pxor xmm3,XMMWORD[((128-128))+rax]\r
+ pxor xmm3,xmm0\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm13\r
+ pand xmm7,xmm10\r
+\r
+ movdqa xmm6,xmm11\r
+ movdqa xmm5,xmm3\r
+ psrld xmm9,27\r
+ paddd xmm12,xmm7\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa XMMWORD[(240-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm14\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ paddd xmm3,xmm3\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((48-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm7,xmm10\r
+ pxor xmm4,XMMWORD[((144-128))+rax]\r
+ pxor xmm4,xmm1\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm12\r
+ pand xmm7,xmm14\r
+\r
+ movdqa xmm6,xmm10\r
+ movdqa xmm5,xmm4\r
+ psrld xmm9,27\r
+ paddd xmm11,xmm7\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa XMMWORD[(0-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm13\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ paddd xmm4,xmm4\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((64-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm7,xmm14\r
+ pxor xmm0,XMMWORD[((160-128))+rax]\r
+ pxor xmm0,xmm2\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm11\r
+ pand xmm7,xmm13\r
+\r
+ movdqa xmm6,xmm14\r
+ movdqa xmm5,xmm0\r
+ psrld xmm9,27\r
+ paddd xmm10,xmm7\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa XMMWORD[(16-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm12\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ paddd xmm0,xmm0\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((80-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm7,xmm13\r
+ pxor xmm1,XMMWORD[((176-128))+rax]\r
+ pxor xmm1,xmm3\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm10\r
+ pand xmm7,xmm12\r
+\r
+ movdqa xmm6,xmm13\r
+ movdqa xmm5,xmm1\r
+ psrld xmm9,27\r
+ paddd xmm14,xmm7\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa XMMWORD[(32-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm11\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ paddd xmm1,xmm1\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((96-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm7,xmm12\r
+ pxor xmm2,XMMWORD[((192-128))+rax]\r
+ pxor xmm2,xmm4\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm14\r
+ pand xmm7,xmm11\r
+\r
+ movdqa xmm6,xmm12\r
+ movdqa xmm5,xmm2\r
+ psrld xmm9,27\r
+ paddd xmm13,xmm7\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa XMMWORD[(48-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm10\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ paddd xmm2,xmm2\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((112-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm7,xmm11\r
+ pxor xmm3,XMMWORD[((208-128))+rax]\r
+ pxor xmm3,xmm0\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm13\r
+ pand xmm7,xmm10\r
+\r
+ movdqa xmm6,xmm11\r
+ movdqa xmm5,xmm3\r
+ psrld xmm9,27\r
+ paddd xmm12,xmm7\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa XMMWORD[(64-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm14\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ paddd xmm3,xmm3\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((128-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm7,xmm10\r
+ pxor xmm4,XMMWORD[((224-128))+rax]\r
+ pxor xmm4,xmm1\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm12\r
+ pand xmm7,xmm14\r
+\r
+ movdqa xmm6,xmm10\r
+ movdqa xmm5,xmm4\r
+ psrld xmm9,27\r
+ paddd xmm11,xmm7\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa XMMWORD[(80-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm13\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ paddd xmm4,xmm4\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((144-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm7,xmm14\r
+ pxor xmm0,XMMWORD[((240-128))+rax]\r
+ pxor xmm0,xmm2\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm11\r
+ pand xmm7,xmm13\r
+\r
+ movdqa xmm6,xmm14\r
+ movdqa xmm5,xmm0\r
+ psrld xmm9,27\r
+ paddd xmm10,xmm7\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa XMMWORD[(96-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm12\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ paddd xmm0,xmm0\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((160-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm7,xmm13\r
+ pxor xmm1,XMMWORD[((0-128))+rax]\r
+ pxor xmm1,xmm3\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm10\r
+ pand xmm7,xmm12\r
+\r
+ movdqa xmm6,xmm13\r
+ movdqa xmm5,xmm1\r
+ psrld xmm9,27\r
+ paddd xmm14,xmm7\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa XMMWORD[(112-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm11\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ paddd xmm1,xmm1\r
+ paddd xmm14,xmm6\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((176-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm7,xmm12\r
+ pxor xmm2,XMMWORD[((16-128))+rax]\r
+ pxor xmm2,xmm4\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm14\r
+ pand xmm7,xmm11\r
+\r
+ movdqa xmm6,xmm12\r
+ movdqa xmm5,xmm2\r
+ psrld xmm9,27\r
+ paddd xmm13,xmm7\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa XMMWORD[(128-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm10\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ paddd xmm2,xmm2\r
+ paddd xmm13,xmm6\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((192-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm7,xmm11\r
+ pxor xmm3,XMMWORD[((32-128))+rax]\r
+ pxor xmm3,xmm0\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm13\r
+ pand xmm7,xmm10\r
+\r
+ movdqa xmm6,xmm11\r
+ movdqa xmm5,xmm3\r
+ psrld xmm9,27\r
+ paddd xmm12,xmm7\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa XMMWORD[(144-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm14\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ paddd xmm3,xmm3\r
+ paddd xmm12,xmm6\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((208-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm7,xmm10\r
+ pxor xmm4,XMMWORD[((48-128))+rax]\r
+ pxor xmm4,xmm1\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm12\r
+ pand xmm7,xmm14\r
+\r
+ movdqa xmm6,xmm10\r
+ movdqa xmm5,xmm4\r
+ psrld xmm9,27\r
+ paddd xmm11,xmm7\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa XMMWORD[(160-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm13\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ paddd xmm4,xmm4\r
+ paddd xmm11,xmm6\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((224-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm7,xmm14\r
+ pxor xmm0,XMMWORD[((64-128))+rax]\r
+ pxor xmm0,xmm2\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ movdqa xmm9,xmm11\r
+ pand xmm7,xmm13\r
+\r
+ movdqa xmm6,xmm14\r
+ movdqa xmm5,xmm0\r
+ psrld xmm9,27\r
+ paddd xmm10,xmm7\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa XMMWORD[(176-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ pand xmm6,xmm12\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ paddd xmm0,xmm0\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ movdqa xmm15,XMMWORD[64+rbp]\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((240-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((80-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(192-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((0-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((96-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(208-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((16-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((112-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(224-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((32-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((128-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(240-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((48-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((144-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(0-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((64-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((160-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(16-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((80-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((176-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(32-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((96-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((192-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ movdqa XMMWORD[(48-128)+rax],xmm2\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((112-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((208-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ movdqa XMMWORD[(64-128)+rax],xmm3\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((128-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((224-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ movdqa XMMWORD[(80-128)+rax],xmm4\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((144-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((240-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ movdqa XMMWORD[(96-128)+rax],xmm0\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((160-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((0-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ movdqa XMMWORD[(112-128)+rax],xmm1\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((176-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((16-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((192-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((32-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ pxor xmm0,xmm2\r
+ movdqa xmm2,XMMWORD[((208-128))+rax]\r
+\r
+ movdqa xmm8,xmm11\r
+ movdqa xmm6,xmm14\r
+ pxor xmm0,XMMWORD[((48-128))+rax]\r
+ paddd xmm10,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ paddd xmm10,xmm4\r
+ pxor xmm0,xmm2\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm13\r
+ movdqa xmm7,xmm12\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm0\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm10,xmm6\r
+ paddd xmm0,xmm0\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm0,xmm5\r
+ por xmm12,xmm7\r
+ pxor xmm1,xmm3\r
+ movdqa xmm3,XMMWORD[((224-128))+rax]\r
+\r
+ movdqa xmm8,xmm10\r
+ movdqa xmm6,xmm13\r
+ pxor xmm1,XMMWORD[((64-128))+rax]\r
+ paddd xmm14,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm11\r
+\r
+ movdqa xmm9,xmm10\r
+ paddd xmm14,xmm0\r
+ pxor xmm1,xmm3\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm12\r
+ movdqa xmm7,xmm11\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm1\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm14,xmm6\r
+ paddd xmm1,xmm1\r
+\r
+ psrld xmm11,2\r
+ paddd xmm14,xmm8\r
+ por xmm1,xmm5\r
+ por xmm11,xmm7\r
+ pxor xmm2,xmm4\r
+ movdqa xmm4,XMMWORD[((240-128))+rax]\r
+\r
+ movdqa xmm8,xmm14\r
+ movdqa xmm6,xmm12\r
+ pxor xmm2,XMMWORD[((80-128))+rax]\r
+ paddd xmm13,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm10\r
+\r
+ movdqa xmm9,xmm14\r
+ paddd xmm13,xmm1\r
+ pxor xmm2,xmm4\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm11\r
+ movdqa xmm7,xmm10\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm2\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm13,xmm6\r
+ paddd xmm2,xmm2\r
+\r
+ psrld xmm10,2\r
+ paddd xmm13,xmm8\r
+ por xmm2,xmm5\r
+ por xmm10,xmm7\r
+ pxor xmm3,xmm0\r
+ movdqa xmm0,XMMWORD[((0-128))+rax]\r
+\r
+ movdqa xmm8,xmm13\r
+ movdqa xmm6,xmm11\r
+ pxor xmm3,XMMWORD[((96-128))+rax]\r
+ paddd xmm12,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm14\r
+\r
+ movdqa xmm9,xmm13\r
+ paddd xmm12,xmm2\r
+ pxor xmm3,xmm0\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm10\r
+ movdqa xmm7,xmm14\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm3\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm12,xmm6\r
+ paddd xmm3,xmm3\r
+\r
+ psrld xmm14,2\r
+ paddd xmm12,xmm8\r
+ por xmm3,xmm5\r
+ por xmm14,xmm7\r
+ pxor xmm4,xmm1\r
+ movdqa xmm1,XMMWORD[((16-128))+rax]\r
+\r
+ movdqa xmm8,xmm12\r
+ movdqa xmm6,xmm10\r
+ pxor xmm4,XMMWORD[((112-128))+rax]\r
+ paddd xmm11,xmm15\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm13\r
+\r
+ movdqa xmm9,xmm12\r
+ paddd xmm11,xmm3\r
+ pxor xmm4,xmm1\r
+ psrld xmm9,27\r
+ pxor xmm6,xmm14\r
+ movdqa xmm7,xmm13\r
+\r
+ pslld xmm7,30\r
+ movdqa xmm5,xmm4\r
+ por xmm8,xmm9\r
+ psrld xmm5,31\r
+ paddd xmm11,xmm6\r
+ paddd xmm4,xmm4\r
+\r
+ psrld xmm13,2\r
+ paddd xmm11,xmm8\r
+ por xmm4,xmm5\r
+ por xmm13,xmm7\r
+ movdqa xmm8,xmm11\r
+ paddd xmm10,xmm15\r
+ movdqa xmm6,xmm14\r
+ pslld xmm8,5\r
+ pxor xmm6,xmm12\r
+\r
+ movdqa xmm9,xmm11\r
+ paddd xmm10,xmm4\r
+ psrld xmm9,27\r
+ movdqa xmm7,xmm12\r
+ pxor xmm6,xmm13\r
+\r
+ pslld xmm7,30\r
+ por xmm8,xmm9\r
+ paddd xmm10,xmm6\r
+\r
+ psrld xmm12,2\r
+ paddd xmm10,xmm8\r
+ por xmm12,xmm7\r
+ movdqa xmm0,XMMWORD[rbx]\r
+ mov ecx,1\r
+ cmp ecx,DWORD[rbx]\r
+ pxor xmm8,xmm8\r
+ cmovge r8,rbp\r
+ cmp ecx,DWORD[4+rbx]\r
+ movdqa xmm1,xmm0\r
+ cmovge r9,rbp\r
+ cmp ecx,DWORD[8+rbx]\r
+ pcmpgtd xmm1,xmm8\r
+ cmovge r10,rbp\r
+ cmp ecx,DWORD[12+rbx]\r
+ paddd xmm0,xmm1\r
+ cmovge r11,rbp\r
+\r
+ movdqu xmm6,XMMWORD[rdi]\r
+ pand xmm10,xmm1\r
+ movdqu xmm7,XMMWORD[32+rdi]\r
+ pand xmm11,xmm1\r
+ paddd xmm10,xmm6\r
+ movdqu xmm8,XMMWORD[64+rdi]\r
+ pand xmm12,xmm1\r
+ paddd xmm11,xmm7\r
+ movdqu xmm9,XMMWORD[96+rdi]\r
+ pand xmm13,xmm1\r
+ paddd xmm12,xmm8\r
+ movdqu xmm5,XMMWORD[128+rdi]\r
+ pand xmm14,xmm1\r
+ movdqu XMMWORD[rdi],xmm10\r
+ paddd xmm13,xmm9\r
+ movdqu XMMWORD[32+rdi],xmm11\r
+ paddd xmm14,xmm5\r
+ movdqu XMMWORD[64+rdi],xmm12\r
+ movdqu XMMWORD[96+rdi],xmm13\r
+ movdqu XMMWORD[128+rdi],xmm14\r
+\r
+ movdqa XMMWORD[rbx],xmm0\r
+ movdqa xmm5,XMMWORD[96+rbp]\r
+ movdqa xmm15,XMMWORD[((-32))+rbp]\r
+ dec edx\r
+ jnz NEAR $L$oop\r
+\r
+ mov edx,DWORD[280+rsp]\r
+ lea rdi,[16+rdi]\r
+ lea rsi,[64+rsi]\r
+ dec edx\r
+ jnz NEAR $L$oop_grande\r
+\r
+$L$done:\r
+ mov rax,QWORD[272+rsp]\r
+\r
+ movaps xmm6,XMMWORD[((-184))+rax]\r
+ movaps xmm7,XMMWORD[((-168))+rax]\r
+ movaps xmm8,XMMWORD[((-152))+rax]\r
+ movaps xmm9,XMMWORD[((-136))+rax]\r
+ movaps xmm10,XMMWORD[((-120))+rax]\r
+ movaps xmm11,XMMWORD[((-104))+rax]\r
+ movaps xmm12,XMMWORD[((-88))+rax]\r
+ movaps xmm13,XMMWORD[((-72))+rax]\r
+ movaps xmm14,XMMWORD[((-56))+rax]\r
+ movaps xmm15,XMMWORD[((-40))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha1_multi_block:\r
+\r
+ALIGN 32\r
+sha1_multi_block_shaext:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha1_multi_block_shaext:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+_shaext_shortcut:\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[(-120)+rax],xmm10\r
+ movaps XMMWORD[(-104)+rax],xmm11\r
+ movaps XMMWORD[(-88)+rax],xmm12\r
+ movaps XMMWORD[(-72)+rax],xmm13\r
+ movaps XMMWORD[(-56)+rax],xmm14\r
+ movaps XMMWORD[(-40)+rax],xmm15\r
+ sub rsp,288\r
+ shl edx,1\r
+ and rsp,-256\r
+ lea rdi,[64+rdi]\r
+ mov QWORD[272+rsp],rax\r
+$L$body_shaext:\r
+ lea rbx,[256+rsp]\r
+ movdqa xmm3,XMMWORD[((K_XX_XX+128))]\r
+\r
+$L$oop_grande_shaext:\r
+ mov DWORD[280+rsp],edx\r
+ xor edx,edx\r
+ mov r8,QWORD[rsi]\r
+ mov ecx,DWORD[8+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[rbx],ecx\r
+ cmovle r8,rsp\r
+ mov r9,QWORD[16+rsi]\r
+ mov ecx,DWORD[24+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[4+rbx],ecx\r
+ cmovle r9,rsp\r
+ test edx,edx\r
+ jz NEAR $L$done_shaext\r
+\r
+ movq xmm0,QWORD[((0-64))+rdi]\r
+ movq xmm4,QWORD[((32-64))+rdi]\r
+ movq xmm5,QWORD[((64-64))+rdi]\r
+ movq xmm6,QWORD[((96-64))+rdi]\r
+ movq xmm7,QWORD[((128-64))+rdi]\r
+\r
+ punpckldq xmm0,xmm4\r
+ punpckldq xmm5,xmm6\r
+\r
+ movdqa xmm8,xmm0\r
+ punpcklqdq xmm0,xmm5\r
+ punpckhqdq xmm8,xmm5\r
+\r
+ pshufd xmm1,xmm7,63\r
+ pshufd xmm9,xmm7,127\r
+ pshufd xmm0,xmm0,27\r
+ pshufd xmm8,xmm8,27\r
+ jmp NEAR $L$oop_shaext\r
+\r
+ALIGN 32\r
+$L$oop_shaext:\r
+ movdqu xmm4,XMMWORD[r8]\r
+ movdqu xmm11,XMMWORD[r9]\r
+ movdqu xmm5,XMMWORD[16+r8]\r
+ movdqu xmm12,XMMWORD[16+r9]\r
+ movdqu xmm6,XMMWORD[32+r8]\r
+DB 102,15,56,0,227\r
+ movdqu xmm13,XMMWORD[32+r9]\r
+DB 102,68,15,56,0,219\r
+ movdqu xmm7,XMMWORD[48+r8]\r
+ lea r8,[64+r8]\r
+DB 102,15,56,0,235\r
+ movdqu xmm14,XMMWORD[48+r9]\r
+ lea r9,[64+r9]\r
+DB 102,68,15,56,0,227\r
+\r
+ movdqa XMMWORD[80+rsp],xmm1\r
+ paddd xmm1,xmm4\r
+ movdqa XMMWORD[112+rsp],xmm9\r
+ paddd xmm9,xmm11\r
+ movdqa XMMWORD[64+rsp],xmm0\r
+ movdqa xmm2,xmm0\r
+ movdqa XMMWORD[96+rsp],xmm8\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,0\r
+DB 15,56,200,213\r
+DB 69,15,58,204,193,0\r
+DB 69,15,56,200,212\r
+DB 102,15,56,0,243\r
+ prefetcht0 [127+r8]\r
+DB 15,56,201,229\r
+DB 102,68,15,56,0,235\r
+ prefetcht0 [127+r9]\r
+DB 69,15,56,201,220\r
+\r
+DB 102,15,56,0,251\r
+ movdqa xmm1,xmm0\r
+DB 102,68,15,56,0,243\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,0\r
+DB 15,56,200,206\r
+DB 69,15,58,204,194,0\r
+DB 69,15,56,200,205\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ pxor xmm11,xmm13\r
+DB 69,15,56,201,229\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,0\r
+DB 15,56,200,215\r
+DB 69,15,58,204,193,0\r
+DB 69,15,56,200,214\r
+DB 15,56,202,231\r
+DB 69,15,56,202,222\r
+ pxor xmm5,xmm7\r
+DB 15,56,201,247\r
+ pxor xmm12,xmm14\r
+DB 69,15,56,201,238\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,0\r
+DB 15,56,200,204\r
+DB 69,15,58,204,194,0\r
+DB 69,15,56,200,203\r
+DB 15,56,202,236\r
+DB 69,15,56,202,227\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+ pxor xmm13,xmm11\r
+DB 69,15,56,201,243\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,0\r
+DB 15,56,200,213\r
+DB 69,15,58,204,193,0\r
+DB 69,15,56,200,212\r
+DB 15,56,202,245\r
+DB 69,15,56,202,236\r
+ pxor xmm7,xmm5\r
+DB 15,56,201,229\r
+ pxor xmm14,xmm12\r
+DB 69,15,56,201,220\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,1\r
+DB 15,56,200,206\r
+DB 69,15,58,204,194,1\r
+DB 69,15,56,200,205\r
+DB 15,56,202,254\r
+DB 69,15,56,202,245\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ pxor xmm11,xmm13\r
+DB 69,15,56,201,229\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,1\r
+DB 15,56,200,215\r
+DB 69,15,58,204,193,1\r
+DB 69,15,56,200,214\r
+DB 15,56,202,231\r
+DB 69,15,56,202,222\r
+ pxor xmm5,xmm7\r
+DB 15,56,201,247\r
+ pxor xmm12,xmm14\r
+DB 69,15,56,201,238\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,1\r
+DB 15,56,200,204\r
+DB 69,15,58,204,194,1\r
+DB 69,15,56,200,203\r
+DB 15,56,202,236\r
+DB 69,15,56,202,227\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+ pxor xmm13,xmm11\r
+DB 69,15,56,201,243\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,1\r
+DB 15,56,200,213\r
+DB 69,15,58,204,193,1\r
+DB 69,15,56,200,212\r
+DB 15,56,202,245\r
+DB 69,15,56,202,236\r
+ pxor xmm7,xmm5\r
+DB 15,56,201,229\r
+ pxor xmm14,xmm12\r
+DB 69,15,56,201,220\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,1\r
+DB 15,56,200,206\r
+DB 69,15,58,204,194,1\r
+DB 69,15,56,200,205\r
+DB 15,56,202,254\r
+DB 69,15,56,202,245\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ pxor xmm11,xmm13\r
+DB 69,15,56,201,229\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,2\r
+DB 15,56,200,215\r
+DB 69,15,58,204,193,2\r
+DB 69,15,56,200,214\r
+DB 15,56,202,231\r
+DB 69,15,56,202,222\r
+ pxor xmm5,xmm7\r
+DB 15,56,201,247\r
+ pxor xmm12,xmm14\r
+DB 69,15,56,201,238\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,2\r
+DB 15,56,200,204\r
+DB 69,15,58,204,194,2\r
+DB 69,15,56,200,203\r
+DB 15,56,202,236\r
+DB 69,15,56,202,227\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+ pxor xmm13,xmm11\r
+DB 69,15,56,201,243\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,2\r
+DB 15,56,200,213\r
+DB 69,15,58,204,193,2\r
+DB 69,15,56,200,212\r
+DB 15,56,202,245\r
+DB 69,15,56,202,236\r
+ pxor xmm7,xmm5\r
+DB 15,56,201,229\r
+ pxor xmm14,xmm12\r
+DB 69,15,56,201,220\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,2\r
+DB 15,56,200,206\r
+DB 69,15,58,204,194,2\r
+DB 69,15,56,200,205\r
+DB 15,56,202,254\r
+DB 69,15,56,202,245\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+ pxor xmm11,xmm13\r
+DB 69,15,56,201,229\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,2\r
+DB 15,56,200,215\r
+DB 69,15,58,204,193,2\r
+DB 69,15,56,200,214\r
+DB 15,56,202,231\r
+DB 69,15,56,202,222\r
+ pxor xmm5,xmm7\r
+DB 15,56,201,247\r
+ pxor xmm12,xmm14\r
+DB 69,15,56,201,238\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,3\r
+DB 15,56,200,204\r
+DB 69,15,58,204,194,3\r
+DB 69,15,56,200,203\r
+DB 15,56,202,236\r
+DB 69,15,56,202,227\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+ pxor xmm13,xmm11\r
+DB 69,15,56,201,243\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,3\r
+DB 15,56,200,213\r
+DB 69,15,58,204,193,3\r
+DB 69,15,56,200,212\r
+DB 15,56,202,245\r
+DB 69,15,56,202,236\r
+ pxor xmm7,xmm5\r
+ pxor xmm14,xmm12\r
+\r
+ mov ecx,1\r
+ pxor xmm4,xmm4\r
+ cmp ecx,DWORD[rbx]\r
+ cmovge r8,rsp\r
+\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,3\r
+DB 15,56,200,206\r
+DB 69,15,58,204,194,3\r
+DB 69,15,56,200,205\r
+DB 15,56,202,254\r
+DB 69,15,56,202,245\r
+\r
+ cmp ecx,DWORD[4+rbx]\r
+ cmovge r9,rsp\r
+ movq xmm6,QWORD[rbx]\r
+\r
+ movdqa xmm2,xmm0\r
+ movdqa xmm10,xmm8\r
+DB 15,58,204,193,3\r
+DB 15,56,200,215\r
+DB 69,15,58,204,193,3\r
+DB 69,15,56,200,214\r
+\r
+ pshufd xmm11,xmm6,0x00\r
+ pshufd xmm12,xmm6,0x55\r
+ movdqa xmm7,xmm6\r
+ pcmpgtd xmm11,xmm4\r
+ pcmpgtd xmm12,xmm4\r
+\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm9,xmm8\r
+DB 15,58,204,194,3\r
+DB 15,56,200,204\r
+DB 69,15,58,204,194,3\r
+DB 68,15,56,200,204\r
+\r
+ pcmpgtd xmm7,xmm4\r
+ pand xmm0,xmm11\r
+ pand xmm1,xmm11\r
+ pand xmm8,xmm12\r
+ pand xmm9,xmm12\r
+ paddd xmm6,xmm7\r
+\r
+ paddd xmm0,XMMWORD[64+rsp]\r
+ paddd xmm1,XMMWORD[80+rsp]\r
+ paddd xmm8,XMMWORD[96+rsp]\r
+ paddd xmm9,XMMWORD[112+rsp]\r
+\r
+ movq QWORD[rbx],xmm6\r
+ dec edx\r
+ jnz NEAR $L$oop_shaext\r
+\r
+ mov edx,DWORD[280+rsp]\r
+\r
+ pshufd xmm0,xmm0,27\r
+ pshufd xmm8,xmm8,27\r
+\r
+ movdqa xmm6,xmm0\r
+ punpckldq xmm0,xmm8\r
+ punpckhdq xmm6,xmm8\r
+ punpckhdq xmm1,xmm9\r
+ movq QWORD[(0-64)+rdi],xmm0\r
+ psrldq xmm0,8\r
+ movq QWORD[(64-64)+rdi],xmm6\r
+ psrldq xmm6,8\r
+ movq QWORD[(32-64)+rdi],xmm0\r
+ psrldq xmm1,8\r
+ movq QWORD[(96-64)+rdi],xmm6\r
+ movq QWORD[(128-64)+rdi],xmm1\r
+\r
+ lea rdi,[8+rdi]\r
+ lea rsi,[32+rsi]\r
+ dec edx\r
+ jnz NEAR $L$oop_grande_shaext\r
+\r
+$L$done_shaext:\r
+\r
+ movaps xmm6,XMMWORD[((-184))+rax]\r
+ movaps xmm7,XMMWORD[((-168))+rax]\r
+ movaps xmm8,XMMWORD[((-152))+rax]\r
+ movaps xmm9,XMMWORD[((-136))+rax]\r
+ movaps xmm10,XMMWORD[((-120))+rax]\r
+ movaps xmm11,XMMWORD[((-104))+rax]\r
+ movaps xmm12,XMMWORD[((-88))+rax]\r
+ movaps xmm13,XMMWORD[((-72))+rax]\r
+ movaps xmm14,XMMWORD[((-56))+rax]\r
+ movaps xmm15,XMMWORD[((-40))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$epilogue_shaext:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha1_multi_block_shaext:\r
+\r
+ALIGN 256\r
+ DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+ DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+K_XX_XX:\r
+ DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+ DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+ DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+ DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+ DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+ DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+DB 83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107\r
+DB 32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120\r
+DB 56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77\r
+DB 83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110\r
+DB 115,115,108,46,111,114,103,62,0\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[272+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+\r
+ lea rsi,[((-24-160))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_sha1_multi_block wrt ..imagebase\r
+ DD $L$SEH_end_sha1_multi_block wrt ..imagebase\r
+ DD $L$SEH_info_sha1_multi_block wrt ..imagebase\r
+ DD $L$SEH_begin_sha1_multi_block_shaext wrt ..imagebase\r
+ DD $L$SEH_end_sha1_multi_block_shaext wrt ..imagebase\r
+ DD $L$SEH_info_sha1_multi_block_shaext wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_sha1_multi_block:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase\r
+$L$SEH_info_sha1_multi_block_shaext:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha1-x86_64.pl\r
+;\r
+; Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global sha1_block_data_order\r
+\r
+ALIGN 16\r
+sha1_block_data_order:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha1_block_data_order:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov r9d,DWORD[((OPENSSL_ia32cap_P+0))]\r
+ mov r8d,DWORD[((OPENSSL_ia32cap_P+4))]\r
+ mov r10d,DWORD[((OPENSSL_ia32cap_P+8))]\r
+ test r8d,512\r
+ jz NEAR $L$ialu\r
+ test r10d,536870912\r
+ jnz NEAR _shaext_shortcut\r
+ jmp NEAR _ssse3_shortcut\r
+\r
+ALIGN 16\r
+$L$ialu:\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ mov r8,rdi\r
+ sub rsp,72\r
+ mov r9,rsi\r
+ and rsp,-64\r
+ mov r10,rdx\r
+ mov QWORD[64+rsp],rax\r
+\r
+$L$prologue:\r
+\r
+ mov esi,DWORD[r8]\r
+ mov edi,DWORD[4+r8]\r
+ mov r11d,DWORD[8+r8]\r
+ mov r12d,DWORD[12+r8]\r
+ mov r13d,DWORD[16+r8]\r
+ jmp NEAR $L$loop\r
+\r
+ALIGN 16\r
+$L$loop:\r
+ mov edx,DWORD[r9]\r
+ bswap edx\r
+ mov ebp,DWORD[4+r9]\r
+ mov eax,r12d\r
+ mov DWORD[rsp],edx\r
+ mov ecx,esi\r
+ bswap ebp\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ and eax,edi\r
+ lea r13d,[1518500249+r13*1+rdx]\r
+ add r13d,ecx\r
+ xor eax,r12d\r
+ rol edi,30\r
+ add r13d,eax\r
+ mov r14d,DWORD[8+r9]\r
+ mov eax,r11d\r
+ mov DWORD[4+rsp],ebp\r
+ mov ecx,r13d\r
+ bswap r14d\r
+ xor eax,edi\r
+ rol ecx,5\r
+ and eax,esi\r
+ lea r12d,[1518500249+r12*1+rbp]\r
+ add r12d,ecx\r
+ xor eax,r11d\r
+ rol esi,30\r
+ add r12d,eax\r
+ mov edx,DWORD[12+r9]\r
+ mov eax,edi\r
+ mov DWORD[8+rsp],r14d\r
+ mov ecx,r12d\r
+ bswap edx\r
+ xor eax,esi\r
+ rol ecx,5\r
+ and eax,r13d\r
+ lea r11d,[1518500249+r11*1+r14]\r
+ add r11d,ecx\r
+ xor eax,edi\r
+ rol r13d,30\r
+ add r11d,eax\r
+ mov ebp,DWORD[16+r9]\r
+ mov eax,esi\r
+ mov DWORD[12+rsp],edx\r
+ mov ecx,r11d\r
+ bswap ebp\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ and eax,r12d\r
+ lea edi,[1518500249+rdi*1+rdx]\r
+ add edi,ecx\r
+ xor eax,esi\r
+ rol r12d,30\r
+ add edi,eax\r
+ mov r14d,DWORD[20+r9]\r
+ mov eax,r13d\r
+ mov DWORD[16+rsp],ebp\r
+ mov ecx,edi\r
+ bswap r14d\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ and eax,r11d\r
+ lea esi,[1518500249+rsi*1+rbp]\r
+ add esi,ecx\r
+ xor eax,r13d\r
+ rol r11d,30\r
+ add esi,eax\r
+ mov edx,DWORD[24+r9]\r
+ mov eax,r12d\r
+ mov DWORD[20+rsp],r14d\r
+ mov ecx,esi\r
+ bswap edx\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ and eax,edi\r
+ lea r13d,[1518500249+r13*1+r14]\r
+ add r13d,ecx\r
+ xor eax,r12d\r
+ rol edi,30\r
+ add r13d,eax\r
+ mov ebp,DWORD[28+r9]\r
+ mov eax,r11d\r
+ mov DWORD[24+rsp],edx\r
+ mov ecx,r13d\r
+ bswap ebp\r
+ xor eax,edi\r
+ rol ecx,5\r
+ and eax,esi\r
+ lea r12d,[1518500249+r12*1+rdx]\r
+ add r12d,ecx\r
+ xor eax,r11d\r
+ rol esi,30\r
+ add r12d,eax\r
+ mov r14d,DWORD[32+r9]\r
+ mov eax,edi\r
+ mov DWORD[28+rsp],ebp\r
+ mov ecx,r12d\r
+ bswap r14d\r
+ xor eax,esi\r
+ rol ecx,5\r
+ and eax,r13d\r
+ lea r11d,[1518500249+r11*1+rbp]\r
+ add r11d,ecx\r
+ xor eax,edi\r
+ rol r13d,30\r
+ add r11d,eax\r
+ mov edx,DWORD[36+r9]\r
+ mov eax,esi\r
+ mov DWORD[32+rsp],r14d\r
+ mov ecx,r11d\r
+ bswap edx\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ and eax,r12d\r
+ lea edi,[1518500249+rdi*1+r14]\r
+ add edi,ecx\r
+ xor eax,esi\r
+ rol r12d,30\r
+ add edi,eax\r
+ mov ebp,DWORD[40+r9]\r
+ mov eax,r13d\r
+ mov DWORD[36+rsp],edx\r
+ mov ecx,edi\r
+ bswap ebp\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ and eax,r11d\r
+ lea esi,[1518500249+rsi*1+rdx]\r
+ add esi,ecx\r
+ xor eax,r13d\r
+ rol r11d,30\r
+ add esi,eax\r
+ mov r14d,DWORD[44+r9]\r
+ mov eax,r12d\r
+ mov DWORD[40+rsp],ebp\r
+ mov ecx,esi\r
+ bswap r14d\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ and eax,edi\r
+ lea r13d,[1518500249+r13*1+rbp]\r
+ add r13d,ecx\r
+ xor eax,r12d\r
+ rol edi,30\r
+ add r13d,eax\r
+ mov edx,DWORD[48+r9]\r
+ mov eax,r11d\r
+ mov DWORD[44+rsp],r14d\r
+ mov ecx,r13d\r
+ bswap edx\r
+ xor eax,edi\r
+ rol ecx,5\r
+ and eax,esi\r
+ lea r12d,[1518500249+r12*1+r14]\r
+ add r12d,ecx\r
+ xor eax,r11d\r
+ rol esi,30\r
+ add r12d,eax\r
+ mov ebp,DWORD[52+r9]\r
+ mov eax,edi\r
+ mov DWORD[48+rsp],edx\r
+ mov ecx,r12d\r
+ bswap ebp\r
+ xor eax,esi\r
+ rol ecx,5\r
+ and eax,r13d\r
+ lea r11d,[1518500249+r11*1+rdx]\r
+ add r11d,ecx\r
+ xor eax,edi\r
+ rol r13d,30\r
+ add r11d,eax\r
+ mov r14d,DWORD[56+r9]\r
+ mov eax,esi\r
+ mov DWORD[52+rsp],ebp\r
+ mov ecx,r11d\r
+ bswap r14d\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ and eax,r12d\r
+ lea edi,[1518500249+rdi*1+rbp]\r
+ add edi,ecx\r
+ xor eax,esi\r
+ rol r12d,30\r
+ add edi,eax\r
+ mov edx,DWORD[60+r9]\r
+ mov eax,r13d\r
+ mov DWORD[56+rsp],r14d\r
+ mov ecx,edi\r
+ bswap edx\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ and eax,r11d\r
+ lea esi,[1518500249+rsi*1+r14]\r
+ add esi,ecx\r
+ xor eax,r13d\r
+ rol r11d,30\r
+ add esi,eax\r
+ xor ebp,DWORD[rsp]\r
+ mov eax,r12d\r
+ mov DWORD[60+rsp],edx\r
+ mov ecx,esi\r
+ xor ebp,DWORD[8+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor ebp,DWORD[32+rsp]\r
+ and eax,edi\r
+ lea r13d,[1518500249+r13*1+rdx]\r
+ rol edi,30\r
+ xor eax,r12d\r
+ add r13d,ecx\r
+ rol ebp,1\r
+ add r13d,eax\r
+ xor r14d,DWORD[4+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[rsp],ebp\r
+ mov ecx,r13d\r
+ xor r14d,DWORD[12+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor r14d,DWORD[36+rsp]\r
+ and eax,esi\r
+ lea r12d,[1518500249+r12*1+rbp]\r
+ rol esi,30\r
+ xor eax,r11d\r
+ add r12d,ecx\r
+ rol r14d,1\r
+ add r12d,eax\r
+ xor edx,DWORD[8+rsp]\r
+ mov eax,edi\r
+ mov DWORD[4+rsp],r14d\r
+ mov ecx,r12d\r
+ xor edx,DWORD[16+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor edx,DWORD[40+rsp]\r
+ and eax,r13d\r
+ lea r11d,[1518500249+r11*1+r14]\r
+ rol r13d,30\r
+ xor eax,edi\r
+ add r11d,ecx\r
+ rol edx,1\r
+ add r11d,eax\r
+ xor ebp,DWORD[12+rsp]\r
+ mov eax,esi\r
+ mov DWORD[8+rsp],edx\r
+ mov ecx,r11d\r
+ xor ebp,DWORD[20+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor ebp,DWORD[44+rsp]\r
+ and eax,r12d\r
+ lea edi,[1518500249+rdi*1+rdx]\r
+ rol r12d,30\r
+ xor eax,esi\r
+ add edi,ecx\r
+ rol ebp,1\r
+ add edi,eax\r
+ xor r14d,DWORD[16+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[12+rsp],ebp\r
+ mov ecx,edi\r
+ xor r14d,DWORD[24+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor r14d,DWORD[48+rsp]\r
+ and eax,r11d\r
+ lea esi,[1518500249+rsi*1+rbp]\r
+ rol r11d,30\r
+ xor eax,r13d\r
+ add esi,ecx\r
+ rol r14d,1\r
+ add esi,eax\r
+ xor edx,DWORD[20+rsp]\r
+ mov eax,edi\r
+ mov DWORD[16+rsp],r14d\r
+ mov ecx,esi\r
+ xor edx,DWORD[28+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor edx,DWORD[52+rsp]\r
+ lea r13d,[1859775393+r13*1+r14]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[24+rsp]\r
+ mov eax,esi\r
+ mov DWORD[20+rsp],edx\r
+ mov ecx,r13d\r
+ xor ebp,DWORD[32+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor ebp,DWORD[56+rsp]\r
+ lea r12d,[1859775393+r12*1+rdx]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[28+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[24+rsp],ebp\r
+ mov ecx,r12d\r
+ xor r14d,DWORD[36+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor r14d,DWORD[60+rsp]\r
+ lea r11d,[1859775393+r11*1+rbp]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[32+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[28+rsp],r14d\r
+ mov ecx,r11d\r
+ xor edx,DWORD[40+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor edx,DWORD[rsp]\r
+ lea edi,[1859775393+rdi*1+r14]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[36+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[32+rsp],edx\r
+ mov ecx,edi\r
+ xor ebp,DWORD[44+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor ebp,DWORD[4+rsp]\r
+ lea esi,[1859775393+rsi*1+rdx]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[40+rsp]\r
+ mov eax,edi\r
+ mov DWORD[36+rsp],ebp\r
+ mov ecx,esi\r
+ xor r14d,DWORD[48+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor r14d,DWORD[8+rsp]\r
+ lea r13d,[1859775393+r13*1+rbp]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[44+rsp]\r
+ mov eax,esi\r
+ mov DWORD[40+rsp],r14d\r
+ mov ecx,r13d\r
+ xor edx,DWORD[52+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor edx,DWORD[12+rsp]\r
+ lea r12d,[1859775393+r12*1+r14]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[48+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[44+rsp],edx\r
+ mov ecx,r12d\r
+ xor ebp,DWORD[56+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor ebp,DWORD[16+rsp]\r
+ lea r11d,[1859775393+r11*1+rdx]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[52+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[48+rsp],ebp\r
+ mov ecx,r11d\r
+ xor r14d,DWORD[60+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor r14d,DWORD[20+rsp]\r
+ lea edi,[1859775393+rdi*1+rbp]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[56+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[52+rsp],r14d\r
+ mov ecx,edi\r
+ xor edx,DWORD[rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor edx,DWORD[24+rsp]\r
+ lea esi,[1859775393+rsi*1+r14]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[60+rsp]\r
+ mov eax,edi\r
+ mov DWORD[56+rsp],edx\r
+ mov ecx,esi\r
+ xor ebp,DWORD[4+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor ebp,DWORD[28+rsp]\r
+ lea r13d,[1859775393+r13*1+rdx]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[rsp]\r
+ mov eax,esi\r
+ mov DWORD[60+rsp],ebp\r
+ mov ecx,r13d\r
+ xor r14d,DWORD[8+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor r14d,DWORD[32+rsp]\r
+ lea r12d,[1859775393+r12*1+rbp]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[4+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[rsp],r14d\r
+ mov ecx,r12d\r
+ xor edx,DWORD[12+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor edx,DWORD[36+rsp]\r
+ lea r11d,[1859775393+r11*1+r14]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[8+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[4+rsp],edx\r
+ mov ecx,r11d\r
+ xor ebp,DWORD[16+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor ebp,DWORD[40+rsp]\r
+ lea edi,[1859775393+rdi*1+rdx]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[12+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[8+rsp],ebp\r
+ mov ecx,edi\r
+ xor r14d,DWORD[20+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor r14d,DWORD[44+rsp]\r
+ lea esi,[1859775393+rsi*1+rbp]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[16+rsp]\r
+ mov eax,edi\r
+ mov DWORD[12+rsp],r14d\r
+ mov ecx,esi\r
+ xor edx,DWORD[24+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor edx,DWORD[48+rsp]\r
+ lea r13d,[1859775393+r13*1+r14]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[20+rsp]\r
+ mov eax,esi\r
+ mov DWORD[16+rsp],edx\r
+ mov ecx,r13d\r
+ xor ebp,DWORD[28+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor ebp,DWORD[52+rsp]\r
+ lea r12d,[1859775393+r12*1+rdx]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[24+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[20+rsp],ebp\r
+ mov ecx,r12d\r
+ xor r14d,DWORD[32+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor r14d,DWORD[56+rsp]\r
+ lea r11d,[1859775393+r11*1+rbp]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[28+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[24+rsp],r14d\r
+ mov ecx,r11d\r
+ xor edx,DWORD[36+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor edx,DWORD[60+rsp]\r
+ lea edi,[1859775393+rdi*1+r14]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[32+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[28+rsp],edx\r
+ mov ecx,edi\r
+ xor ebp,DWORD[40+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor ebp,DWORD[rsp]\r
+ lea esi,[1859775393+rsi*1+rdx]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[36+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[32+rsp],ebp\r
+ mov ebx,r12d\r
+ xor r14d,DWORD[44+rsp]\r
+ and eax,r11d\r
+ mov ecx,esi\r
+ xor r14d,DWORD[4+rsp]\r
+ lea r13d,[((-1894007588))+r13*1+rbp]\r
+ xor ebx,r11d\r
+ rol ecx,5\r
+ add r13d,eax\r
+ rol r14d,1\r
+ and ebx,edi\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,ebx\r
+ xor edx,DWORD[40+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[36+rsp],r14d\r
+ mov ebx,r11d\r
+ xor edx,DWORD[48+rsp]\r
+ and eax,edi\r
+ mov ecx,r13d\r
+ xor edx,DWORD[8+rsp]\r
+ lea r12d,[((-1894007588))+r12*1+r14]\r
+ xor ebx,edi\r
+ rol ecx,5\r
+ add r12d,eax\r
+ rol edx,1\r
+ and ebx,esi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,ebx\r
+ xor ebp,DWORD[44+rsp]\r
+ mov eax,edi\r
+ mov DWORD[40+rsp],edx\r
+ mov ebx,edi\r
+ xor ebp,DWORD[52+rsp]\r
+ and eax,esi\r
+ mov ecx,r12d\r
+ xor ebp,DWORD[12+rsp]\r
+ lea r11d,[((-1894007588))+r11*1+rdx]\r
+ xor ebx,esi\r
+ rol ecx,5\r
+ add r11d,eax\r
+ rol ebp,1\r
+ and ebx,r13d\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,ebx\r
+ xor r14d,DWORD[48+rsp]\r
+ mov eax,esi\r
+ mov DWORD[44+rsp],ebp\r
+ mov ebx,esi\r
+ xor r14d,DWORD[56+rsp]\r
+ and eax,r13d\r
+ mov ecx,r11d\r
+ xor r14d,DWORD[16+rsp]\r
+ lea edi,[((-1894007588))+rdi*1+rbp]\r
+ xor ebx,r13d\r
+ rol ecx,5\r
+ add edi,eax\r
+ rol r14d,1\r
+ and ebx,r12d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,ebx\r
+ xor edx,DWORD[52+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[48+rsp],r14d\r
+ mov ebx,r13d\r
+ xor edx,DWORD[60+rsp]\r
+ and eax,r12d\r
+ mov ecx,edi\r
+ xor edx,DWORD[20+rsp]\r
+ lea esi,[((-1894007588))+rsi*1+r14]\r
+ xor ebx,r12d\r
+ rol ecx,5\r
+ add esi,eax\r
+ rol edx,1\r
+ and ebx,r11d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,ebx\r
+ xor ebp,DWORD[56+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[52+rsp],edx\r
+ mov ebx,r12d\r
+ xor ebp,DWORD[rsp]\r
+ and eax,r11d\r
+ mov ecx,esi\r
+ xor ebp,DWORD[24+rsp]\r
+ lea r13d,[((-1894007588))+r13*1+rdx]\r
+ xor ebx,r11d\r
+ rol ecx,5\r
+ add r13d,eax\r
+ rol ebp,1\r
+ and ebx,edi\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,ebx\r
+ xor r14d,DWORD[60+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[56+rsp],ebp\r
+ mov ebx,r11d\r
+ xor r14d,DWORD[4+rsp]\r
+ and eax,edi\r
+ mov ecx,r13d\r
+ xor r14d,DWORD[28+rsp]\r
+ lea r12d,[((-1894007588))+r12*1+rbp]\r
+ xor ebx,edi\r
+ rol ecx,5\r
+ add r12d,eax\r
+ rol r14d,1\r
+ and ebx,esi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,ebx\r
+ xor edx,DWORD[rsp]\r
+ mov eax,edi\r
+ mov DWORD[60+rsp],r14d\r
+ mov ebx,edi\r
+ xor edx,DWORD[8+rsp]\r
+ and eax,esi\r
+ mov ecx,r12d\r
+ xor edx,DWORD[32+rsp]\r
+ lea r11d,[((-1894007588))+r11*1+r14]\r
+ xor ebx,esi\r
+ rol ecx,5\r
+ add r11d,eax\r
+ rol edx,1\r
+ and ebx,r13d\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,ebx\r
+ xor ebp,DWORD[4+rsp]\r
+ mov eax,esi\r
+ mov DWORD[rsp],edx\r
+ mov ebx,esi\r
+ xor ebp,DWORD[12+rsp]\r
+ and eax,r13d\r
+ mov ecx,r11d\r
+ xor ebp,DWORD[36+rsp]\r
+ lea edi,[((-1894007588))+rdi*1+rdx]\r
+ xor ebx,r13d\r
+ rol ecx,5\r
+ add edi,eax\r
+ rol ebp,1\r
+ and ebx,r12d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,ebx\r
+ xor r14d,DWORD[8+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[4+rsp],ebp\r
+ mov ebx,r13d\r
+ xor r14d,DWORD[16+rsp]\r
+ and eax,r12d\r
+ mov ecx,edi\r
+ xor r14d,DWORD[40+rsp]\r
+ lea esi,[((-1894007588))+rsi*1+rbp]\r
+ xor ebx,r12d\r
+ rol ecx,5\r
+ add esi,eax\r
+ rol r14d,1\r
+ and ebx,r11d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,ebx\r
+ xor edx,DWORD[12+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[8+rsp],r14d\r
+ mov ebx,r12d\r
+ xor edx,DWORD[20+rsp]\r
+ and eax,r11d\r
+ mov ecx,esi\r
+ xor edx,DWORD[44+rsp]\r
+ lea r13d,[((-1894007588))+r13*1+r14]\r
+ xor ebx,r11d\r
+ rol ecx,5\r
+ add r13d,eax\r
+ rol edx,1\r
+ and ebx,edi\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,ebx\r
+ xor ebp,DWORD[16+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[12+rsp],edx\r
+ mov ebx,r11d\r
+ xor ebp,DWORD[24+rsp]\r
+ and eax,edi\r
+ mov ecx,r13d\r
+ xor ebp,DWORD[48+rsp]\r
+ lea r12d,[((-1894007588))+r12*1+rdx]\r
+ xor ebx,edi\r
+ rol ecx,5\r
+ add r12d,eax\r
+ rol ebp,1\r
+ and ebx,esi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,ebx\r
+ xor r14d,DWORD[20+rsp]\r
+ mov eax,edi\r
+ mov DWORD[16+rsp],ebp\r
+ mov ebx,edi\r
+ xor r14d,DWORD[28+rsp]\r
+ and eax,esi\r
+ mov ecx,r12d\r
+ xor r14d,DWORD[52+rsp]\r
+ lea r11d,[((-1894007588))+r11*1+rbp]\r
+ xor ebx,esi\r
+ rol ecx,5\r
+ add r11d,eax\r
+ rol r14d,1\r
+ and ebx,r13d\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,ebx\r
+ xor edx,DWORD[24+rsp]\r
+ mov eax,esi\r
+ mov DWORD[20+rsp],r14d\r
+ mov ebx,esi\r
+ xor edx,DWORD[32+rsp]\r
+ and eax,r13d\r
+ mov ecx,r11d\r
+ xor edx,DWORD[56+rsp]\r
+ lea edi,[((-1894007588))+rdi*1+r14]\r
+ xor ebx,r13d\r
+ rol ecx,5\r
+ add edi,eax\r
+ rol edx,1\r
+ and ebx,r12d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,ebx\r
+ xor ebp,DWORD[28+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[24+rsp],edx\r
+ mov ebx,r13d\r
+ xor ebp,DWORD[36+rsp]\r
+ and eax,r12d\r
+ mov ecx,edi\r
+ xor ebp,DWORD[60+rsp]\r
+ lea esi,[((-1894007588))+rsi*1+rdx]\r
+ xor ebx,r12d\r
+ rol ecx,5\r
+ add esi,eax\r
+ rol ebp,1\r
+ and ebx,r11d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,ebx\r
+ xor r14d,DWORD[32+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[28+rsp],ebp\r
+ mov ebx,r12d\r
+ xor r14d,DWORD[40+rsp]\r
+ and eax,r11d\r
+ mov ecx,esi\r
+ xor r14d,DWORD[rsp]\r
+ lea r13d,[((-1894007588))+r13*1+rbp]\r
+ xor ebx,r11d\r
+ rol ecx,5\r
+ add r13d,eax\r
+ rol r14d,1\r
+ and ebx,edi\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,ebx\r
+ xor edx,DWORD[36+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[32+rsp],r14d\r
+ mov ebx,r11d\r
+ xor edx,DWORD[44+rsp]\r
+ and eax,edi\r
+ mov ecx,r13d\r
+ xor edx,DWORD[4+rsp]\r
+ lea r12d,[((-1894007588))+r12*1+r14]\r
+ xor ebx,edi\r
+ rol ecx,5\r
+ add r12d,eax\r
+ rol edx,1\r
+ and ebx,esi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,ebx\r
+ xor ebp,DWORD[40+rsp]\r
+ mov eax,edi\r
+ mov DWORD[36+rsp],edx\r
+ mov ebx,edi\r
+ xor ebp,DWORD[48+rsp]\r
+ and eax,esi\r
+ mov ecx,r12d\r
+ xor ebp,DWORD[8+rsp]\r
+ lea r11d,[((-1894007588))+r11*1+rdx]\r
+ xor ebx,esi\r
+ rol ecx,5\r
+ add r11d,eax\r
+ rol ebp,1\r
+ and ebx,r13d\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,ebx\r
+ xor r14d,DWORD[44+rsp]\r
+ mov eax,esi\r
+ mov DWORD[40+rsp],ebp\r
+ mov ebx,esi\r
+ xor r14d,DWORD[52+rsp]\r
+ and eax,r13d\r
+ mov ecx,r11d\r
+ xor r14d,DWORD[12+rsp]\r
+ lea edi,[((-1894007588))+rdi*1+rbp]\r
+ xor ebx,r13d\r
+ rol ecx,5\r
+ add edi,eax\r
+ rol r14d,1\r
+ and ebx,r12d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,ebx\r
+ xor edx,DWORD[48+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[44+rsp],r14d\r
+ mov ebx,r13d\r
+ xor edx,DWORD[56+rsp]\r
+ and eax,r12d\r
+ mov ecx,edi\r
+ xor edx,DWORD[16+rsp]\r
+ lea esi,[((-1894007588))+rsi*1+r14]\r
+ xor ebx,r12d\r
+ rol ecx,5\r
+ add esi,eax\r
+ rol edx,1\r
+ and ebx,r11d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,ebx\r
+ xor ebp,DWORD[52+rsp]\r
+ mov eax,edi\r
+ mov DWORD[48+rsp],edx\r
+ mov ecx,esi\r
+ xor ebp,DWORD[60+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor ebp,DWORD[20+rsp]\r
+ lea r13d,[((-899497514))+r13*1+rdx]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[56+rsp]\r
+ mov eax,esi\r
+ mov DWORD[52+rsp],ebp\r
+ mov ecx,r13d\r
+ xor r14d,DWORD[rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor r14d,DWORD[24+rsp]\r
+ lea r12d,[((-899497514))+r12*1+rbp]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[60+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[56+rsp],r14d\r
+ mov ecx,r12d\r
+ xor edx,DWORD[4+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor edx,DWORD[28+rsp]\r
+ lea r11d,[((-899497514))+r11*1+r14]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[rsp]\r
+ mov eax,r12d\r
+ mov DWORD[60+rsp],edx\r
+ mov ecx,r11d\r
+ xor ebp,DWORD[8+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor ebp,DWORD[32+rsp]\r
+ lea edi,[((-899497514))+rdi*1+rdx]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[4+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[rsp],ebp\r
+ mov ecx,edi\r
+ xor r14d,DWORD[12+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor r14d,DWORD[36+rsp]\r
+ lea esi,[((-899497514))+rsi*1+rbp]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[8+rsp]\r
+ mov eax,edi\r
+ mov DWORD[4+rsp],r14d\r
+ mov ecx,esi\r
+ xor edx,DWORD[16+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor edx,DWORD[40+rsp]\r
+ lea r13d,[((-899497514))+r13*1+r14]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[12+rsp]\r
+ mov eax,esi\r
+ mov DWORD[8+rsp],edx\r
+ mov ecx,r13d\r
+ xor ebp,DWORD[20+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor ebp,DWORD[44+rsp]\r
+ lea r12d,[((-899497514))+r12*1+rdx]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[16+rsp]\r
+ mov eax,r13d\r
+ mov DWORD[12+rsp],ebp\r
+ mov ecx,r12d\r
+ xor r14d,DWORD[24+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor r14d,DWORD[48+rsp]\r
+ lea r11d,[((-899497514))+r11*1+rbp]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[20+rsp]\r
+ mov eax,r12d\r
+ mov DWORD[16+rsp],r14d\r
+ mov ecx,r11d\r
+ xor edx,DWORD[28+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor edx,DWORD[52+rsp]\r
+ lea edi,[((-899497514))+rdi*1+r14]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[24+rsp]\r
+ mov eax,r11d\r
+ mov DWORD[20+rsp],edx\r
+ mov ecx,edi\r
+ xor ebp,DWORD[32+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor ebp,DWORD[56+rsp]\r
+ lea esi,[((-899497514))+rsi*1+rdx]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[28+rsp]\r
+ mov eax,edi\r
+ mov DWORD[24+rsp],ebp\r
+ mov ecx,esi\r
+ xor r14d,DWORD[36+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor r14d,DWORD[60+rsp]\r
+ lea r13d,[((-899497514))+r13*1+rbp]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[32+rsp]\r
+ mov eax,esi\r
+ mov DWORD[28+rsp],r14d\r
+ mov ecx,r13d\r
+ xor edx,DWORD[40+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor edx,DWORD[rsp]\r
+ lea r12d,[((-899497514))+r12*1+r14]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[36+rsp]\r
+ mov eax,r13d\r
+\r
+ mov ecx,r12d\r
+ xor ebp,DWORD[44+rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor ebp,DWORD[4+rsp]\r
+ lea r11d,[((-899497514))+r11*1+rdx]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[40+rsp]\r
+ mov eax,r12d\r
+\r
+ mov ecx,r11d\r
+ xor r14d,DWORD[48+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor r14d,DWORD[8+rsp]\r
+ lea edi,[((-899497514))+rdi*1+rbp]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[44+rsp]\r
+ mov eax,r11d\r
+\r
+ mov ecx,edi\r
+ xor edx,DWORD[52+rsp]\r
+ xor eax,r13d\r
+ rol ecx,5\r
+ xor edx,DWORD[12+rsp]\r
+ lea esi,[((-899497514))+rsi*1+r14]\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[48+rsp]\r
+ mov eax,edi\r
+\r
+ mov ecx,esi\r
+ xor ebp,DWORD[56+rsp]\r
+ xor eax,r12d\r
+ rol ecx,5\r
+ xor ebp,DWORD[16+rsp]\r
+ lea r13d,[((-899497514))+r13*1+rdx]\r
+ xor eax,r11d\r
+ add r13d,ecx\r
+ rol edi,30\r
+ add r13d,eax\r
+ rol ebp,1\r
+ xor r14d,DWORD[52+rsp]\r
+ mov eax,esi\r
+\r
+ mov ecx,r13d\r
+ xor r14d,DWORD[60+rsp]\r
+ xor eax,r11d\r
+ rol ecx,5\r
+ xor r14d,DWORD[20+rsp]\r
+ lea r12d,[((-899497514))+r12*1+rbp]\r
+ xor eax,edi\r
+ add r12d,ecx\r
+ rol esi,30\r
+ add r12d,eax\r
+ rol r14d,1\r
+ xor edx,DWORD[56+rsp]\r
+ mov eax,r13d\r
+\r
+ mov ecx,r12d\r
+ xor edx,DWORD[rsp]\r
+ xor eax,edi\r
+ rol ecx,5\r
+ xor edx,DWORD[24+rsp]\r
+ lea r11d,[((-899497514))+r11*1+r14]\r
+ xor eax,esi\r
+ add r11d,ecx\r
+ rol r13d,30\r
+ add r11d,eax\r
+ rol edx,1\r
+ xor ebp,DWORD[60+rsp]\r
+ mov eax,r12d\r
+\r
+ mov ecx,r11d\r
+ xor ebp,DWORD[4+rsp]\r
+ xor eax,esi\r
+ rol ecx,5\r
+ xor ebp,DWORD[28+rsp]\r
+ lea edi,[((-899497514))+rdi*1+rdx]\r
+ xor eax,r13d\r
+ add edi,ecx\r
+ rol r12d,30\r
+ add edi,eax\r
+ rol ebp,1\r
+ mov eax,r11d\r
+ mov ecx,edi\r
+ xor eax,r13d\r
+ lea esi,[((-899497514))+rsi*1+rbp]\r
+ rol ecx,5\r
+ xor eax,r12d\r
+ add esi,ecx\r
+ rol r11d,30\r
+ add esi,eax\r
+ add esi,DWORD[r8]\r
+ add edi,DWORD[4+r8]\r
+ add r11d,DWORD[8+r8]\r
+ add r12d,DWORD[12+r8]\r
+ add r13d,DWORD[16+r8]\r
+ mov DWORD[r8],esi\r
+ mov DWORD[4+r8],edi\r
+ mov DWORD[8+r8],r11d\r
+ mov DWORD[12+r8],r12d\r
+ mov DWORD[16+r8],r13d\r
+\r
+ sub r10,1\r
+ lea r9,[64+r9]\r
+ jnz NEAR $L$loop\r
+\r
+ mov rsi,QWORD[64+rsp]\r
+\r
+ mov r14,QWORD[((-40))+rsi]\r
+\r
+ mov r13,QWORD[((-32))+rsi]\r
+\r
+ mov r12,QWORD[((-24))+rsi]\r
+\r
+ mov rbp,QWORD[((-16))+rsi]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha1_block_data_order:\r
+\r
+ALIGN 32\r
+sha1_block_data_order_shaext:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha1_block_data_order_shaext:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+_shaext_shortcut:\r
+\r
+ lea rsp,[((-72))+rsp]\r
+ movaps XMMWORD[(-8-64)+rax],xmm6\r
+ movaps XMMWORD[(-8-48)+rax],xmm7\r
+ movaps XMMWORD[(-8-32)+rax],xmm8\r
+ movaps XMMWORD[(-8-16)+rax],xmm9\r
+$L$prologue_shaext:\r
+ movdqu xmm0,XMMWORD[rdi]\r
+ movd xmm1,DWORD[16+rdi]\r
+ movdqa xmm3,XMMWORD[((K_XX_XX+160))]\r
+\r
+ movdqu xmm4,XMMWORD[rsi]\r
+ pshufd xmm0,xmm0,27\r
+ movdqu xmm5,XMMWORD[16+rsi]\r
+ pshufd xmm1,xmm1,27\r
+ movdqu xmm6,XMMWORD[32+rsi]\r
+DB 102,15,56,0,227\r
+ movdqu xmm7,XMMWORD[48+rsi]\r
+DB 102,15,56,0,235\r
+DB 102,15,56,0,243\r
+ movdqa xmm9,xmm1\r
+DB 102,15,56,0,251\r
+ jmp NEAR $L$oop_shaext\r
+\r
+ALIGN 16\r
+$L$oop_shaext:\r
+ dec rdx\r
+ lea r8,[64+rsi]\r
+ paddd xmm1,xmm4\r
+ cmovne rsi,r8\r
+ movdqa xmm8,xmm0\r
+DB 15,56,201,229\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,0\r
+DB 15,56,200,213\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+DB 15,56,202,231\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,0\r
+DB 15,56,200,206\r
+ pxor xmm5,xmm7\r
+DB 15,56,202,236\r
+DB 15,56,201,247\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,0\r
+DB 15,56,200,215\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+DB 15,56,202,245\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,0\r
+DB 15,56,200,204\r
+ pxor xmm7,xmm5\r
+DB 15,56,202,254\r
+DB 15,56,201,229\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,0\r
+DB 15,56,200,213\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+DB 15,56,202,231\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,1\r
+DB 15,56,200,206\r
+ pxor xmm5,xmm7\r
+DB 15,56,202,236\r
+DB 15,56,201,247\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,1\r
+DB 15,56,200,215\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+DB 15,56,202,245\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,1\r
+DB 15,56,200,204\r
+ pxor xmm7,xmm5\r
+DB 15,56,202,254\r
+DB 15,56,201,229\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,1\r
+DB 15,56,200,213\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+DB 15,56,202,231\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,1\r
+DB 15,56,200,206\r
+ pxor xmm5,xmm7\r
+DB 15,56,202,236\r
+DB 15,56,201,247\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,2\r
+DB 15,56,200,215\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+DB 15,56,202,245\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,2\r
+DB 15,56,200,204\r
+ pxor xmm7,xmm5\r
+DB 15,56,202,254\r
+DB 15,56,201,229\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,2\r
+DB 15,56,200,213\r
+ pxor xmm4,xmm6\r
+DB 15,56,201,238\r
+DB 15,56,202,231\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,2\r
+DB 15,56,200,206\r
+ pxor xmm5,xmm7\r
+DB 15,56,202,236\r
+DB 15,56,201,247\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,2\r
+DB 15,56,200,215\r
+ pxor xmm6,xmm4\r
+DB 15,56,201,252\r
+DB 15,56,202,245\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,3\r
+DB 15,56,200,204\r
+ pxor xmm7,xmm5\r
+DB 15,56,202,254\r
+ movdqu xmm4,XMMWORD[rsi]\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,3\r
+DB 15,56,200,213\r
+ movdqu xmm5,XMMWORD[16+rsi]\r
+DB 102,15,56,0,227\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,3\r
+DB 15,56,200,206\r
+ movdqu xmm6,XMMWORD[32+rsi]\r
+DB 102,15,56,0,235\r
+\r
+ movdqa xmm2,xmm0\r
+DB 15,58,204,193,3\r
+DB 15,56,200,215\r
+ movdqu xmm7,XMMWORD[48+rsi]\r
+DB 102,15,56,0,243\r
+\r
+ movdqa xmm1,xmm0\r
+DB 15,58,204,194,3\r
+DB 65,15,56,200,201\r
+DB 102,15,56,0,251\r
+\r
+ paddd xmm0,xmm8\r
+ movdqa xmm9,xmm1\r
+\r
+ jnz NEAR $L$oop_shaext\r
+\r
+ pshufd xmm0,xmm0,27\r
+ pshufd xmm1,xmm1,27\r
+ movdqu XMMWORD[rdi],xmm0\r
+ movd DWORD[16+rdi],xmm1\r
+ movaps xmm6,XMMWORD[((-8-64))+rax]\r
+ movaps xmm7,XMMWORD[((-8-48))+rax]\r
+ movaps xmm8,XMMWORD[((-8-32))+rax]\r
+ movaps xmm9,XMMWORD[((-8-16))+rax]\r
+ mov rsp,rax\r
+$L$epilogue_shaext:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha1_block_data_order_shaext:\r
+\r
+ALIGN 16\r
+sha1_block_data_order_ssse3:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha1_block_data_order_ssse3:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+_ssse3_shortcut:\r
+\r
+ mov r11,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ lea rsp,[((-160))+rsp]\r
+ movaps XMMWORD[(-40-96)+r11],xmm6\r
+ movaps XMMWORD[(-40-80)+r11],xmm7\r
+ movaps XMMWORD[(-40-64)+r11],xmm8\r
+ movaps XMMWORD[(-40-48)+r11],xmm9\r
+ movaps XMMWORD[(-40-32)+r11],xmm10\r
+ movaps XMMWORD[(-40-16)+r11],xmm11\r
+$L$prologue_ssse3:\r
+ and rsp,-64\r
+ mov r8,rdi\r
+ mov r9,rsi\r
+ mov r10,rdx\r
+\r
+ shl r10,6\r
+ add r10,r9\r
+ lea r14,[((K_XX_XX+64))]\r
+\r
+ mov eax,DWORD[r8]\r
+ mov ebx,DWORD[4+r8]\r
+ mov ecx,DWORD[8+r8]\r
+ mov edx,DWORD[12+r8]\r
+ mov esi,ebx\r
+ mov ebp,DWORD[16+r8]\r
+ mov edi,ecx\r
+ xor edi,edx\r
+ and esi,edi\r
+\r
+ movdqa xmm6,XMMWORD[64+r14]\r
+ movdqa xmm9,XMMWORD[((-64))+r14]\r
+ movdqu xmm0,XMMWORD[r9]\r
+ movdqu xmm1,XMMWORD[16+r9]\r
+ movdqu xmm2,XMMWORD[32+r9]\r
+ movdqu xmm3,XMMWORD[48+r9]\r
+DB 102,15,56,0,198\r
+DB 102,15,56,0,206\r
+DB 102,15,56,0,214\r
+ add r9,64\r
+ paddd xmm0,xmm9\r
+DB 102,15,56,0,222\r
+ paddd xmm1,xmm9\r
+ paddd xmm2,xmm9\r
+ movdqa XMMWORD[rsp],xmm0\r
+ psubd xmm0,xmm9\r
+ movdqa XMMWORD[16+rsp],xmm1\r
+ psubd xmm1,xmm9\r
+ movdqa XMMWORD[32+rsp],xmm2\r
+ psubd xmm2,xmm9\r
+ jmp NEAR $L$oop_ssse3\r
+ALIGN 16\r
+$L$oop_ssse3:\r
+ ror ebx,2\r
+ pshufd xmm4,xmm0,238\r
+ xor esi,edx\r
+ movdqa xmm8,xmm3\r
+ paddd xmm9,xmm3\r
+ mov edi,eax\r
+ add ebp,DWORD[rsp]\r
+ punpcklqdq xmm4,xmm1\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ add ebp,esi\r
+ psrldq xmm8,4\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ pxor xmm4,xmm0\r
+ add ebp,eax\r
+ ror eax,7\r
+ pxor xmm8,xmm2\r
+ xor edi,ecx\r
+ mov esi,ebp\r
+ add edx,DWORD[4+rsp]\r
+ pxor xmm4,xmm8\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ movdqa XMMWORD[48+rsp],xmm9\r
+ add edx,edi\r
+ and esi,eax\r
+ movdqa xmm10,xmm4\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ ror ebp,7\r
+ movdqa xmm8,xmm4\r
+ xor esi,ebx\r
+ pslldq xmm10,12\r
+ paddd xmm4,xmm4\r
+ mov edi,edx\r
+ add ecx,DWORD[8+rsp]\r
+ psrld xmm8,31\r
+ xor ebp,eax\r
+ rol edx,5\r
+ add ecx,esi\r
+ movdqa xmm9,xmm10\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ psrld xmm10,30\r
+ add ecx,edx\r
+ ror edx,7\r
+ por xmm4,xmm8\r
+ xor edi,eax\r
+ mov esi,ecx\r
+ add ebx,DWORD[12+rsp]\r
+ pslld xmm9,2\r
+ pxor xmm4,xmm10\r
+ xor edx,ebp\r
+ movdqa xmm10,XMMWORD[((-64))+r14]\r
+ rol ecx,5\r
+ add ebx,edi\r
+ and esi,edx\r
+ pxor xmm4,xmm9\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ pshufd xmm5,xmm1,238\r
+ xor esi,ebp\r
+ movdqa xmm9,xmm4\r
+ paddd xmm10,xmm4\r
+ mov edi,ebx\r
+ add eax,DWORD[16+rsp]\r
+ punpcklqdq xmm5,xmm2\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ add eax,esi\r
+ psrldq xmm9,4\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ pxor xmm5,xmm1\r
+ add eax,ebx\r
+ ror ebx,7\r
+ pxor xmm9,xmm3\r
+ xor edi,edx\r
+ mov esi,eax\r
+ add ebp,DWORD[20+rsp]\r
+ pxor xmm5,xmm9\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ movdqa XMMWORD[rsp],xmm10\r
+ add ebp,edi\r
+ and esi,ebx\r
+ movdqa xmm8,xmm5\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ ror eax,7\r
+ movdqa xmm9,xmm5\r
+ xor esi,ecx\r
+ pslldq xmm8,12\r
+ paddd xmm5,xmm5\r
+ mov edi,ebp\r
+ add edx,DWORD[24+rsp]\r
+ psrld xmm9,31\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ add edx,esi\r
+ movdqa xmm10,xmm8\r
+ and edi,eax\r
+ xor eax,ebx\r
+ psrld xmm8,30\r
+ add edx,ebp\r
+ ror ebp,7\r
+ por xmm5,xmm9\r
+ xor edi,ebx\r
+ mov esi,edx\r
+ add ecx,DWORD[28+rsp]\r
+ pslld xmm10,2\r
+ pxor xmm5,xmm8\r
+ xor ebp,eax\r
+ movdqa xmm8,XMMWORD[((-32))+r14]\r
+ rol edx,5\r
+ add ecx,edi\r
+ and esi,ebp\r
+ pxor xmm5,xmm10\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ ror edx,7\r
+ pshufd xmm6,xmm2,238\r
+ xor esi,eax\r
+ movdqa xmm10,xmm5\r
+ paddd xmm8,xmm5\r
+ mov edi,ecx\r
+ add ebx,DWORD[32+rsp]\r
+ punpcklqdq xmm6,xmm3\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ add ebx,esi\r
+ psrldq xmm10,4\r
+ and edi,edx\r
+ xor edx,ebp\r
+ pxor xmm6,xmm2\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ pxor xmm10,xmm4\r
+ xor edi,ebp\r
+ mov esi,ebx\r
+ add eax,DWORD[36+rsp]\r
+ pxor xmm6,xmm10\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ movdqa XMMWORD[16+rsp],xmm8\r
+ add eax,edi\r
+ and esi,ecx\r
+ movdqa xmm9,xmm6\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ ror ebx,7\r
+ movdqa xmm10,xmm6\r
+ xor esi,edx\r
+ pslldq xmm9,12\r
+ paddd xmm6,xmm6\r
+ mov edi,eax\r
+ add ebp,DWORD[40+rsp]\r
+ psrld xmm10,31\r
+ xor ebx,ecx\r
+ rol eax,5\r
+ add ebp,esi\r
+ movdqa xmm8,xmm9\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ psrld xmm9,30\r
+ add ebp,eax\r
+ ror eax,7\r
+ por xmm6,xmm10\r
+ xor edi,ecx\r
+ mov esi,ebp\r
+ add edx,DWORD[44+rsp]\r
+ pslld xmm8,2\r
+ pxor xmm6,xmm9\r
+ xor eax,ebx\r
+ movdqa xmm9,XMMWORD[((-32))+r14]\r
+ rol ebp,5\r
+ add edx,edi\r
+ and esi,eax\r
+ pxor xmm6,xmm8\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ ror ebp,7\r
+ pshufd xmm7,xmm3,238\r
+ xor esi,ebx\r
+ movdqa xmm8,xmm6\r
+ paddd xmm9,xmm6\r
+ mov edi,edx\r
+ add ecx,DWORD[48+rsp]\r
+ punpcklqdq xmm7,xmm4\r
+ xor ebp,eax\r
+ rol edx,5\r
+ add ecx,esi\r
+ psrldq xmm8,4\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ pxor xmm7,xmm3\r
+ add ecx,edx\r
+ ror edx,7\r
+ pxor xmm8,xmm5\r
+ xor edi,eax\r
+ mov esi,ecx\r
+ add ebx,DWORD[52+rsp]\r
+ pxor xmm7,xmm8\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ movdqa XMMWORD[32+rsp],xmm9\r
+ add ebx,edi\r
+ and esi,edx\r
+ movdqa xmm10,xmm7\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ ror ecx,7\r
+ movdqa xmm8,xmm7\r
+ xor esi,ebp\r
+ pslldq xmm10,12\r
+ paddd xmm7,xmm7\r
+ mov edi,ebx\r
+ add eax,DWORD[56+rsp]\r
+ psrld xmm8,31\r
+ xor ecx,edx\r
+ rol ebx,5\r
+ add eax,esi\r
+ movdqa xmm9,xmm10\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ psrld xmm10,30\r
+ add eax,ebx\r
+ ror ebx,7\r
+ por xmm7,xmm8\r
+ xor edi,edx\r
+ mov esi,eax\r
+ add ebp,DWORD[60+rsp]\r
+ pslld xmm9,2\r
+ pxor xmm7,xmm10\r
+ xor ebx,ecx\r
+ movdqa xmm10,XMMWORD[((-32))+r14]\r
+ rol eax,5\r
+ add ebp,edi\r
+ and esi,ebx\r
+ pxor xmm7,xmm9\r
+ pshufd xmm9,xmm6,238\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ ror eax,7\r
+ pxor xmm0,xmm4\r
+ xor esi,ecx\r
+ mov edi,ebp\r
+ add edx,DWORD[rsp]\r
+ punpcklqdq xmm9,xmm7\r
+ xor eax,ebx\r
+ rol ebp,5\r
+ pxor xmm0,xmm1\r
+ add edx,esi\r
+ and edi,eax\r
+ movdqa xmm8,xmm10\r
+ xor eax,ebx\r
+ paddd xmm10,xmm7\r
+ add edx,ebp\r
+ pxor xmm0,xmm9\r
+ ror ebp,7\r
+ xor edi,ebx\r
+ mov esi,edx\r
+ add ecx,DWORD[4+rsp]\r
+ movdqa xmm9,xmm0\r
+ xor ebp,eax\r
+ rol edx,5\r
+ movdqa XMMWORD[48+rsp],xmm10\r
+ add ecx,edi\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ pslld xmm0,2\r
+ add ecx,edx\r
+ ror edx,7\r
+ psrld xmm9,30\r
+ xor esi,eax\r
+ mov edi,ecx\r
+ add ebx,DWORD[8+rsp]\r
+ por xmm0,xmm9\r
+ xor edx,ebp\r
+ rol ecx,5\r
+ pshufd xmm10,xmm7,238\r
+ add ebx,esi\r
+ and edi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ add eax,DWORD[12+rsp]\r
+ xor edi,ebp\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ pxor xmm1,xmm5\r
+ add ebp,DWORD[16+rsp]\r
+ xor esi,ecx\r
+ punpcklqdq xmm10,xmm0\r
+ mov edi,eax\r
+ rol eax,5\r
+ pxor xmm1,xmm2\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ movdqa xmm9,xmm8\r
+ ror ebx,7\r
+ paddd xmm8,xmm0\r
+ add ebp,eax\r
+ pxor xmm1,xmm10\r
+ add edx,DWORD[20+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ movdqa xmm10,xmm1\r
+ add edx,edi\r
+ xor esi,ebx\r
+ movdqa XMMWORD[rsp],xmm8\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[24+rsp]\r
+ pslld xmm1,2\r
+ xor esi,eax\r
+ mov edi,edx\r
+ psrld xmm10,30\r
+ rol edx,5\r
+ add ecx,esi\r
+ xor edi,eax\r
+ ror ebp,7\r
+ por xmm1,xmm10\r
+ add ecx,edx\r
+ add ebx,DWORD[28+rsp]\r
+ pshufd xmm8,xmm0,238\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ pxor xmm2,xmm6\r
+ add eax,DWORD[32+rsp]\r
+ xor esi,edx\r
+ punpcklqdq xmm8,xmm1\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ pxor xmm2,xmm3\r
+ add eax,esi\r
+ xor edi,edx\r
+ movdqa xmm10,XMMWORD[r14]\r
+ ror ecx,7\r
+ paddd xmm9,xmm1\r
+ add eax,ebx\r
+ pxor xmm2,xmm8\r
+ add ebp,DWORD[36+rsp]\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ movdqa xmm8,xmm2\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ movdqa XMMWORD[16+rsp],xmm9\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[40+rsp]\r
+ pslld xmm2,2\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ psrld xmm8,30\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ por xmm2,xmm8\r
+ add edx,ebp\r
+ add ecx,DWORD[44+rsp]\r
+ pshufd xmm9,xmm1,238\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ pxor xmm3,xmm7\r
+ add ebx,DWORD[48+rsp]\r
+ xor esi,ebp\r
+ punpcklqdq xmm9,xmm2\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ pxor xmm3,xmm4\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ movdqa xmm8,xmm10\r
+ ror edx,7\r
+ paddd xmm10,xmm2\r
+ add ebx,ecx\r
+ pxor xmm3,xmm9\r
+ add eax,DWORD[52+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ movdqa xmm9,xmm3\r
+ add eax,edi\r
+ xor esi,edx\r
+ movdqa XMMWORD[32+rsp],xmm10\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[56+rsp]\r
+ pslld xmm3,2\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ psrld xmm9,30\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ por xmm3,xmm9\r
+ add ebp,eax\r
+ add edx,DWORD[60+rsp]\r
+ pshufd xmm10,xmm2,238\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ pxor xmm4,xmm0\r
+ add ecx,DWORD[rsp]\r
+ xor esi,eax\r
+ punpcklqdq xmm10,xmm3\r
+ mov edi,edx\r
+ rol edx,5\r
+ pxor xmm4,xmm5\r
+ add ecx,esi\r
+ xor edi,eax\r
+ movdqa xmm9,xmm8\r
+ ror ebp,7\r
+ paddd xmm8,xmm3\r
+ add ecx,edx\r
+ pxor xmm4,xmm10\r
+ add ebx,DWORD[4+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ movdqa xmm10,xmm4\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ movdqa XMMWORD[48+rsp],xmm8\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[8+rsp]\r
+ pslld xmm4,2\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ psrld xmm10,30\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ por xmm4,xmm10\r
+ add eax,ebx\r
+ add ebp,DWORD[12+rsp]\r
+ pshufd xmm8,xmm3,238\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ pxor xmm5,xmm1\r
+ add edx,DWORD[16+rsp]\r
+ xor esi,ebx\r
+ punpcklqdq xmm8,xmm4\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ pxor xmm5,xmm6\r
+ add edx,esi\r
+ xor edi,ebx\r
+ movdqa xmm10,xmm9\r
+ ror eax,7\r
+ paddd xmm9,xmm4\r
+ add edx,ebp\r
+ pxor xmm5,xmm8\r
+ add ecx,DWORD[20+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ movdqa xmm8,xmm5\r
+ add ecx,edi\r
+ xor esi,eax\r
+ movdqa XMMWORD[rsp],xmm9\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[24+rsp]\r
+ pslld xmm5,2\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ psrld xmm8,30\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ por xmm5,xmm8\r
+ add ebx,ecx\r
+ add eax,DWORD[28+rsp]\r
+ pshufd xmm9,xmm4,238\r
+ ror ecx,7\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,ecx\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ pxor xmm6,xmm2\r
+ add ebp,DWORD[32+rsp]\r
+ and esi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ punpcklqdq xmm9,xmm5\r
+ mov edi,eax\r
+ xor esi,ecx\r
+ pxor xmm6,xmm7\r
+ rol eax,5\r
+ add ebp,esi\r
+ movdqa xmm8,xmm10\r
+ xor edi,ebx\r
+ paddd xmm10,xmm5\r
+ xor ebx,ecx\r
+ pxor xmm6,xmm9\r
+ add ebp,eax\r
+ add edx,DWORD[36+rsp]\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ movdqa xmm9,xmm6\r
+ mov esi,ebp\r
+ xor edi,ebx\r
+ movdqa XMMWORD[16+rsp],xmm10\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,eax\r
+ pslld xmm6,2\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ psrld xmm9,30\r
+ add ecx,DWORD[40+rsp]\r
+ and esi,eax\r
+ xor eax,ebx\r
+ por xmm6,xmm9\r
+ ror ebp,7\r
+ mov edi,edx\r
+ xor esi,eax\r
+ rol edx,5\r
+ pshufd xmm10,xmm5,238\r
+ add ecx,esi\r
+ xor edi,ebp\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ add ebx,DWORD[44+rsp]\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ mov esi,ecx\r
+ xor edi,ebp\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ pxor xmm7,xmm3\r
+ add eax,DWORD[48+rsp]\r
+ and esi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ punpcklqdq xmm10,xmm6\r
+ mov edi,ebx\r
+ xor esi,edx\r
+ pxor xmm7,xmm0\r
+ rol ebx,5\r
+ add eax,esi\r
+ movdqa xmm9,XMMWORD[32+r14]\r
+ xor edi,ecx\r
+ paddd xmm8,xmm6\r
+ xor ecx,edx\r
+ pxor xmm7,xmm10\r
+ add eax,ebx\r
+ add ebp,DWORD[52+rsp]\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ movdqa xmm10,xmm7\r
+ mov esi,eax\r
+ xor edi,ecx\r
+ movdqa XMMWORD[32+rsp],xmm8\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ebx\r
+ pslld xmm7,2\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ psrld xmm10,30\r
+ add edx,DWORD[56+rsp]\r
+ and esi,ebx\r
+ xor ebx,ecx\r
+ por xmm7,xmm10\r
+ ror eax,7\r
+ mov edi,ebp\r
+ xor esi,ebx\r
+ rol ebp,5\r
+ pshufd xmm8,xmm6,238\r
+ add edx,esi\r
+ xor edi,eax\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ add ecx,DWORD[60+rsp]\r
+ and edi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ mov esi,edx\r
+ xor edi,eax\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,ebp\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ pxor xmm0,xmm4\r
+ add ebx,DWORD[rsp]\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ punpcklqdq xmm8,xmm7\r
+ mov edi,ecx\r
+ xor esi,ebp\r
+ pxor xmm0,xmm1\r
+ rol ecx,5\r
+ add ebx,esi\r
+ movdqa xmm10,xmm9\r
+ xor edi,edx\r
+ paddd xmm9,xmm7\r
+ xor edx,ebp\r
+ pxor xmm0,xmm8\r
+ add ebx,ecx\r
+ add eax,DWORD[4+rsp]\r
+ and edi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ movdqa xmm8,xmm0\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ movdqa XMMWORD[48+rsp],xmm9\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,ecx\r
+ pslld xmm0,2\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ psrld xmm8,30\r
+ add ebp,DWORD[8+rsp]\r
+ and esi,ecx\r
+ xor ecx,edx\r
+ por xmm0,xmm8\r
+ ror ebx,7\r
+ mov edi,eax\r
+ xor esi,ecx\r
+ rol eax,5\r
+ pshufd xmm9,xmm7,238\r
+ add ebp,esi\r
+ xor edi,ebx\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ add edx,DWORD[12+rsp]\r
+ and edi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ mov esi,ebp\r
+ xor edi,ebx\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,eax\r
+ xor eax,ebx\r
+ add edx,ebp\r
+ pxor xmm1,xmm5\r
+ add ecx,DWORD[16+rsp]\r
+ and esi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ punpcklqdq xmm9,xmm0\r
+ mov edi,edx\r
+ xor esi,eax\r
+ pxor xmm1,xmm2\r
+ rol edx,5\r
+ add ecx,esi\r
+ movdqa xmm8,xmm10\r
+ xor edi,ebp\r
+ paddd xmm10,xmm0\r
+ xor ebp,eax\r
+ pxor xmm1,xmm9\r
+ add ecx,edx\r
+ add ebx,DWORD[20+rsp]\r
+ and edi,ebp\r
+ xor ebp,eax\r
+ ror edx,7\r
+ movdqa xmm9,xmm1\r
+ mov esi,ecx\r
+ xor edi,ebp\r
+ movdqa XMMWORD[rsp],xmm10\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,edx\r
+ pslld xmm1,2\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ psrld xmm9,30\r
+ add eax,DWORD[24+rsp]\r
+ and esi,edx\r
+ xor edx,ebp\r
+ por xmm1,xmm9\r
+ ror ecx,7\r
+ mov edi,ebx\r
+ xor esi,edx\r
+ rol ebx,5\r
+ pshufd xmm10,xmm0,238\r
+ add eax,esi\r
+ xor edi,ecx\r
+ xor ecx,edx\r
+ add eax,ebx\r
+ add ebp,DWORD[28+rsp]\r
+ and edi,ecx\r
+ xor ecx,edx\r
+ ror ebx,7\r
+ mov esi,eax\r
+ xor edi,ecx\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ebx\r
+ xor ebx,ecx\r
+ add ebp,eax\r
+ pxor xmm2,xmm6\r
+ add edx,DWORD[32+rsp]\r
+ and esi,ebx\r
+ xor ebx,ecx\r
+ ror eax,7\r
+ punpcklqdq xmm10,xmm1\r
+ mov edi,ebp\r
+ xor esi,ebx\r
+ pxor xmm2,xmm3\r
+ rol ebp,5\r
+ add edx,esi\r
+ movdqa xmm9,xmm8\r
+ xor edi,eax\r
+ paddd xmm8,xmm1\r
+ xor eax,ebx\r
+ pxor xmm2,xmm10\r
+ add edx,ebp\r
+ add ecx,DWORD[36+rsp]\r
+ and edi,eax\r
+ xor eax,ebx\r
+ ror ebp,7\r
+ movdqa xmm10,xmm2\r
+ mov esi,edx\r
+ xor edi,eax\r
+ movdqa XMMWORD[16+rsp],xmm8\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,ebp\r
+ pslld xmm2,2\r
+ xor ebp,eax\r
+ add ecx,edx\r
+ psrld xmm10,30\r
+ add ebx,DWORD[40+rsp]\r
+ and esi,ebp\r
+ xor ebp,eax\r
+ por xmm2,xmm10\r
+ ror edx,7\r
+ mov edi,ecx\r
+ xor esi,ebp\r
+ rol ecx,5\r
+ pshufd xmm8,xmm1,238\r
+ add ebx,esi\r
+ xor edi,edx\r
+ xor edx,ebp\r
+ add ebx,ecx\r
+ add eax,DWORD[44+rsp]\r
+ and edi,edx\r
+ xor edx,ebp\r
+ ror ecx,7\r
+ mov esi,ebx\r
+ xor edi,edx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ add eax,ebx\r
+ pxor xmm3,xmm7\r
+ add ebp,DWORD[48+rsp]\r
+ xor esi,ecx\r
+ punpcklqdq xmm8,xmm2\r
+ mov edi,eax\r
+ rol eax,5\r
+ pxor xmm3,xmm4\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ movdqa xmm10,xmm9\r
+ ror ebx,7\r
+ paddd xmm9,xmm2\r
+ add ebp,eax\r
+ pxor xmm3,xmm8\r
+ add edx,DWORD[52+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ movdqa xmm8,xmm3\r
+ add edx,edi\r
+ xor esi,ebx\r
+ movdqa XMMWORD[32+rsp],xmm9\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[56+rsp]\r
+ pslld xmm3,2\r
+ xor esi,eax\r
+ mov edi,edx\r
+ psrld xmm8,30\r
+ rol edx,5\r
+ add ecx,esi\r
+ xor edi,eax\r
+ ror ebp,7\r
+ por xmm3,xmm8\r
+ add ecx,edx\r
+ add ebx,DWORD[60+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ paddd xmm10,xmm3\r
+ add eax,esi\r
+ xor edi,edx\r
+ movdqa XMMWORD[48+rsp],xmm10\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[4+rsp]\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[8+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[12+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ cmp r9,r10\r
+ je NEAR $L$done_ssse3\r
+ movdqa xmm6,XMMWORD[64+r14]\r
+ movdqa xmm9,XMMWORD[((-64))+r14]\r
+ movdqu xmm0,XMMWORD[r9]\r
+ movdqu xmm1,XMMWORD[16+r9]\r
+ movdqu xmm2,XMMWORD[32+r9]\r
+ movdqu xmm3,XMMWORD[48+r9]\r
+DB 102,15,56,0,198\r
+ add r9,64\r
+ add ebx,DWORD[16+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+DB 102,15,56,0,206\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ paddd xmm0,xmm9\r
+ add ebx,ecx\r
+ add eax,DWORD[20+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ movdqa XMMWORD[rsp],xmm0\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ psubd xmm0,xmm9\r
+ add eax,ebx\r
+ add ebp,DWORD[24+rsp]\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[28+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[32+rsp]\r
+ xor esi,eax\r
+ mov edi,edx\r
+DB 102,15,56,0,214\r
+ rol edx,5\r
+ add ecx,esi\r
+ xor edi,eax\r
+ ror ebp,7\r
+ paddd xmm1,xmm9\r
+ add ecx,edx\r
+ add ebx,DWORD[36+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ movdqa XMMWORD[16+rsp],xmm1\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ psubd xmm1,xmm9\r
+ add ebx,ecx\r
+ add eax,DWORD[40+rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[44+rsp]\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[48+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+DB 102,15,56,0,222\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ paddd xmm2,xmm9\r
+ add edx,ebp\r
+ add ecx,DWORD[52+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ movdqa XMMWORD[32+rsp],xmm2\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,eax\r
+ ror ebp,7\r
+ psubd xmm2,xmm9\r
+ add ecx,edx\r
+ add ebx,DWORD[56+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[60+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add eax,DWORD[r8]\r
+ add esi,DWORD[4+r8]\r
+ add ecx,DWORD[8+r8]\r
+ add edx,DWORD[12+r8]\r
+ mov DWORD[r8],eax\r
+ add ebp,DWORD[16+r8]\r
+ mov DWORD[4+r8],esi\r
+ mov ebx,esi\r
+ mov DWORD[8+r8],ecx\r
+ mov edi,ecx\r
+ mov DWORD[12+r8],edx\r
+ xor edi,edx\r
+ mov DWORD[16+r8],ebp\r
+ and esi,edi\r
+ jmp NEAR $L$oop_ssse3\r
+\r
+ALIGN 16\r
+$L$done_ssse3:\r
+ add ebx,DWORD[16+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[20+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ xor esi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[24+rsp]\r
+ xor esi,ecx\r
+ mov edi,eax\r
+ rol eax,5\r
+ add ebp,esi\r
+ xor edi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[28+rsp]\r
+ xor edi,ebx\r
+ mov esi,ebp\r
+ rol ebp,5\r
+ add edx,edi\r
+ xor esi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[32+rsp]\r
+ xor esi,eax\r
+ mov edi,edx\r
+ rol edx,5\r
+ add ecx,esi\r
+ xor edi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[36+rsp]\r
+ xor edi,ebp\r
+ mov esi,ecx\r
+ rol ecx,5\r
+ add ebx,edi\r
+ xor esi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[40+rsp]\r
+ xor esi,edx\r
+ mov edi,ebx\r
+ rol ebx,5\r
+ add eax,esi\r
+ xor edi,edx\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add ebp,DWORD[44+rsp]\r
+ xor edi,ecx\r
+ mov esi,eax\r
+ rol eax,5\r
+ add ebp,edi\r
+ xor esi,ecx\r
+ ror ebx,7\r
+ add ebp,eax\r
+ add edx,DWORD[48+rsp]\r
+ xor esi,ebx\r
+ mov edi,ebp\r
+ rol ebp,5\r
+ add edx,esi\r
+ xor edi,ebx\r
+ ror eax,7\r
+ add edx,ebp\r
+ add ecx,DWORD[52+rsp]\r
+ xor edi,eax\r
+ mov esi,edx\r
+ rol edx,5\r
+ add ecx,edi\r
+ xor esi,eax\r
+ ror ebp,7\r
+ add ecx,edx\r
+ add ebx,DWORD[56+rsp]\r
+ xor esi,ebp\r
+ mov edi,ecx\r
+ rol ecx,5\r
+ add ebx,esi\r
+ xor edi,ebp\r
+ ror edx,7\r
+ add ebx,ecx\r
+ add eax,DWORD[60+rsp]\r
+ xor edi,edx\r
+ mov esi,ebx\r
+ rol ebx,5\r
+ add eax,edi\r
+ ror ecx,7\r
+ add eax,ebx\r
+ add eax,DWORD[r8]\r
+ add esi,DWORD[4+r8]\r
+ add ecx,DWORD[8+r8]\r
+ mov DWORD[r8],eax\r
+ add edx,DWORD[12+r8]\r
+ mov DWORD[4+r8],esi\r
+ add ebp,DWORD[16+r8]\r
+ mov DWORD[8+r8],ecx\r
+ mov DWORD[12+r8],edx\r
+ mov DWORD[16+r8],ebp\r
+ movaps xmm6,XMMWORD[((-40-96))+r11]\r
+ movaps xmm7,XMMWORD[((-40-80))+r11]\r
+ movaps xmm8,XMMWORD[((-40-64))+r11]\r
+ movaps xmm9,XMMWORD[((-40-48))+r11]\r
+ movaps xmm10,XMMWORD[((-40-32))+r11]\r
+ movaps xmm11,XMMWORD[((-40-16))+r11]\r
+ mov r14,QWORD[((-40))+r11]\r
+\r
+ mov r13,QWORD[((-32))+r11]\r
+\r
+ mov r12,QWORD[((-24))+r11]\r
+\r
+ mov rbp,QWORD[((-16))+r11]\r
+\r
+ mov rbx,QWORD[((-8))+r11]\r
+\r
+ lea rsp,[r11]\r
+\r
+$L$epilogue_ssse3:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha1_block_data_order_ssse3:\r
+ALIGN 64\r
+K_XX_XX:\r
+ DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+ DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+ DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+ DD 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+ DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+ DD 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+ DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+ DD 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+DB 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115\r
+DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44\r
+DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60\r
+DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114\r
+DB 103,62,0\r
+ALIGN 64\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ lea r10,[$L$prologue]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ lea r10,[$L$epilogue]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[64+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+\r
+ jmp NEAR $L$common_seh_tail\r
+\r
+\r
+ALIGN 16\r
+shaext_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ lea r10,[$L$prologue_shaext]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ lea r10,[$L$epilogue_shaext]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ lea rsi,[((-8-64))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,8\r
+ DD 0xa548f3fc\r
+\r
+ jmp NEAR $L$common_seh_tail\r
+\r
+\r
+ALIGN 16\r
+ssse3_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$common_seh_tail\r
+\r
+ mov rax,QWORD[208+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$common_seh_tail\r
+\r
+ lea rsi,[((-40-96))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,12\r
+ DD 0xa548f3fc\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+\r
+$L$common_seh_tail:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_sha1_block_data_order wrt ..imagebase\r
+ DD $L$SEH_end_sha1_block_data_order wrt ..imagebase\r
+ DD $L$SEH_info_sha1_block_data_order wrt ..imagebase\r
+ DD $L$SEH_begin_sha1_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_info_sha1_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase\r
+ DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase\r
+ DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_sha1_block_data_order:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+$L$SEH_info_sha1_block_data_order_shaext:\r
+DB 9,0,0,0\r
+ DD shaext_handler wrt ..imagebase\r
+$L$SEH_info_sha1_block_data_order_ssse3:\r
+DB 9,0,0,0\r
+ DD ssse3_handler wrt ..imagebase\r
+ DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl\r
+;\r
+; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+\r
+global sha256_multi_block\r
+\r
+ALIGN 32\r
+sha256_multi_block:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha256_multi_block:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov rcx,QWORD[((OPENSSL_ia32cap_P+4))]\r
+ bt rcx,61\r
+ jc NEAR _shaext_shortcut\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[(-120)+rax],xmm10\r
+ movaps XMMWORD[(-104)+rax],xmm11\r
+ movaps XMMWORD[(-88)+rax],xmm12\r
+ movaps XMMWORD[(-72)+rax],xmm13\r
+ movaps XMMWORD[(-56)+rax],xmm14\r
+ movaps XMMWORD[(-40)+rax],xmm15\r
+ sub rsp,288\r
+ and rsp,-256\r
+ mov QWORD[272+rsp],rax\r
+\r
+$L$body:\r
+ lea rbp,[((K256+128))]\r
+ lea rbx,[256+rsp]\r
+ lea rdi,[128+rdi]\r
+\r
+$L$oop_grande:\r
+ mov DWORD[280+rsp],edx\r
+ xor edx,edx\r
+ mov r8,QWORD[rsi]\r
+ mov ecx,DWORD[8+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[rbx],ecx\r
+ cmovle r8,rbp\r
+ mov r9,QWORD[16+rsi]\r
+ mov ecx,DWORD[24+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[4+rbx],ecx\r
+ cmovle r9,rbp\r
+ mov r10,QWORD[32+rsi]\r
+ mov ecx,DWORD[40+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[8+rbx],ecx\r
+ cmovle r10,rbp\r
+ mov r11,QWORD[48+rsi]\r
+ mov ecx,DWORD[56+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[12+rbx],ecx\r
+ cmovle r11,rbp\r
+ test edx,edx\r
+ jz NEAR $L$done\r
+\r
+ movdqu xmm8,XMMWORD[((0-128))+rdi]\r
+ lea rax,[128+rsp]\r
+ movdqu xmm9,XMMWORD[((32-128))+rdi]\r
+ movdqu xmm10,XMMWORD[((64-128))+rdi]\r
+ movdqu xmm11,XMMWORD[((96-128))+rdi]\r
+ movdqu xmm12,XMMWORD[((128-128))+rdi]\r
+ movdqu xmm13,XMMWORD[((160-128))+rdi]\r
+ movdqu xmm14,XMMWORD[((192-128))+rdi]\r
+ movdqu xmm15,XMMWORD[((224-128))+rdi]\r
+ movdqu xmm6,XMMWORD[$L$pbswap]\r
+ jmp NEAR $L$oop\r
+\r
+ALIGN 32\r
+$L$oop:\r
+ movdqa xmm4,xmm10\r
+ pxor xmm4,xmm9\r
+ movd xmm5,DWORD[r8]\r
+ movd xmm0,DWORD[r9]\r
+ movd xmm1,DWORD[r10]\r
+ movd xmm2,DWORD[r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm12\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm12\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm12\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(0-128)+rax],xmm5\r
+ paddd xmm5,xmm15\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-128))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm12\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm12\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm14\r
+ pand xmm3,xmm13\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm8\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm8\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm9\r
+ movdqa xmm7,xmm8\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm8\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm15,xmm9\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm15,xmm4\r
+ paddd xmm11,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm15,xmm5\r
+ paddd xmm15,xmm7\r
+ movd xmm5,DWORD[4+r8]\r
+ movd xmm0,DWORD[4+r9]\r
+ movd xmm1,DWORD[4+r10]\r
+ movd xmm2,DWORD[4+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm11\r
+\r
+ movdqa xmm2,xmm11\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm11\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(16-128)+rax],xmm5\r
+ paddd xmm5,xmm14\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-96))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm11\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm11\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm13\r
+ pand xmm4,xmm12\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm15\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm15\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm8\r
+ movdqa xmm7,xmm15\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm15\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm14,xmm8\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm14,xmm3\r
+ paddd xmm10,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm14,xmm5\r
+ paddd xmm14,xmm7\r
+ movd xmm5,DWORD[8+r8]\r
+ movd xmm0,DWORD[8+r9]\r
+ movd xmm1,DWORD[8+r10]\r
+ movd xmm2,DWORD[8+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm10\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm10\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm10\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(32-128)+rax],xmm5\r
+ paddd xmm5,xmm13\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-64))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm10\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm10\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm12\r
+ pand xmm3,xmm11\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm14\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm14\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm15\r
+ movdqa xmm7,xmm14\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm14\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm13,xmm15\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm13,xmm4\r
+ paddd xmm9,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm13,xmm5\r
+ paddd xmm13,xmm7\r
+ movd xmm5,DWORD[12+r8]\r
+ movd xmm0,DWORD[12+r9]\r
+ movd xmm1,DWORD[12+r10]\r
+ movd xmm2,DWORD[12+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm9\r
+\r
+ movdqa xmm2,xmm9\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm9\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(48-128)+rax],xmm5\r
+ paddd xmm5,xmm12\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-32))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm9\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm9\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm11\r
+ pand xmm4,xmm10\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm13\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm13\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm14\r
+ movdqa xmm7,xmm13\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm13\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm12,xmm14\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm12,xmm3\r
+ paddd xmm8,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm12,xmm5\r
+ paddd xmm12,xmm7\r
+ movd xmm5,DWORD[16+r8]\r
+ movd xmm0,DWORD[16+r9]\r
+ movd xmm1,DWORD[16+r10]\r
+ movd xmm2,DWORD[16+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm8\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm8\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm8\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(64-128)+rax],xmm5\r
+ paddd xmm5,xmm11\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm8\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm8\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm10\r
+ pand xmm3,xmm9\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm12\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm12\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm13\r
+ movdqa xmm7,xmm12\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm12\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm11,xmm13\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm11,xmm4\r
+ paddd xmm15,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm11,xmm5\r
+ paddd xmm11,xmm7\r
+ movd xmm5,DWORD[20+r8]\r
+ movd xmm0,DWORD[20+r9]\r
+ movd xmm1,DWORD[20+r10]\r
+ movd xmm2,DWORD[20+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm15\r
+\r
+ movdqa xmm2,xmm15\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm15\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(80-128)+rax],xmm5\r
+ paddd xmm5,xmm10\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[32+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm15\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm15\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm9\r
+ pand xmm4,xmm8\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm11\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm11\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm12\r
+ movdqa xmm7,xmm11\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm11\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm10,xmm12\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm10,xmm3\r
+ paddd xmm14,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm10,xmm5\r
+ paddd xmm10,xmm7\r
+ movd xmm5,DWORD[24+r8]\r
+ movd xmm0,DWORD[24+r9]\r
+ movd xmm1,DWORD[24+r10]\r
+ movd xmm2,DWORD[24+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm14\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm14\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm14\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(96-128)+rax],xmm5\r
+ paddd xmm5,xmm9\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[64+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm14\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm14\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm8\r
+ pand xmm3,xmm15\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm10\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm10\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm11\r
+ movdqa xmm7,xmm10\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm10\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm9,xmm11\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm9,xmm4\r
+ paddd xmm13,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm9,xmm5\r
+ paddd xmm9,xmm7\r
+ movd xmm5,DWORD[28+r8]\r
+ movd xmm0,DWORD[28+r9]\r
+ movd xmm1,DWORD[28+r10]\r
+ movd xmm2,DWORD[28+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm13\r
+\r
+ movdqa xmm2,xmm13\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm13\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(112-128)+rax],xmm5\r
+ paddd xmm5,xmm8\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[96+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm13\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm13\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm15\r
+ pand xmm4,xmm14\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm9\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm9\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm10\r
+ movdqa xmm7,xmm9\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm9\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm8,xmm10\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm8,xmm3\r
+ paddd xmm12,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm8,xmm5\r
+ paddd xmm8,xmm7\r
+ lea rbp,[256+rbp]\r
+ movd xmm5,DWORD[32+r8]\r
+ movd xmm0,DWORD[32+r9]\r
+ movd xmm1,DWORD[32+r10]\r
+ movd xmm2,DWORD[32+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm12\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm12\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm12\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(128-128)+rax],xmm5\r
+ paddd xmm5,xmm15\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-128))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm12\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm12\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm14\r
+ pand xmm3,xmm13\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm8\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm8\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm9\r
+ movdqa xmm7,xmm8\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm8\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm15,xmm9\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm15,xmm4\r
+ paddd xmm11,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm15,xmm5\r
+ paddd xmm15,xmm7\r
+ movd xmm5,DWORD[36+r8]\r
+ movd xmm0,DWORD[36+r9]\r
+ movd xmm1,DWORD[36+r10]\r
+ movd xmm2,DWORD[36+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm11\r
+\r
+ movdqa xmm2,xmm11\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm11\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(144-128)+rax],xmm5\r
+ paddd xmm5,xmm14\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-96))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm11\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm11\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm13\r
+ pand xmm4,xmm12\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm15\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm15\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm8\r
+ movdqa xmm7,xmm15\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm15\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm14,xmm8\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm14,xmm3\r
+ paddd xmm10,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm14,xmm5\r
+ paddd xmm14,xmm7\r
+ movd xmm5,DWORD[40+r8]\r
+ movd xmm0,DWORD[40+r9]\r
+ movd xmm1,DWORD[40+r10]\r
+ movd xmm2,DWORD[40+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm10\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm10\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm10\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(160-128)+rax],xmm5\r
+ paddd xmm5,xmm13\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-64))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm10\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm10\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm12\r
+ pand xmm3,xmm11\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm14\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm14\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm15\r
+ movdqa xmm7,xmm14\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm14\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm13,xmm15\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm13,xmm4\r
+ paddd xmm9,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm13,xmm5\r
+ paddd xmm13,xmm7\r
+ movd xmm5,DWORD[44+r8]\r
+ movd xmm0,DWORD[44+r9]\r
+ movd xmm1,DWORD[44+r10]\r
+ movd xmm2,DWORD[44+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm9\r
+\r
+ movdqa xmm2,xmm9\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm9\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(176-128)+rax],xmm5\r
+ paddd xmm5,xmm12\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-32))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm9\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm9\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm11\r
+ pand xmm4,xmm10\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm13\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm13\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm14\r
+ movdqa xmm7,xmm13\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm13\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm12,xmm14\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm12,xmm3\r
+ paddd xmm8,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm12,xmm5\r
+ paddd xmm12,xmm7\r
+ movd xmm5,DWORD[48+r8]\r
+ movd xmm0,DWORD[48+r9]\r
+ movd xmm1,DWORD[48+r10]\r
+ movd xmm2,DWORD[48+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm8\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm8\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm8\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(192-128)+rax],xmm5\r
+ paddd xmm5,xmm11\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm8\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm8\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm10\r
+ pand xmm3,xmm9\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm12\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm12\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm13\r
+ movdqa xmm7,xmm12\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm12\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm11,xmm13\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm11,xmm4\r
+ paddd xmm15,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm11,xmm5\r
+ paddd xmm11,xmm7\r
+ movd xmm5,DWORD[52+r8]\r
+ movd xmm0,DWORD[52+r9]\r
+ movd xmm1,DWORD[52+r10]\r
+ movd xmm2,DWORD[52+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm15\r
+\r
+ movdqa xmm2,xmm15\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm15\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(208-128)+rax],xmm5\r
+ paddd xmm5,xmm10\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[32+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm15\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm15\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm9\r
+ pand xmm4,xmm8\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm11\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm11\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm12\r
+ movdqa xmm7,xmm11\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm11\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm10,xmm12\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm10,xmm3\r
+ paddd xmm14,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm10,xmm5\r
+ paddd xmm10,xmm7\r
+ movd xmm5,DWORD[56+r8]\r
+ movd xmm0,DWORD[56+r9]\r
+ movd xmm1,DWORD[56+r10]\r
+ movd xmm2,DWORD[56+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm14\r
+DB 102,15,56,0,238\r
+ movdqa xmm2,xmm14\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm14\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(224-128)+rax],xmm5\r
+ paddd xmm5,xmm9\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[64+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm14\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm14\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm8\r
+ pand xmm3,xmm15\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm10\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm10\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm11\r
+ movdqa xmm7,xmm10\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm10\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm9,xmm11\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm9,xmm4\r
+ paddd xmm13,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm9,xmm5\r
+ paddd xmm9,xmm7\r
+ movd xmm5,DWORD[60+r8]\r
+ lea r8,[64+r8]\r
+ movd xmm0,DWORD[60+r9]\r
+ lea r9,[64+r9]\r
+ movd xmm1,DWORD[60+r10]\r
+ lea r10,[64+r10]\r
+ movd xmm2,DWORD[60+r11]\r
+ lea r11,[64+r11]\r
+ punpckldq xmm5,xmm1\r
+ punpckldq xmm0,xmm2\r
+ punpckldq xmm5,xmm0\r
+ movdqa xmm7,xmm13\r
+\r
+ movdqa xmm2,xmm13\r
+DB 102,15,56,0,238\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm13\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(240-128)+rax],xmm5\r
+ paddd xmm5,xmm8\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[96+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm13\r
+ prefetcht0 [63+r8]\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm13\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm15\r
+ pand xmm4,xmm14\r
+ pxor xmm7,xmm1\r
+\r
+ prefetcht0 [63+r9]\r
+ movdqa xmm1,xmm9\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm9\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm10\r
+ movdqa xmm7,xmm9\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm9\r
+\r
+ prefetcht0 [63+r10]\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+ prefetcht0 [63+r11]\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm8,xmm10\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm8,xmm3\r
+ paddd xmm12,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm8,xmm5\r
+ paddd xmm8,xmm7\r
+ lea rbp,[256+rbp]\r
+ movdqu xmm5,XMMWORD[((0-128))+rax]\r
+ mov ecx,3\r
+ jmp NEAR $L$oop_16_xx\r
+ALIGN 32\r
+$L$oop_16_xx:\r
+ movdqa xmm6,XMMWORD[((16-128))+rax]\r
+ paddd xmm5,XMMWORD[((144-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((224-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm12\r
+\r
+ movdqa xmm2,xmm12\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm12\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(0-128)+rax],xmm5\r
+ paddd xmm5,xmm15\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-128))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm12\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm12\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm14\r
+ pand xmm3,xmm13\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm8\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm8\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm9\r
+ movdqa xmm7,xmm8\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm8\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm15,xmm9\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm15,xmm4\r
+ paddd xmm11,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm15,xmm5\r
+ paddd xmm15,xmm7\r
+ movdqa xmm5,XMMWORD[((32-128))+rax]\r
+ paddd xmm6,XMMWORD[((160-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((240-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm11\r
+\r
+ movdqa xmm2,xmm11\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm11\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(16-128)+rax],xmm6\r
+ paddd xmm6,xmm14\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[((-96))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm11\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm11\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm13\r
+ pand xmm4,xmm12\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm15\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm15\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm8\r
+ movdqa xmm7,xmm15\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm15\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm14,xmm8\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm14,xmm3\r
+ paddd xmm10,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm14,xmm6\r
+ paddd xmm14,xmm7\r
+ movdqa xmm6,XMMWORD[((48-128))+rax]\r
+ paddd xmm5,XMMWORD[((176-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((0-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm10\r
+\r
+ movdqa xmm2,xmm10\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm10\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(32-128)+rax],xmm5\r
+ paddd xmm5,xmm13\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-64))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm10\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm10\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm12\r
+ pand xmm3,xmm11\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm14\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm14\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm15\r
+ movdqa xmm7,xmm14\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm14\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm13,xmm15\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm13,xmm4\r
+ paddd xmm9,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm13,xmm5\r
+ paddd xmm13,xmm7\r
+ movdqa xmm5,XMMWORD[((64-128))+rax]\r
+ paddd xmm6,XMMWORD[((192-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((16-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm9\r
+\r
+ movdqa xmm2,xmm9\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm9\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(48-128)+rax],xmm6\r
+ paddd xmm6,xmm12\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[((-32))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm9\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm9\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm11\r
+ pand xmm4,xmm10\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm13\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm13\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm14\r
+ movdqa xmm7,xmm13\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm13\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm12,xmm14\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm12,xmm3\r
+ paddd xmm8,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm12,xmm6\r
+ paddd xmm12,xmm7\r
+ movdqa xmm6,XMMWORD[((80-128))+rax]\r
+ paddd xmm5,XMMWORD[((208-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((32-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm8\r
+\r
+ movdqa xmm2,xmm8\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm8\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(64-128)+rax],xmm5\r
+ paddd xmm5,xmm11\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm8\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm8\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm10\r
+ pand xmm3,xmm9\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm12\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm12\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm13\r
+ movdqa xmm7,xmm12\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm12\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm11,xmm13\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm11,xmm4\r
+ paddd xmm15,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm11,xmm5\r
+ paddd xmm11,xmm7\r
+ movdqa xmm5,XMMWORD[((96-128))+rax]\r
+ paddd xmm6,XMMWORD[((224-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((48-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm15\r
+\r
+ movdqa xmm2,xmm15\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm15\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(80-128)+rax],xmm6\r
+ paddd xmm6,xmm10\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[32+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm15\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm15\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm9\r
+ pand xmm4,xmm8\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm11\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm11\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm12\r
+ movdqa xmm7,xmm11\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm11\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm10,xmm12\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm10,xmm3\r
+ paddd xmm14,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm10,xmm6\r
+ paddd xmm10,xmm7\r
+ movdqa xmm6,XMMWORD[((112-128))+rax]\r
+ paddd xmm5,XMMWORD[((240-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((64-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm14\r
+\r
+ movdqa xmm2,xmm14\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm14\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(96-128)+rax],xmm5\r
+ paddd xmm5,xmm9\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[64+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm14\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm14\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm8\r
+ pand xmm3,xmm15\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm10\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm10\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm11\r
+ movdqa xmm7,xmm10\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm10\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm9,xmm11\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm9,xmm4\r
+ paddd xmm13,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm9,xmm5\r
+ paddd xmm9,xmm7\r
+ movdqa xmm5,XMMWORD[((128-128))+rax]\r
+ paddd xmm6,XMMWORD[((0-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((80-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm13\r
+\r
+ movdqa xmm2,xmm13\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm13\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(112-128)+rax],xmm6\r
+ paddd xmm6,xmm8\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[96+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm13\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm13\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm15\r
+ pand xmm4,xmm14\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm9\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm9\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm10\r
+ movdqa xmm7,xmm9\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm9\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm8,xmm10\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm8,xmm3\r
+ paddd xmm12,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm8,xmm6\r
+ paddd xmm8,xmm7\r
+ lea rbp,[256+rbp]\r
+ movdqa xmm6,XMMWORD[((144-128))+rax]\r
+ paddd xmm5,XMMWORD[((16-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((96-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm12\r
+\r
+ movdqa xmm2,xmm12\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm12\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(128-128)+rax],xmm5\r
+ paddd xmm5,xmm15\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-128))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm12\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm12\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm14\r
+ pand xmm3,xmm13\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm8\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm8\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm9\r
+ movdqa xmm7,xmm8\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm8\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm15,xmm9\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm15,xmm4\r
+ paddd xmm11,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm15,xmm5\r
+ paddd xmm15,xmm7\r
+ movdqa xmm5,XMMWORD[((160-128))+rax]\r
+ paddd xmm6,XMMWORD[((32-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((112-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm11\r
+\r
+ movdqa xmm2,xmm11\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm11\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(144-128)+rax],xmm6\r
+ paddd xmm6,xmm14\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[((-96))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm11\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm11\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm13\r
+ pand xmm4,xmm12\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm15\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm15\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm8\r
+ movdqa xmm7,xmm15\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm15\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm14,xmm8\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm14,xmm3\r
+ paddd xmm10,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm14,xmm6\r
+ paddd xmm14,xmm7\r
+ movdqa xmm6,XMMWORD[((176-128))+rax]\r
+ paddd xmm5,XMMWORD[((48-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((128-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm10\r
+\r
+ movdqa xmm2,xmm10\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm10\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(160-128)+rax],xmm5\r
+ paddd xmm5,xmm13\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[((-64))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm10\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm10\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm12\r
+ pand xmm3,xmm11\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm14\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm14\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm15\r
+ movdqa xmm7,xmm14\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm14\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm13,xmm15\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm13,xmm4\r
+ paddd xmm9,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm13,xmm5\r
+ paddd xmm13,xmm7\r
+ movdqa xmm5,XMMWORD[((192-128))+rax]\r
+ paddd xmm6,XMMWORD[((64-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((144-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm9\r
+\r
+ movdqa xmm2,xmm9\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm9\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(176-128)+rax],xmm6\r
+ paddd xmm6,xmm12\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[((-32))+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm9\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm9\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm11\r
+ pand xmm4,xmm10\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm13\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm13\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm14\r
+ movdqa xmm7,xmm13\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm13\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm12,xmm14\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm12,xmm3\r
+ paddd xmm8,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm12,xmm6\r
+ paddd xmm12,xmm7\r
+ movdqa xmm6,XMMWORD[((208-128))+rax]\r
+ paddd xmm5,XMMWORD[((80-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((160-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm8\r
+\r
+ movdqa xmm2,xmm8\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm8\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(192-128)+rax],xmm5\r
+ paddd xmm5,xmm11\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm8\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm8\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm10\r
+ pand xmm3,xmm9\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm12\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm12\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm13\r
+ movdqa xmm7,xmm12\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm12\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm11,xmm13\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm11,xmm4\r
+ paddd xmm15,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm11,xmm5\r
+ paddd xmm11,xmm7\r
+ movdqa xmm5,XMMWORD[((224-128))+rax]\r
+ paddd xmm6,XMMWORD[((96-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((176-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm15\r
+\r
+ movdqa xmm2,xmm15\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm15\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(208-128)+rax],xmm6\r
+ paddd xmm6,xmm10\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[32+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm15\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm15\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm9\r
+ pand xmm4,xmm8\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm11\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm11\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm12\r
+ movdqa xmm7,xmm11\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm11\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm10,xmm12\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm10,xmm3\r
+ paddd xmm14,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm10,xmm6\r
+ paddd xmm10,xmm7\r
+ movdqa xmm6,XMMWORD[((240-128))+rax]\r
+ paddd xmm5,XMMWORD[((112-128))+rax]\r
+\r
+ movdqa xmm7,xmm6\r
+ movdqa xmm1,xmm6\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm6\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((192-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm3,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm3\r
+\r
+ psrld xmm3,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ psrld xmm3,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm3\r
+ pxor xmm0,xmm1\r
+ paddd xmm5,xmm0\r
+ movdqa xmm7,xmm14\r
+\r
+ movdqa xmm2,xmm14\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm14\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(224-128)+rax],xmm5\r
+ paddd xmm5,xmm9\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm5,XMMWORD[64+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm14\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm3,xmm14\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm8\r
+ pand xmm3,xmm15\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm10\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm10\r
+ psrld xmm1,2\r
+ paddd xmm5,xmm7\r
+ pxor xmm0,xmm3\r
+ movdqa xmm3,xmm11\r
+ movdqa xmm7,xmm10\r
+ pslld xmm2,10\r
+ pxor xmm3,xmm10\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm5,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm4,xmm3\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm9,xmm11\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm9,xmm4\r
+ paddd xmm13,xmm5\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm9,xmm5\r
+ paddd xmm9,xmm7\r
+ movdqa xmm5,XMMWORD[((0-128))+rax]\r
+ paddd xmm6,XMMWORD[((128-128))+rax]\r
+\r
+ movdqa xmm7,xmm5\r
+ movdqa xmm1,xmm5\r
+ psrld xmm7,3\r
+ movdqa xmm2,xmm5\r
+\r
+ psrld xmm1,7\r
+ movdqa xmm0,XMMWORD[((208-128))+rax]\r
+ pslld xmm2,14\r
+ pxor xmm7,xmm1\r
+ psrld xmm1,18-7\r
+ movdqa xmm4,xmm0\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,25-14\r
+ pxor xmm7,xmm1\r
+ psrld xmm0,10\r
+ movdqa xmm1,xmm4\r
+\r
+ psrld xmm4,17\r
+ pxor xmm7,xmm2\r
+ pslld xmm1,13\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ psrld xmm4,19-17\r
+ pxor xmm0,xmm1\r
+ pslld xmm1,15-13\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm1\r
+ paddd xmm6,xmm0\r
+ movdqa xmm7,xmm13\r
+\r
+ movdqa xmm2,xmm13\r
+\r
+ psrld xmm7,6\r
+ movdqa xmm1,xmm13\r
+ pslld xmm2,7\r
+ movdqa XMMWORD[(240-128)+rax],xmm6\r
+ paddd xmm6,xmm8\r
+\r
+ psrld xmm1,11\r
+ pxor xmm7,xmm2\r
+ pslld xmm2,21-7\r
+ paddd xmm6,XMMWORD[96+rbp]\r
+ pxor xmm7,xmm1\r
+\r
+ psrld xmm1,25-11\r
+ movdqa xmm0,xmm13\r
+\r
+ pxor xmm7,xmm2\r
+ movdqa xmm4,xmm13\r
+ pslld xmm2,26-21\r
+ pandn xmm0,xmm15\r
+ pand xmm4,xmm14\r
+ pxor xmm7,xmm1\r
+\r
+\r
+ movdqa xmm1,xmm9\r
+ pxor xmm7,xmm2\r
+ movdqa xmm2,xmm9\r
+ psrld xmm1,2\r
+ paddd xmm6,xmm7\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,xmm10\r
+ movdqa xmm7,xmm9\r
+ pslld xmm2,10\r
+ pxor xmm4,xmm9\r
+\r
+\r
+ psrld xmm7,13\r
+ pxor xmm1,xmm2\r
+ paddd xmm6,xmm0\r
+ pslld xmm2,19-10\r
+ pand xmm3,xmm4\r
+ pxor xmm1,xmm7\r
+\r
+\r
+ psrld xmm7,22-13\r
+ pxor xmm1,xmm2\r
+ movdqa xmm8,xmm10\r
+ pslld xmm2,30-19\r
+ pxor xmm7,xmm1\r
+ pxor xmm8,xmm3\r
+ paddd xmm12,xmm6\r
+ pxor xmm7,xmm2\r
+\r
+ paddd xmm8,xmm6\r
+ paddd xmm8,xmm7\r
+ lea rbp,[256+rbp]\r
+ dec ecx\r
+ jnz NEAR $L$oop_16_xx\r
+\r
+ mov ecx,1\r
+ lea rbp,[((K256+128))]\r
+\r
+ movdqa xmm7,XMMWORD[rbx]\r
+ cmp ecx,DWORD[rbx]\r
+ pxor xmm0,xmm0\r
+ cmovge r8,rbp\r
+ cmp ecx,DWORD[4+rbx]\r
+ movdqa xmm6,xmm7\r
+ cmovge r9,rbp\r
+ cmp ecx,DWORD[8+rbx]\r
+ pcmpgtd xmm6,xmm0\r
+ cmovge r10,rbp\r
+ cmp ecx,DWORD[12+rbx]\r
+ paddd xmm7,xmm6\r
+ cmovge r11,rbp\r
+\r
+ movdqu xmm0,XMMWORD[((0-128))+rdi]\r
+ pand xmm8,xmm6\r
+ movdqu xmm1,XMMWORD[((32-128))+rdi]\r
+ pand xmm9,xmm6\r
+ movdqu xmm2,XMMWORD[((64-128))+rdi]\r
+ pand xmm10,xmm6\r
+ movdqu xmm5,XMMWORD[((96-128))+rdi]\r
+ pand xmm11,xmm6\r
+ paddd xmm8,xmm0\r
+ movdqu xmm0,XMMWORD[((128-128))+rdi]\r
+ pand xmm12,xmm6\r
+ paddd xmm9,xmm1\r
+ movdqu xmm1,XMMWORD[((160-128))+rdi]\r
+ pand xmm13,xmm6\r
+ paddd xmm10,xmm2\r
+ movdqu xmm2,XMMWORD[((192-128))+rdi]\r
+ pand xmm14,xmm6\r
+ paddd xmm11,xmm5\r
+ movdqu xmm5,XMMWORD[((224-128))+rdi]\r
+ pand xmm15,xmm6\r
+ paddd xmm12,xmm0\r
+ paddd xmm13,xmm1\r
+ movdqu XMMWORD[(0-128)+rdi],xmm8\r
+ paddd xmm14,xmm2\r
+ movdqu XMMWORD[(32-128)+rdi],xmm9\r
+ paddd xmm15,xmm5\r
+ movdqu XMMWORD[(64-128)+rdi],xmm10\r
+ movdqu XMMWORD[(96-128)+rdi],xmm11\r
+ movdqu XMMWORD[(128-128)+rdi],xmm12\r
+ movdqu XMMWORD[(160-128)+rdi],xmm13\r
+ movdqu XMMWORD[(192-128)+rdi],xmm14\r
+ movdqu XMMWORD[(224-128)+rdi],xmm15\r
+\r
+ movdqa XMMWORD[rbx],xmm7\r
+ movdqa xmm6,XMMWORD[$L$pbswap]\r
+ dec edx\r
+ jnz NEAR $L$oop\r
+\r
+ mov edx,DWORD[280+rsp]\r
+ lea rdi,[16+rdi]\r
+ lea rsi,[64+rsi]\r
+ dec edx\r
+ jnz NEAR $L$oop_grande\r
+\r
+$L$done:\r
+ mov rax,QWORD[272+rsp]\r
+\r
+ movaps xmm6,XMMWORD[((-184))+rax]\r
+ movaps xmm7,XMMWORD[((-168))+rax]\r
+ movaps xmm8,XMMWORD[((-152))+rax]\r
+ movaps xmm9,XMMWORD[((-136))+rax]\r
+ movaps xmm10,XMMWORD[((-120))+rax]\r
+ movaps xmm11,XMMWORD[((-104))+rax]\r
+ movaps xmm12,XMMWORD[((-88))+rax]\r
+ movaps xmm13,XMMWORD[((-72))+rax]\r
+ movaps xmm14,XMMWORD[((-56))+rax]\r
+ movaps xmm15,XMMWORD[((-40))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha256_multi_block:\r
+\r
+ALIGN 32\r
+sha256_multi_block_shaext:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha256_multi_block_shaext:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+_shaext_shortcut:\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ lea rsp,[((-168))+rsp]\r
+ movaps XMMWORD[rsp],xmm6\r
+ movaps XMMWORD[16+rsp],xmm7\r
+ movaps XMMWORD[32+rsp],xmm8\r
+ movaps XMMWORD[48+rsp],xmm9\r
+ movaps XMMWORD[(-120)+rax],xmm10\r
+ movaps XMMWORD[(-104)+rax],xmm11\r
+ movaps XMMWORD[(-88)+rax],xmm12\r
+ movaps XMMWORD[(-72)+rax],xmm13\r
+ movaps XMMWORD[(-56)+rax],xmm14\r
+ movaps XMMWORD[(-40)+rax],xmm15\r
+ sub rsp,288\r
+ shl edx,1\r
+ and rsp,-256\r
+ lea rdi,[128+rdi]\r
+ mov QWORD[272+rsp],rax\r
+$L$body_shaext:\r
+ lea rbx,[256+rsp]\r
+ lea rbp,[((K256_shaext+128))]\r
+\r
+$L$oop_grande_shaext:\r
+ mov DWORD[280+rsp],edx\r
+ xor edx,edx\r
+ mov r8,QWORD[rsi]\r
+ mov ecx,DWORD[8+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[rbx],ecx\r
+ cmovle r8,rsp\r
+ mov r9,QWORD[16+rsi]\r
+ mov ecx,DWORD[24+rsi]\r
+ cmp ecx,edx\r
+ cmovg edx,ecx\r
+ test ecx,ecx\r
+ mov DWORD[4+rbx],ecx\r
+ cmovle r9,rsp\r
+ test edx,edx\r
+ jz NEAR $L$done_shaext\r
+\r
+ movq xmm12,QWORD[((0-128))+rdi]\r
+ movq xmm4,QWORD[((32-128))+rdi]\r
+ movq xmm13,QWORD[((64-128))+rdi]\r
+ movq xmm5,QWORD[((96-128))+rdi]\r
+ movq xmm8,QWORD[((128-128))+rdi]\r
+ movq xmm9,QWORD[((160-128))+rdi]\r
+ movq xmm10,QWORD[((192-128))+rdi]\r
+ movq xmm11,QWORD[((224-128))+rdi]\r
+\r
+ punpckldq xmm12,xmm4\r
+ punpckldq xmm13,xmm5\r
+ punpckldq xmm8,xmm9\r
+ punpckldq xmm10,xmm11\r
+ movdqa xmm3,XMMWORD[((K256_shaext-16))]\r
+\r
+ movdqa xmm14,xmm12\r
+ movdqa xmm15,xmm13\r
+ punpcklqdq xmm12,xmm8\r
+ punpcklqdq xmm13,xmm10\r
+ punpckhqdq xmm14,xmm8\r
+ punpckhqdq xmm15,xmm10\r
+\r
+ pshufd xmm12,xmm12,27\r
+ pshufd xmm13,xmm13,27\r
+ pshufd xmm14,xmm14,27\r
+ pshufd xmm15,xmm15,27\r
+ jmp NEAR $L$oop_shaext\r
+\r
+ALIGN 32\r
+$L$oop_shaext:\r
+ movdqu xmm4,XMMWORD[r8]\r
+ movdqu xmm8,XMMWORD[r9]\r
+ movdqu xmm5,XMMWORD[16+r8]\r
+ movdqu xmm9,XMMWORD[16+r9]\r
+ movdqu xmm6,XMMWORD[32+r8]\r
+DB 102,15,56,0,227\r
+ movdqu xmm10,XMMWORD[32+r9]\r
+DB 102,68,15,56,0,195\r
+ movdqu xmm7,XMMWORD[48+r8]\r
+ lea r8,[64+r8]\r
+ movdqu xmm11,XMMWORD[48+r9]\r
+ lea r9,[64+r9]\r
+\r
+ movdqa xmm0,XMMWORD[((0-128))+rbp]\r
+DB 102,15,56,0,235\r
+ paddd xmm0,xmm4\r
+ pxor xmm4,xmm12\r
+ movdqa xmm1,xmm0\r
+ movdqa xmm2,XMMWORD[((0-128))+rbp]\r
+DB 102,68,15,56,0,203\r
+ paddd xmm2,xmm8\r
+ movdqa XMMWORD[80+rsp],xmm13\r
+DB 69,15,56,203,236\r
+ pxor xmm8,xmm14\r
+ movdqa xmm0,xmm2\r
+ movdqa XMMWORD[112+rsp],xmm15\r
+DB 69,15,56,203,254\r
+ pshufd xmm0,xmm1,0x0e\r
+ pxor xmm4,xmm12\r
+ movdqa XMMWORD[64+rsp],xmm12\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ pxor xmm8,xmm14\r
+ movdqa XMMWORD[96+rsp],xmm14\r
+ movdqa xmm1,XMMWORD[((16-128))+rbp]\r
+ paddd xmm1,xmm5\r
+DB 102,15,56,0,243\r
+DB 69,15,56,203,247\r
+\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((16-128))+rbp]\r
+ paddd xmm2,xmm9\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ prefetcht0 [127+r8]\r
+DB 102,15,56,0,251\r
+DB 102,68,15,56,0,211\r
+ prefetcht0 [127+r9]\r
+DB 69,15,56,203,254\r
+ pshufd xmm0,xmm1,0x0e\r
+DB 102,68,15,56,0,219\r
+DB 15,56,204,229\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((32-128))+rbp]\r
+ paddd xmm1,xmm6\r
+DB 69,15,56,203,247\r
+\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((32-128))+rbp]\r
+ paddd xmm2,xmm10\r
+DB 69,15,56,203,236\r
+DB 69,15,56,204,193\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm7\r
+DB 69,15,56,203,254\r
+ pshufd xmm0,xmm1,0x0e\r
+DB 102,15,58,15,222,4\r
+ paddd xmm4,xmm3\r
+ movdqa xmm3,xmm11\r
+DB 102,65,15,58,15,218,4\r
+DB 15,56,204,238\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((48-128))+rbp]\r
+ paddd xmm1,xmm7\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,202\r
+\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((48-128))+rbp]\r
+ paddd xmm8,xmm3\r
+ paddd xmm2,xmm11\r
+DB 15,56,205,231\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm4\r
+DB 102,15,58,15,223,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,195\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm5,xmm3\r
+ movdqa xmm3,xmm8\r
+DB 102,65,15,58,15,219,4\r
+DB 15,56,204,247\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((64-128))+rbp]\r
+ paddd xmm1,xmm4\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,211\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((64-128))+rbp]\r
+ paddd xmm9,xmm3\r
+ paddd xmm2,xmm8\r
+DB 15,56,205,236\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm5\r
+DB 102,15,58,15,220,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,200\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm6,xmm3\r
+ movdqa xmm3,xmm9\r
+DB 102,65,15,58,15,216,4\r
+DB 15,56,204,252\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((80-128))+rbp]\r
+ paddd xmm1,xmm5\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,216\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((80-128))+rbp]\r
+ paddd xmm10,xmm3\r
+ paddd xmm2,xmm9\r
+DB 15,56,205,245\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm6\r
+DB 102,15,58,15,221,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,209\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm7,xmm3\r
+ movdqa xmm3,xmm10\r
+DB 102,65,15,58,15,217,4\r
+DB 15,56,204,229\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((96-128))+rbp]\r
+ paddd xmm1,xmm6\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,193\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((96-128))+rbp]\r
+ paddd xmm11,xmm3\r
+ paddd xmm2,xmm10\r
+DB 15,56,205,254\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm7\r
+DB 102,15,58,15,222,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,218\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm4,xmm3\r
+ movdqa xmm3,xmm11\r
+DB 102,65,15,58,15,218,4\r
+DB 15,56,204,238\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((112-128))+rbp]\r
+ paddd xmm1,xmm7\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,202\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((112-128))+rbp]\r
+ paddd xmm8,xmm3\r
+ paddd xmm2,xmm11\r
+DB 15,56,205,231\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm4\r
+DB 102,15,58,15,223,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,195\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm5,xmm3\r
+ movdqa xmm3,xmm8\r
+DB 102,65,15,58,15,219,4\r
+DB 15,56,204,247\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((128-128))+rbp]\r
+ paddd xmm1,xmm4\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,211\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((128-128))+rbp]\r
+ paddd xmm9,xmm3\r
+ paddd xmm2,xmm8\r
+DB 15,56,205,236\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm5\r
+DB 102,15,58,15,220,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,200\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm6,xmm3\r
+ movdqa xmm3,xmm9\r
+DB 102,65,15,58,15,216,4\r
+DB 15,56,204,252\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((144-128))+rbp]\r
+ paddd xmm1,xmm5\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,216\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((144-128))+rbp]\r
+ paddd xmm10,xmm3\r
+ paddd xmm2,xmm9\r
+DB 15,56,205,245\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm6\r
+DB 102,15,58,15,221,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,209\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm7,xmm3\r
+ movdqa xmm3,xmm10\r
+DB 102,65,15,58,15,217,4\r
+DB 15,56,204,229\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((160-128))+rbp]\r
+ paddd xmm1,xmm6\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,193\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((160-128))+rbp]\r
+ paddd xmm11,xmm3\r
+ paddd xmm2,xmm10\r
+DB 15,56,205,254\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm7\r
+DB 102,15,58,15,222,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,218\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm4,xmm3\r
+ movdqa xmm3,xmm11\r
+DB 102,65,15,58,15,218,4\r
+DB 15,56,204,238\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((176-128))+rbp]\r
+ paddd xmm1,xmm7\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,202\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((176-128))+rbp]\r
+ paddd xmm8,xmm3\r
+ paddd xmm2,xmm11\r
+DB 15,56,205,231\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm4\r
+DB 102,15,58,15,223,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,195\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm5,xmm3\r
+ movdqa xmm3,xmm8\r
+DB 102,65,15,58,15,219,4\r
+DB 15,56,204,247\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((192-128))+rbp]\r
+ paddd xmm1,xmm4\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,211\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((192-128))+rbp]\r
+ paddd xmm9,xmm3\r
+ paddd xmm2,xmm8\r
+DB 15,56,205,236\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm5\r
+DB 102,15,58,15,220,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,200\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm6,xmm3\r
+ movdqa xmm3,xmm9\r
+DB 102,65,15,58,15,216,4\r
+DB 15,56,204,252\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((208-128))+rbp]\r
+ paddd xmm1,xmm5\r
+DB 69,15,56,203,247\r
+DB 69,15,56,204,216\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((208-128))+rbp]\r
+ paddd xmm10,xmm3\r
+ paddd xmm2,xmm9\r
+DB 15,56,205,245\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ movdqa xmm3,xmm6\r
+DB 102,15,58,15,221,4\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,209\r
+ pshufd xmm0,xmm1,0x0e\r
+ paddd xmm7,xmm3\r
+ movdqa xmm3,xmm10\r
+DB 102,65,15,58,15,217,4\r
+ nop\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm1,XMMWORD[((224-128))+rbp]\r
+ paddd xmm1,xmm6\r
+DB 69,15,56,203,247\r
+\r
+ movdqa xmm0,xmm1\r
+ movdqa xmm2,XMMWORD[((224-128))+rbp]\r
+ paddd xmm11,xmm3\r
+ paddd xmm2,xmm10\r
+DB 15,56,205,254\r
+ nop\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ mov ecx,1\r
+ pxor xmm6,xmm6\r
+DB 69,15,56,203,254\r
+DB 69,15,56,205,218\r
+ pshufd xmm0,xmm1,0x0e\r
+ movdqa xmm1,XMMWORD[((240-128))+rbp]\r
+ paddd xmm1,xmm7\r
+ movq xmm7,QWORD[rbx]\r
+ nop\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ movdqa xmm2,XMMWORD[((240-128))+rbp]\r
+ paddd xmm2,xmm11\r
+DB 69,15,56,203,247\r
+\r
+ movdqa xmm0,xmm1\r
+ cmp ecx,DWORD[rbx]\r
+ cmovge r8,rsp\r
+ cmp ecx,DWORD[4+rbx]\r
+ cmovge r9,rsp\r
+ pshufd xmm9,xmm7,0x00\r
+DB 69,15,56,203,236\r
+ movdqa xmm0,xmm2\r
+ pshufd xmm10,xmm7,0x55\r
+ movdqa xmm11,xmm7\r
+DB 69,15,56,203,254\r
+ pshufd xmm0,xmm1,0x0e\r
+ pcmpgtd xmm9,xmm6\r
+ pcmpgtd xmm10,xmm6\r
+DB 69,15,56,203,229\r
+ pshufd xmm0,xmm2,0x0e\r
+ pcmpgtd xmm11,xmm6\r
+ movdqa xmm3,XMMWORD[((K256_shaext-16))]\r
+DB 69,15,56,203,247\r
+\r
+ pand xmm13,xmm9\r
+ pand xmm15,xmm10\r
+ pand xmm12,xmm9\r
+ pand xmm14,xmm10\r
+ paddd xmm11,xmm7\r
+\r
+ paddd xmm13,XMMWORD[80+rsp]\r
+ paddd xmm15,XMMWORD[112+rsp]\r
+ paddd xmm12,XMMWORD[64+rsp]\r
+ paddd xmm14,XMMWORD[96+rsp]\r
+\r
+ movq QWORD[rbx],xmm11\r
+ dec edx\r
+ jnz NEAR $L$oop_shaext\r
+\r
+ mov edx,DWORD[280+rsp]\r
+\r
+ pshufd xmm12,xmm12,27\r
+ pshufd xmm13,xmm13,27\r
+ pshufd xmm14,xmm14,27\r
+ pshufd xmm15,xmm15,27\r
+\r
+ movdqa xmm5,xmm12\r
+ movdqa xmm6,xmm13\r
+ punpckldq xmm12,xmm14\r
+ punpckhdq xmm5,xmm14\r
+ punpckldq xmm13,xmm15\r
+ punpckhdq xmm6,xmm15\r
+\r
+ movq QWORD[(0-128)+rdi],xmm12\r
+ psrldq xmm12,8\r
+ movq QWORD[(128-128)+rdi],xmm5\r
+ psrldq xmm5,8\r
+ movq QWORD[(32-128)+rdi],xmm12\r
+ movq QWORD[(160-128)+rdi],xmm5\r
+\r
+ movq QWORD[(64-128)+rdi],xmm13\r
+ psrldq xmm13,8\r
+ movq QWORD[(192-128)+rdi],xmm6\r
+ psrldq xmm6,8\r
+ movq QWORD[(96-128)+rdi],xmm13\r
+ movq QWORD[(224-128)+rdi],xmm6\r
+\r
+ lea rdi,[8+rdi]\r
+ lea rsi,[32+rsi]\r
+ dec edx\r
+ jnz NEAR $L$oop_grande_shaext\r
+\r
+$L$done_shaext:\r
+\r
+ movaps xmm6,XMMWORD[((-184))+rax]\r
+ movaps xmm7,XMMWORD[((-168))+rax]\r
+ movaps xmm8,XMMWORD[((-152))+rax]\r
+ movaps xmm9,XMMWORD[((-136))+rax]\r
+ movaps xmm10,XMMWORD[((-120))+rax]\r
+ movaps xmm11,XMMWORD[((-104))+rax]\r
+ movaps xmm12,XMMWORD[((-88))+rax]\r
+ movaps xmm13,XMMWORD[((-72))+rax]\r
+ movaps xmm14,XMMWORD[((-56))+rax]\r
+ movaps xmm15,XMMWORD[((-40))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+\r
+ lea rsp,[rax]\r
+\r
+$L$epilogue_shaext:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha256_multi_block_shaext:\r
+ALIGN 256\r
+K256:\r
+ DD 1116352408,1116352408,1116352408,1116352408\r
+ DD 1116352408,1116352408,1116352408,1116352408\r
+ DD 1899447441,1899447441,1899447441,1899447441\r
+ DD 1899447441,1899447441,1899447441,1899447441\r
+ DD 3049323471,3049323471,3049323471,3049323471\r
+ DD 3049323471,3049323471,3049323471,3049323471\r
+ DD 3921009573,3921009573,3921009573,3921009573\r
+ DD 3921009573,3921009573,3921009573,3921009573\r
+ DD 961987163,961987163,961987163,961987163\r
+ DD 961987163,961987163,961987163,961987163\r
+ DD 1508970993,1508970993,1508970993,1508970993\r
+ DD 1508970993,1508970993,1508970993,1508970993\r
+ DD 2453635748,2453635748,2453635748,2453635748\r
+ DD 2453635748,2453635748,2453635748,2453635748\r
+ DD 2870763221,2870763221,2870763221,2870763221\r
+ DD 2870763221,2870763221,2870763221,2870763221\r
+ DD 3624381080,3624381080,3624381080,3624381080\r
+ DD 3624381080,3624381080,3624381080,3624381080\r
+ DD 310598401,310598401,310598401,310598401\r
+ DD 310598401,310598401,310598401,310598401\r
+ DD 607225278,607225278,607225278,607225278\r
+ DD 607225278,607225278,607225278,607225278\r
+ DD 1426881987,1426881987,1426881987,1426881987\r
+ DD 1426881987,1426881987,1426881987,1426881987\r
+ DD 1925078388,1925078388,1925078388,1925078388\r
+ DD 1925078388,1925078388,1925078388,1925078388\r
+ DD 2162078206,2162078206,2162078206,2162078206\r
+ DD 2162078206,2162078206,2162078206,2162078206\r
+ DD 2614888103,2614888103,2614888103,2614888103\r
+ DD 2614888103,2614888103,2614888103,2614888103\r
+ DD 3248222580,3248222580,3248222580,3248222580\r
+ DD 3248222580,3248222580,3248222580,3248222580\r
+ DD 3835390401,3835390401,3835390401,3835390401\r
+ DD 3835390401,3835390401,3835390401,3835390401\r
+ DD 4022224774,4022224774,4022224774,4022224774\r
+ DD 4022224774,4022224774,4022224774,4022224774\r
+ DD 264347078,264347078,264347078,264347078\r
+ DD 264347078,264347078,264347078,264347078\r
+ DD 604807628,604807628,604807628,604807628\r
+ DD 604807628,604807628,604807628,604807628\r
+ DD 770255983,770255983,770255983,770255983\r
+ DD 770255983,770255983,770255983,770255983\r
+ DD 1249150122,1249150122,1249150122,1249150122\r
+ DD 1249150122,1249150122,1249150122,1249150122\r
+ DD 1555081692,1555081692,1555081692,1555081692\r
+ DD 1555081692,1555081692,1555081692,1555081692\r
+ DD 1996064986,1996064986,1996064986,1996064986\r
+ DD 1996064986,1996064986,1996064986,1996064986\r
+ DD 2554220882,2554220882,2554220882,2554220882\r
+ DD 2554220882,2554220882,2554220882,2554220882\r
+ DD 2821834349,2821834349,2821834349,2821834349\r
+ DD 2821834349,2821834349,2821834349,2821834349\r
+ DD 2952996808,2952996808,2952996808,2952996808\r
+ DD 2952996808,2952996808,2952996808,2952996808\r
+ DD 3210313671,3210313671,3210313671,3210313671\r
+ DD 3210313671,3210313671,3210313671,3210313671\r
+ DD 3336571891,3336571891,3336571891,3336571891\r
+ DD 3336571891,3336571891,3336571891,3336571891\r
+ DD 3584528711,3584528711,3584528711,3584528711\r
+ DD 3584528711,3584528711,3584528711,3584528711\r
+ DD 113926993,113926993,113926993,113926993\r
+ DD 113926993,113926993,113926993,113926993\r
+ DD 338241895,338241895,338241895,338241895\r
+ DD 338241895,338241895,338241895,338241895\r
+ DD 666307205,666307205,666307205,666307205\r
+ DD 666307205,666307205,666307205,666307205\r
+ DD 773529912,773529912,773529912,773529912\r
+ DD 773529912,773529912,773529912,773529912\r
+ DD 1294757372,1294757372,1294757372,1294757372\r
+ DD 1294757372,1294757372,1294757372,1294757372\r
+ DD 1396182291,1396182291,1396182291,1396182291\r
+ DD 1396182291,1396182291,1396182291,1396182291\r
+ DD 1695183700,1695183700,1695183700,1695183700\r
+ DD 1695183700,1695183700,1695183700,1695183700\r
+ DD 1986661051,1986661051,1986661051,1986661051\r
+ DD 1986661051,1986661051,1986661051,1986661051\r
+ DD 2177026350,2177026350,2177026350,2177026350\r
+ DD 2177026350,2177026350,2177026350,2177026350\r
+ DD 2456956037,2456956037,2456956037,2456956037\r
+ DD 2456956037,2456956037,2456956037,2456956037\r
+ DD 2730485921,2730485921,2730485921,2730485921\r
+ DD 2730485921,2730485921,2730485921,2730485921\r
+ DD 2820302411,2820302411,2820302411,2820302411\r
+ DD 2820302411,2820302411,2820302411,2820302411\r
+ DD 3259730800,3259730800,3259730800,3259730800\r
+ DD 3259730800,3259730800,3259730800,3259730800\r
+ DD 3345764771,3345764771,3345764771,3345764771\r
+ DD 3345764771,3345764771,3345764771,3345764771\r
+ DD 3516065817,3516065817,3516065817,3516065817\r
+ DD 3516065817,3516065817,3516065817,3516065817\r
+ DD 3600352804,3600352804,3600352804,3600352804\r
+ DD 3600352804,3600352804,3600352804,3600352804\r
+ DD 4094571909,4094571909,4094571909,4094571909\r
+ DD 4094571909,4094571909,4094571909,4094571909\r
+ DD 275423344,275423344,275423344,275423344\r
+ DD 275423344,275423344,275423344,275423344\r
+ DD 430227734,430227734,430227734,430227734\r
+ DD 430227734,430227734,430227734,430227734\r
+ DD 506948616,506948616,506948616,506948616\r
+ DD 506948616,506948616,506948616,506948616\r
+ DD 659060556,659060556,659060556,659060556\r
+ DD 659060556,659060556,659060556,659060556\r
+ DD 883997877,883997877,883997877,883997877\r
+ DD 883997877,883997877,883997877,883997877\r
+ DD 958139571,958139571,958139571,958139571\r
+ DD 958139571,958139571,958139571,958139571\r
+ DD 1322822218,1322822218,1322822218,1322822218\r
+ DD 1322822218,1322822218,1322822218,1322822218\r
+ DD 1537002063,1537002063,1537002063,1537002063\r
+ DD 1537002063,1537002063,1537002063,1537002063\r
+ DD 1747873779,1747873779,1747873779,1747873779\r
+ DD 1747873779,1747873779,1747873779,1747873779\r
+ DD 1955562222,1955562222,1955562222,1955562222\r
+ DD 1955562222,1955562222,1955562222,1955562222\r
+ DD 2024104815,2024104815,2024104815,2024104815\r
+ DD 2024104815,2024104815,2024104815,2024104815\r
+ DD 2227730452,2227730452,2227730452,2227730452\r
+ DD 2227730452,2227730452,2227730452,2227730452\r
+ DD 2361852424,2361852424,2361852424,2361852424\r
+ DD 2361852424,2361852424,2361852424,2361852424\r
+ DD 2428436474,2428436474,2428436474,2428436474\r
+ DD 2428436474,2428436474,2428436474,2428436474\r
+ DD 2756734187,2756734187,2756734187,2756734187\r
+ DD 2756734187,2756734187,2756734187,2756734187\r
+ DD 3204031479,3204031479,3204031479,3204031479\r
+ DD 3204031479,3204031479,3204031479,3204031479\r
+ DD 3329325298,3329325298,3329325298,3329325298\r
+ DD 3329325298,3329325298,3329325298,3329325298\r
+$L$pbswap:\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+K256_shaext:\r
+ DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+ DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+ DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+ DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+ DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+ DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+ DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+ DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+ DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+ DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+ DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+ DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+ DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+ DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+ DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+ DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+DB 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111\r
+DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114\r
+DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71\r
+DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112\r
+DB 101,110,115,115,108,46,111,114,103,62,0\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[272+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+\r
+ lea rsi,[((-24-160))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,20\r
+ DD 0xa548f3fc\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_sha256_multi_block wrt ..imagebase\r
+ DD $L$SEH_end_sha256_multi_block wrt ..imagebase\r
+ DD $L$SEH_info_sha256_multi_block wrt ..imagebase\r
+ DD $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase\r
+ DD $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase\r
+ DD $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_sha256_multi_block:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase\r
+$L$SEH_info_sha256_multi_block_shaext:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl\r
+;\r
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+global sha256_block_data_order\r
+\r
+ALIGN 16\r
+sha256_block_data_order:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha256_block_data_order:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ lea r11,[OPENSSL_ia32cap_P]\r
+ mov r9d,DWORD[r11]\r
+ mov r10d,DWORD[4+r11]\r
+ mov r11d,DWORD[8+r11]\r
+ test r11d,536870912\r
+ jnz NEAR _shaext_shortcut\r
+ test r10d,512\r
+ jnz NEAR $L$ssse3_shortcut\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ shl rdx,4\r
+ sub rsp,16*4+4*8\r
+ lea rdx,[rdx*4+rsi]\r
+ and rsp,-64\r
+ mov QWORD[((64+0))+rsp],rdi\r
+ mov QWORD[((64+8))+rsp],rsi\r
+ mov QWORD[((64+16))+rsp],rdx\r
+ mov QWORD[88+rsp],rax\r
+\r
+$L$prologue:\r
+\r
+ mov eax,DWORD[rdi]\r
+ mov ebx,DWORD[4+rdi]\r
+ mov ecx,DWORD[8+rdi]\r
+ mov edx,DWORD[12+rdi]\r
+ mov r8d,DWORD[16+rdi]\r
+ mov r9d,DWORD[20+rdi]\r
+ mov r10d,DWORD[24+rdi]\r
+ mov r11d,DWORD[28+rdi]\r
+ jmp NEAR $L$loop\r
+\r
+ALIGN 16\r
+$L$loop:\r
+ mov edi,ebx\r
+ lea rbp,[K256]\r
+ xor edi,ecx\r
+ mov r12d,DWORD[rsi]\r
+ mov r13d,r8d\r
+ mov r14d,eax\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,r9d\r
+\r
+ xor r13d,r8d\r
+ ror r14d,9\r
+ xor r15d,r10d\r
+\r
+ mov DWORD[rsp],r12d\r
+ xor r14d,eax\r
+ and r15d,r8d\r
+\r
+ ror r13d,5\r
+ add r12d,r11d\r
+ xor r15d,r10d\r
+\r
+ ror r14d,11\r
+ xor r13d,r8d\r
+ add r12d,r15d\r
+\r
+ mov r15d,eax\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,eax\r
+\r
+ xor r15d,ebx\r
+ ror r13d,6\r
+ mov r11d,ebx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r11d,edi\r
+ add edx,r12d\r
+ add r11d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r11d,r14d\r
+ mov r12d,DWORD[4+rsi]\r
+ mov r13d,edx\r
+ mov r14d,r11d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,r8d\r
+\r
+ xor r13d,edx\r
+ ror r14d,9\r
+ xor edi,r9d\r
+\r
+ mov DWORD[4+rsp],r12d\r
+ xor r14d,r11d\r
+ and edi,edx\r
+\r
+ ror r13d,5\r
+ add r12d,r10d\r
+ xor edi,r9d\r
+\r
+ ror r14d,11\r
+ xor r13d,edx\r
+ add r12d,edi\r
+\r
+ mov edi,r11d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r11d\r
+\r
+ xor edi,eax\r
+ ror r13d,6\r
+ mov r10d,eax\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r10d,r15d\r
+ add ecx,r12d\r
+ add r10d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r10d,r14d\r
+ mov r12d,DWORD[8+rsi]\r
+ mov r13d,ecx\r
+ mov r14d,r10d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,edx\r
+\r
+ xor r13d,ecx\r
+ ror r14d,9\r
+ xor r15d,r8d\r
+\r
+ mov DWORD[8+rsp],r12d\r
+ xor r14d,r10d\r
+ and r15d,ecx\r
+\r
+ ror r13d,5\r
+ add r12d,r9d\r
+ xor r15d,r8d\r
+\r
+ ror r14d,11\r
+ xor r13d,ecx\r
+ add r12d,r15d\r
+\r
+ mov r15d,r10d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r10d\r
+\r
+ xor r15d,r11d\r
+ ror r13d,6\r
+ mov r9d,r11d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r9d,edi\r
+ add ebx,r12d\r
+ add r9d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r9d,r14d\r
+ mov r12d,DWORD[12+rsi]\r
+ mov r13d,ebx\r
+ mov r14d,r9d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,ecx\r
+\r
+ xor r13d,ebx\r
+ ror r14d,9\r
+ xor edi,edx\r
+\r
+ mov DWORD[12+rsp],r12d\r
+ xor r14d,r9d\r
+ and edi,ebx\r
+\r
+ ror r13d,5\r
+ add r12d,r8d\r
+ xor edi,edx\r
+\r
+ ror r14d,11\r
+ xor r13d,ebx\r
+ add r12d,edi\r
+\r
+ mov edi,r9d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r9d\r
+\r
+ xor edi,r10d\r
+ ror r13d,6\r
+ mov r8d,r10d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r8d,r15d\r
+ add eax,r12d\r
+ add r8d,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ add r8d,r14d\r
+ mov r12d,DWORD[16+rsi]\r
+ mov r13d,eax\r
+ mov r14d,r8d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,ebx\r
+\r
+ xor r13d,eax\r
+ ror r14d,9\r
+ xor r15d,ecx\r
+\r
+ mov DWORD[16+rsp],r12d\r
+ xor r14d,r8d\r
+ and r15d,eax\r
+\r
+ ror r13d,5\r
+ add r12d,edx\r
+ xor r15d,ecx\r
+\r
+ ror r14d,11\r
+ xor r13d,eax\r
+ add r12d,r15d\r
+\r
+ mov r15d,r8d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r8d\r
+\r
+ xor r15d,r9d\r
+ ror r13d,6\r
+ mov edx,r9d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor edx,edi\r
+ add r11d,r12d\r
+ add edx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add edx,r14d\r
+ mov r12d,DWORD[20+rsi]\r
+ mov r13d,r11d\r
+ mov r14d,edx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,eax\r
+\r
+ xor r13d,r11d\r
+ ror r14d,9\r
+ xor edi,ebx\r
+\r
+ mov DWORD[20+rsp],r12d\r
+ xor r14d,edx\r
+ and edi,r11d\r
+\r
+ ror r13d,5\r
+ add r12d,ecx\r
+ xor edi,ebx\r
+\r
+ ror r14d,11\r
+ xor r13d,r11d\r
+ add r12d,edi\r
+\r
+ mov edi,edx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,edx\r
+\r
+ xor edi,r8d\r
+ ror r13d,6\r
+ mov ecx,r8d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ecx,r15d\r
+ add r10d,r12d\r
+ add ecx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add ecx,r14d\r
+ mov r12d,DWORD[24+rsi]\r
+ mov r13d,r10d\r
+ mov r14d,ecx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,r11d\r
+\r
+ xor r13d,r10d\r
+ ror r14d,9\r
+ xor r15d,eax\r
+\r
+ mov DWORD[24+rsp],r12d\r
+ xor r14d,ecx\r
+ and r15d,r10d\r
+\r
+ ror r13d,5\r
+ add r12d,ebx\r
+ xor r15d,eax\r
+\r
+ ror r14d,11\r
+ xor r13d,r10d\r
+ add r12d,r15d\r
+\r
+ mov r15d,ecx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ecx\r
+\r
+ xor r15d,edx\r
+ ror r13d,6\r
+ mov ebx,edx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ebx,edi\r
+ add r9d,r12d\r
+ add ebx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add ebx,r14d\r
+ mov r12d,DWORD[28+rsi]\r
+ mov r13d,r9d\r
+ mov r14d,ebx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,r10d\r
+\r
+ xor r13d,r9d\r
+ ror r14d,9\r
+ xor edi,r11d\r
+\r
+ mov DWORD[28+rsp],r12d\r
+ xor r14d,ebx\r
+ and edi,r9d\r
+\r
+ ror r13d,5\r
+ add r12d,eax\r
+ xor edi,r11d\r
+\r
+ ror r14d,11\r
+ xor r13d,r9d\r
+ add r12d,edi\r
+\r
+ mov edi,ebx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ebx\r
+\r
+ xor edi,ecx\r
+ ror r13d,6\r
+ mov eax,ecx\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor eax,r15d\r
+ add r8d,r12d\r
+ add eax,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ add eax,r14d\r
+ mov r12d,DWORD[32+rsi]\r
+ mov r13d,r8d\r
+ mov r14d,eax\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,r9d\r
+\r
+ xor r13d,r8d\r
+ ror r14d,9\r
+ xor r15d,r10d\r
+\r
+ mov DWORD[32+rsp],r12d\r
+ xor r14d,eax\r
+ and r15d,r8d\r
+\r
+ ror r13d,5\r
+ add r12d,r11d\r
+ xor r15d,r10d\r
+\r
+ ror r14d,11\r
+ xor r13d,r8d\r
+ add r12d,r15d\r
+\r
+ mov r15d,eax\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,eax\r
+\r
+ xor r15d,ebx\r
+ ror r13d,6\r
+ mov r11d,ebx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r11d,edi\r
+ add edx,r12d\r
+ add r11d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r11d,r14d\r
+ mov r12d,DWORD[36+rsi]\r
+ mov r13d,edx\r
+ mov r14d,r11d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,r8d\r
+\r
+ xor r13d,edx\r
+ ror r14d,9\r
+ xor edi,r9d\r
+\r
+ mov DWORD[36+rsp],r12d\r
+ xor r14d,r11d\r
+ and edi,edx\r
+\r
+ ror r13d,5\r
+ add r12d,r10d\r
+ xor edi,r9d\r
+\r
+ ror r14d,11\r
+ xor r13d,edx\r
+ add r12d,edi\r
+\r
+ mov edi,r11d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r11d\r
+\r
+ xor edi,eax\r
+ ror r13d,6\r
+ mov r10d,eax\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r10d,r15d\r
+ add ecx,r12d\r
+ add r10d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r10d,r14d\r
+ mov r12d,DWORD[40+rsi]\r
+ mov r13d,ecx\r
+ mov r14d,r10d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,edx\r
+\r
+ xor r13d,ecx\r
+ ror r14d,9\r
+ xor r15d,r8d\r
+\r
+ mov DWORD[40+rsp],r12d\r
+ xor r14d,r10d\r
+ and r15d,ecx\r
+\r
+ ror r13d,5\r
+ add r12d,r9d\r
+ xor r15d,r8d\r
+\r
+ ror r14d,11\r
+ xor r13d,ecx\r
+ add r12d,r15d\r
+\r
+ mov r15d,r10d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r10d\r
+\r
+ xor r15d,r11d\r
+ ror r13d,6\r
+ mov r9d,r11d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r9d,edi\r
+ add ebx,r12d\r
+ add r9d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add r9d,r14d\r
+ mov r12d,DWORD[44+rsi]\r
+ mov r13d,ebx\r
+ mov r14d,r9d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,ecx\r
+\r
+ xor r13d,ebx\r
+ ror r14d,9\r
+ xor edi,edx\r
+\r
+ mov DWORD[44+rsp],r12d\r
+ xor r14d,r9d\r
+ and edi,ebx\r
+\r
+ ror r13d,5\r
+ add r12d,r8d\r
+ xor edi,edx\r
+\r
+ ror r14d,11\r
+ xor r13d,ebx\r
+ add r12d,edi\r
+\r
+ mov edi,r9d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r9d\r
+\r
+ xor edi,r10d\r
+ ror r13d,6\r
+ mov r8d,r10d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r8d,r15d\r
+ add eax,r12d\r
+ add r8d,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ add r8d,r14d\r
+ mov r12d,DWORD[48+rsi]\r
+ mov r13d,eax\r
+ mov r14d,r8d\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,ebx\r
+\r
+ xor r13d,eax\r
+ ror r14d,9\r
+ xor r15d,ecx\r
+\r
+ mov DWORD[48+rsp],r12d\r
+ xor r14d,r8d\r
+ and r15d,eax\r
+\r
+ ror r13d,5\r
+ add r12d,edx\r
+ xor r15d,ecx\r
+\r
+ ror r14d,11\r
+ xor r13d,eax\r
+ add r12d,r15d\r
+\r
+ mov r15d,r8d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r8d\r
+\r
+ xor r15d,r9d\r
+ ror r13d,6\r
+ mov edx,r9d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor edx,edi\r
+ add r11d,r12d\r
+ add edx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add edx,r14d\r
+ mov r12d,DWORD[52+rsi]\r
+ mov r13d,r11d\r
+ mov r14d,edx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,eax\r
+\r
+ xor r13d,r11d\r
+ ror r14d,9\r
+ xor edi,ebx\r
+\r
+ mov DWORD[52+rsp],r12d\r
+ xor r14d,edx\r
+ and edi,r11d\r
+\r
+ ror r13d,5\r
+ add r12d,ecx\r
+ xor edi,ebx\r
+\r
+ ror r14d,11\r
+ xor r13d,r11d\r
+ add r12d,edi\r
+\r
+ mov edi,edx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,edx\r
+\r
+ xor edi,r8d\r
+ ror r13d,6\r
+ mov ecx,r8d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ecx,r15d\r
+ add r10d,r12d\r
+ add ecx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add ecx,r14d\r
+ mov r12d,DWORD[56+rsi]\r
+ mov r13d,r10d\r
+ mov r14d,ecx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov r15d,r11d\r
+\r
+ xor r13d,r10d\r
+ ror r14d,9\r
+ xor r15d,eax\r
+\r
+ mov DWORD[56+rsp],r12d\r
+ xor r14d,ecx\r
+ and r15d,r10d\r
+\r
+ ror r13d,5\r
+ add r12d,ebx\r
+ xor r15d,eax\r
+\r
+ ror r14d,11\r
+ xor r13d,r10d\r
+ add r12d,r15d\r
+\r
+ mov r15d,ecx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ecx\r
+\r
+ xor r15d,edx\r
+ ror r13d,6\r
+ mov ebx,edx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ebx,edi\r
+ add r9d,r12d\r
+ add ebx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ add ebx,r14d\r
+ mov r12d,DWORD[60+rsi]\r
+ mov r13d,r9d\r
+ mov r14d,ebx\r
+ bswap r12d\r
+ ror r13d,14\r
+ mov edi,r10d\r
+\r
+ xor r13d,r9d\r
+ ror r14d,9\r
+ xor edi,r11d\r
+\r
+ mov DWORD[60+rsp],r12d\r
+ xor r14d,ebx\r
+ and edi,r9d\r
+\r
+ ror r13d,5\r
+ add r12d,eax\r
+ xor edi,r11d\r
+\r
+ ror r14d,11\r
+ xor r13d,r9d\r
+ add r12d,edi\r
+\r
+ mov edi,ebx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ebx\r
+\r
+ xor edi,ecx\r
+ ror r13d,6\r
+ mov eax,ecx\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor eax,r15d\r
+ add r8d,r12d\r
+ add eax,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ jmp NEAR $L$rounds_16_xx\r
+ALIGN 16\r
+$L$rounds_16_xx:\r
+ mov r13d,DWORD[4+rsp]\r
+ mov r15d,DWORD[56+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add eax,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[36+rsp]\r
+\r
+ add r12d,DWORD[rsp]\r
+ mov r13d,r8d\r
+ add r12d,r15d\r
+ mov r14d,eax\r
+ ror r13d,14\r
+ mov r15d,r9d\r
+\r
+ xor r13d,r8d\r
+ ror r14d,9\r
+ xor r15d,r10d\r
+\r
+ mov DWORD[rsp],r12d\r
+ xor r14d,eax\r
+ and r15d,r8d\r
+\r
+ ror r13d,5\r
+ add r12d,r11d\r
+ xor r15d,r10d\r
+\r
+ ror r14d,11\r
+ xor r13d,r8d\r
+ add r12d,r15d\r
+\r
+ mov r15d,eax\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,eax\r
+\r
+ xor r15d,ebx\r
+ ror r13d,6\r
+ mov r11d,ebx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r11d,edi\r
+ add edx,r12d\r
+ add r11d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[8+rsp]\r
+ mov edi,DWORD[60+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r11d,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[40+rsp]\r
+\r
+ add r12d,DWORD[4+rsp]\r
+ mov r13d,edx\r
+ add r12d,edi\r
+ mov r14d,r11d\r
+ ror r13d,14\r
+ mov edi,r8d\r
+\r
+ xor r13d,edx\r
+ ror r14d,9\r
+ xor edi,r9d\r
+\r
+ mov DWORD[4+rsp],r12d\r
+ xor r14d,r11d\r
+ and edi,edx\r
+\r
+ ror r13d,5\r
+ add r12d,r10d\r
+ xor edi,r9d\r
+\r
+ ror r14d,11\r
+ xor r13d,edx\r
+ add r12d,edi\r
+\r
+ mov edi,r11d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r11d\r
+\r
+ xor edi,eax\r
+ ror r13d,6\r
+ mov r10d,eax\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r10d,r15d\r
+ add ecx,r12d\r
+ add r10d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[12+rsp]\r
+ mov r15d,DWORD[rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r10d,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[44+rsp]\r
+\r
+ add r12d,DWORD[8+rsp]\r
+ mov r13d,ecx\r
+ add r12d,r15d\r
+ mov r14d,r10d\r
+ ror r13d,14\r
+ mov r15d,edx\r
+\r
+ xor r13d,ecx\r
+ ror r14d,9\r
+ xor r15d,r8d\r
+\r
+ mov DWORD[8+rsp],r12d\r
+ xor r14d,r10d\r
+ and r15d,ecx\r
+\r
+ ror r13d,5\r
+ add r12d,r9d\r
+ xor r15d,r8d\r
+\r
+ ror r14d,11\r
+ xor r13d,ecx\r
+ add r12d,r15d\r
+\r
+ mov r15d,r10d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r10d\r
+\r
+ xor r15d,r11d\r
+ ror r13d,6\r
+ mov r9d,r11d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r9d,edi\r
+ add ebx,r12d\r
+ add r9d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[16+rsp]\r
+ mov edi,DWORD[4+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r9d,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[48+rsp]\r
+\r
+ add r12d,DWORD[12+rsp]\r
+ mov r13d,ebx\r
+ add r12d,edi\r
+ mov r14d,r9d\r
+ ror r13d,14\r
+ mov edi,ecx\r
+\r
+ xor r13d,ebx\r
+ ror r14d,9\r
+ xor edi,edx\r
+\r
+ mov DWORD[12+rsp],r12d\r
+ xor r14d,r9d\r
+ and edi,ebx\r
+\r
+ ror r13d,5\r
+ add r12d,r8d\r
+ xor edi,edx\r
+\r
+ ror r14d,11\r
+ xor r13d,ebx\r
+ add r12d,edi\r
+\r
+ mov edi,r9d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r9d\r
+\r
+ xor edi,r10d\r
+ ror r13d,6\r
+ mov r8d,r10d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r8d,r15d\r
+ add eax,r12d\r
+ add r8d,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ mov r13d,DWORD[20+rsp]\r
+ mov r15d,DWORD[8+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r8d,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[52+rsp]\r
+\r
+ add r12d,DWORD[16+rsp]\r
+ mov r13d,eax\r
+ add r12d,r15d\r
+ mov r14d,r8d\r
+ ror r13d,14\r
+ mov r15d,ebx\r
+\r
+ xor r13d,eax\r
+ ror r14d,9\r
+ xor r15d,ecx\r
+\r
+ mov DWORD[16+rsp],r12d\r
+ xor r14d,r8d\r
+ and r15d,eax\r
+\r
+ ror r13d,5\r
+ add r12d,edx\r
+ xor r15d,ecx\r
+\r
+ ror r14d,11\r
+ xor r13d,eax\r
+ add r12d,r15d\r
+\r
+ mov r15d,r8d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r8d\r
+\r
+ xor r15d,r9d\r
+ ror r13d,6\r
+ mov edx,r9d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor edx,edi\r
+ add r11d,r12d\r
+ add edx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[24+rsp]\r
+ mov edi,DWORD[12+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add edx,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[56+rsp]\r
+\r
+ add r12d,DWORD[20+rsp]\r
+ mov r13d,r11d\r
+ add r12d,edi\r
+ mov r14d,edx\r
+ ror r13d,14\r
+ mov edi,eax\r
+\r
+ xor r13d,r11d\r
+ ror r14d,9\r
+ xor edi,ebx\r
+\r
+ mov DWORD[20+rsp],r12d\r
+ xor r14d,edx\r
+ and edi,r11d\r
+\r
+ ror r13d,5\r
+ add r12d,ecx\r
+ xor edi,ebx\r
+\r
+ ror r14d,11\r
+ xor r13d,r11d\r
+ add r12d,edi\r
+\r
+ mov edi,edx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,edx\r
+\r
+ xor edi,r8d\r
+ ror r13d,6\r
+ mov ecx,r8d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ecx,r15d\r
+ add r10d,r12d\r
+ add ecx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[28+rsp]\r
+ mov r15d,DWORD[16+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add ecx,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[60+rsp]\r
+\r
+ add r12d,DWORD[24+rsp]\r
+ mov r13d,r10d\r
+ add r12d,r15d\r
+ mov r14d,ecx\r
+ ror r13d,14\r
+ mov r15d,r11d\r
+\r
+ xor r13d,r10d\r
+ ror r14d,9\r
+ xor r15d,eax\r
+\r
+ mov DWORD[24+rsp],r12d\r
+ xor r14d,ecx\r
+ and r15d,r10d\r
+\r
+ ror r13d,5\r
+ add r12d,ebx\r
+ xor r15d,eax\r
+\r
+ ror r14d,11\r
+ xor r13d,r10d\r
+ add r12d,r15d\r
+\r
+ mov r15d,ecx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ecx\r
+\r
+ xor r15d,edx\r
+ ror r13d,6\r
+ mov ebx,edx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ebx,edi\r
+ add r9d,r12d\r
+ add ebx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[32+rsp]\r
+ mov edi,DWORD[20+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add ebx,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[rsp]\r
+\r
+ add r12d,DWORD[28+rsp]\r
+ mov r13d,r9d\r
+ add r12d,edi\r
+ mov r14d,ebx\r
+ ror r13d,14\r
+ mov edi,r10d\r
+\r
+ xor r13d,r9d\r
+ ror r14d,9\r
+ xor edi,r11d\r
+\r
+ mov DWORD[28+rsp],r12d\r
+ xor r14d,ebx\r
+ and edi,r9d\r
+\r
+ ror r13d,5\r
+ add r12d,eax\r
+ xor edi,r11d\r
+\r
+ ror r14d,11\r
+ xor r13d,r9d\r
+ add r12d,edi\r
+\r
+ mov edi,ebx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ebx\r
+\r
+ xor edi,ecx\r
+ ror r13d,6\r
+ mov eax,ecx\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor eax,r15d\r
+ add r8d,r12d\r
+ add eax,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ mov r13d,DWORD[36+rsp]\r
+ mov r15d,DWORD[24+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add eax,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[4+rsp]\r
+\r
+ add r12d,DWORD[32+rsp]\r
+ mov r13d,r8d\r
+ add r12d,r15d\r
+ mov r14d,eax\r
+ ror r13d,14\r
+ mov r15d,r9d\r
+\r
+ xor r13d,r8d\r
+ ror r14d,9\r
+ xor r15d,r10d\r
+\r
+ mov DWORD[32+rsp],r12d\r
+ xor r14d,eax\r
+ and r15d,r8d\r
+\r
+ ror r13d,5\r
+ add r12d,r11d\r
+ xor r15d,r10d\r
+\r
+ ror r14d,11\r
+ xor r13d,r8d\r
+ add r12d,r15d\r
+\r
+ mov r15d,eax\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,eax\r
+\r
+ xor r15d,ebx\r
+ ror r13d,6\r
+ mov r11d,ebx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r11d,edi\r
+ add edx,r12d\r
+ add r11d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[40+rsp]\r
+ mov edi,DWORD[28+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r11d,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[8+rsp]\r
+\r
+ add r12d,DWORD[36+rsp]\r
+ mov r13d,edx\r
+ add r12d,edi\r
+ mov r14d,r11d\r
+ ror r13d,14\r
+ mov edi,r8d\r
+\r
+ xor r13d,edx\r
+ ror r14d,9\r
+ xor edi,r9d\r
+\r
+ mov DWORD[36+rsp],r12d\r
+ xor r14d,r11d\r
+ and edi,edx\r
+\r
+ ror r13d,5\r
+ add r12d,r10d\r
+ xor edi,r9d\r
+\r
+ ror r14d,11\r
+ xor r13d,edx\r
+ add r12d,edi\r
+\r
+ mov edi,r11d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r11d\r
+\r
+ xor edi,eax\r
+ ror r13d,6\r
+ mov r10d,eax\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r10d,r15d\r
+ add ecx,r12d\r
+ add r10d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[44+rsp]\r
+ mov r15d,DWORD[32+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r10d,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[12+rsp]\r
+\r
+ add r12d,DWORD[40+rsp]\r
+ mov r13d,ecx\r
+ add r12d,r15d\r
+ mov r14d,r10d\r
+ ror r13d,14\r
+ mov r15d,edx\r
+\r
+ xor r13d,ecx\r
+ ror r14d,9\r
+ xor r15d,r8d\r
+\r
+ mov DWORD[40+rsp],r12d\r
+ xor r14d,r10d\r
+ and r15d,ecx\r
+\r
+ ror r13d,5\r
+ add r12d,r9d\r
+ xor r15d,r8d\r
+\r
+ ror r14d,11\r
+ xor r13d,ecx\r
+ add r12d,r15d\r
+\r
+ mov r15d,r10d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r10d\r
+\r
+ xor r15d,r11d\r
+ ror r13d,6\r
+ mov r9d,r11d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r9d,edi\r
+ add ebx,r12d\r
+ add r9d,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[48+rsp]\r
+ mov edi,DWORD[36+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r9d,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[16+rsp]\r
+\r
+ add r12d,DWORD[44+rsp]\r
+ mov r13d,ebx\r
+ add r12d,edi\r
+ mov r14d,r9d\r
+ ror r13d,14\r
+ mov edi,ecx\r
+\r
+ xor r13d,ebx\r
+ ror r14d,9\r
+ xor edi,edx\r
+\r
+ mov DWORD[44+rsp],r12d\r
+ xor r14d,r9d\r
+ and edi,ebx\r
+\r
+ ror r13d,5\r
+ add r12d,r8d\r
+ xor edi,edx\r
+\r
+ ror r14d,11\r
+ xor r13d,ebx\r
+ add r12d,edi\r
+\r
+ mov edi,r9d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r9d\r
+\r
+ xor edi,r10d\r
+ ror r13d,6\r
+ mov r8d,r10d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor r8d,r15d\r
+ add eax,r12d\r
+ add r8d,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ mov r13d,DWORD[52+rsp]\r
+ mov r15d,DWORD[40+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add r8d,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[20+rsp]\r
+\r
+ add r12d,DWORD[48+rsp]\r
+ mov r13d,eax\r
+ add r12d,r15d\r
+ mov r14d,r8d\r
+ ror r13d,14\r
+ mov r15d,ebx\r
+\r
+ xor r13d,eax\r
+ ror r14d,9\r
+ xor r15d,ecx\r
+\r
+ mov DWORD[48+rsp],r12d\r
+ xor r14d,r8d\r
+ and r15d,eax\r
+\r
+ ror r13d,5\r
+ add r12d,edx\r
+ xor r15d,ecx\r
+\r
+ ror r14d,11\r
+ xor r13d,eax\r
+ add r12d,r15d\r
+\r
+ mov r15d,r8d\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,r8d\r
+\r
+ xor r15d,r9d\r
+ ror r13d,6\r
+ mov edx,r9d\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor edx,edi\r
+ add r11d,r12d\r
+ add edx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[56+rsp]\r
+ mov edi,DWORD[44+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add edx,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[24+rsp]\r
+\r
+ add r12d,DWORD[52+rsp]\r
+ mov r13d,r11d\r
+ add r12d,edi\r
+ mov r14d,edx\r
+ ror r13d,14\r
+ mov edi,eax\r
+\r
+ xor r13d,r11d\r
+ ror r14d,9\r
+ xor edi,ebx\r
+\r
+ mov DWORD[52+rsp],r12d\r
+ xor r14d,edx\r
+ and edi,r11d\r
+\r
+ ror r13d,5\r
+ add r12d,ecx\r
+ xor edi,ebx\r
+\r
+ ror r14d,11\r
+ xor r13d,r11d\r
+ add r12d,edi\r
+\r
+ mov edi,edx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,edx\r
+\r
+ xor edi,r8d\r
+ ror r13d,6\r
+ mov ecx,r8d\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ecx,r15d\r
+ add r10d,r12d\r
+ add ecx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[60+rsp]\r
+ mov r15d,DWORD[48+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add ecx,r14d\r
+ mov r14d,r15d\r
+ ror r15d,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor r15d,r14d\r
+ shr r14d,10\r
+\r
+ ror r15d,17\r
+ xor r12d,r13d\r
+ xor r15d,r14d\r
+ add r12d,DWORD[28+rsp]\r
+\r
+ add r12d,DWORD[56+rsp]\r
+ mov r13d,r10d\r
+ add r12d,r15d\r
+ mov r14d,ecx\r
+ ror r13d,14\r
+ mov r15d,r11d\r
+\r
+ xor r13d,r10d\r
+ ror r14d,9\r
+ xor r15d,eax\r
+\r
+ mov DWORD[56+rsp],r12d\r
+ xor r14d,ecx\r
+ and r15d,r10d\r
+\r
+ ror r13d,5\r
+ add r12d,ebx\r
+ xor r15d,eax\r
+\r
+ ror r14d,11\r
+ xor r13d,r10d\r
+ add r12d,r15d\r
+\r
+ mov r15d,ecx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ecx\r
+\r
+ xor r15d,edx\r
+ ror r13d,6\r
+ mov ebx,edx\r
+\r
+ and edi,r15d\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor ebx,edi\r
+ add r9d,r12d\r
+ add ebx,r12d\r
+\r
+ lea rbp,[4+rbp]\r
+ mov r13d,DWORD[rsp]\r
+ mov edi,DWORD[52+rsp]\r
+\r
+ mov r12d,r13d\r
+ ror r13d,11\r
+ add ebx,r14d\r
+ mov r14d,edi\r
+ ror edi,2\r
+\r
+ xor r13d,r12d\r
+ shr r12d,3\r
+ ror r13d,7\r
+ xor edi,r14d\r
+ shr r14d,10\r
+\r
+ ror edi,17\r
+ xor r12d,r13d\r
+ xor edi,r14d\r
+ add r12d,DWORD[32+rsp]\r
+\r
+ add r12d,DWORD[60+rsp]\r
+ mov r13d,r9d\r
+ add r12d,edi\r
+ mov r14d,ebx\r
+ ror r13d,14\r
+ mov edi,r10d\r
+\r
+ xor r13d,r9d\r
+ ror r14d,9\r
+ xor edi,r11d\r
+\r
+ mov DWORD[60+rsp],r12d\r
+ xor r14d,ebx\r
+ and edi,r9d\r
+\r
+ ror r13d,5\r
+ add r12d,eax\r
+ xor edi,r11d\r
+\r
+ ror r14d,11\r
+ xor r13d,r9d\r
+ add r12d,edi\r
+\r
+ mov edi,ebx\r
+ add r12d,DWORD[rbp]\r
+ xor r14d,ebx\r
+\r
+ xor edi,ecx\r
+ ror r13d,6\r
+ mov eax,ecx\r
+\r
+ and r15d,edi\r
+ ror r14d,2\r
+ add r12d,r13d\r
+\r
+ xor eax,r15d\r
+ add r8d,r12d\r
+ add eax,r12d\r
+\r
+ lea rbp,[20+rbp]\r
+ cmp BYTE[3+rbp],0\r
+ jnz NEAR $L$rounds_16_xx\r
+\r
+ mov rdi,QWORD[((64+0))+rsp]\r
+ add eax,r14d\r
+ lea rsi,[64+rsi]\r
+\r
+ add eax,DWORD[rdi]\r
+ add ebx,DWORD[4+rdi]\r
+ add ecx,DWORD[8+rdi]\r
+ add edx,DWORD[12+rdi]\r
+ add r8d,DWORD[16+rdi]\r
+ add r9d,DWORD[20+rdi]\r
+ add r10d,DWORD[24+rdi]\r
+ add r11d,DWORD[28+rdi]\r
+\r
+ cmp rsi,QWORD[((64+16))+rsp]\r
+\r
+ mov DWORD[rdi],eax\r
+ mov DWORD[4+rdi],ebx\r
+ mov DWORD[8+rdi],ecx\r
+ mov DWORD[12+rdi],edx\r
+ mov DWORD[16+rdi],r8d\r
+ mov DWORD[20+rdi],r9d\r
+ mov DWORD[24+rdi],r10d\r
+ mov DWORD[28+rdi],r11d\r
+ jb NEAR $L$loop\r
+\r
+ mov rsi,QWORD[88+rsp]\r
+\r
+ mov r15,QWORD[((-48))+rsi]\r
+\r
+ mov r14,QWORD[((-40))+rsi]\r
+\r
+ mov r13,QWORD[((-32))+rsi]\r
+\r
+ mov r12,QWORD[((-24))+rsi]\r
+\r
+ mov rbp,QWORD[((-16))+rsi]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha256_block_data_order:\r
+ALIGN 64\r
+\r
+K256:\r
+ DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+ DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+ DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+ DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+ DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+ DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+ DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+ DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+ DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+ DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+ DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+ DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+ DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+ DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+ DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+ DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+ DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+ DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+ DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+ DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+ DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+ DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+ DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+ DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+ DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+ DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+ DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+ DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+ DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+ DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+ DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+ DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+ DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff\r
+ DD 0x03020100,0x0b0a0908,0xffffffff,0xffffffff\r
+ DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908\r
+ DD 0xffffffff,0xffffffff,0x03020100,0x0b0a0908\r
+DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97\r
+DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54\r
+DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121\r
+DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46\r
+DB 111,114,103,62,0\r
+\r
+ALIGN 64\r
+sha256_block_data_order_shaext:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha256_block_data_order_shaext:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+_shaext_shortcut:\r
+\r
+ lea rsp,[((-88))+rsp]\r
+ movaps XMMWORD[(-8-80)+rax],xmm6\r
+ movaps XMMWORD[(-8-64)+rax],xmm7\r
+ movaps XMMWORD[(-8-48)+rax],xmm8\r
+ movaps XMMWORD[(-8-32)+rax],xmm9\r
+ movaps XMMWORD[(-8-16)+rax],xmm10\r
+$L$prologue_shaext:\r
+ lea rcx,[((K256+128))]\r
+ movdqu xmm1,XMMWORD[rdi]\r
+ movdqu xmm2,XMMWORD[16+rdi]\r
+ movdqa xmm7,XMMWORD[((512-128))+rcx]\r
+\r
+ pshufd xmm0,xmm1,0x1b\r
+ pshufd xmm1,xmm1,0xb1\r
+ pshufd xmm2,xmm2,0x1b\r
+ movdqa xmm8,xmm7\r
+DB 102,15,58,15,202,8\r
+ punpcklqdq xmm2,xmm0\r
+ jmp NEAR $L$oop_shaext\r
+\r
+ALIGN 16\r
+$L$oop_shaext:\r
+ movdqu xmm3,XMMWORD[rsi]\r
+ movdqu xmm4,XMMWORD[16+rsi]\r
+ movdqu xmm5,XMMWORD[32+rsi]\r
+DB 102,15,56,0,223\r
+ movdqu xmm6,XMMWORD[48+rsi]\r
+\r
+ movdqa xmm0,XMMWORD[((0-128))+rcx]\r
+ paddd xmm0,xmm3\r
+DB 102,15,56,0,231\r
+ movdqa xmm10,xmm2\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ nop\r
+ movdqa xmm9,xmm1\r
+DB 15,56,203,202\r
+\r
+ movdqa xmm0,XMMWORD[((32-128))+rcx]\r
+ paddd xmm0,xmm4\r
+DB 102,15,56,0,239\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ lea rsi,[64+rsi]\r
+DB 15,56,204,220\r
+DB 15,56,203,202\r
+\r
+ movdqa xmm0,XMMWORD[((64-128))+rcx]\r
+ paddd xmm0,xmm5\r
+DB 102,15,56,0,247\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm6\r
+DB 102,15,58,15,253,4\r
+ nop\r
+ paddd xmm3,xmm7\r
+DB 15,56,204,229\r
+DB 15,56,203,202\r
+\r
+ movdqa xmm0,XMMWORD[((96-128))+rcx]\r
+ paddd xmm0,xmm6\r
+DB 15,56,205,222\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm3\r
+DB 102,15,58,15,254,4\r
+ nop\r
+ paddd xmm4,xmm7\r
+DB 15,56,204,238\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((128-128))+rcx]\r
+ paddd xmm0,xmm3\r
+DB 15,56,205,227\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm4\r
+DB 102,15,58,15,251,4\r
+ nop\r
+ paddd xmm5,xmm7\r
+DB 15,56,204,243\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((160-128))+rcx]\r
+ paddd xmm0,xmm4\r
+DB 15,56,205,236\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm5\r
+DB 102,15,58,15,252,4\r
+ nop\r
+ paddd xmm6,xmm7\r
+DB 15,56,204,220\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((192-128))+rcx]\r
+ paddd xmm0,xmm5\r
+DB 15,56,205,245\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm6\r
+DB 102,15,58,15,253,4\r
+ nop\r
+ paddd xmm3,xmm7\r
+DB 15,56,204,229\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((224-128))+rcx]\r
+ paddd xmm0,xmm6\r
+DB 15,56,205,222\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm3\r
+DB 102,15,58,15,254,4\r
+ nop\r
+ paddd xmm4,xmm7\r
+DB 15,56,204,238\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((256-128))+rcx]\r
+ paddd xmm0,xmm3\r
+DB 15,56,205,227\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm4\r
+DB 102,15,58,15,251,4\r
+ nop\r
+ paddd xmm5,xmm7\r
+DB 15,56,204,243\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((288-128))+rcx]\r
+ paddd xmm0,xmm4\r
+DB 15,56,205,236\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm5\r
+DB 102,15,58,15,252,4\r
+ nop\r
+ paddd xmm6,xmm7\r
+DB 15,56,204,220\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((320-128))+rcx]\r
+ paddd xmm0,xmm5\r
+DB 15,56,205,245\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm6\r
+DB 102,15,58,15,253,4\r
+ nop\r
+ paddd xmm3,xmm7\r
+DB 15,56,204,229\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((352-128))+rcx]\r
+ paddd xmm0,xmm6\r
+DB 15,56,205,222\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm3\r
+DB 102,15,58,15,254,4\r
+ nop\r
+ paddd xmm4,xmm7\r
+DB 15,56,204,238\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((384-128))+rcx]\r
+ paddd xmm0,xmm3\r
+DB 15,56,205,227\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm4\r
+DB 102,15,58,15,251,4\r
+ nop\r
+ paddd xmm5,xmm7\r
+DB 15,56,204,243\r
+DB 15,56,203,202\r
+ movdqa xmm0,XMMWORD[((416-128))+rcx]\r
+ paddd xmm0,xmm4\r
+DB 15,56,205,236\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ movdqa xmm7,xmm5\r
+DB 102,15,58,15,252,4\r
+DB 15,56,203,202\r
+ paddd xmm6,xmm7\r
+\r
+ movdqa xmm0,XMMWORD[((448-128))+rcx]\r
+ paddd xmm0,xmm5\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+DB 15,56,205,245\r
+ movdqa xmm7,xmm8\r
+DB 15,56,203,202\r
+\r
+ movdqa xmm0,XMMWORD[((480-128))+rcx]\r
+ paddd xmm0,xmm6\r
+ nop\r
+DB 15,56,203,209\r
+ pshufd xmm0,xmm0,0x0e\r
+ dec rdx\r
+ nop\r
+DB 15,56,203,202\r
+\r
+ paddd xmm2,xmm10\r
+ paddd xmm1,xmm9\r
+ jnz NEAR $L$oop_shaext\r
+\r
+ pshufd xmm2,xmm2,0xb1\r
+ pshufd xmm7,xmm1,0x1b\r
+ pshufd xmm1,xmm1,0xb1\r
+ punpckhqdq xmm1,xmm2\r
+DB 102,15,58,15,215,8\r
+\r
+ movdqu XMMWORD[rdi],xmm1\r
+ movdqu XMMWORD[16+rdi],xmm2\r
+ movaps xmm6,XMMWORD[((-8-80))+rax]\r
+ movaps xmm7,XMMWORD[((-8-64))+rax]\r
+ movaps xmm8,XMMWORD[((-8-48))+rax]\r
+ movaps xmm9,XMMWORD[((-8-32))+rax]\r
+ movaps xmm10,XMMWORD[((-8-16))+rax]\r
+ mov rsp,rax\r
+$L$epilogue_shaext:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha256_block_data_order_shaext:\r
+\r
+ALIGN 64\r
+sha256_block_data_order_ssse3:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha256_block_data_order_ssse3:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+$L$ssse3_shortcut:\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ shl rdx,4\r
+ sub rsp,160\r
+ lea rdx,[rdx*4+rsi]\r
+ and rsp,-64\r
+ mov QWORD[((64+0))+rsp],rdi\r
+ mov QWORD[((64+8))+rsp],rsi\r
+ mov QWORD[((64+16))+rsp],rdx\r
+ mov QWORD[88+rsp],rax\r
+\r
+ movaps XMMWORD[(64+32)+rsp],xmm6\r
+ movaps XMMWORD[(64+48)+rsp],xmm7\r
+ movaps XMMWORD[(64+64)+rsp],xmm8\r
+ movaps XMMWORD[(64+80)+rsp],xmm9\r
+$L$prologue_ssse3:\r
+\r
+ mov eax,DWORD[rdi]\r
+ mov ebx,DWORD[4+rdi]\r
+ mov ecx,DWORD[8+rdi]\r
+ mov edx,DWORD[12+rdi]\r
+ mov r8d,DWORD[16+rdi]\r
+ mov r9d,DWORD[20+rdi]\r
+ mov r10d,DWORD[24+rdi]\r
+ mov r11d,DWORD[28+rdi]\r
+\r
+\r
+ jmp NEAR $L$loop_ssse3\r
+ALIGN 16\r
+$L$loop_ssse3:\r
+ movdqa xmm7,XMMWORD[((K256+512))]\r
+ movdqu xmm0,XMMWORD[rsi]\r
+ movdqu xmm1,XMMWORD[16+rsi]\r
+ movdqu xmm2,XMMWORD[32+rsi]\r
+DB 102,15,56,0,199\r
+ movdqu xmm3,XMMWORD[48+rsi]\r
+ lea rbp,[K256]\r
+DB 102,15,56,0,207\r
+ movdqa xmm4,XMMWORD[rbp]\r
+ movdqa xmm5,XMMWORD[32+rbp]\r
+DB 102,15,56,0,215\r
+ paddd xmm4,xmm0\r
+ movdqa xmm6,XMMWORD[64+rbp]\r
+DB 102,15,56,0,223\r
+ movdqa xmm7,XMMWORD[96+rbp]\r
+ paddd xmm5,xmm1\r
+ paddd xmm6,xmm2\r
+ paddd xmm7,xmm3\r
+ movdqa XMMWORD[rsp],xmm4\r
+ mov r14d,eax\r
+ movdqa XMMWORD[16+rsp],xmm5\r
+ mov edi,ebx\r
+ movdqa XMMWORD[32+rsp],xmm6\r
+ xor edi,ecx\r
+ movdqa XMMWORD[48+rsp],xmm7\r
+ mov r13d,r8d\r
+ jmp NEAR $L$ssse3_00_47\r
+\r
+ALIGN 16\r
+$L$ssse3_00_47:\r
+ sub rbp,-128\r
+ ror r13d,14\r
+ movdqa xmm4,xmm1\r
+ mov eax,r14d\r
+ mov r12d,r9d\r
+ movdqa xmm7,xmm3\r
+ ror r14d,9\r
+ xor r13d,r8d\r
+ xor r12d,r10d\r
+ ror r13d,5\r
+ xor r14d,eax\r
+DB 102,15,58,15,224,4\r
+ and r12d,r8d\r
+ xor r13d,r8d\r
+DB 102,15,58,15,250,4\r
+ add r11d,DWORD[rsp]\r
+ mov r15d,eax\r
+ xor r12d,r10d\r
+ ror r14d,11\r
+ movdqa xmm5,xmm4\r
+ xor r15d,ebx\r
+ add r11d,r12d\r
+ movdqa xmm6,xmm4\r
+ ror r13d,6\r
+ and edi,r15d\r
+ psrld xmm4,3\r
+ xor r14d,eax\r
+ add r11d,r13d\r
+ xor edi,ebx\r
+ paddd xmm0,xmm7\r
+ ror r14d,2\r
+ add edx,r11d\r
+ psrld xmm6,7\r
+ add r11d,edi\r
+ mov r13d,edx\r
+ pshufd xmm7,xmm3,250\r
+ add r14d,r11d\r
+ ror r13d,14\r
+ pslld xmm5,14\r
+ mov r11d,r14d\r
+ mov r12d,r8d\r
+ pxor xmm4,xmm6\r
+ ror r14d,9\r
+ xor r13d,edx\r
+ xor r12d,r9d\r
+ ror r13d,5\r
+ psrld xmm6,11\r
+ xor r14d,r11d\r
+ pxor xmm4,xmm5\r
+ and r12d,edx\r
+ xor r13d,edx\r
+ pslld xmm5,11\r
+ add r10d,DWORD[4+rsp]\r
+ mov edi,r11d\r
+ pxor xmm4,xmm6\r
+ xor r12d,r9d\r
+ ror r14d,11\r
+ movdqa xmm6,xmm7\r
+ xor edi,eax\r
+ add r10d,r12d\r
+ pxor xmm4,xmm5\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r11d\r
+ psrld xmm7,10\r
+ add r10d,r13d\r
+ xor r15d,eax\r
+ paddd xmm0,xmm4\r
+ ror r14d,2\r
+ add ecx,r10d\r
+ psrlq xmm6,17\r
+ add r10d,r15d\r
+ mov r13d,ecx\r
+ add r14d,r10d\r
+ pxor xmm7,xmm6\r
+ ror r13d,14\r
+ mov r10d,r14d\r
+ mov r12d,edx\r
+ ror r14d,9\r
+ psrlq xmm6,2\r
+ xor r13d,ecx\r
+ xor r12d,r8d\r
+ pxor xmm7,xmm6\r
+ ror r13d,5\r
+ xor r14d,r10d\r
+ and r12d,ecx\r
+ pshufd xmm7,xmm7,128\r
+ xor r13d,ecx\r
+ add r9d,DWORD[8+rsp]\r
+ mov r15d,r10d\r
+ psrldq xmm7,8\r
+ xor r12d,r8d\r
+ ror r14d,11\r
+ xor r15d,r11d\r
+ add r9d,r12d\r
+ ror r13d,6\r
+ paddd xmm0,xmm7\r
+ and edi,r15d\r
+ xor r14d,r10d\r
+ add r9d,r13d\r
+ pshufd xmm7,xmm0,80\r
+ xor edi,r11d\r
+ ror r14d,2\r
+ add ebx,r9d\r
+ movdqa xmm6,xmm7\r
+ add r9d,edi\r
+ mov r13d,ebx\r
+ psrld xmm7,10\r
+ add r14d,r9d\r
+ ror r13d,14\r
+ psrlq xmm6,17\r
+ mov r9d,r14d\r
+ mov r12d,ecx\r
+ pxor xmm7,xmm6\r
+ ror r14d,9\r
+ xor r13d,ebx\r
+ xor r12d,edx\r
+ ror r13d,5\r
+ xor r14d,r9d\r
+ psrlq xmm6,2\r
+ and r12d,ebx\r
+ xor r13d,ebx\r
+ add r8d,DWORD[12+rsp]\r
+ pxor xmm7,xmm6\r
+ mov edi,r9d\r
+ xor r12d,edx\r
+ ror r14d,11\r
+ pshufd xmm7,xmm7,8\r
+ xor edi,r10d\r
+ add r8d,r12d\r
+ movdqa xmm6,XMMWORD[rbp]\r
+ ror r13d,6\r
+ and r15d,edi\r
+ pslldq xmm7,8\r
+ xor r14d,r9d\r
+ add r8d,r13d\r
+ xor r15d,r10d\r
+ paddd xmm0,xmm7\r
+ ror r14d,2\r
+ add eax,r8d\r
+ add r8d,r15d\r
+ paddd xmm6,xmm0\r
+ mov r13d,eax\r
+ add r14d,r8d\r
+ movdqa XMMWORD[rsp],xmm6\r
+ ror r13d,14\r
+ movdqa xmm4,xmm2\r
+ mov r8d,r14d\r
+ mov r12d,ebx\r
+ movdqa xmm7,xmm0\r
+ ror r14d,9\r
+ xor r13d,eax\r
+ xor r12d,ecx\r
+ ror r13d,5\r
+ xor r14d,r8d\r
+DB 102,15,58,15,225,4\r
+ and r12d,eax\r
+ xor r13d,eax\r
+DB 102,15,58,15,251,4\r
+ add edx,DWORD[16+rsp]\r
+ mov r15d,r8d\r
+ xor r12d,ecx\r
+ ror r14d,11\r
+ movdqa xmm5,xmm4\r
+ xor r15d,r9d\r
+ add edx,r12d\r
+ movdqa xmm6,xmm4\r
+ ror r13d,6\r
+ and edi,r15d\r
+ psrld xmm4,3\r
+ xor r14d,r8d\r
+ add edx,r13d\r
+ xor edi,r9d\r
+ paddd xmm1,xmm7\r
+ ror r14d,2\r
+ add r11d,edx\r
+ psrld xmm6,7\r
+ add edx,edi\r
+ mov r13d,r11d\r
+ pshufd xmm7,xmm0,250\r
+ add r14d,edx\r
+ ror r13d,14\r
+ pslld xmm5,14\r
+ mov edx,r14d\r
+ mov r12d,eax\r
+ pxor xmm4,xmm6\r
+ ror r14d,9\r
+ xor r13d,r11d\r
+ xor r12d,ebx\r
+ ror r13d,5\r
+ psrld xmm6,11\r
+ xor r14d,edx\r
+ pxor xmm4,xmm5\r
+ and r12d,r11d\r
+ xor r13d,r11d\r
+ pslld xmm5,11\r
+ add ecx,DWORD[20+rsp]\r
+ mov edi,edx\r
+ pxor xmm4,xmm6\r
+ xor r12d,ebx\r
+ ror r14d,11\r
+ movdqa xmm6,xmm7\r
+ xor edi,r8d\r
+ add ecx,r12d\r
+ pxor xmm4,xmm5\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,edx\r
+ psrld xmm7,10\r
+ add ecx,r13d\r
+ xor r15d,r8d\r
+ paddd xmm1,xmm4\r
+ ror r14d,2\r
+ add r10d,ecx\r
+ psrlq xmm6,17\r
+ add ecx,r15d\r
+ mov r13d,r10d\r
+ add r14d,ecx\r
+ pxor xmm7,xmm6\r
+ ror r13d,14\r
+ mov ecx,r14d\r
+ mov r12d,r11d\r
+ ror r14d,9\r
+ psrlq xmm6,2\r
+ xor r13d,r10d\r
+ xor r12d,eax\r
+ pxor xmm7,xmm6\r
+ ror r13d,5\r
+ xor r14d,ecx\r
+ and r12d,r10d\r
+ pshufd xmm7,xmm7,128\r
+ xor r13d,r10d\r
+ add ebx,DWORD[24+rsp]\r
+ mov r15d,ecx\r
+ psrldq xmm7,8\r
+ xor r12d,eax\r
+ ror r14d,11\r
+ xor r15d,edx\r
+ add ebx,r12d\r
+ ror r13d,6\r
+ paddd xmm1,xmm7\r
+ and edi,r15d\r
+ xor r14d,ecx\r
+ add ebx,r13d\r
+ pshufd xmm7,xmm1,80\r
+ xor edi,edx\r
+ ror r14d,2\r
+ add r9d,ebx\r
+ movdqa xmm6,xmm7\r
+ add ebx,edi\r
+ mov r13d,r9d\r
+ psrld xmm7,10\r
+ add r14d,ebx\r
+ ror r13d,14\r
+ psrlq xmm6,17\r
+ mov ebx,r14d\r
+ mov r12d,r10d\r
+ pxor xmm7,xmm6\r
+ ror r14d,9\r
+ xor r13d,r9d\r
+ xor r12d,r11d\r
+ ror r13d,5\r
+ xor r14d,ebx\r
+ psrlq xmm6,2\r
+ and r12d,r9d\r
+ xor r13d,r9d\r
+ add eax,DWORD[28+rsp]\r
+ pxor xmm7,xmm6\r
+ mov edi,ebx\r
+ xor r12d,r11d\r
+ ror r14d,11\r
+ pshufd xmm7,xmm7,8\r
+ xor edi,ecx\r
+ add eax,r12d\r
+ movdqa xmm6,XMMWORD[32+rbp]\r
+ ror r13d,6\r
+ and r15d,edi\r
+ pslldq xmm7,8\r
+ xor r14d,ebx\r
+ add eax,r13d\r
+ xor r15d,ecx\r
+ paddd xmm1,xmm7\r
+ ror r14d,2\r
+ add r8d,eax\r
+ add eax,r15d\r
+ paddd xmm6,xmm1\r
+ mov r13d,r8d\r
+ add r14d,eax\r
+ movdqa XMMWORD[16+rsp],xmm6\r
+ ror r13d,14\r
+ movdqa xmm4,xmm3\r
+ mov eax,r14d\r
+ mov r12d,r9d\r
+ movdqa xmm7,xmm1\r
+ ror r14d,9\r
+ xor r13d,r8d\r
+ xor r12d,r10d\r
+ ror r13d,5\r
+ xor r14d,eax\r
+DB 102,15,58,15,226,4\r
+ and r12d,r8d\r
+ xor r13d,r8d\r
+DB 102,15,58,15,248,4\r
+ add r11d,DWORD[32+rsp]\r
+ mov r15d,eax\r
+ xor r12d,r10d\r
+ ror r14d,11\r
+ movdqa xmm5,xmm4\r
+ xor r15d,ebx\r
+ add r11d,r12d\r
+ movdqa xmm6,xmm4\r
+ ror r13d,6\r
+ and edi,r15d\r
+ psrld xmm4,3\r
+ xor r14d,eax\r
+ add r11d,r13d\r
+ xor edi,ebx\r
+ paddd xmm2,xmm7\r
+ ror r14d,2\r
+ add edx,r11d\r
+ psrld xmm6,7\r
+ add r11d,edi\r
+ mov r13d,edx\r
+ pshufd xmm7,xmm1,250\r
+ add r14d,r11d\r
+ ror r13d,14\r
+ pslld xmm5,14\r
+ mov r11d,r14d\r
+ mov r12d,r8d\r
+ pxor xmm4,xmm6\r
+ ror r14d,9\r
+ xor r13d,edx\r
+ xor r12d,r9d\r
+ ror r13d,5\r
+ psrld xmm6,11\r
+ xor r14d,r11d\r
+ pxor xmm4,xmm5\r
+ and r12d,edx\r
+ xor r13d,edx\r
+ pslld xmm5,11\r
+ add r10d,DWORD[36+rsp]\r
+ mov edi,r11d\r
+ pxor xmm4,xmm6\r
+ xor r12d,r9d\r
+ ror r14d,11\r
+ movdqa xmm6,xmm7\r
+ xor edi,eax\r
+ add r10d,r12d\r
+ pxor xmm4,xmm5\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r11d\r
+ psrld xmm7,10\r
+ add r10d,r13d\r
+ xor r15d,eax\r
+ paddd xmm2,xmm4\r
+ ror r14d,2\r
+ add ecx,r10d\r
+ psrlq xmm6,17\r
+ add r10d,r15d\r
+ mov r13d,ecx\r
+ add r14d,r10d\r
+ pxor xmm7,xmm6\r
+ ror r13d,14\r
+ mov r10d,r14d\r
+ mov r12d,edx\r
+ ror r14d,9\r
+ psrlq xmm6,2\r
+ xor r13d,ecx\r
+ xor r12d,r8d\r
+ pxor xmm7,xmm6\r
+ ror r13d,5\r
+ xor r14d,r10d\r
+ and r12d,ecx\r
+ pshufd xmm7,xmm7,128\r
+ xor r13d,ecx\r
+ add r9d,DWORD[40+rsp]\r
+ mov r15d,r10d\r
+ psrldq xmm7,8\r
+ xor r12d,r8d\r
+ ror r14d,11\r
+ xor r15d,r11d\r
+ add r9d,r12d\r
+ ror r13d,6\r
+ paddd xmm2,xmm7\r
+ and edi,r15d\r
+ xor r14d,r10d\r
+ add r9d,r13d\r
+ pshufd xmm7,xmm2,80\r
+ xor edi,r11d\r
+ ror r14d,2\r
+ add ebx,r9d\r
+ movdqa xmm6,xmm7\r
+ add r9d,edi\r
+ mov r13d,ebx\r
+ psrld xmm7,10\r
+ add r14d,r9d\r
+ ror r13d,14\r
+ psrlq xmm6,17\r
+ mov r9d,r14d\r
+ mov r12d,ecx\r
+ pxor xmm7,xmm6\r
+ ror r14d,9\r
+ xor r13d,ebx\r
+ xor r12d,edx\r
+ ror r13d,5\r
+ xor r14d,r9d\r
+ psrlq xmm6,2\r
+ and r12d,ebx\r
+ xor r13d,ebx\r
+ add r8d,DWORD[44+rsp]\r
+ pxor xmm7,xmm6\r
+ mov edi,r9d\r
+ xor r12d,edx\r
+ ror r14d,11\r
+ pshufd xmm7,xmm7,8\r
+ xor edi,r10d\r
+ add r8d,r12d\r
+ movdqa xmm6,XMMWORD[64+rbp]\r
+ ror r13d,6\r
+ and r15d,edi\r
+ pslldq xmm7,8\r
+ xor r14d,r9d\r
+ add r8d,r13d\r
+ xor r15d,r10d\r
+ paddd xmm2,xmm7\r
+ ror r14d,2\r
+ add eax,r8d\r
+ add r8d,r15d\r
+ paddd xmm6,xmm2\r
+ mov r13d,eax\r
+ add r14d,r8d\r
+ movdqa XMMWORD[32+rsp],xmm6\r
+ ror r13d,14\r
+ movdqa xmm4,xmm0\r
+ mov r8d,r14d\r
+ mov r12d,ebx\r
+ movdqa xmm7,xmm2\r
+ ror r14d,9\r
+ xor r13d,eax\r
+ xor r12d,ecx\r
+ ror r13d,5\r
+ xor r14d,r8d\r
+DB 102,15,58,15,227,4\r
+ and r12d,eax\r
+ xor r13d,eax\r
+DB 102,15,58,15,249,4\r
+ add edx,DWORD[48+rsp]\r
+ mov r15d,r8d\r
+ xor r12d,ecx\r
+ ror r14d,11\r
+ movdqa xmm5,xmm4\r
+ xor r15d,r9d\r
+ add edx,r12d\r
+ movdqa xmm6,xmm4\r
+ ror r13d,6\r
+ and edi,r15d\r
+ psrld xmm4,3\r
+ xor r14d,r8d\r
+ add edx,r13d\r
+ xor edi,r9d\r
+ paddd xmm3,xmm7\r
+ ror r14d,2\r
+ add r11d,edx\r
+ psrld xmm6,7\r
+ add edx,edi\r
+ mov r13d,r11d\r
+ pshufd xmm7,xmm2,250\r
+ add r14d,edx\r
+ ror r13d,14\r
+ pslld xmm5,14\r
+ mov edx,r14d\r
+ mov r12d,eax\r
+ pxor xmm4,xmm6\r
+ ror r14d,9\r
+ xor r13d,r11d\r
+ xor r12d,ebx\r
+ ror r13d,5\r
+ psrld xmm6,11\r
+ xor r14d,edx\r
+ pxor xmm4,xmm5\r
+ and r12d,r11d\r
+ xor r13d,r11d\r
+ pslld xmm5,11\r
+ add ecx,DWORD[52+rsp]\r
+ mov edi,edx\r
+ pxor xmm4,xmm6\r
+ xor r12d,ebx\r
+ ror r14d,11\r
+ movdqa xmm6,xmm7\r
+ xor edi,r8d\r
+ add ecx,r12d\r
+ pxor xmm4,xmm5\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,edx\r
+ psrld xmm7,10\r
+ add ecx,r13d\r
+ xor r15d,r8d\r
+ paddd xmm3,xmm4\r
+ ror r14d,2\r
+ add r10d,ecx\r
+ psrlq xmm6,17\r
+ add ecx,r15d\r
+ mov r13d,r10d\r
+ add r14d,ecx\r
+ pxor xmm7,xmm6\r
+ ror r13d,14\r
+ mov ecx,r14d\r
+ mov r12d,r11d\r
+ ror r14d,9\r
+ psrlq xmm6,2\r
+ xor r13d,r10d\r
+ xor r12d,eax\r
+ pxor xmm7,xmm6\r
+ ror r13d,5\r
+ xor r14d,ecx\r
+ and r12d,r10d\r
+ pshufd xmm7,xmm7,128\r
+ xor r13d,r10d\r
+ add ebx,DWORD[56+rsp]\r
+ mov r15d,ecx\r
+ psrldq xmm7,8\r
+ xor r12d,eax\r
+ ror r14d,11\r
+ xor r15d,edx\r
+ add ebx,r12d\r
+ ror r13d,6\r
+ paddd xmm3,xmm7\r
+ and edi,r15d\r
+ xor r14d,ecx\r
+ add ebx,r13d\r
+ pshufd xmm7,xmm3,80\r
+ xor edi,edx\r
+ ror r14d,2\r
+ add r9d,ebx\r
+ movdqa xmm6,xmm7\r
+ add ebx,edi\r
+ mov r13d,r9d\r
+ psrld xmm7,10\r
+ add r14d,ebx\r
+ ror r13d,14\r
+ psrlq xmm6,17\r
+ mov ebx,r14d\r
+ mov r12d,r10d\r
+ pxor xmm7,xmm6\r
+ ror r14d,9\r
+ xor r13d,r9d\r
+ xor r12d,r11d\r
+ ror r13d,5\r
+ xor r14d,ebx\r
+ psrlq xmm6,2\r
+ and r12d,r9d\r
+ xor r13d,r9d\r
+ add eax,DWORD[60+rsp]\r
+ pxor xmm7,xmm6\r
+ mov edi,ebx\r
+ xor r12d,r11d\r
+ ror r14d,11\r
+ pshufd xmm7,xmm7,8\r
+ xor edi,ecx\r
+ add eax,r12d\r
+ movdqa xmm6,XMMWORD[96+rbp]\r
+ ror r13d,6\r
+ and r15d,edi\r
+ pslldq xmm7,8\r
+ xor r14d,ebx\r
+ add eax,r13d\r
+ xor r15d,ecx\r
+ paddd xmm3,xmm7\r
+ ror r14d,2\r
+ add r8d,eax\r
+ add eax,r15d\r
+ paddd xmm6,xmm3\r
+ mov r13d,r8d\r
+ add r14d,eax\r
+ movdqa XMMWORD[48+rsp],xmm6\r
+ cmp BYTE[131+rbp],0\r
+ jne NEAR $L$ssse3_00_47\r
+ ror r13d,14\r
+ mov eax,r14d\r
+ mov r12d,r9d\r
+ ror r14d,9\r
+ xor r13d,r8d\r
+ xor r12d,r10d\r
+ ror r13d,5\r
+ xor r14d,eax\r
+ and r12d,r8d\r
+ xor r13d,r8d\r
+ add r11d,DWORD[rsp]\r
+ mov r15d,eax\r
+ xor r12d,r10d\r
+ ror r14d,11\r
+ xor r15d,ebx\r
+ add r11d,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,eax\r
+ add r11d,r13d\r
+ xor edi,ebx\r
+ ror r14d,2\r
+ add edx,r11d\r
+ add r11d,edi\r
+ mov r13d,edx\r
+ add r14d,r11d\r
+ ror r13d,14\r
+ mov r11d,r14d\r
+ mov r12d,r8d\r
+ ror r14d,9\r
+ xor r13d,edx\r
+ xor r12d,r9d\r
+ ror r13d,5\r
+ xor r14d,r11d\r
+ and r12d,edx\r
+ xor r13d,edx\r
+ add r10d,DWORD[4+rsp]\r
+ mov edi,r11d\r
+ xor r12d,r9d\r
+ ror r14d,11\r
+ xor edi,eax\r
+ add r10d,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r11d\r
+ add r10d,r13d\r
+ xor r15d,eax\r
+ ror r14d,2\r
+ add ecx,r10d\r
+ add r10d,r15d\r
+ mov r13d,ecx\r
+ add r14d,r10d\r
+ ror r13d,14\r
+ mov r10d,r14d\r
+ mov r12d,edx\r
+ ror r14d,9\r
+ xor r13d,ecx\r
+ xor r12d,r8d\r
+ ror r13d,5\r
+ xor r14d,r10d\r
+ and r12d,ecx\r
+ xor r13d,ecx\r
+ add r9d,DWORD[8+rsp]\r
+ mov r15d,r10d\r
+ xor r12d,r8d\r
+ ror r14d,11\r
+ xor r15d,r11d\r
+ add r9d,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,r10d\r
+ add r9d,r13d\r
+ xor edi,r11d\r
+ ror r14d,2\r
+ add ebx,r9d\r
+ add r9d,edi\r
+ mov r13d,ebx\r
+ add r14d,r9d\r
+ ror r13d,14\r
+ mov r9d,r14d\r
+ mov r12d,ecx\r
+ ror r14d,9\r
+ xor r13d,ebx\r
+ xor r12d,edx\r
+ ror r13d,5\r
+ xor r14d,r9d\r
+ and r12d,ebx\r
+ xor r13d,ebx\r
+ add r8d,DWORD[12+rsp]\r
+ mov edi,r9d\r
+ xor r12d,edx\r
+ ror r14d,11\r
+ xor edi,r10d\r
+ add r8d,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r9d\r
+ add r8d,r13d\r
+ xor r15d,r10d\r
+ ror r14d,2\r
+ add eax,r8d\r
+ add r8d,r15d\r
+ mov r13d,eax\r
+ add r14d,r8d\r
+ ror r13d,14\r
+ mov r8d,r14d\r
+ mov r12d,ebx\r
+ ror r14d,9\r
+ xor r13d,eax\r
+ xor r12d,ecx\r
+ ror r13d,5\r
+ xor r14d,r8d\r
+ and r12d,eax\r
+ xor r13d,eax\r
+ add edx,DWORD[16+rsp]\r
+ mov r15d,r8d\r
+ xor r12d,ecx\r
+ ror r14d,11\r
+ xor r15d,r9d\r
+ add edx,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,r8d\r
+ add edx,r13d\r
+ xor edi,r9d\r
+ ror r14d,2\r
+ add r11d,edx\r
+ add edx,edi\r
+ mov r13d,r11d\r
+ add r14d,edx\r
+ ror r13d,14\r
+ mov edx,r14d\r
+ mov r12d,eax\r
+ ror r14d,9\r
+ xor r13d,r11d\r
+ xor r12d,ebx\r
+ ror r13d,5\r
+ xor r14d,edx\r
+ and r12d,r11d\r
+ xor r13d,r11d\r
+ add ecx,DWORD[20+rsp]\r
+ mov edi,edx\r
+ xor r12d,ebx\r
+ ror r14d,11\r
+ xor edi,r8d\r
+ add ecx,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,edx\r
+ add ecx,r13d\r
+ xor r15d,r8d\r
+ ror r14d,2\r
+ add r10d,ecx\r
+ add ecx,r15d\r
+ mov r13d,r10d\r
+ add r14d,ecx\r
+ ror r13d,14\r
+ mov ecx,r14d\r
+ mov r12d,r11d\r
+ ror r14d,9\r
+ xor r13d,r10d\r
+ xor r12d,eax\r
+ ror r13d,5\r
+ xor r14d,ecx\r
+ and r12d,r10d\r
+ xor r13d,r10d\r
+ add ebx,DWORD[24+rsp]\r
+ mov r15d,ecx\r
+ xor r12d,eax\r
+ ror r14d,11\r
+ xor r15d,edx\r
+ add ebx,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,ecx\r
+ add ebx,r13d\r
+ xor edi,edx\r
+ ror r14d,2\r
+ add r9d,ebx\r
+ add ebx,edi\r
+ mov r13d,r9d\r
+ add r14d,ebx\r
+ ror r13d,14\r
+ mov ebx,r14d\r
+ mov r12d,r10d\r
+ ror r14d,9\r
+ xor r13d,r9d\r
+ xor r12d,r11d\r
+ ror r13d,5\r
+ xor r14d,ebx\r
+ and r12d,r9d\r
+ xor r13d,r9d\r
+ add eax,DWORD[28+rsp]\r
+ mov edi,ebx\r
+ xor r12d,r11d\r
+ ror r14d,11\r
+ xor edi,ecx\r
+ add eax,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,ebx\r
+ add eax,r13d\r
+ xor r15d,ecx\r
+ ror r14d,2\r
+ add r8d,eax\r
+ add eax,r15d\r
+ mov r13d,r8d\r
+ add r14d,eax\r
+ ror r13d,14\r
+ mov eax,r14d\r
+ mov r12d,r9d\r
+ ror r14d,9\r
+ xor r13d,r8d\r
+ xor r12d,r10d\r
+ ror r13d,5\r
+ xor r14d,eax\r
+ and r12d,r8d\r
+ xor r13d,r8d\r
+ add r11d,DWORD[32+rsp]\r
+ mov r15d,eax\r
+ xor r12d,r10d\r
+ ror r14d,11\r
+ xor r15d,ebx\r
+ add r11d,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,eax\r
+ add r11d,r13d\r
+ xor edi,ebx\r
+ ror r14d,2\r
+ add edx,r11d\r
+ add r11d,edi\r
+ mov r13d,edx\r
+ add r14d,r11d\r
+ ror r13d,14\r
+ mov r11d,r14d\r
+ mov r12d,r8d\r
+ ror r14d,9\r
+ xor r13d,edx\r
+ xor r12d,r9d\r
+ ror r13d,5\r
+ xor r14d,r11d\r
+ and r12d,edx\r
+ xor r13d,edx\r
+ add r10d,DWORD[36+rsp]\r
+ mov edi,r11d\r
+ xor r12d,r9d\r
+ ror r14d,11\r
+ xor edi,eax\r
+ add r10d,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r11d\r
+ add r10d,r13d\r
+ xor r15d,eax\r
+ ror r14d,2\r
+ add ecx,r10d\r
+ add r10d,r15d\r
+ mov r13d,ecx\r
+ add r14d,r10d\r
+ ror r13d,14\r
+ mov r10d,r14d\r
+ mov r12d,edx\r
+ ror r14d,9\r
+ xor r13d,ecx\r
+ xor r12d,r8d\r
+ ror r13d,5\r
+ xor r14d,r10d\r
+ and r12d,ecx\r
+ xor r13d,ecx\r
+ add r9d,DWORD[40+rsp]\r
+ mov r15d,r10d\r
+ xor r12d,r8d\r
+ ror r14d,11\r
+ xor r15d,r11d\r
+ add r9d,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,r10d\r
+ add r9d,r13d\r
+ xor edi,r11d\r
+ ror r14d,2\r
+ add ebx,r9d\r
+ add r9d,edi\r
+ mov r13d,ebx\r
+ add r14d,r9d\r
+ ror r13d,14\r
+ mov r9d,r14d\r
+ mov r12d,ecx\r
+ ror r14d,9\r
+ xor r13d,ebx\r
+ xor r12d,edx\r
+ ror r13d,5\r
+ xor r14d,r9d\r
+ and r12d,ebx\r
+ xor r13d,ebx\r
+ add r8d,DWORD[44+rsp]\r
+ mov edi,r9d\r
+ xor r12d,edx\r
+ ror r14d,11\r
+ xor edi,r10d\r
+ add r8d,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,r9d\r
+ add r8d,r13d\r
+ xor r15d,r10d\r
+ ror r14d,2\r
+ add eax,r8d\r
+ add r8d,r15d\r
+ mov r13d,eax\r
+ add r14d,r8d\r
+ ror r13d,14\r
+ mov r8d,r14d\r
+ mov r12d,ebx\r
+ ror r14d,9\r
+ xor r13d,eax\r
+ xor r12d,ecx\r
+ ror r13d,5\r
+ xor r14d,r8d\r
+ and r12d,eax\r
+ xor r13d,eax\r
+ add edx,DWORD[48+rsp]\r
+ mov r15d,r8d\r
+ xor r12d,ecx\r
+ ror r14d,11\r
+ xor r15d,r9d\r
+ add edx,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,r8d\r
+ add edx,r13d\r
+ xor edi,r9d\r
+ ror r14d,2\r
+ add r11d,edx\r
+ add edx,edi\r
+ mov r13d,r11d\r
+ add r14d,edx\r
+ ror r13d,14\r
+ mov edx,r14d\r
+ mov r12d,eax\r
+ ror r14d,9\r
+ xor r13d,r11d\r
+ xor r12d,ebx\r
+ ror r13d,5\r
+ xor r14d,edx\r
+ and r12d,r11d\r
+ xor r13d,r11d\r
+ add ecx,DWORD[52+rsp]\r
+ mov edi,edx\r
+ xor r12d,ebx\r
+ ror r14d,11\r
+ xor edi,r8d\r
+ add ecx,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,edx\r
+ add ecx,r13d\r
+ xor r15d,r8d\r
+ ror r14d,2\r
+ add r10d,ecx\r
+ add ecx,r15d\r
+ mov r13d,r10d\r
+ add r14d,ecx\r
+ ror r13d,14\r
+ mov ecx,r14d\r
+ mov r12d,r11d\r
+ ror r14d,9\r
+ xor r13d,r10d\r
+ xor r12d,eax\r
+ ror r13d,5\r
+ xor r14d,ecx\r
+ and r12d,r10d\r
+ xor r13d,r10d\r
+ add ebx,DWORD[56+rsp]\r
+ mov r15d,ecx\r
+ xor r12d,eax\r
+ ror r14d,11\r
+ xor r15d,edx\r
+ add ebx,r12d\r
+ ror r13d,6\r
+ and edi,r15d\r
+ xor r14d,ecx\r
+ add ebx,r13d\r
+ xor edi,edx\r
+ ror r14d,2\r
+ add r9d,ebx\r
+ add ebx,edi\r
+ mov r13d,r9d\r
+ add r14d,ebx\r
+ ror r13d,14\r
+ mov ebx,r14d\r
+ mov r12d,r10d\r
+ ror r14d,9\r
+ xor r13d,r9d\r
+ xor r12d,r11d\r
+ ror r13d,5\r
+ xor r14d,ebx\r
+ and r12d,r9d\r
+ xor r13d,r9d\r
+ add eax,DWORD[60+rsp]\r
+ mov edi,ebx\r
+ xor r12d,r11d\r
+ ror r14d,11\r
+ xor edi,ecx\r
+ add eax,r12d\r
+ ror r13d,6\r
+ and r15d,edi\r
+ xor r14d,ebx\r
+ add eax,r13d\r
+ xor r15d,ecx\r
+ ror r14d,2\r
+ add r8d,eax\r
+ add eax,r15d\r
+ mov r13d,r8d\r
+ add r14d,eax\r
+ mov rdi,QWORD[((64+0))+rsp]\r
+ mov eax,r14d\r
+\r
+ add eax,DWORD[rdi]\r
+ lea rsi,[64+rsi]\r
+ add ebx,DWORD[4+rdi]\r
+ add ecx,DWORD[8+rdi]\r
+ add edx,DWORD[12+rdi]\r
+ add r8d,DWORD[16+rdi]\r
+ add r9d,DWORD[20+rdi]\r
+ add r10d,DWORD[24+rdi]\r
+ add r11d,DWORD[28+rdi]\r
+\r
+ cmp rsi,QWORD[((64+16))+rsp]\r
+\r
+ mov DWORD[rdi],eax\r
+ mov DWORD[4+rdi],ebx\r
+ mov DWORD[8+rdi],ecx\r
+ mov DWORD[12+rdi],edx\r
+ mov DWORD[16+rdi],r8d\r
+ mov DWORD[20+rdi],r9d\r
+ mov DWORD[24+rdi],r10d\r
+ mov DWORD[28+rdi],r11d\r
+ jb NEAR $L$loop_ssse3\r
+\r
+ mov rsi,QWORD[88+rsp]\r
+\r
+ movaps xmm6,XMMWORD[((64+32))+rsp]\r
+ movaps xmm7,XMMWORD[((64+48))+rsp]\r
+ movaps xmm8,XMMWORD[((64+64))+rsp]\r
+ movaps xmm9,XMMWORD[((64+80))+rsp]\r
+ mov r15,QWORD[((-48))+rsi]\r
+\r
+ mov r14,QWORD[((-40))+rsi]\r
+\r
+ mov r13,QWORD[((-32))+rsi]\r
+\r
+ mov r12,QWORD[((-24))+rsi]\r
+\r
+ mov rbp,QWORD[((-16))+rsi]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$epilogue_ssse3:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha256_block_data_order_ssse3:\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+ mov rsi,rax\r
+ mov rax,QWORD[((64+24))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov r15,QWORD[((-48))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+ mov QWORD[240+r8],r15\r
+\r
+ lea r10,[$L$epilogue]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ lea rsi,[((64+32))+rsi]\r
+ lea rdi,[512+r8]\r
+ mov ecx,8\r
+ DD 0xa548f3fc\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+ALIGN 16\r
+shaext_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ lea r10,[$L$prologue_shaext]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ lea r10,[$L$epilogue_shaext]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+\r
+ lea rsi,[((-8-80))+rax]\r
+ lea rdi,[512+r8]\r
+ mov ecx,10\r
+ DD 0xa548f3fc\r
+\r
+ jmp NEAR $L$in_prologue\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_sha256_block_data_order wrt ..imagebase\r
+ DD $L$SEH_end_sha256_block_data_order wrt ..imagebase\r
+ DD $L$SEH_info_sha256_block_data_order wrt ..imagebase\r
+ DD $L$SEH_begin_sha256_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_info_sha256_block_data_order_shaext wrt ..imagebase\r
+ DD $L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase\r
+ DD $L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase\r
+ DD $L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_sha256_block_data_order:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase\r
+$L$SEH_info_sha256_block_data_order_shaext:\r
+DB 9,0,0,0\r
+ DD shaext_handler wrt ..imagebase\r
+$L$SEH_info_sha256_block_data_order_ssse3:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/sha/asm/sha512-x86_64.pl\r
+;\r
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+section .text code align=64\r
+\r
+\r
+EXTERN OPENSSL_ia32cap_P\r
+global sha512_block_data_order\r
+\r
+ALIGN 16\r
+sha512_block_data_order:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_sha512_block_data_order:\r
+ mov rdi,rcx\r
+ mov rsi,rdx\r
+ mov rdx,r8\r
+\r
+\r
+\r
+ mov rax,rsp\r
+\r
+ push rbx\r
+\r
+ push rbp\r
+\r
+ push r12\r
+\r
+ push r13\r
+\r
+ push r14\r
+\r
+ push r15\r
+\r
+ shl rdx,4\r
+ sub rsp,16*8+4*8\r
+ lea rdx,[rdx*8+rsi]\r
+ and rsp,-64\r
+ mov QWORD[((128+0))+rsp],rdi\r
+ mov QWORD[((128+8))+rsp],rsi\r
+ mov QWORD[((128+16))+rsp],rdx\r
+ mov QWORD[152+rsp],rax\r
+\r
+$L$prologue:\r
+\r
+ mov rax,QWORD[rdi]\r
+ mov rbx,QWORD[8+rdi]\r
+ mov rcx,QWORD[16+rdi]\r
+ mov rdx,QWORD[24+rdi]\r
+ mov r8,QWORD[32+rdi]\r
+ mov r9,QWORD[40+rdi]\r
+ mov r10,QWORD[48+rdi]\r
+ mov r11,QWORD[56+rdi]\r
+ jmp NEAR $L$loop\r
+\r
+ALIGN 16\r
+$L$loop:\r
+ mov rdi,rbx\r
+ lea rbp,[K512]\r
+ xor rdi,rcx\r
+ mov r12,QWORD[rsi]\r
+ mov r13,r8\r
+ mov r14,rax\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,r9\r
+\r
+ xor r13,r8\r
+ ror r14,5\r
+ xor r15,r10\r
+\r
+ mov QWORD[rsp],r12\r
+ xor r14,rax\r
+ and r15,r8\r
+\r
+ ror r13,4\r
+ add r12,r11\r
+ xor r15,r10\r
+\r
+ ror r14,6\r
+ xor r13,r8\r
+ add r12,r15\r
+\r
+ mov r15,rax\r
+ add r12,QWORD[rbp]\r
+ xor r14,rax\r
+\r
+ xor r15,rbx\r
+ ror r13,14\r
+ mov r11,rbx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r11,rdi\r
+ add rdx,r12\r
+ add r11,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add r11,r14\r
+ mov r12,QWORD[8+rsi]\r
+ mov r13,rdx\r
+ mov r14,r11\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,r8\r
+\r
+ xor r13,rdx\r
+ ror r14,5\r
+ xor rdi,r9\r
+\r
+ mov QWORD[8+rsp],r12\r
+ xor r14,r11\r
+ and rdi,rdx\r
+\r
+ ror r13,4\r
+ add r12,r10\r
+ xor rdi,r9\r
+\r
+ ror r14,6\r
+ xor r13,rdx\r
+ add r12,rdi\r
+\r
+ mov rdi,r11\r
+ add r12,QWORD[rbp]\r
+ xor r14,r11\r
+\r
+ xor rdi,rax\r
+ ror r13,14\r
+ mov r10,rax\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r10,r15\r
+ add rcx,r12\r
+ add r10,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add r10,r14\r
+ mov r12,QWORD[16+rsi]\r
+ mov r13,rcx\r
+ mov r14,r10\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,rdx\r
+\r
+ xor r13,rcx\r
+ ror r14,5\r
+ xor r15,r8\r
+\r
+ mov QWORD[16+rsp],r12\r
+ xor r14,r10\r
+ and r15,rcx\r
+\r
+ ror r13,4\r
+ add r12,r9\r
+ xor r15,r8\r
+\r
+ ror r14,6\r
+ xor r13,rcx\r
+ add r12,r15\r
+\r
+ mov r15,r10\r
+ add r12,QWORD[rbp]\r
+ xor r14,r10\r
+\r
+ xor r15,r11\r
+ ror r13,14\r
+ mov r9,r11\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r9,rdi\r
+ add rbx,r12\r
+ add r9,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add r9,r14\r
+ mov r12,QWORD[24+rsi]\r
+ mov r13,rbx\r
+ mov r14,r9\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,rcx\r
+\r
+ xor r13,rbx\r
+ ror r14,5\r
+ xor rdi,rdx\r
+\r
+ mov QWORD[24+rsp],r12\r
+ xor r14,r9\r
+ and rdi,rbx\r
+\r
+ ror r13,4\r
+ add r12,r8\r
+ xor rdi,rdx\r
+\r
+ ror r14,6\r
+ xor r13,rbx\r
+ add r12,rdi\r
+\r
+ mov rdi,r9\r
+ add r12,QWORD[rbp]\r
+ xor r14,r9\r
+\r
+ xor rdi,r10\r
+ ror r13,14\r
+ mov r8,r10\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r8,r15\r
+ add rax,r12\r
+ add r8,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add r8,r14\r
+ mov r12,QWORD[32+rsi]\r
+ mov r13,rax\r
+ mov r14,r8\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,rbx\r
+\r
+ xor r13,rax\r
+ ror r14,5\r
+ xor r15,rcx\r
+\r
+ mov QWORD[32+rsp],r12\r
+ xor r14,r8\r
+ and r15,rax\r
+\r
+ ror r13,4\r
+ add r12,rdx\r
+ xor r15,rcx\r
+\r
+ ror r14,6\r
+ xor r13,rax\r
+ add r12,r15\r
+\r
+ mov r15,r8\r
+ add r12,QWORD[rbp]\r
+ xor r14,r8\r
+\r
+ xor r15,r9\r
+ ror r13,14\r
+ mov rdx,r9\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rdx,rdi\r
+ add r11,r12\r
+ add rdx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add rdx,r14\r
+ mov r12,QWORD[40+rsi]\r
+ mov r13,r11\r
+ mov r14,rdx\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,rax\r
+\r
+ xor r13,r11\r
+ ror r14,5\r
+ xor rdi,rbx\r
+\r
+ mov QWORD[40+rsp],r12\r
+ xor r14,rdx\r
+ and rdi,r11\r
+\r
+ ror r13,4\r
+ add r12,rcx\r
+ xor rdi,rbx\r
+\r
+ ror r14,6\r
+ xor r13,r11\r
+ add r12,rdi\r
+\r
+ mov rdi,rdx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rdx\r
+\r
+ xor rdi,r8\r
+ ror r13,14\r
+ mov rcx,r8\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rcx,r15\r
+ add r10,r12\r
+ add rcx,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add rcx,r14\r
+ mov r12,QWORD[48+rsi]\r
+ mov r13,r10\r
+ mov r14,rcx\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,r11\r
+\r
+ xor r13,r10\r
+ ror r14,5\r
+ xor r15,rax\r
+\r
+ mov QWORD[48+rsp],r12\r
+ xor r14,rcx\r
+ and r15,r10\r
+\r
+ ror r13,4\r
+ add r12,rbx\r
+ xor r15,rax\r
+\r
+ ror r14,6\r
+ xor r13,r10\r
+ add r12,r15\r
+\r
+ mov r15,rcx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rcx\r
+\r
+ xor r15,rdx\r
+ ror r13,14\r
+ mov rbx,rdx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rbx,rdi\r
+ add r9,r12\r
+ add rbx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add rbx,r14\r
+ mov r12,QWORD[56+rsi]\r
+ mov r13,r9\r
+ mov r14,rbx\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,r10\r
+\r
+ xor r13,r9\r
+ ror r14,5\r
+ xor rdi,r11\r
+\r
+ mov QWORD[56+rsp],r12\r
+ xor r14,rbx\r
+ and rdi,r9\r
+\r
+ ror r13,4\r
+ add r12,rax\r
+ xor rdi,r11\r
+\r
+ ror r14,6\r
+ xor r13,r9\r
+ add r12,rdi\r
+\r
+ mov rdi,rbx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rbx\r
+\r
+ xor rdi,rcx\r
+ ror r13,14\r
+ mov rax,rcx\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rax,r15\r
+ add r8,r12\r
+ add rax,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add rax,r14\r
+ mov r12,QWORD[64+rsi]\r
+ mov r13,r8\r
+ mov r14,rax\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,r9\r
+\r
+ xor r13,r8\r
+ ror r14,5\r
+ xor r15,r10\r
+\r
+ mov QWORD[64+rsp],r12\r
+ xor r14,rax\r
+ and r15,r8\r
+\r
+ ror r13,4\r
+ add r12,r11\r
+ xor r15,r10\r
+\r
+ ror r14,6\r
+ xor r13,r8\r
+ add r12,r15\r
+\r
+ mov r15,rax\r
+ add r12,QWORD[rbp]\r
+ xor r14,rax\r
+\r
+ xor r15,rbx\r
+ ror r13,14\r
+ mov r11,rbx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r11,rdi\r
+ add rdx,r12\r
+ add r11,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add r11,r14\r
+ mov r12,QWORD[72+rsi]\r
+ mov r13,rdx\r
+ mov r14,r11\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,r8\r
+\r
+ xor r13,rdx\r
+ ror r14,5\r
+ xor rdi,r9\r
+\r
+ mov QWORD[72+rsp],r12\r
+ xor r14,r11\r
+ and rdi,rdx\r
+\r
+ ror r13,4\r
+ add r12,r10\r
+ xor rdi,r9\r
+\r
+ ror r14,6\r
+ xor r13,rdx\r
+ add r12,rdi\r
+\r
+ mov rdi,r11\r
+ add r12,QWORD[rbp]\r
+ xor r14,r11\r
+\r
+ xor rdi,rax\r
+ ror r13,14\r
+ mov r10,rax\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r10,r15\r
+ add rcx,r12\r
+ add r10,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add r10,r14\r
+ mov r12,QWORD[80+rsi]\r
+ mov r13,rcx\r
+ mov r14,r10\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,rdx\r
+\r
+ xor r13,rcx\r
+ ror r14,5\r
+ xor r15,r8\r
+\r
+ mov QWORD[80+rsp],r12\r
+ xor r14,r10\r
+ and r15,rcx\r
+\r
+ ror r13,4\r
+ add r12,r9\r
+ xor r15,r8\r
+\r
+ ror r14,6\r
+ xor r13,rcx\r
+ add r12,r15\r
+\r
+ mov r15,r10\r
+ add r12,QWORD[rbp]\r
+ xor r14,r10\r
+\r
+ xor r15,r11\r
+ ror r13,14\r
+ mov r9,r11\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r9,rdi\r
+ add rbx,r12\r
+ add r9,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add r9,r14\r
+ mov r12,QWORD[88+rsi]\r
+ mov r13,rbx\r
+ mov r14,r9\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,rcx\r
+\r
+ xor r13,rbx\r
+ ror r14,5\r
+ xor rdi,rdx\r
+\r
+ mov QWORD[88+rsp],r12\r
+ xor r14,r9\r
+ and rdi,rbx\r
+\r
+ ror r13,4\r
+ add r12,r8\r
+ xor rdi,rdx\r
+\r
+ ror r14,6\r
+ xor r13,rbx\r
+ add r12,rdi\r
+\r
+ mov rdi,r9\r
+ add r12,QWORD[rbp]\r
+ xor r14,r9\r
+\r
+ xor rdi,r10\r
+ ror r13,14\r
+ mov r8,r10\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r8,r15\r
+ add rax,r12\r
+ add r8,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add r8,r14\r
+ mov r12,QWORD[96+rsi]\r
+ mov r13,rax\r
+ mov r14,r8\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,rbx\r
+\r
+ xor r13,rax\r
+ ror r14,5\r
+ xor r15,rcx\r
+\r
+ mov QWORD[96+rsp],r12\r
+ xor r14,r8\r
+ and r15,rax\r
+\r
+ ror r13,4\r
+ add r12,rdx\r
+ xor r15,rcx\r
+\r
+ ror r14,6\r
+ xor r13,rax\r
+ add r12,r15\r
+\r
+ mov r15,r8\r
+ add r12,QWORD[rbp]\r
+ xor r14,r8\r
+\r
+ xor r15,r9\r
+ ror r13,14\r
+ mov rdx,r9\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rdx,rdi\r
+ add r11,r12\r
+ add rdx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add rdx,r14\r
+ mov r12,QWORD[104+rsi]\r
+ mov r13,r11\r
+ mov r14,rdx\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,rax\r
+\r
+ xor r13,r11\r
+ ror r14,5\r
+ xor rdi,rbx\r
+\r
+ mov QWORD[104+rsp],r12\r
+ xor r14,rdx\r
+ and rdi,r11\r
+\r
+ ror r13,4\r
+ add r12,rcx\r
+ xor rdi,rbx\r
+\r
+ ror r14,6\r
+ xor r13,r11\r
+ add r12,rdi\r
+\r
+ mov rdi,rdx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rdx\r
+\r
+ xor rdi,r8\r
+ ror r13,14\r
+ mov rcx,r8\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rcx,r15\r
+ add r10,r12\r
+ add rcx,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ add rcx,r14\r
+ mov r12,QWORD[112+rsi]\r
+ mov r13,r10\r
+ mov r14,rcx\r
+ bswap r12\r
+ ror r13,23\r
+ mov r15,r11\r
+\r
+ xor r13,r10\r
+ ror r14,5\r
+ xor r15,rax\r
+\r
+ mov QWORD[112+rsp],r12\r
+ xor r14,rcx\r
+ and r15,r10\r
+\r
+ ror r13,4\r
+ add r12,rbx\r
+ xor r15,rax\r
+\r
+ ror r14,6\r
+ xor r13,r10\r
+ add r12,r15\r
+\r
+ mov r15,rcx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rcx\r
+\r
+ xor r15,rdx\r
+ ror r13,14\r
+ mov rbx,rdx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rbx,rdi\r
+ add r9,r12\r
+ add rbx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ add rbx,r14\r
+ mov r12,QWORD[120+rsi]\r
+ mov r13,r9\r
+ mov r14,rbx\r
+ bswap r12\r
+ ror r13,23\r
+ mov rdi,r10\r
+\r
+ xor r13,r9\r
+ ror r14,5\r
+ xor rdi,r11\r
+\r
+ mov QWORD[120+rsp],r12\r
+ xor r14,rbx\r
+ and rdi,r9\r
+\r
+ ror r13,4\r
+ add r12,rax\r
+ xor rdi,r11\r
+\r
+ ror r14,6\r
+ xor r13,r9\r
+ add r12,rdi\r
+\r
+ mov rdi,rbx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rbx\r
+\r
+ xor rdi,rcx\r
+ ror r13,14\r
+ mov rax,rcx\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rax,r15\r
+ add r8,r12\r
+ add rax,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ jmp NEAR $L$rounds_16_xx\r
+ALIGN 16\r
+$L$rounds_16_xx:\r
+ mov r13,QWORD[8+rsp]\r
+ mov r15,QWORD[112+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rax,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[72+rsp]\r
+\r
+ add r12,QWORD[rsp]\r
+ mov r13,r8\r
+ add r12,r15\r
+ mov r14,rax\r
+ ror r13,23\r
+ mov r15,r9\r
+\r
+ xor r13,r8\r
+ ror r14,5\r
+ xor r15,r10\r
+\r
+ mov QWORD[rsp],r12\r
+ xor r14,rax\r
+ and r15,r8\r
+\r
+ ror r13,4\r
+ add r12,r11\r
+ xor r15,r10\r
+\r
+ ror r14,6\r
+ xor r13,r8\r
+ add r12,r15\r
+\r
+ mov r15,rax\r
+ add r12,QWORD[rbp]\r
+ xor r14,rax\r
+\r
+ xor r15,rbx\r
+ ror r13,14\r
+ mov r11,rbx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r11,rdi\r
+ add rdx,r12\r
+ add r11,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[16+rsp]\r
+ mov rdi,QWORD[120+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r11,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[80+rsp]\r
+\r
+ add r12,QWORD[8+rsp]\r
+ mov r13,rdx\r
+ add r12,rdi\r
+ mov r14,r11\r
+ ror r13,23\r
+ mov rdi,r8\r
+\r
+ xor r13,rdx\r
+ ror r14,5\r
+ xor rdi,r9\r
+\r
+ mov QWORD[8+rsp],r12\r
+ xor r14,r11\r
+ and rdi,rdx\r
+\r
+ ror r13,4\r
+ add r12,r10\r
+ xor rdi,r9\r
+\r
+ ror r14,6\r
+ xor r13,rdx\r
+ add r12,rdi\r
+\r
+ mov rdi,r11\r
+ add r12,QWORD[rbp]\r
+ xor r14,r11\r
+\r
+ xor rdi,rax\r
+ ror r13,14\r
+ mov r10,rax\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r10,r15\r
+ add rcx,r12\r
+ add r10,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[24+rsp]\r
+ mov r15,QWORD[rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r10,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[88+rsp]\r
+\r
+ add r12,QWORD[16+rsp]\r
+ mov r13,rcx\r
+ add r12,r15\r
+ mov r14,r10\r
+ ror r13,23\r
+ mov r15,rdx\r
+\r
+ xor r13,rcx\r
+ ror r14,5\r
+ xor r15,r8\r
+\r
+ mov QWORD[16+rsp],r12\r
+ xor r14,r10\r
+ and r15,rcx\r
+\r
+ ror r13,4\r
+ add r12,r9\r
+ xor r15,r8\r
+\r
+ ror r14,6\r
+ xor r13,rcx\r
+ add r12,r15\r
+\r
+ mov r15,r10\r
+ add r12,QWORD[rbp]\r
+ xor r14,r10\r
+\r
+ xor r15,r11\r
+ ror r13,14\r
+ mov r9,r11\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r9,rdi\r
+ add rbx,r12\r
+ add r9,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[32+rsp]\r
+ mov rdi,QWORD[8+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r9,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[96+rsp]\r
+\r
+ add r12,QWORD[24+rsp]\r
+ mov r13,rbx\r
+ add r12,rdi\r
+ mov r14,r9\r
+ ror r13,23\r
+ mov rdi,rcx\r
+\r
+ xor r13,rbx\r
+ ror r14,5\r
+ xor rdi,rdx\r
+\r
+ mov QWORD[24+rsp],r12\r
+ xor r14,r9\r
+ and rdi,rbx\r
+\r
+ ror r13,4\r
+ add r12,r8\r
+ xor rdi,rdx\r
+\r
+ ror r14,6\r
+ xor r13,rbx\r
+ add r12,rdi\r
+\r
+ mov rdi,r9\r
+ add r12,QWORD[rbp]\r
+ xor r14,r9\r
+\r
+ xor rdi,r10\r
+ ror r13,14\r
+ mov r8,r10\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r8,r15\r
+ add rax,r12\r
+ add r8,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[40+rsp]\r
+ mov r15,QWORD[16+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r8,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[104+rsp]\r
+\r
+ add r12,QWORD[32+rsp]\r
+ mov r13,rax\r
+ add r12,r15\r
+ mov r14,r8\r
+ ror r13,23\r
+ mov r15,rbx\r
+\r
+ xor r13,rax\r
+ ror r14,5\r
+ xor r15,rcx\r
+\r
+ mov QWORD[32+rsp],r12\r
+ xor r14,r8\r
+ and r15,rax\r
+\r
+ ror r13,4\r
+ add r12,rdx\r
+ xor r15,rcx\r
+\r
+ ror r14,6\r
+ xor r13,rax\r
+ add r12,r15\r
+\r
+ mov r15,r8\r
+ add r12,QWORD[rbp]\r
+ xor r14,r8\r
+\r
+ xor r15,r9\r
+ ror r13,14\r
+ mov rdx,r9\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rdx,rdi\r
+ add r11,r12\r
+ add rdx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[48+rsp]\r
+ mov rdi,QWORD[24+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rdx,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[112+rsp]\r
+\r
+ add r12,QWORD[40+rsp]\r
+ mov r13,r11\r
+ add r12,rdi\r
+ mov r14,rdx\r
+ ror r13,23\r
+ mov rdi,rax\r
+\r
+ xor r13,r11\r
+ ror r14,5\r
+ xor rdi,rbx\r
+\r
+ mov QWORD[40+rsp],r12\r
+ xor r14,rdx\r
+ and rdi,r11\r
+\r
+ ror r13,4\r
+ add r12,rcx\r
+ xor rdi,rbx\r
+\r
+ ror r14,6\r
+ xor r13,r11\r
+ add r12,rdi\r
+\r
+ mov rdi,rdx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rdx\r
+\r
+ xor rdi,r8\r
+ ror r13,14\r
+ mov rcx,r8\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rcx,r15\r
+ add r10,r12\r
+ add rcx,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[56+rsp]\r
+ mov r15,QWORD[32+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rcx,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[120+rsp]\r
+\r
+ add r12,QWORD[48+rsp]\r
+ mov r13,r10\r
+ add r12,r15\r
+ mov r14,rcx\r
+ ror r13,23\r
+ mov r15,r11\r
+\r
+ xor r13,r10\r
+ ror r14,5\r
+ xor r15,rax\r
+\r
+ mov QWORD[48+rsp],r12\r
+ xor r14,rcx\r
+ and r15,r10\r
+\r
+ ror r13,4\r
+ add r12,rbx\r
+ xor r15,rax\r
+\r
+ ror r14,6\r
+ xor r13,r10\r
+ add r12,r15\r
+\r
+ mov r15,rcx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rcx\r
+\r
+ xor r15,rdx\r
+ ror r13,14\r
+ mov rbx,rdx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rbx,rdi\r
+ add r9,r12\r
+ add rbx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[64+rsp]\r
+ mov rdi,QWORD[40+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rbx,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[rsp]\r
+\r
+ add r12,QWORD[56+rsp]\r
+ mov r13,r9\r
+ add r12,rdi\r
+ mov r14,rbx\r
+ ror r13,23\r
+ mov rdi,r10\r
+\r
+ xor r13,r9\r
+ ror r14,5\r
+ xor rdi,r11\r
+\r
+ mov QWORD[56+rsp],r12\r
+ xor r14,rbx\r
+ and rdi,r9\r
+\r
+ ror r13,4\r
+ add r12,rax\r
+ xor rdi,r11\r
+\r
+ ror r14,6\r
+ xor r13,r9\r
+ add r12,rdi\r
+\r
+ mov rdi,rbx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rbx\r
+\r
+ xor rdi,rcx\r
+ ror r13,14\r
+ mov rax,rcx\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rax,r15\r
+ add r8,r12\r
+ add rax,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[72+rsp]\r
+ mov r15,QWORD[48+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rax,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[8+rsp]\r
+\r
+ add r12,QWORD[64+rsp]\r
+ mov r13,r8\r
+ add r12,r15\r
+ mov r14,rax\r
+ ror r13,23\r
+ mov r15,r9\r
+\r
+ xor r13,r8\r
+ ror r14,5\r
+ xor r15,r10\r
+\r
+ mov QWORD[64+rsp],r12\r
+ xor r14,rax\r
+ and r15,r8\r
+\r
+ ror r13,4\r
+ add r12,r11\r
+ xor r15,r10\r
+\r
+ ror r14,6\r
+ xor r13,r8\r
+ add r12,r15\r
+\r
+ mov r15,rax\r
+ add r12,QWORD[rbp]\r
+ xor r14,rax\r
+\r
+ xor r15,rbx\r
+ ror r13,14\r
+ mov r11,rbx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r11,rdi\r
+ add rdx,r12\r
+ add r11,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[80+rsp]\r
+ mov rdi,QWORD[56+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r11,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[16+rsp]\r
+\r
+ add r12,QWORD[72+rsp]\r
+ mov r13,rdx\r
+ add r12,rdi\r
+ mov r14,r11\r
+ ror r13,23\r
+ mov rdi,r8\r
+\r
+ xor r13,rdx\r
+ ror r14,5\r
+ xor rdi,r9\r
+\r
+ mov QWORD[72+rsp],r12\r
+ xor r14,r11\r
+ and rdi,rdx\r
+\r
+ ror r13,4\r
+ add r12,r10\r
+ xor rdi,r9\r
+\r
+ ror r14,6\r
+ xor r13,rdx\r
+ add r12,rdi\r
+\r
+ mov rdi,r11\r
+ add r12,QWORD[rbp]\r
+ xor r14,r11\r
+\r
+ xor rdi,rax\r
+ ror r13,14\r
+ mov r10,rax\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r10,r15\r
+ add rcx,r12\r
+ add r10,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[88+rsp]\r
+ mov r15,QWORD[64+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r10,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[24+rsp]\r
+\r
+ add r12,QWORD[80+rsp]\r
+ mov r13,rcx\r
+ add r12,r15\r
+ mov r14,r10\r
+ ror r13,23\r
+ mov r15,rdx\r
+\r
+ xor r13,rcx\r
+ ror r14,5\r
+ xor r15,r8\r
+\r
+ mov QWORD[80+rsp],r12\r
+ xor r14,r10\r
+ and r15,rcx\r
+\r
+ ror r13,4\r
+ add r12,r9\r
+ xor r15,r8\r
+\r
+ ror r14,6\r
+ xor r13,rcx\r
+ add r12,r15\r
+\r
+ mov r15,r10\r
+ add r12,QWORD[rbp]\r
+ xor r14,r10\r
+\r
+ xor r15,r11\r
+ ror r13,14\r
+ mov r9,r11\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r9,rdi\r
+ add rbx,r12\r
+ add r9,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[96+rsp]\r
+ mov rdi,QWORD[72+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r9,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[32+rsp]\r
+\r
+ add r12,QWORD[88+rsp]\r
+ mov r13,rbx\r
+ add r12,rdi\r
+ mov r14,r9\r
+ ror r13,23\r
+ mov rdi,rcx\r
+\r
+ xor r13,rbx\r
+ ror r14,5\r
+ xor rdi,rdx\r
+\r
+ mov QWORD[88+rsp],r12\r
+ xor r14,r9\r
+ and rdi,rbx\r
+\r
+ ror r13,4\r
+ add r12,r8\r
+ xor rdi,rdx\r
+\r
+ ror r14,6\r
+ xor r13,rbx\r
+ add r12,rdi\r
+\r
+ mov rdi,r9\r
+ add r12,QWORD[rbp]\r
+ xor r14,r9\r
+\r
+ xor rdi,r10\r
+ ror r13,14\r
+ mov r8,r10\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor r8,r15\r
+ add rax,r12\r
+ add r8,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[104+rsp]\r
+ mov r15,QWORD[80+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add r8,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[40+rsp]\r
+\r
+ add r12,QWORD[96+rsp]\r
+ mov r13,rax\r
+ add r12,r15\r
+ mov r14,r8\r
+ ror r13,23\r
+ mov r15,rbx\r
+\r
+ xor r13,rax\r
+ ror r14,5\r
+ xor r15,rcx\r
+\r
+ mov QWORD[96+rsp],r12\r
+ xor r14,r8\r
+ and r15,rax\r
+\r
+ ror r13,4\r
+ add r12,rdx\r
+ xor r15,rcx\r
+\r
+ ror r14,6\r
+ xor r13,rax\r
+ add r12,r15\r
+\r
+ mov r15,r8\r
+ add r12,QWORD[rbp]\r
+ xor r14,r8\r
+\r
+ xor r15,r9\r
+ ror r13,14\r
+ mov rdx,r9\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rdx,rdi\r
+ add r11,r12\r
+ add rdx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[112+rsp]\r
+ mov rdi,QWORD[88+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rdx,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[48+rsp]\r
+\r
+ add r12,QWORD[104+rsp]\r
+ mov r13,r11\r
+ add r12,rdi\r
+ mov r14,rdx\r
+ ror r13,23\r
+ mov rdi,rax\r
+\r
+ xor r13,r11\r
+ ror r14,5\r
+ xor rdi,rbx\r
+\r
+ mov QWORD[104+rsp],r12\r
+ xor r14,rdx\r
+ and rdi,r11\r
+\r
+ ror r13,4\r
+ add r12,rcx\r
+ xor rdi,rbx\r
+\r
+ ror r14,6\r
+ xor r13,r11\r
+ add r12,rdi\r
+\r
+ mov rdi,rdx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rdx\r
+\r
+ xor rdi,r8\r
+ ror r13,14\r
+ mov rcx,r8\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rcx,r15\r
+ add r10,r12\r
+ add rcx,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ mov r13,QWORD[120+rsp]\r
+ mov r15,QWORD[96+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rcx,r14\r
+ mov r14,r15\r
+ ror r15,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor r15,r14\r
+ shr r14,6\r
+\r
+ ror r15,19\r
+ xor r12,r13\r
+ xor r15,r14\r
+ add r12,QWORD[56+rsp]\r
+\r
+ add r12,QWORD[112+rsp]\r
+ mov r13,r10\r
+ add r12,r15\r
+ mov r14,rcx\r
+ ror r13,23\r
+ mov r15,r11\r
+\r
+ xor r13,r10\r
+ ror r14,5\r
+ xor r15,rax\r
+\r
+ mov QWORD[112+rsp],r12\r
+ xor r14,rcx\r
+ and r15,r10\r
+\r
+ ror r13,4\r
+ add r12,rbx\r
+ xor r15,rax\r
+\r
+ ror r14,6\r
+ xor r13,r10\r
+ add r12,r15\r
+\r
+ mov r15,rcx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rcx\r
+\r
+ xor r15,rdx\r
+ ror r13,14\r
+ mov rbx,rdx\r
+\r
+ and rdi,r15\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rbx,rdi\r
+ add r9,r12\r
+ add rbx,r12\r
+\r
+ lea rbp,[8+rbp]\r
+ mov r13,QWORD[rsp]\r
+ mov rdi,QWORD[104+rsp]\r
+\r
+ mov r12,r13\r
+ ror r13,7\r
+ add rbx,r14\r
+ mov r14,rdi\r
+ ror rdi,42\r
+\r
+ xor r13,r12\r
+ shr r12,7\r
+ ror r13,1\r
+ xor rdi,r14\r
+ shr r14,6\r
+\r
+ ror rdi,19\r
+ xor r12,r13\r
+ xor rdi,r14\r
+ add r12,QWORD[64+rsp]\r
+\r
+ add r12,QWORD[120+rsp]\r
+ mov r13,r9\r
+ add r12,rdi\r
+ mov r14,rbx\r
+ ror r13,23\r
+ mov rdi,r10\r
+\r
+ xor r13,r9\r
+ ror r14,5\r
+ xor rdi,r11\r
+\r
+ mov QWORD[120+rsp],r12\r
+ xor r14,rbx\r
+ and rdi,r9\r
+\r
+ ror r13,4\r
+ add r12,rax\r
+ xor rdi,r11\r
+\r
+ ror r14,6\r
+ xor r13,r9\r
+ add r12,rdi\r
+\r
+ mov rdi,rbx\r
+ add r12,QWORD[rbp]\r
+ xor r14,rbx\r
+\r
+ xor rdi,rcx\r
+ ror r13,14\r
+ mov rax,rcx\r
+\r
+ and r15,rdi\r
+ ror r14,28\r
+ add r12,r13\r
+\r
+ xor rax,r15\r
+ add r8,r12\r
+ add rax,r12\r
+\r
+ lea rbp,[24+rbp]\r
+ cmp BYTE[7+rbp],0\r
+ jnz NEAR $L$rounds_16_xx\r
+\r
+ mov rdi,QWORD[((128+0))+rsp]\r
+ add rax,r14\r
+ lea rsi,[128+rsi]\r
+\r
+ add rax,QWORD[rdi]\r
+ add rbx,QWORD[8+rdi]\r
+ add rcx,QWORD[16+rdi]\r
+ add rdx,QWORD[24+rdi]\r
+ add r8,QWORD[32+rdi]\r
+ add r9,QWORD[40+rdi]\r
+ add r10,QWORD[48+rdi]\r
+ add r11,QWORD[56+rdi]\r
+\r
+ cmp rsi,QWORD[((128+16))+rsp]\r
+\r
+ mov QWORD[rdi],rax\r
+ mov QWORD[8+rdi],rbx\r
+ mov QWORD[16+rdi],rcx\r
+ mov QWORD[24+rdi],rdx\r
+ mov QWORD[32+rdi],r8\r
+ mov QWORD[40+rdi],r9\r
+ mov QWORD[48+rdi],r10\r
+ mov QWORD[56+rdi],r11\r
+ jb NEAR $L$loop\r
+\r
+ mov rsi,QWORD[152+rsp]\r
+\r
+ mov r15,QWORD[((-48))+rsi]\r
+\r
+ mov r14,QWORD[((-40))+rsi]\r
+\r
+ mov r13,QWORD[((-32))+rsi]\r
+\r
+ mov r12,QWORD[((-24))+rsi]\r
+\r
+ mov rbp,QWORD[((-16))+rsi]\r
+\r
+ mov rbx,QWORD[((-8))+rsi]\r
+\r
+ lea rsp,[rsi]\r
+\r
+$L$epilogue:\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_sha512_block_data_order:\r
+ALIGN 64\r
+\r
+K512:\r
+ DQ 0x428a2f98d728ae22,0x7137449123ef65cd\r
+ DQ 0x428a2f98d728ae22,0x7137449123ef65cd\r
+ DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc\r
+ DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc\r
+ DQ 0x3956c25bf348b538,0x59f111f1b605d019\r
+ DQ 0x3956c25bf348b538,0x59f111f1b605d019\r
+ DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118\r
+ DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118\r
+ DQ 0xd807aa98a3030242,0x12835b0145706fbe\r
+ DQ 0xd807aa98a3030242,0x12835b0145706fbe\r
+ DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2\r
+ DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2\r
+ DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1\r
+ DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1\r
+ DQ 0x9bdc06a725c71235,0xc19bf174cf692694\r
+ DQ 0x9bdc06a725c71235,0xc19bf174cf692694\r
+ DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3\r
+ DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3\r
+ DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65\r
+ DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65\r
+ DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483\r
+ DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483\r
+ DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5\r
+ DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5\r
+ DQ 0x983e5152ee66dfab,0xa831c66d2db43210\r
+ DQ 0x983e5152ee66dfab,0xa831c66d2db43210\r
+ DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4\r
+ DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4\r
+ DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725\r
+ DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725\r
+ DQ 0x06ca6351e003826f,0x142929670a0e6e70\r
+ DQ 0x06ca6351e003826f,0x142929670a0e6e70\r
+ DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926\r
+ DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926\r
+ DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df\r
+ DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df\r
+ DQ 0x650a73548baf63de,0x766a0abb3c77b2a8\r
+ DQ 0x650a73548baf63de,0x766a0abb3c77b2a8\r
+ DQ 0x81c2c92e47edaee6,0x92722c851482353b\r
+ DQ 0x81c2c92e47edaee6,0x92722c851482353b\r
+ DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001\r
+ DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001\r
+ DQ 0xc24b8b70d0f89791,0xc76c51a30654be30\r
+ DQ 0xc24b8b70d0f89791,0xc76c51a30654be30\r
+ DQ 0xd192e819d6ef5218,0xd69906245565a910\r
+ DQ 0xd192e819d6ef5218,0xd69906245565a910\r
+ DQ 0xf40e35855771202a,0x106aa07032bbd1b8\r
+ DQ 0xf40e35855771202a,0x106aa07032bbd1b8\r
+ DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53\r
+ DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53\r
+ DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8\r
+ DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8\r
+ DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb\r
+ DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb\r
+ DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3\r
+ DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3\r
+ DQ 0x748f82ee5defb2fc,0x78a5636f43172f60\r
+ DQ 0x748f82ee5defb2fc,0x78a5636f43172f60\r
+ DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec\r
+ DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec\r
+ DQ 0x90befffa23631e28,0xa4506cebde82bde9\r
+ DQ 0x90befffa23631e28,0xa4506cebde82bde9\r
+ DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b\r
+ DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b\r
+ DQ 0xca273eceea26619c,0xd186b8c721c0c207\r
+ DQ 0xca273eceea26619c,0xd186b8c721c0c207\r
+ DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178\r
+ DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178\r
+ DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6\r
+ DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6\r
+ DQ 0x113f9804bef90dae,0x1b710b35131c471b\r
+ DQ 0x113f9804bef90dae,0x1b710b35131c471b\r
+ DQ 0x28db77f523047d84,0x32caab7b40c72493\r
+ DQ 0x28db77f523047d84,0x32caab7b40c72493\r
+ DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c\r
+ DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c\r
+ DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a\r
+ DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a\r
+ DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817\r
+ DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817\r
+\r
+ DQ 0x0001020304050607,0x08090a0b0c0d0e0f\r
+ DQ 0x0001020304050607,0x08090a0b0c0d0e0f\r
+DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97\r
+DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54\r
+DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121\r
+DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46\r
+DB 111,114,103,62,0\r
+EXTERN __imp_RtlVirtualUnwind\r
+\r
+ALIGN 16\r
+se_handler:\r
+ push rsi\r
+ push rdi\r
+ push rbx\r
+ push rbp\r
+ push r12\r
+ push r13\r
+ push r14\r
+ push r15\r
+ pushfq\r
+ sub rsp,64\r
+\r
+ mov rax,QWORD[120+r8]\r
+ mov rbx,QWORD[248+r8]\r
+\r
+ mov rsi,QWORD[8+r9]\r
+ mov r11,QWORD[56+r9]\r
+\r
+ mov r10d,DWORD[r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ mov rax,QWORD[152+r8]\r
+\r
+ mov r10d,DWORD[4+r11]\r
+ lea r10,[r10*1+rsi]\r
+ cmp rbx,r10\r
+ jae NEAR $L$in_prologue\r
+ mov rsi,rax\r
+ mov rax,QWORD[((128+24))+rax]\r
+\r
+ mov rbx,QWORD[((-8))+rax]\r
+ mov rbp,QWORD[((-16))+rax]\r
+ mov r12,QWORD[((-24))+rax]\r
+ mov r13,QWORD[((-32))+rax]\r
+ mov r14,QWORD[((-40))+rax]\r
+ mov r15,QWORD[((-48))+rax]\r
+ mov QWORD[144+r8],rbx\r
+ mov QWORD[160+r8],rbp\r
+ mov QWORD[216+r8],r12\r
+ mov QWORD[224+r8],r13\r
+ mov QWORD[232+r8],r14\r
+ mov QWORD[240+r8],r15\r
+\r
+ lea r10,[$L$epilogue]\r
+ cmp rbx,r10\r
+ jb NEAR $L$in_prologue\r
+\r
+ lea rsi,[((128+32))+rsi]\r
+ lea rdi,[512+r8]\r
+ mov ecx,12\r
+ DD 0xa548f3fc\r
+\r
+$L$in_prologue:\r
+ mov rdi,QWORD[8+rax]\r
+ mov rsi,QWORD[16+rax]\r
+ mov QWORD[152+r8],rax\r
+ mov QWORD[168+r8],rsi\r
+ mov QWORD[176+r8],rdi\r
+\r
+ mov rdi,QWORD[40+r9]\r
+ mov rsi,r8\r
+ mov ecx,154\r
+ DD 0xa548f3fc\r
+\r
+ mov rsi,r9\r
+ xor rcx,rcx\r
+ mov rdx,QWORD[8+rsi]\r
+ mov r8,QWORD[rsi]\r
+ mov r9,QWORD[16+rsi]\r
+ mov r10,QWORD[40+rsi]\r
+ lea r11,[56+rsi]\r
+ lea r12,[24+rsi]\r
+ mov QWORD[32+rsp],r10\r
+ mov QWORD[40+rsp],r11\r
+ mov QWORD[48+rsp],r12\r
+ mov QWORD[56+rsp],rcx\r
+ call QWORD[__imp_RtlVirtualUnwind]\r
+\r
+ mov eax,1\r
+ add rsp,64\r
+ popfq\r
+ pop r15\r
+ pop r14\r
+ pop r13\r
+ pop r12\r
+ pop rbp\r
+ pop rbx\r
+ pop rdi\r
+ pop rsi\r
+ DB 0F3h,0C3h ;repret\r
+\r
+section .pdata rdata align=4\r
+ALIGN 4\r
+ DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase\r
+ DD $L$SEH_end_sha512_block_data_order wrt ..imagebase\r
+ DD $L$SEH_info_sha512_block_data_order wrt ..imagebase\r
+section .xdata rdata align=8\r
+ALIGN 8\r
+$L$SEH_info_sha512_block_data_order:\r
+DB 9,0,0,0\r
+ DD se_handler wrt ..imagebase\r
+ DD $L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase\r
--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/x86_64cpuid.pl\r
+;\r
+; Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+default rel\r
+%define XMMWORD\r
+%define YMMWORD\r
+%define ZMMWORD\r
+EXTERN OPENSSL_cpuid_setup\r
+\r
+section .CRT$XCU rdata align=8\r
+ DQ OPENSSL_cpuid_setup\r
+\r
+\r
+common OPENSSL_ia32cap_P 16\r
+\r
+section .text code align=64\r
+\r
+\r
+global OPENSSL_atomic_add\r
+\r
+ALIGN 16\r
+OPENSSL_atomic_add:\r
+\r
+ mov eax,DWORD[rcx]\r
+$L$spin: lea r8,[rax*1+rdx]\r
+DB 0xf0\r
+ cmpxchg DWORD[rcx],r8d\r
+ jne NEAR $L$spin\r
+ mov eax,r8d\r
+DB 0x48,0x98\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global OPENSSL_rdtsc\r
+\r
+ALIGN 16\r
+OPENSSL_rdtsc:\r
+\r
+ rdtsc\r
+ shl rdx,32\r
+ or rax,rdx\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global OPENSSL_ia32_cpuid\r
+\r
+ALIGN 16\r
+OPENSSL_ia32_cpuid:\r
+ mov QWORD[8+rsp],rdi ;WIN64 prologue\r
+ mov QWORD[16+rsp],rsi\r
+ mov rax,rsp\r
+$L$SEH_begin_OPENSSL_ia32_cpuid:\r
+ mov rdi,rcx\r
+\r
+\r
+\r
+ mov r8,rbx\r
+\r
+\r
+ xor eax,eax\r
+ mov QWORD[8+rdi],rax\r
+ cpuid\r
+ mov r11d,eax\r
+\r
+ xor eax,eax\r
+ cmp ebx,0x756e6547\r
+ setne al\r
+ mov r9d,eax\r
+ cmp edx,0x49656e69\r
+ setne al\r
+ or r9d,eax\r
+ cmp ecx,0x6c65746e\r
+ setne al\r
+ or r9d,eax\r
+ jz NEAR $L$intel\r
+\r
+ cmp ebx,0x68747541\r
+ setne al\r
+ mov r10d,eax\r
+ cmp edx,0x69746E65\r
+ setne al\r
+ or r10d,eax\r
+ cmp ecx,0x444D4163\r
+ setne al\r
+ or r10d,eax\r
+ jnz NEAR $L$intel\r
+\r
+\r
+ mov eax,0x80000000\r
+ cpuid\r
+ cmp eax,0x80000001\r
+ jb NEAR $L$intel\r
+ mov r10d,eax\r
+ mov eax,0x80000001\r
+ cpuid\r
+ or r9d,ecx\r
+ and r9d,0x00000801\r
+\r
+ cmp r10d,0x80000008\r
+ jb NEAR $L$intel\r
+\r
+ mov eax,0x80000008\r
+ cpuid\r
+ movzx r10,cl\r
+ inc r10\r
+\r
+ mov eax,1\r
+ cpuid\r
+ bt edx,28\r
+ jnc NEAR $L$generic\r
+ shr ebx,16\r
+ cmp bl,r10b\r
+ ja NEAR $L$generic\r
+ and edx,0xefffffff\r
+ jmp NEAR $L$generic\r
+\r
+$L$intel:\r
+ cmp r11d,4\r
+ mov r10d,-1\r
+ jb NEAR $L$nocacheinfo\r
+\r
+ mov eax,4\r
+ mov ecx,0\r
+ cpuid\r
+ mov r10d,eax\r
+ shr r10d,14\r
+ and r10d,0xfff\r
+\r
+$L$nocacheinfo:\r
+ mov eax,1\r
+ cpuid\r
+ movd xmm0,eax\r
+ and edx,0xbfefffff\r
+ cmp r9d,0\r
+ jne NEAR $L$notintel\r
+ or edx,0x40000000\r
+ and ah,15\r
+ cmp ah,15\r
+ jne NEAR $L$notP4\r
+ or edx,0x00100000\r
+$L$notP4:\r
+ cmp ah,6\r
+ jne NEAR $L$notintel\r
+ and eax,0x0fff0ff0\r
+ cmp eax,0x00050670\r
+ je NEAR $L$knights\r
+ cmp eax,0x00080650\r
+ jne NEAR $L$notintel\r
+$L$knights:\r
+ and ecx,0xfbffffff\r
+\r
+$L$notintel:\r
+ bt edx,28\r
+ jnc NEAR $L$generic\r
+ and edx,0xefffffff\r
+ cmp r10d,0\r
+ je NEAR $L$generic\r
+\r
+ or edx,0x10000000\r
+ shr ebx,16\r
+ cmp bl,1\r
+ ja NEAR $L$generic\r
+ and edx,0xefffffff\r
+$L$generic:\r
+ and r9d,0x00000800\r
+ and ecx,0xfffff7ff\r
+ or r9d,ecx\r
+\r
+ mov r10d,edx\r
+\r
+ cmp r11d,7\r
+ jb NEAR $L$no_extended_info\r
+ mov eax,7\r
+ xor ecx,ecx\r
+ cpuid\r
+ bt r9d,26\r
+ jc NEAR $L$notknights\r
+ and ebx,0xfff7ffff\r
+$L$notknights:\r
+ movd eax,xmm0\r
+ and eax,0x0fff0ff0\r
+ cmp eax,0x00050650\r
+ jne NEAR $L$notskylakex\r
+ and ebx,0xfffeffff\r
+\r
+$L$notskylakex:\r
+ mov DWORD[8+rdi],ebx\r
+ mov DWORD[12+rdi],ecx\r
+$L$no_extended_info:\r
+\r
+ bt r9d,27\r
+ jnc NEAR $L$clear_avx\r
+ xor ecx,ecx\r
+DB 0x0f,0x01,0xd0\r
+ and eax,0xe6\r
+ cmp eax,0xe6\r
+ je NEAR $L$done\r
+ and DWORD[8+rdi],0x3fdeffff\r
+\r
+\r
+\r
+\r
+ and eax,6\r
+ cmp eax,6\r
+ je NEAR $L$done\r
+$L$clear_avx:\r
+ mov eax,0xefffe7ff\r
+ and r9d,eax\r
+ mov eax,0x3fdeffdf\r
+ and DWORD[8+rdi],eax\r
+$L$done:\r
+ shl r9,32\r
+ mov eax,r10d\r
+ mov rbx,r8\r
+\r
+ or rax,r9\r
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue\r
+ mov rsi,QWORD[16+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+$L$SEH_end_OPENSSL_ia32_cpuid:\r
+\r
+global OPENSSL_cleanse\r
+\r
+ALIGN 16\r
+OPENSSL_cleanse:\r
+\r
+ xor rax,rax\r
+ cmp rdx,15\r
+ jae NEAR $L$ot\r
+ cmp rdx,0\r
+ je NEAR $L$ret\r
+$L$ittle:\r
+ mov BYTE[rcx],al\r
+ sub rdx,1\r
+ lea rcx,[1+rcx]\r
+ jnz NEAR $L$ittle\r
+$L$ret:\r
+ DB 0F3h,0C3h ;repret\r
+ALIGN 16\r
+$L$ot:\r
+ test rcx,7\r
+ jz NEAR $L$aligned\r
+ mov BYTE[rcx],al\r
+ lea rdx,[((-1))+rdx]\r
+ lea rcx,[1+rcx]\r
+ jmp NEAR $L$ot\r
+$L$aligned:\r
+ mov QWORD[rcx],rax\r
+ lea rdx,[((-8))+rdx]\r
+ test rdx,-8\r
+ lea rcx,[8+rcx]\r
+ jnz NEAR $L$aligned\r
+ cmp rdx,0\r
+ jne NEAR $L$ittle\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global CRYPTO_memcmp\r
+\r
+ALIGN 16\r
+CRYPTO_memcmp:\r
+\r
+ xor rax,rax\r
+ xor r10,r10\r
+ cmp r8,0\r
+ je NEAR $L$no_data\r
+ cmp r8,16\r
+ jne NEAR $L$oop_cmp\r
+ mov r10,QWORD[rcx]\r
+ mov r11,QWORD[8+rcx]\r
+ mov r8,1\r
+ xor r10,QWORD[rdx]\r
+ xor r11,QWORD[8+rdx]\r
+ or r10,r11\r
+ cmovnz rax,r8\r
+ DB 0F3h,0C3h ;repret\r
+\r
+ALIGN 16\r
+$L$oop_cmp:\r
+ mov r10b,BYTE[rcx]\r
+ lea rcx,[1+rcx]\r
+ xor r10b,BYTE[rdx]\r
+ lea rdx,[1+rdx]\r
+ or al,r10b\r
+ dec r8\r
+ jnz NEAR $L$oop_cmp\r
+ neg rax\r
+ shr rax,63\r
+$L$no_data:\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global OPENSSL_wipe_cpu\r
+\r
+ALIGN 16\r
+OPENSSL_wipe_cpu:\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ xor rcx,rcx\r
+ xor rdx,rdx\r
+ xor r8,r8\r
+ xor r9,r9\r
+ xor r10,r10\r
+ xor r11,r11\r
+ lea rax,[8+rsp]\r
+ DB 0F3h,0C3h ;repret\r
+\r
+global OPENSSL_instrument_bus\r
+\r
+ALIGN 16\r
+OPENSSL_instrument_bus:\r
+\r
+ mov r10,rcx\r
+ mov rcx,rdx\r
+ mov r11,rdx\r
+\r
+ rdtsc\r
+ mov r8d,eax\r
+ mov r9d,0\r
+ clflush [r10]\r
+DB 0xf0\r
+ add DWORD[r10],r9d\r
+ jmp NEAR $L$oop\r
+ALIGN 16\r
+$L$oop: rdtsc\r
+ mov edx,eax\r
+ sub eax,r8d\r
+ mov r8d,edx\r
+ mov r9d,eax\r
+ clflush [r10]\r
+DB 0xf0\r
+ add DWORD[r10],eax\r
+ lea r10,[4+r10]\r
+ sub rcx,1\r
+ jnz NEAR $L$oop\r
+\r
+ mov rax,r11\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+\r
+global OPENSSL_instrument_bus2\r
+\r
+ALIGN 16\r
+OPENSSL_instrument_bus2:\r
+\r
+ mov r10,rcx\r
+ mov rcx,rdx\r
+ mov r11,r8\r
+ mov QWORD[8+rsp],rcx\r
+\r
+ rdtsc\r
+ mov r8d,eax\r
+ mov r9d,0\r
+\r
+ clflush [r10]\r
+DB 0xf0\r
+ add DWORD[r10],r9d\r
+\r
+ rdtsc\r
+ mov edx,eax\r
+ sub eax,r8d\r
+ mov r8d,edx\r
+ mov r9d,eax\r
+$L$oop2:\r
+ clflush [r10]\r
+DB 0xf0\r
+ add DWORD[r10],eax\r
+\r
+ sub r11,1\r
+ jz NEAR $L$done2\r
+\r
+ rdtsc\r
+ mov edx,eax\r
+ sub eax,r8d\r
+ mov r8d,edx\r
+ cmp eax,r9d\r
+ mov r9d,eax\r
+ mov edx,0\r
+ setne dl\r
+ sub rcx,rdx\r
+ lea r10,[rdx*4+r10]\r
+ jnz NEAR $L$oop2\r
+\r
+$L$done2:\r
+ mov rax,QWORD[8+rsp]\r
+ sub rax,rcx\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global OPENSSL_ia32_rdrand_bytes\r
+\r
+ALIGN 16\r
+OPENSSL_ia32_rdrand_bytes:\r
+\r
+ xor rax,rax\r
+ cmp rdx,0\r
+ je NEAR $L$done_rdrand_bytes\r
+\r
+ mov r11,8\r
+$L$oop_rdrand_bytes:\r
+DB 73,15,199,242\r
+ jc NEAR $L$break_rdrand_bytes\r
+ dec r11\r
+ jnz NEAR $L$oop_rdrand_bytes\r
+ jmp NEAR $L$done_rdrand_bytes\r
+\r
+ALIGN 16\r
+$L$break_rdrand_bytes:\r
+ cmp rdx,8\r
+ jb NEAR $L$tail_rdrand_bytes\r
+ mov QWORD[rcx],r10\r
+ lea rcx,[8+rcx]\r
+ add rax,8\r
+ sub rdx,8\r
+ jz NEAR $L$done_rdrand_bytes\r
+ mov r11,8\r
+ jmp NEAR $L$oop_rdrand_bytes\r
+\r
+ALIGN 16\r
+$L$tail_rdrand_bytes:\r
+ mov BYTE[rcx],r10b\r
+ lea rcx,[1+rcx]\r
+ inc rax\r
+ shr r10,8\r
+ dec rdx\r
+ jnz NEAR $L$tail_rdrand_bytes\r
+\r
+$L$done_rdrand_bytes:\r
+ xor r10,r10\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
+global OPENSSL_ia32_rdseed_bytes\r
+\r
+ALIGN 16\r
+OPENSSL_ia32_rdseed_bytes:\r
+\r
+ xor rax,rax\r
+ cmp rdx,0\r
+ je NEAR $L$done_rdseed_bytes\r
+\r
+ mov r11,8\r
+$L$oop_rdseed_bytes:\r
+DB 73,15,199,250\r
+ jc NEAR $L$break_rdseed_bytes\r
+ dec r11\r
+ jnz NEAR $L$oop_rdseed_bytes\r
+ jmp NEAR $L$done_rdseed_bytes\r
+\r
+ALIGN 16\r
+$L$break_rdseed_bytes:\r
+ cmp rdx,8\r
+ jb NEAR $L$tail_rdseed_bytes\r
+ mov QWORD[rcx],r10\r
+ lea rcx,[8+rcx]\r
+ add rax,8\r
+ sub rdx,8\r
+ jz NEAR $L$done_rdseed_bytes\r
+ mov r11,8\r
+ jmp NEAR $L$oop_rdseed_bytes\r
+\r
+ALIGN 16\r
+$L$tail_rdseed_bytes:\r
+ mov BYTE[rcx],r10b\r
+ lea rcx,[1+rcx]\r
+ inc rax\r
+ shr r10,8\r
+ dec rdx\r
+ jnz NEAR $L$tail_rdseed_bytes\r
+\r
+$L$done_rdseed_bytes:\r
+ xor r10,r10\r
+ DB 0F3h,0C3h ;repret\r
+\r
+\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/aesni-mb-x86_64.pl\r
+#\r
+# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+\r
+.globl aesni_multi_cbc_encrypt\r
+.type aesni_multi_cbc_encrypt,@function\r
+.align 32\r
+aesni_multi_cbc_encrypt:\r
+.cfi_startproc\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_offset %r15,-56\r
+\r
+\r
+\r
+\r
+\r
+\r
+ subq $48,%rsp\r
+ andq $-64,%rsp\r
+ movq %rax,16(%rsp)\r
+.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08\r
+\r
+.Lenc4x_body:\r
+ movdqu (%rsi),%xmm12\r
+ leaq 120(%rsi),%rsi\r
+ leaq 80(%rdi),%rdi\r
+\r
+.Lenc4x_loop_grande:\r
+ movl %edx,24(%rsp)\r
+ xorl %edx,%edx\r
+ movl -64(%rdi),%ecx\r
+ movq -80(%rdi),%r8\r
+ cmpl %edx,%ecx\r
+ movq -72(%rdi),%r12\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu -56(%rdi),%xmm2\r
+ movl %ecx,32(%rsp)\r
+ cmovleq %rsp,%r8\r
+ movl -24(%rdi),%ecx\r
+ movq -40(%rdi),%r9\r
+ cmpl %edx,%ecx\r
+ movq -32(%rdi),%r13\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu -16(%rdi),%xmm3\r
+ movl %ecx,36(%rsp)\r
+ cmovleq %rsp,%r9\r
+ movl 16(%rdi),%ecx\r
+ movq 0(%rdi),%r10\r
+ cmpl %edx,%ecx\r
+ movq 8(%rdi),%r14\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu 24(%rdi),%xmm4\r
+ movl %ecx,40(%rsp)\r
+ cmovleq %rsp,%r10\r
+ movl 56(%rdi),%ecx\r
+ movq 40(%rdi),%r11\r
+ cmpl %edx,%ecx\r
+ movq 48(%rdi),%r15\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu 64(%rdi),%xmm5\r
+ movl %ecx,44(%rsp)\r
+ cmovleq %rsp,%r11\r
+ testl %edx,%edx\r
+ jz .Lenc4x_done\r
+\r
+ movups 16-120(%rsi),%xmm1\r
+ pxor %xmm12,%xmm2\r
+ movups 32-120(%rsi),%xmm0\r
+ pxor %xmm12,%xmm3\r
+ movl 240-120(%rsi),%eax\r
+ pxor %xmm12,%xmm4\r
+ movdqu (%r8),%xmm6\r
+ pxor %xmm12,%xmm5\r
+ movdqu (%r9),%xmm7\r
+ pxor %xmm6,%xmm2\r
+ movdqu (%r10),%xmm8\r
+ pxor %xmm7,%xmm3\r
+ movdqu (%r11),%xmm9\r
+ pxor %xmm8,%xmm4\r
+ pxor %xmm9,%xmm5\r
+ movdqa 32(%rsp),%xmm10\r
+ xorq %rbx,%rbx\r
+ jmp .Loop_enc4x\r
+\r
+.align 32\r
+.Loop_enc4x:\r
+ addq $16,%rbx\r
+ leaq 16(%rsp),%rbp\r
+ movl $1,%ecx\r
+ subq %rbx,%rbp\r
+\r
+.byte 102,15,56,220,209\r
+ prefetcht0 31(%r8,%rbx,1)\r
+ prefetcht0 31(%r9,%rbx,1)\r
+.byte 102,15,56,220,217\r
+ prefetcht0 31(%r10,%rbx,1)\r
+ prefetcht0 31(%r10,%rbx,1)\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 48-120(%rsi),%xmm1\r
+ cmpl 32(%rsp),%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+ cmovgeq %rbp,%r8\r
+ cmovgq %rbp,%r12\r
+.byte 102,15,56,220,232\r
+ movups -56(%rsi),%xmm0\r
+ cmpl 36(%rsp),%ecx\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+ cmovgeq %rbp,%r9\r
+ cmovgq %rbp,%r13\r
+.byte 102,15,56,220,233\r
+ movups -40(%rsi),%xmm1\r
+ cmpl 40(%rsp),%ecx\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+ cmovgeq %rbp,%r10\r
+ cmovgq %rbp,%r14\r
+.byte 102,15,56,220,232\r
+ movups -24(%rsi),%xmm0\r
+ cmpl 44(%rsp),%ecx\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+ cmovgeq %rbp,%r11\r
+ cmovgq %rbp,%r15\r
+.byte 102,15,56,220,233\r
+ movups -8(%rsi),%xmm1\r
+ movdqa %xmm10,%xmm11\r
+.byte 102,15,56,220,208\r
+ prefetcht0 15(%r12,%rbx,1)\r
+ prefetcht0 15(%r13,%rbx,1)\r
+.byte 102,15,56,220,216\r
+ prefetcht0 15(%r14,%rbx,1)\r
+ prefetcht0 15(%r15,%rbx,1)\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups 128-120(%rsi),%xmm0\r
+ pxor %xmm12,%xmm12\r
+\r
+.byte 102,15,56,220,209\r
+ pcmpgtd %xmm12,%xmm11\r
+ movdqu -120(%rsi),%xmm12\r
+.byte 102,15,56,220,217\r
+ paddd %xmm11,%xmm10\r
+ movdqa %xmm10,32(%rsp)\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 144-120(%rsi),%xmm1\r
+\r
+ cmpl $11,%eax\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups 160-120(%rsi),%xmm0\r
+\r
+ jb .Lenc4x_tail\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 176-120(%rsi),%xmm1\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups 192-120(%rsi),%xmm0\r
+\r
+ je .Lenc4x_tail\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 208-120(%rsi),%xmm1\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups 224-120(%rsi),%xmm0\r
+ jmp .Lenc4x_tail\r
+\r
+.align 32\r
+.Lenc4x_tail:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movdqu (%r8,%rbx,1),%xmm6\r
+ movdqu 16-120(%rsi),%xmm1\r
+\r
+.byte 102,15,56,221,208\r
+ movdqu (%r9,%rbx,1),%xmm7\r
+ pxor %xmm12,%xmm6\r
+.byte 102,15,56,221,216\r
+ movdqu (%r10,%rbx,1),%xmm8\r
+ pxor %xmm12,%xmm7\r
+.byte 102,15,56,221,224\r
+ movdqu (%r11,%rbx,1),%xmm9\r
+ pxor %xmm12,%xmm8\r
+.byte 102,15,56,221,232\r
+ movdqu 32-120(%rsi),%xmm0\r
+ pxor %xmm12,%xmm9\r
+\r
+ movups %xmm2,-16(%r12,%rbx,1)\r
+ pxor %xmm6,%xmm2\r
+ movups %xmm3,-16(%r13,%rbx,1)\r
+ pxor %xmm7,%xmm3\r
+ movups %xmm4,-16(%r14,%rbx,1)\r
+ pxor %xmm8,%xmm4\r
+ movups %xmm5,-16(%r15,%rbx,1)\r
+ pxor %xmm9,%xmm5\r
+\r
+ decl %edx\r
+ jnz .Loop_enc4x\r
+\r
+ movq 16(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movl 24(%rsp),%edx\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+ leaq 160(%rdi),%rdi\r
+ decl %edx\r
+ jnz .Lenc4x_loop_grande\r
+\r
+.Lenc4x_done:\r
+ movq -48(%rax),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rax),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rax),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rax),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lenc4x_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_multi_cbc_encrypt,.-aesni_multi_cbc_encrypt\r
+\r
+.globl aesni_multi_cbc_decrypt\r
+.type aesni_multi_cbc_decrypt,@function\r
+.align 32\r
+aesni_multi_cbc_decrypt:\r
+.cfi_startproc\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_offset %r15,-56\r
+\r
+\r
+\r
+\r
+\r
+\r
+ subq $48,%rsp\r
+ andq $-64,%rsp\r
+ movq %rax,16(%rsp)\r
+.cfi_escape 0x0f,0x05,0x77,0x10,0x06,0x23,0x08\r
+\r
+.Ldec4x_body:\r
+ movdqu (%rsi),%xmm12\r
+ leaq 120(%rsi),%rsi\r
+ leaq 80(%rdi),%rdi\r
+\r
+.Ldec4x_loop_grande:\r
+ movl %edx,24(%rsp)\r
+ xorl %edx,%edx\r
+ movl -64(%rdi),%ecx\r
+ movq -80(%rdi),%r8\r
+ cmpl %edx,%ecx\r
+ movq -72(%rdi),%r12\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu -56(%rdi),%xmm6\r
+ movl %ecx,32(%rsp)\r
+ cmovleq %rsp,%r8\r
+ movl -24(%rdi),%ecx\r
+ movq -40(%rdi),%r9\r
+ cmpl %edx,%ecx\r
+ movq -32(%rdi),%r13\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu -16(%rdi),%xmm7\r
+ movl %ecx,36(%rsp)\r
+ cmovleq %rsp,%r9\r
+ movl 16(%rdi),%ecx\r
+ movq 0(%rdi),%r10\r
+ cmpl %edx,%ecx\r
+ movq 8(%rdi),%r14\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu 24(%rdi),%xmm8\r
+ movl %ecx,40(%rsp)\r
+ cmovleq %rsp,%r10\r
+ movl 56(%rdi),%ecx\r
+ movq 40(%rdi),%r11\r
+ cmpl %edx,%ecx\r
+ movq 48(%rdi),%r15\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movdqu 64(%rdi),%xmm9\r
+ movl %ecx,44(%rsp)\r
+ cmovleq %rsp,%r11\r
+ testl %edx,%edx\r
+ jz .Ldec4x_done\r
+\r
+ movups 16-120(%rsi),%xmm1\r
+ movups 32-120(%rsi),%xmm0\r
+ movl 240-120(%rsi),%eax\r
+ movdqu (%r8),%xmm2\r
+ movdqu (%r9),%xmm3\r
+ pxor %xmm12,%xmm2\r
+ movdqu (%r10),%xmm4\r
+ pxor %xmm12,%xmm3\r
+ movdqu (%r11),%xmm5\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm12,%xmm5\r
+ movdqa 32(%rsp),%xmm10\r
+ xorq %rbx,%rbx\r
+ jmp .Loop_dec4x\r
+\r
+.align 32\r
+.Loop_dec4x:\r
+ addq $16,%rbx\r
+ leaq 16(%rsp),%rbp\r
+ movl $1,%ecx\r
+ subq %rbx,%rbp\r
+\r
+.byte 102,15,56,222,209\r
+ prefetcht0 31(%r8,%rbx,1)\r
+ prefetcht0 31(%r9,%rbx,1)\r
+.byte 102,15,56,222,217\r
+ prefetcht0 31(%r10,%rbx,1)\r
+ prefetcht0 31(%r11,%rbx,1)\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 48-120(%rsi),%xmm1\r
+ cmpl 32(%rsp),%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+ cmovgeq %rbp,%r8\r
+ cmovgq %rbp,%r12\r
+.byte 102,15,56,222,232\r
+ movups -56(%rsi),%xmm0\r
+ cmpl 36(%rsp),%ecx\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+ cmovgeq %rbp,%r9\r
+ cmovgq %rbp,%r13\r
+.byte 102,15,56,222,233\r
+ movups -40(%rsi),%xmm1\r
+ cmpl 40(%rsp),%ecx\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+ cmovgeq %rbp,%r10\r
+ cmovgq %rbp,%r14\r
+.byte 102,15,56,222,232\r
+ movups -24(%rsi),%xmm0\r
+ cmpl 44(%rsp),%ecx\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+ cmovgeq %rbp,%r11\r
+ cmovgq %rbp,%r15\r
+.byte 102,15,56,222,233\r
+ movups -8(%rsi),%xmm1\r
+ movdqa %xmm10,%xmm11\r
+.byte 102,15,56,222,208\r
+ prefetcht0 15(%r12,%rbx,1)\r
+ prefetcht0 15(%r13,%rbx,1)\r
+.byte 102,15,56,222,216\r
+ prefetcht0 15(%r14,%rbx,1)\r
+ prefetcht0 15(%r15,%rbx,1)\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups 128-120(%rsi),%xmm0\r
+ pxor %xmm12,%xmm12\r
+\r
+.byte 102,15,56,222,209\r
+ pcmpgtd %xmm12,%xmm11\r
+ movdqu -120(%rsi),%xmm12\r
+.byte 102,15,56,222,217\r
+ paddd %xmm11,%xmm10\r
+ movdqa %xmm10,32(%rsp)\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 144-120(%rsi),%xmm1\r
+\r
+ cmpl $11,%eax\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups 160-120(%rsi),%xmm0\r
+\r
+ jb .Ldec4x_tail\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 176-120(%rsi),%xmm1\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups 192-120(%rsi),%xmm0\r
+\r
+ je .Ldec4x_tail\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 208-120(%rsi),%xmm1\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups 224-120(%rsi),%xmm0\r
+ jmp .Ldec4x_tail\r
+\r
+.align 32\r
+.Ldec4x_tail:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm0,%xmm7\r
+.byte 102,15,56,222,233\r
+ movdqu 16-120(%rsi),%xmm1\r
+ pxor %xmm0,%xmm8\r
+ pxor %xmm0,%xmm9\r
+ movdqu 32-120(%rsi),%xmm0\r
+\r
+.byte 102,15,56,223,214\r
+.byte 102,15,56,223,223\r
+ movdqu -16(%r8,%rbx,1),%xmm6\r
+ movdqu -16(%r9,%rbx,1),%xmm7\r
+.byte 102,65,15,56,223,224\r
+.byte 102,65,15,56,223,233\r
+ movdqu -16(%r10,%rbx,1),%xmm8\r
+ movdqu -16(%r11,%rbx,1),%xmm9\r
+\r
+ movups %xmm2,-16(%r12,%rbx,1)\r
+ movdqu (%r8,%rbx,1),%xmm2\r
+ movups %xmm3,-16(%r13,%rbx,1)\r
+ movdqu (%r9,%rbx,1),%xmm3\r
+ pxor %xmm12,%xmm2\r
+ movups %xmm4,-16(%r14,%rbx,1)\r
+ movdqu (%r10,%rbx,1),%xmm4\r
+ pxor %xmm12,%xmm3\r
+ movups %xmm5,-16(%r15,%rbx,1)\r
+ movdqu (%r11,%rbx,1),%xmm5\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm12,%xmm5\r
+\r
+ decl %edx\r
+ jnz .Loop_dec4x\r
+\r
+ movq 16(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movl 24(%rsp),%edx\r
+\r
+ leaq 160(%rdi),%rdi\r
+ decl %edx\r
+ jnz .Ldec4x_loop_grande\r
+\r
+.Ldec4x_done:\r
+ movq -48(%rax),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rax),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rax),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rax),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Ldec4x_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_multi_cbc_decrypt,.-aesni_multi_cbc_decrypt\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/aesni-sha1-x86_64.pl\r
+#\r
+# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl aesni_cbc_sha1_enc\r
+.type aesni_cbc_sha1_enc,@function\r
+.align 32\r
+aesni_cbc_sha1_enc:\r
+.cfi_startproc\r
+\r
+ movl OPENSSL_ia32cap_P+0(%rip),%r10d\r
+ movq OPENSSL_ia32cap_P+4(%rip),%r11\r
+ btq $61,%r11\r
+ jc aesni_cbc_sha1_enc_shaext\r
+ jmp aesni_cbc_sha1_enc_ssse3\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_cbc_sha1_enc,.-aesni_cbc_sha1_enc\r
+.type aesni_cbc_sha1_enc_ssse3,@function\r
+.align 32\r
+aesni_cbc_sha1_enc_ssse3:\r
+.cfi_startproc\r
+ movq 8(%rsp),%r10\r
+\r
+\r
+ pushq %rbx\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r15,-56\r
+ leaq -104(%rsp),%rsp\r
+.cfi_adjust_cfa_offset 104\r
+\r
+\r
+ movq %rdi,%r12\r
+ movq %rsi,%r13\r
+ movq %rdx,%r14\r
+ leaq 112(%rcx),%r15\r
+ movdqu (%r8),%xmm2\r
+ movq %r8,88(%rsp)\r
+ shlq $6,%r14\r
+ subq %r12,%r13\r
+ movl 240-112(%r15),%r8d\r
+ addq %r10,%r14\r
+\r
+ leaq K_XX_XX(%rip),%r11\r
+ movl 0(%r9),%eax\r
+ movl 4(%r9),%ebx\r
+ movl 8(%r9),%ecx\r
+ movl 12(%r9),%edx\r
+ movl %ebx,%esi\r
+ movl 16(%r9),%ebp\r
+ movl %ecx,%edi\r
+ xorl %edx,%edi\r
+ andl %edi,%esi\r
+\r
+ movdqa 64(%r11),%xmm3\r
+ movdqa 0(%r11),%xmm13\r
+ movdqu 0(%r10),%xmm4\r
+ movdqu 16(%r10),%xmm5\r
+ movdqu 32(%r10),%xmm6\r
+ movdqu 48(%r10),%xmm7\r
+.byte 102,15,56,0,227\r
+.byte 102,15,56,0,235\r
+.byte 102,15,56,0,243\r
+ addq $64,%r10\r
+ paddd %xmm13,%xmm4\r
+.byte 102,15,56,0,251\r
+ paddd %xmm13,%xmm5\r
+ paddd %xmm13,%xmm6\r
+ movdqa %xmm4,0(%rsp)\r
+ psubd %xmm13,%xmm4\r
+ movdqa %xmm5,16(%rsp)\r
+ psubd %xmm13,%xmm5\r
+ movdqa %xmm6,32(%rsp)\r
+ psubd %xmm13,%xmm6\r
+ movups -112(%r15),%xmm15\r
+ movups 16-112(%r15),%xmm0\r
+ jmp .Loop_ssse3\r
+.align 32\r
+.Loop_ssse3:\r
+ rorl $2,%ebx\r
+ movups 0(%r12),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ pshufd $238,%xmm4,%xmm8\r
+ xorl %edx,%esi\r
+ movdqa %xmm7,%xmm12\r
+ paddd %xmm7,%xmm13\r
+ movl %eax,%edi\r
+ addl 0(%rsp),%ebp\r
+ punpcklqdq %xmm5,%xmm8\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ psrldq $4,%xmm12\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ pxor %xmm4,%xmm8\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ pxor %xmm6,%xmm12\r
+ xorl %ecx,%edi\r
+ movl %ebp,%esi\r
+ addl 4(%rsp),%edx\r
+ pxor %xmm12,%xmm8\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ movdqa %xmm13,48(%rsp)\r
+ addl %edi,%edx\r
+ movups -64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ andl %eax,%esi\r
+ movdqa %xmm8,%xmm3\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ movdqa %xmm8,%xmm12\r
+ xorl %ebx,%esi\r
+ pslldq $12,%xmm3\r
+ paddd %xmm8,%xmm8\r
+ movl %edx,%edi\r
+ addl 8(%rsp),%ecx\r
+ psrld $31,%xmm12\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movdqa %xmm3,%xmm13\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ psrld $30,%xmm3\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ por %xmm12,%xmm8\r
+ xorl %eax,%edi\r
+ movl %ecx,%esi\r
+ addl 12(%rsp),%ebx\r
+ movups -48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ pslld $2,%xmm13\r
+ pxor %xmm3,%xmm8\r
+ xorl %ebp,%edx\r
+ movdqa 0(%r11),%xmm3\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ andl %edx,%esi\r
+ pxor %xmm13,%xmm8\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ pshufd $238,%xmm5,%xmm9\r
+ xorl %ebp,%esi\r
+ movdqa %xmm8,%xmm13\r
+ paddd %xmm8,%xmm3\r
+ movl %ebx,%edi\r
+ addl 16(%rsp),%eax\r
+ punpcklqdq %xmm6,%xmm9\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ psrldq $4,%xmm13\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ pxor %xmm5,%xmm9\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ movups -32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ pxor %xmm7,%xmm13\r
+ xorl %edx,%edi\r
+ movl %eax,%esi\r
+ addl 20(%rsp),%ebp\r
+ pxor %xmm13,%xmm9\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ movdqa %xmm3,0(%rsp)\r
+ addl %edi,%ebp\r
+ andl %ebx,%esi\r
+ movdqa %xmm9,%xmm12\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ movdqa %xmm9,%xmm13\r
+ xorl %ecx,%esi\r
+ pslldq $12,%xmm12\r
+ paddd %xmm9,%xmm9\r
+ movl %ebp,%edi\r
+ addl 24(%rsp),%edx\r
+ psrld $31,%xmm13\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ movups -16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm12,%xmm3\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ psrld $30,%xmm12\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ por %xmm13,%xmm9\r
+ xorl %ebx,%edi\r
+ movl %edx,%esi\r
+ addl 28(%rsp),%ecx\r
+ pslld $2,%xmm3\r
+ pxor %xmm12,%xmm9\r
+ xorl %eax,%ebp\r
+ movdqa 16(%r11),%xmm12\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ andl %ebp,%esi\r
+ pxor %xmm3,%xmm9\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ pshufd $238,%xmm6,%xmm10\r
+ xorl %eax,%esi\r
+ movdqa %xmm9,%xmm3\r
+ paddd %xmm9,%xmm12\r
+ movl %ecx,%edi\r
+ addl 32(%rsp),%ebx\r
+ movups 0(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ punpcklqdq %xmm7,%xmm10\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ psrldq $4,%xmm3\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ pxor %xmm6,%xmm10\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ pxor %xmm8,%xmm3\r
+ xorl %ebp,%edi\r
+ movl %ebx,%esi\r
+ addl 36(%rsp),%eax\r
+ pxor %xmm3,%xmm10\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ movdqa %xmm12,16(%rsp)\r
+ addl %edi,%eax\r
+ andl %ecx,%esi\r
+ movdqa %xmm10,%xmm13\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ movups 16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm10,%xmm3\r
+ xorl %edx,%esi\r
+ pslldq $12,%xmm13\r
+ paddd %xmm10,%xmm10\r
+ movl %eax,%edi\r
+ addl 40(%rsp),%ebp\r
+ psrld $31,%xmm3\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ movdqa %xmm13,%xmm12\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ psrld $30,%xmm13\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ por %xmm3,%xmm10\r
+ xorl %ecx,%edi\r
+ movl %ebp,%esi\r
+ addl 44(%rsp),%edx\r
+ pslld $2,%xmm12\r
+ pxor %xmm13,%xmm10\r
+ xorl %ebx,%eax\r
+ movdqa 16(%r11),%xmm13\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ movups 32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ andl %eax,%esi\r
+ pxor %xmm12,%xmm10\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ pshufd $238,%xmm7,%xmm11\r
+ xorl %ebx,%esi\r
+ movdqa %xmm10,%xmm12\r
+ paddd %xmm10,%xmm13\r
+ movl %edx,%edi\r
+ addl 48(%rsp),%ecx\r
+ punpcklqdq %xmm8,%xmm11\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ psrldq $4,%xmm12\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ pxor %xmm7,%xmm11\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ pxor %xmm9,%xmm12\r
+ xorl %eax,%edi\r
+ movl %ecx,%esi\r
+ addl 52(%rsp),%ebx\r
+ movups 48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ pxor %xmm12,%xmm11\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ movdqa %xmm13,32(%rsp)\r
+ addl %edi,%ebx\r
+ andl %edx,%esi\r
+ movdqa %xmm11,%xmm3\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ movdqa %xmm11,%xmm12\r
+ xorl %ebp,%esi\r
+ pslldq $12,%xmm3\r
+ paddd %xmm11,%xmm11\r
+ movl %ebx,%edi\r
+ addl 56(%rsp),%eax\r
+ psrld $31,%xmm12\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ movdqa %xmm3,%xmm13\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ psrld $30,%xmm3\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ cmpl $11,%r8d\r
+ jb .Laesenclast1\r
+ movups 64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast1\r
+ movups 96(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast1:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%r15),%xmm0\r
+ por %xmm12,%xmm11\r
+ xorl %edx,%edi\r
+ movl %eax,%esi\r
+ addl 60(%rsp),%ebp\r
+ pslld $2,%xmm13\r
+ pxor %xmm3,%xmm11\r
+ xorl %ecx,%ebx\r
+ movdqa 16(%r11),%xmm3\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ andl %ebx,%esi\r
+ pxor %xmm13,%xmm11\r
+ pshufd $238,%xmm10,%xmm13\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ pxor %xmm8,%xmm4\r
+ xorl %ecx,%esi\r
+ movl %ebp,%edi\r
+ addl 0(%rsp),%edx\r
+ punpcklqdq %xmm11,%xmm13\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ pxor %xmm5,%xmm4\r
+ addl %esi,%edx\r
+ movups 16(%r12),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,0(%r12,%r13,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ andl %eax,%edi\r
+ movdqa %xmm3,%xmm12\r
+ xorl %ebx,%eax\r
+ paddd %xmm11,%xmm3\r
+ addl %ebp,%edx\r
+ pxor %xmm13,%xmm4\r
+ rorl $7,%ebp\r
+ xorl %ebx,%edi\r
+ movl %edx,%esi\r
+ addl 4(%rsp),%ecx\r
+ movdqa %xmm4,%xmm13\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ movdqa %xmm3,48(%rsp)\r
+ addl %edi,%ecx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ pslld $2,%xmm4\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ psrld $30,%xmm13\r
+ xorl %eax,%esi\r
+ movl %ecx,%edi\r
+ addl 8(%rsp),%ebx\r
+ movups -64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ por %xmm13,%xmm4\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ pshufd $238,%xmm11,%xmm3\r
+ addl %esi,%ebx\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ addl 12(%rsp),%eax\r
+ xorl %ebp,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ pxor %xmm9,%xmm5\r
+ addl 16(%rsp),%ebp\r
+ movups -48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%esi\r
+ punpcklqdq %xmm4,%xmm3\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ pxor %xmm6,%xmm5\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ movdqa %xmm12,%xmm13\r
+ rorl $7,%ebx\r
+ paddd %xmm4,%xmm12\r
+ addl %eax,%ebp\r
+ pxor %xmm3,%xmm5\r
+ addl 20(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ movdqa %xmm5,%xmm3\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ movdqa %xmm12,0(%rsp)\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 24(%rsp),%ecx\r
+ pslld $2,%xmm5\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ psrld $30,%xmm3\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movups -32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ por %xmm3,%xmm5\r
+ addl %edx,%ecx\r
+ addl 28(%rsp),%ebx\r
+ pshufd $238,%xmm4,%xmm12\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ pxor %xmm10,%xmm6\r
+ addl 32(%rsp),%eax\r
+ xorl %edx,%esi\r
+ punpcklqdq %xmm5,%xmm12\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ pxor %xmm7,%xmm6\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ movdqa 32(%r11),%xmm3\r
+ rorl $7,%ecx\r
+ paddd %xmm5,%xmm13\r
+ addl %ebx,%eax\r
+ pxor %xmm12,%xmm6\r
+ addl 36(%rsp),%ebp\r
+ movups -16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ movdqa %xmm6,%xmm12\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ movdqa %xmm13,16(%rsp)\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 40(%rsp),%edx\r
+ pslld $2,%xmm6\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ psrld $30,%xmm12\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ por %xmm12,%xmm6\r
+ addl %ebp,%edx\r
+ addl 44(%rsp),%ecx\r
+ pshufd $238,%xmm5,%xmm13\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ movups 0(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ pxor %xmm11,%xmm7\r
+ addl 48(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ punpcklqdq %xmm6,%xmm13\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ pxor %xmm8,%xmm7\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ movdqa %xmm3,%xmm12\r
+ rorl $7,%edx\r
+ paddd %xmm6,%xmm3\r
+ addl %ecx,%ebx\r
+ pxor %xmm13,%xmm7\r
+ addl 52(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ movdqa %xmm7,%xmm13\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ movdqa %xmm3,32(%rsp)\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 56(%rsp),%ebp\r
+ movups 16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ pslld $2,%xmm7\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ psrld $30,%xmm13\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ por %xmm13,%xmm7\r
+ addl %eax,%ebp\r
+ addl 60(%rsp),%edx\r
+ pshufd $238,%xmm6,%xmm3\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ pxor %xmm4,%xmm8\r
+ addl 0(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ punpcklqdq %xmm7,%xmm3\r
+ movl %edx,%edi\r
+ roll $5,%edx\r
+ pxor %xmm9,%xmm8\r
+ addl %esi,%ecx\r
+ movups 32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%edi\r
+ movdqa %xmm12,%xmm13\r
+ rorl $7,%ebp\r
+ paddd %xmm7,%xmm12\r
+ addl %edx,%ecx\r
+ pxor %xmm3,%xmm8\r
+ addl 4(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ movdqa %xmm8,%xmm3\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ movdqa %xmm12,48(%rsp)\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 8(%rsp),%eax\r
+ pslld $2,%xmm8\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ psrld $30,%xmm3\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ por %xmm3,%xmm8\r
+ addl %ebx,%eax\r
+ addl 12(%rsp),%ebp\r
+ movups 48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ pshufd $238,%xmm7,%xmm12\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ pxor %xmm5,%xmm9\r
+ addl 16(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ punpcklqdq %xmm8,%xmm12\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ pxor %xmm10,%xmm9\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ movdqa %xmm13,%xmm3\r
+ rorl $7,%eax\r
+ paddd %xmm8,%xmm13\r
+ addl %ebp,%edx\r
+ pxor %xmm12,%xmm9\r
+ addl 20(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ movdqa %xmm9,%xmm12\r
+ addl %edi,%ecx\r
+ cmpl $11,%r8d\r
+ jb .Laesenclast2\r
+ movups 64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast2\r
+ movups 96(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast2:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%r15),%xmm0\r
+ xorl %eax,%esi\r
+ movdqa %xmm13,0(%rsp)\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 24(%rsp),%ebx\r
+ pslld $2,%xmm9\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ psrld $30,%xmm12\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ por %xmm12,%xmm9\r
+ addl %ecx,%ebx\r
+ addl 28(%rsp),%eax\r
+ pshufd $238,%xmm8,%xmm13\r
+ rorl $7,%ecx\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ pxor %xmm6,%xmm10\r
+ addl 32(%rsp),%ebp\r
+ movups 32(%r12),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,16(%r13,%r12,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ andl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ punpcklqdq %xmm9,%xmm13\r
+ movl %eax,%edi\r
+ xorl %ecx,%esi\r
+ pxor %xmm11,%xmm10\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ movdqa %xmm3,%xmm12\r
+ xorl %ebx,%edi\r
+ paddd %xmm9,%xmm3\r
+ xorl %ecx,%ebx\r
+ pxor %xmm13,%xmm10\r
+ addl %eax,%ebp\r
+ addl 36(%rsp),%edx\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ movdqa %xmm10,%xmm13\r
+ movl %ebp,%esi\r
+ xorl %ebx,%edi\r
+ movdqa %xmm3,16(%rsp)\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ movups -64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%esi\r
+ pslld $2,%xmm10\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ psrld $30,%xmm13\r
+ addl 40(%rsp),%ecx\r
+ andl %eax,%esi\r
+ xorl %ebx,%eax\r
+ por %xmm13,%xmm10\r
+ rorl $7,%ebp\r
+ movl %edx,%edi\r
+ xorl %eax,%esi\r
+ roll $5,%edx\r
+ pshufd $238,%xmm9,%xmm3\r
+ addl %esi,%ecx\r
+ xorl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ addl 44(%rsp),%ebx\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ movups -48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ movl %ecx,%esi\r
+ xorl %ebp,%edi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %edx,%esi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ pxor %xmm7,%xmm11\r
+ addl 48(%rsp),%eax\r
+ andl %edx,%esi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ punpcklqdq %xmm10,%xmm3\r
+ movl %ebx,%edi\r
+ xorl %edx,%esi\r
+ pxor %xmm4,%xmm11\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ movdqa 48(%r11),%xmm13\r
+ xorl %ecx,%edi\r
+ paddd %xmm10,%xmm12\r
+ xorl %edx,%ecx\r
+ pxor %xmm3,%xmm11\r
+ addl %ebx,%eax\r
+ addl 52(%rsp),%ebp\r
+ movups -32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ movdqa %xmm11,%xmm3\r
+ movl %eax,%esi\r
+ xorl %ecx,%edi\r
+ movdqa %xmm12,32(%rsp)\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ebx,%esi\r
+ pslld $2,%xmm11\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ psrld $30,%xmm3\r
+ addl 56(%rsp),%edx\r
+ andl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ por %xmm3,%xmm11\r
+ rorl $7,%eax\r
+ movl %ebp,%edi\r
+ xorl %ebx,%esi\r
+ roll $5,%ebp\r
+ pshufd $238,%xmm10,%xmm12\r
+ addl %esi,%edx\r
+ movups -16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %eax,%edi\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ addl 60(%rsp),%ecx\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ movl %edx,%esi\r
+ xorl %eax,%edi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ pxor %xmm8,%xmm4\r
+ addl 0(%rsp),%ebx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ movups 0(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ punpcklqdq %xmm11,%xmm12\r
+ movl %ecx,%edi\r
+ xorl %ebp,%esi\r
+ pxor %xmm5,%xmm4\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ movdqa %xmm13,%xmm3\r
+ xorl %edx,%edi\r
+ paddd %xmm11,%xmm13\r
+ xorl %ebp,%edx\r
+ pxor %xmm12,%xmm4\r
+ addl %ecx,%ebx\r
+ addl 4(%rsp),%eax\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ movdqa %xmm4,%xmm12\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ movdqa %xmm13,48(%rsp)\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %ecx,%esi\r
+ pslld $2,%xmm4\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ psrld $30,%xmm12\r
+ addl 8(%rsp),%ebp\r
+ movups 16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ andl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ por %xmm12,%xmm4\r
+ rorl $7,%ebx\r
+ movl %eax,%edi\r
+ xorl %ecx,%esi\r
+ roll $5,%eax\r
+ pshufd $238,%xmm11,%xmm13\r
+ addl %esi,%ebp\r
+ xorl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ addl 12(%rsp),%edx\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ movl %ebp,%esi\r
+ xorl %ebx,%edi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ movups 32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%esi\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ pxor %xmm9,%xmm5\r
+ addl 16(%rsp),%ecx\r
+ andl %eax,%esi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ punpcklqdq %xmm4,%xmm13\r
+ movl %edx,%edi\r
+ xorl %eax,%esi\r
+ pxor %xmm6,%xmm5\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movdqa %xmm3,%xmm12\r
+ xorl %ebp,%edi\r
+ paddd %xmm4,%xmm3\r
+ xorl %eax,%ebp\r
+ pxor %xmm13,%xmm5\r
+ addl %edx,%ecx\r
+ addl 20(%rsp),%ebx\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ movups 48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm5,%xmm13\r
+ movl %ecx,%esi\r
+ xorl %ebp,%edi\r
+ movdqa %xmm3,0(%rsp)\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %edx,%esi\r
+ pslld $2,%xmm5\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ psrld $30,%xmm13\r
+ addl 24(%rsp),%eax\r
+ andl %edx,%esi\r
+ xorl %ebp,%edx\r
+ por %xmm13,%xmm5\r
+ rorl $7,%ecx\r
+ movl %ebx,%edi\r
+ xorl %edx,%esi\r
+ roll $5,%ebx\r
+ pshufd $238,%xmm4,%xmm3\r
+ addl %esi,%eax\r
+ xorl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ addl 28(%rsp),%ebp\r
+ cmpl $11,%r8d\r
+ jb .Laesenclast3\r
+ movups 64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast3\r
+ movups 96(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast3:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%r15),%xmm0\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ movl %eax,%esi\r
+ xorl %ecx,%edi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ pxor %xmm10,%xmm6\r
+ addl 32(%rsp),%edx\r
+ andl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ punpcklqdq %xmm5,%xmm3\r
+ movl %ebp,%edi\r
+ xorl %ebx,%esi\r
+ pxor %xmm7,%xmm6\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ movups 48(%r12),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,32(%r13,%r12,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm12,%xmm13\r
+ xorl %eax,%edi\r
+ paddd %xmm5,%xmm12\r
+ xorl %ebx,%eax\r
+ pxor %xmm3,%xmm6\r
+ addl %ebp,%edx\r
+ addl 36(%rsp),%ecx\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ movdqa %xmm6,%xmm3\r
+ movl %edx,%esi\r
+ xorl %eax,%edi\r
+ movdqa %xmm12,16(%rsp)\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %ebp,%esi\r
+ pslld $2,%xmm6\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ psrld $30,%xmm3\r
+ addl 40(%rsp),%ebx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ por %xmm3,%xmm6\r
+ rorl $7,%edx\r
+ movups -64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movl %ecx,%edi\r
+ xorl %ebp,%esi\r
+ roll $5,%ecx\r
+ pshufd $238,%xmm5,%xmm12\r
+ addl %esi,%ebx\r
+ xorl %edx,%edi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ addl 44(%rsp),%eax\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ addl %ebx,%eax\r
+ pxor %xmm11,%xmm7\r
+ addl 48(%rsp),%ebp\r
+ movups -48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%esi\r
+ punpcklqdq %xmm6,%xmm12\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ pxor %xmm8,%xmm7\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ movdqa %xmm13,%xmm3\r
+ rorl $7,%ebx\r
+ paddd %xmm6,%xmm13\r
+ addl %eax,%ebp\r
+ pxor %xmm12,%xmm7\r
+ addl 52(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ movdqa %xmm7,%xmm12\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ movdqa %xmm13,32(%rsp)\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 56(%rsp),%ecx\r
+ pslld $2,%xmm7\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ psrld $30,%xmm12\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movups -32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ por %xmm12,%xmm7\r
+ addl %edx,%ecx\r
+ addl 60(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 0(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ paddd %xmm7,%xmm3\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ movdqa %xmm3,48(%rsp)\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 4(%rsp),%ebp\r
+ movups -16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 8(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 12(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ movups 0(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ cmpq %r14,%r10\r
+ je .Ldone_ssse3\r
+ movdqa 64(%r11),%xmm3\r
+ movdqa 0(%r11),%xmm13\r
+ movdqu 0(%r10),%xmm4\r
+ movdqu 16(%r10),%xmm5\r
+ movdqu 32(%r10),%xmm6\r
+ movdqu 48(%r10),%xmm7\r
+.byte 102,15,56,0,227\r
+ addq $64,%r10\r
+ addl 16(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+.byte 102,15,56,0,235\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ paddd %xmm13,%xmm4\r
+ addl %ecx,%ebx\r
+ addl 20(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ movdqa %xmm4,0(%rsp)\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ psubd %xmm13,%xmm4\r
+ addl %ebx,%eax\r
+ addl 24(%rsp),%ebp\r
+ movups 16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 28(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 32(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+.byte 102,15,56,0,243\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movups 32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ paddd %xmm13,%xmm5\r
+ addl %edx,%ecx\r
+ addl 36(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ movdqa %xmm5,16(%rsp)\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ psubd %xmm13,%xmm5\r
+ addl %ecx,%ebx\r
+ addl 40(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 44(%rsp),%ebp\r
+ movups 48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 48(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+.byte 102,15,56,0,251\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ paddd %xmm13,%xmm6\r
+ addl %ebp,%edx\r
+ addl 52(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ movdqa %xmm6,32(%rsp)\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ cmpl $11,%r8d\r
+ jb .Laesenclast4\r
+ movups 64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast4\r
+ movups 96(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast4:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%r15),%xmm0\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ psubd %xmm13,%xmm6\r
+ addl %edx,%ecx\r
+ addl 56(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 60(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ movups %xmm2,48(%r13,%r12,1)\r
+ leaq 64(%r12),%r12\r
+\r
+ addl 0(%r9),%eax\r
+ addl 4(%r9),%esi\r
+ addl 8(%r9),%ecx\r
+ addl 12(%r9),%edx\r
+ movl %eax,0(%r9)\r
+ addl 16(%r9),%ebp\r
+ movl %esi,4(%r9)\r
+ movl %esi,%ebx\r
+ movl %ecx,8(%r9)\r
+ movl %ecx,%edi\r
+ movl %edx,12(%r9)\r
+ xorl %edx,%edi\r
+ movl %ebp,16(%r9)\r
+ andl %edi,%esi\r
+ jmp .Loop_ssse3\r
+\r
+.Ldone_ssse3:\r
+ addl 16(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 20(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 24(%rsp),%ebp\r
+ movups 16(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 28(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 32(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movups 32(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 36(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 40(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 44(%rsp),%ebp\r
+ movups 48(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 48(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 52(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ cmpl $11,%r8d\r
+ jb .Laesenclast5\r
+ movups 64(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast5\r
+ movups 96(%r15),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%r15),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast5:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%r15),%xmm0\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 56(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 60(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ movups %xmm2,48(%r13,%r12,1)\r
+ movq 88(%rsp),%r8\r
+\r
+ addl 0(%r9),%eax\r
+ addl 4(%r9),%esi\r
+ addl 8(%r9),%ecx\r
+ movl %eax,0(%r9)\r
+ addl 12(%r9),%edx\r
+ movl %esi,4(%r9)\r
+ addl 16(%r9),%ebp\r
+ movl %ecx,8(%r9)\r
+ movl %edx,12(%r9)\r
+ movl %ebp,16(%r9)\r
+ movups %xmm2,(%r8)\r
+ leaq 104(%rsp),%rsi\r
+.cfi_def_cfa %rsi,56\r
+ movq 0(%rsi),%r15\r
+.cfi_restore %r15\r
+ movq 8(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq 16(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq 24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq 32(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq 40(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq 48(%rsi),%rsp\r
+.cfi_def_cfa %rsp,8\r
+.Lepilogue_ssse3:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_cbc_sha1_enc_ssse3,.-aesni_cbc_sha1_enc_ssse3\r
+.align 64\r
+K_XX_XX:\r
+.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+\r
+.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,62,0\r
+.align 64\r
+.type aesni_cbc_sha1_enc_shaext,@function\r
+.align 32\r
+aesni_cbc_sha1_enc_shaext:\r
+.cfi_startproc\r
+ movq 8(%rsp),%r10\r
+ movdqu (%r9),%xmm8\r
+ movd 16(%r9),%xmm9\r
+ movdqa K_XX_XX+80(%rip),%xmm7\r
+\r
+ movl 240(%rcx),%r11d\r
+ subq %rdi,%rsi\r
+ movups (%rcx),%xmm15\r
+ movups (%r8),%xmm2\r
+ movups 16(%rcx),%xmm0\r
+ leaq 112(%rcx),%rcx\r
+\r
+ pshufd $27,%xmm8,%xmm8\r
+ pshufd $27,%xmm9,%xmm9\r
+ jmp .Loop_shaext\r
+\r
+.align 16\r
+.Loop_shaext:\r
+ movups 0(%rdi),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqu (%r10),%xmm3\r
+ movdqa %xmm9,%xmm12\r
+.byte 102,15,56,0,223\r
+ movdqu 16(%r10),%xmm4\r
+ movdqa %xmm8,%xmm11\r
+ movups -64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,0,231\r
+\r
+ paddd %xmm3,%xmm9\r
+ movdqu 32(%r10),%xmm5\r
+ leaq 64(%r10),%r10\r
+ pxor %xmm12,%xmm3\r
+ movups -48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ pxor %xmm12,%xmm3\r
+ movdqa %xmm8,%xmm10\r
+.byte 102,15,56,0,239\r
+.byte 69,15,58,204,193,0\r
+.byte 68,15,56,200,212\r
+ movups -32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+.byte 15,56,201,220\r
+ movdqu -16(%r10),%xmm6\r
+ movdqa %xmm8,%xmm9\r
+.byte 102,15,56,0,247\r
+ movups -16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 69,15,58,204,194,0\r
+.byte 68,15,56,200,205\r
+ pxor %xmm5,%xmm3\r
+.byte 15,56,201,229\r
+ movups 0(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,0\r
+.byte 68,15,56,200,214\r
+ movups 16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,222\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ movups 32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,0\r
+.byte 68,15,56,200,203\r
+ movups 48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,227\r
+ pxor %xmm3,%xmm5\r
+.byte 15,56,201,243\r
+ cmpl $11,%r11d\r
+ jb .Laesenclast6\r
+ movups 64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast6\r
+ movups 96(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast6:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%rcx),%xmm0\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,0\r
+.byte 68,15,56,200,212\r
+ movups 16(%rdi),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,0(%rsi,%rdi,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,236\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,220\r
+ movups -64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,1\r
+.byte 68,15,56,200,205\r
+ movups -48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,245\r
+ pxor %xmm5,%xmm3\r
+.byte 15,56,201,229\r
+ movups -32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,1\r
+.byte 68,15,56,200,214\r
+ movups -16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,222\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ movups 0(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,1\r
+.byte 68,15,56,200,203\r
+ movups 16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,227\r
+ pxor %xmm3,%xmm5\r
+.byte 15,56,201,243\r
+ movups 32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,1\r
+.byte 68,15,56,200,212\r
+ movups 48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,236\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,220\r
+ cmpl $11,%r11d\r
+ jb .Laesenclast7\r
+ movups 64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast7\r
+ movups 96(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast7:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%rcx),%xmm0\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,1\r
+.byte 68,15,56,200,205\r
+ movups 32(%rdi),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,16(%rsi,%rdi,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,245\r
+ pxor %xmm5,%xmm3\r
+.byte 15,56,201,229\r
+ movups -64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,2\r
+.byte 68,15,56,200,214\r
+ movups -48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,222\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ movups -32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,2\r
+.byte 68,15,56,200,203\r
+ movups -16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,227\r
+ pxor %xmm3,%xmm5\r
+.byte 15,56,201,243\r
+ movups 0(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,2\r
+.byte 68,15,56,200,212\r
+ movups 16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,236\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,220\r
+ movups 32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,2\r
+.byte 68,15,56,200,205\r
+ movups 48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,245\r
+ pxor %xmm5,%xmm3\r
+.byte 15,56,201,229\r
+ cmpl $11,%r11d\r
+ jb .Laesenclast8\r
+ movups 64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast8\r
+ movups 96(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast8:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%rcx),%xmm0\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,2\r
+.byte 68,15,56,200,214\r
+ movups 48(%rdi),%xmm14\r
+ xorps %xmm15,%xmm14\r
+ movups %xmm2,32(%rsi,%rdi,1)\r
+ xorps %xmm14,%xmm2\r
+ movups -80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,222\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ movups -64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,3\r
+.byte 68,15,56,200,203\r
+ movups -48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.byte 15,56,202,227\r
+ pxor %xmm3,%xmm5\r
+.byte 15,56,201,243\r
+ movups -32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,3\r
+.byte 68,15,56,200,212\r
+.byte 15,56,202,236\r
+ pxor %xmm4,%xmm6\r
+ movups -16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,3\r
+.byte 68,15,56,200,205\r
+.byte 15,56,202,245\r
+ movups 0(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movdqa %xmm12,%xmm5\r
+ movdqa %xmm8,%xmm10\r
+.byte 69,15,58,204,193,3\r
+.byte 68,15,56,200,214\r
+ movups 16(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ movdqa %xmm8,%xmm9\r
+.byte 69,15,58,204,194,3\r
+.byte 68,15,56,200,205\r
+ movups 32(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 48(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ cmpl $11,%r11d\r
+ jb .Laesenclast9\r
+ movups 64(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 80(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+ je .Laesenclast9\r
+ movups 96(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+ movups 112(%rcx),%xmm1\r
+.byte 102,15,56,220,208\r
+.Laesenclast9:\r
+.byte 102,15,56,221,209\r
+ movups 16-112(%rcx),%xmm0\r
+ decq %rdx\r
+\r
+ paddd %xmm11,%xmm8\r
+ movups %xmm2,48(%rsi,%rdi,1)\r
+ leaq 64(%rdi),%rdi\r
+ jnz .Loop_shaext\r
+\r
+ pshufd $27,%xmm8,%xmm8\r
+ pshufd $27,%xmm9,%xmm9\r
+ movups %xmm2,(%r8)\r
+ movdqu %xmm8,(%r9)\r
+ movd %xmm9,16(%r9)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_cbc_sha1_enc_shaext,.-aesni_cbc_sha1_enc_shaext\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/aesni-sha256-x86_64.pl\r
+#\r
+# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl aesni_cbc_sha256_enc\r
+.type aesni_cbc_sha256_enc,@function\r
+.align 16\r
+aesni_cbc_sha256_enc:\r
+.cfi_startproc\r
+ xorl %eax,%eax\r
+ cmpq $0,%rdi\r
+ je .Lprobe\r
+ ud2\r
+.Lprobe:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_cbc_sha256_enc,.-aesni_cbc_sha256_enc\r
+\r
+.align 64\r
+.type K256,@object\r
+K256:\r
+.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0,0,0,0, 0,0,0,0, -1,-1,-1,-1\r
+.long 0,0,0,0, 0,0,0,0\r
+.byte 65,69,83,78,73,45,67,66,67,43,83,72,65,50,53,54,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,62,0\r
+.align 64\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/aesni-x86_64.pl\r
+#\r
+# Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+.globl aesni_encrypt\r
+.type aesni_encrypt,@function\r
+.align 16\r
+aesni_encrypt:\r
+.cfi_startproc\r
+ movups (%rdi),%xmm2\r
+ movl 240(%rdx),%eax\r
+ movups (%rdx),%xmm0\r
+ movups 16(%rdx),%xmm1\r
+ leaq 32(%rdx),%rdx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_1:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rdx),%xmm1\r
+ leaq 16(%rdx),%rdx\r
+ jnz .Loop_enc1_1\r
+.byte 102,15,56,221,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_encrypt,.-aesni_encrypt\r
+\r
+.globl aesni_decrypt\r
+.type aesni_decrypt,@function\r
+.align 16\r
+aesni_decrypt:\r
+.cfi_startproc\r
+ movups (%rdi),%xmm2\r
+ movl 240(%rdx),%eax\r
+ movups (%rdx),%xmm0\r
+ movups 16(%rdx),%xmm1\r
+ leaq 32(%rdx),%rdx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_2:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rdx),%xmm1\r
+ leaq 16(%rdx),%rdx\r
+ jnz .Loop_dec1_2\r
+.byte 102,15,56,223,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_decrypt, .-aesni_decrypt\r
+.type _aesni_encrypt2,@function\r
+.align 16\r
+_aesni_encrypt2:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+ addq $16,%rax\r
+\r
+.Lenc_loop2:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lenc_loop2\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_encrypt2,.-_aesni_encrypt2\r
+.type _aesni_decrypt2,@function\r
+.align 16\r
+_aesni_decrypt2:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+ addq $16,%rax\r
+\r
+.Ldec_loop2:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Ldec_loop2\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_decrypt2,.-_aesni_decrypt2\r
+.type _aesni_encrypt3,@function\r
+.align 16\r
+_aesni_encrypt3:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ xorps %xmm0,%xmm4\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+ addq $16,%rax\r
+\r
+.Lenc_loop3:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lenc_loop3\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_encrypt3,.-_aesni_encrypt3\r
+.type _aesni_decrypt3,@function\r
+.align 16\r
+_aesni_decrypt3:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ xorps %xmm0,%xmm4\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+ addq $16,%rax\r
+\r
+.Ldec_loop3:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Ldec_loop3\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_decrypt3,.-_aesni_decrypt3\r
+.type _aesni_encrypt4,@function\r
+.align 16\r
+_aesni_encrypt4:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ xorps %xmm0,%xmm4\r
+ xorps %xmm0,%xmm5\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 0x0f,0x1f,0x00\r
+ addq $16,%rax\r
+\r
+.Lenc_loop4:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lenc_loop4\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+.byte 102,15,56,221,232\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_encrypt4,.-_aesni_encrypt4\r
+.type _aesni_decrypt4,@function\r
+.align 16\r
+_aesni_decrypt4:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ xorps %xmm0,%xmm4\r
+ xorps %xmm0,%xmm5\r
+ movups 32(%rcx),%xmm0\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 0x0f,0x1f,0x00\r
+ addq $16,%rax\r
+\r
+.Ldec_loop4:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Ldec_loop4\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+.byte 102,15,56,223,232\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_decrypt4,.-_aesni_decrypt4\r
+.type _aesni_encrypt6,@function\r
+.align 16\r
+_aesni_encrypt6:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+.byte 102,15,56,220,209\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 102,15,56,220,217\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+.byte 102,15,56,220,225\r
+ pxor %xmm0,%xmm7\r
+ movups (%rcx,%rax,1),%xmm0\r
+ addq $16,%rax\r
+ jmp .Lenc_loop6_enter\r
+.align 16\r
+.Lenc_loop6:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.Lenc_loop6_enter:\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lenc_loop6\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+.byte 102,15,56,221,232\r
+.byte 102,15,56,221,240\r
+.byte 102,15,56,221,248\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_encrypt6,.-_aesni_encrypt6\r
+.type _aesni_decrypt6,@function\r
+.align 16\r
+_aesni_decrypt6:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+.byte 102,15,56,222,209\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 102,15,56,222,217\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+.byte 102,15,56,222,225\r
+ pxor %xmm0,%xmm7\r
+ movups (%rcx,%rax,1),%xmm0\r
+ addq $16,%rax\r
+ jmp .Ldec_loop6_enter\r
+.align 16\r
+.Ldec_loop6:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.Ldec_loop6_enter:\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Ldec_loop6\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+.byte 102,15,56,223,232\r
+.byte 102,15,56,223,240\r
+.byte 102,15,56,223,248\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_decrypt6,.-_aesni_decrypt6\r
+.type _aesni_encrypt8,@function\r
+.align 16\r
+_aesni_encrypt8:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 102,15,56,220,209\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm0,%xmm8\r
+.byte 102,15,56,220,217\r
+ pxor %xmm0,%xmm9\r
+ movups (%rcx,%rax,1),%xmm0\r
+ addq $16,%rax\r
+ jmp .Lenc_loop8_inner\r
+.align 16\r
+.Lenc_loop8:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.Lenc_loop8_inner:\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+.Lenc_loop8_enter:\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lenc_loop8\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+.byte 102,15,56,221,224\r
+.byte 102,15,56,221,232\r
+.byte 102,15,56,221,240\r
+.byte 102,15,56,221,248\r
+.byte 102,68,15,56,221,192\r
+.byte 102,68,15,56,221,200\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_encrypt8,.-_aesni_encrypt8\r
+.type _aesni_decrypt8,@function\r
+.align 16\r
+_aesni_decrypt8:\r
+.cfi_startproc\r
+ movups (%rcx),%xmm0\r
+ shll $4,%eax\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm0,%xmm3\r
+ pxor %xmm0,%xmm4\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 102,15,56,222,209\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm0,%xmm8\r
+.byte 102,15,56,222,217\r
+ pxor %xmm0,%xmm9\r
+ movups (%rcx,%rax,1),%xmm0\r
+ addq $16,%rax\r
+ jmp .Ldec_loop8_inner\r
+.align 16\r
+.Ldec_loop8:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.Ldec_loop8_inner:\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+.Ldec_loop8_enter:\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Ldec_loop8\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+.byte 102,15,56,223,208\r
+.byte 102,15,56,223,216\r
+.byte 102,15,56,223,224\r
+.byte 102,15,56,223,232\r
+.byte 102,15,56,223,240\r
+.byte 102,15,56,223,248\r
+.byte 102,68,15,56,223,192\r
+.byte 102,68,15,56,223,200\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _aesni_decrypt8,.-_aesni_decrypt8\r
+.globl aesni_ecb_encrypt\r
+.type aesni_ecb_encrypt,@function\r
+.align 16\r
+aesni_ecb_encrypt:\r
+.cfi_startproc\r
+ andq $-16,%rdx\r
+ jz .Lecb_ret\r
+\r
+ movl 240(%rcx),%eax\r
+ movups (%rcx),%xmm0\r
+ movq %rcx,%r11\r
+ movl %eax,%r10d\r
+ testl %r8d,%r8d\r
+ jz .Lecb_decrypt\r
+\r
+ cmpq $0x80,%rdx\r
+ jb .Lecb_enc_tail\r
+\r
+ movdqu (%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqu 80(%rdi),%xmm7\r
+ movdqu 96(%rdi),%xmm8\r
+ movdqu 112(%rdi),%xmm9\r
+ leaq 128(%rdi),%rdi\r
+ subq $0x80,%rdx\r
+ jmp .Lecb_enc_loop8_enter\r
+.align 16\r
+.Lecb_enc_loop8:\r
+ movups %xmm2,(%rsi)\r
+ movq %r11,%rcx\r
+ movdqu (%rdi),%xmm2\r
+ movl %r10d,%eax\r
+ movups %xmm3,16(%rsi)\r
+ movdqu 16(%rdi),%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ movdqu 32(%rdi),%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ movdqu 48(%rdi),%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ movdqu 64(%rdi),%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ movdqu 80(%rdi),%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ movdqu 96(%rdi),%xmm8\r
+ movups %xmm9,112(%rsi)\r
+ leaq 128(%rsi),%rsi\r
+ movdqu 112(%rdi),%xmm9\r
+ leaq 128(%rdi),%rdi\r
+.Lecb_enc_loop8_enter:\r
+\r
+ call _aesni_encrypt8\r
+\r
+ subq $0x80,%rdx\r
+ jnc .Lecb_enc_loop8\r
+\r
+ movups %xmm2,(%rsi)\r
+ movq %r11,%rcx\r
+ movups %xmm3,16(%rsi)\r
+ movl %r10d,%eax\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+ movups %xmm7,80(%rsi)\r
+ movups %xmm8,96(%rsi)\r
+ movups %xmm9,112(%rsi)\r
+ leaq 128(%rsi),%rsi\r
+ addq $0x80,%rdx\r
+ jz .Lecb_ret\r
+\r
+.Lecb_enc_tail:\r
+ movups (%rdi),%xmm2\r
+ cmpq $0x20,%rdx\r
+ jb .Lecb_enc_one\r
+ movups 16(%rdi),%xmm3\r
+ je .Lecb_enc_two\r
+ movups 32(%rdi),%xmm4\r
+ cmpq $0x40,%rdx\r
+ jb .Lecb_enc_three\r
+ movups 48(%rdi),%xmm5\r
+ je .Lecb_enc_four\r
+ movups 64(%rdi),%xmm6\r
+ cmpq $0x60,%rdx\r
+ jb .Lecb_enc_five\r
+ movups 80(%rdi),%xmm7\r
+ je .Lecb_enc_six\r
+ movdqu 96(%rdi),%xmm8\r
+ xorps %xmm9,%xmm9\r
+ call _aesni_encrypt8\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+ movups %xmm7,80(%rsi)\r
+ movups %xmm8,96(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_one:\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_3:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_3\r
+.byte 102,15,56,221,209\r
+ movups %xmm2,(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_two:\r
+ call _aesni_encrypt2\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_three:\r
+ call _aesni_encrypt3\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_four:\r
+ call _aesni_encrypt4\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_five:\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_encrypt6\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_enc_six:\r
+ call _aesni_encrypt6\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+ movups %xmm7,80(%rsi)\r
+ jmp .Lecb_ret\r
+\r
+.align 16\r
+.Lecb_decrypt:\r
+ cmpq $0x80,%rdx\r
+ jb .Lecb_dec_tail\r
+\r
+ movdqu (%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqu 80(%rdi),%xmm7\r
+ movdqu 96(%rdi),%xmm8\r
+ movdqu 112(%rdi),%xmm9\r
+ leaq 128(%rdi),%rdi\r
+ subq $0x80,%rdx\r
+ jmp .Lecb_dec_loop8_enter\r
+.align 16\r
+.Lecb_dec_loop8:\r
+ movups %xmm2,(%rsi)\r
+ movq %r11,%rcx\r
+ movdqu (%rdi),%xmm2\r
+ movl %r10d,%eax\r
+ movups %xmm3,16(%rsi)\r
+ movdqu 16(%rdi),%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ movdqu 32(%rdi),%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ movdqu 48(%rdi),%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ movdqu 64(%rdi),%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ movdqu 80(%rdi),%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ movdqu 96(%rdi),%xmm8\r
+ movups %xmm9,112(%rsi)\r
+ leaq 128(%rsi),%rsi\r
+ movdqu 112(%rdi),%xmm9\r
+ leaq 128(%rdi),%rdi\r
+.Lecb_dec_loop8_enter:\r
+\r
+ call _aesni_decrypt8\r
+\r
+ movups (%r11),%xmm0\r
+ subq $0x80,%rdx\r
+ jnc .Lecb_dec_loop8\r
+\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movq %r11,%rcx\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movl %r10d,%eax\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ pxor %xmm7,%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ pxor %xmm8,%xmm8\r
+ movups %xmm9,112(%rsi)\r
+ pxor %xmm9,%xmm9\r
+ leaq 128(%rsi),%rsi\r
+ addq $0x80,%rdx\r
+ jz .Lecb_ret\r
+\r
+.Lecb_dec_tail:\r
+ movups (%rdi),%xmm2\r
+ cmpq $0x20,%rdx\r
+ jb .Lecb_dec_one\r
+ movups 16(%rdi),%xmm3\r
+ je .Lecb_dec_two\r
+ movups 32(%rdi),%xmm4\r
+ cmpq $0x40,%rdx\r
+ jb .Lecb_dec_three\r
+ movups 48(%rdi),%xmm5\r
+ je .Lecb_dec_four\r
+ movups 64(%rdi),%xmm6\r
+ cmpq $0x60,%rdx\r
+ jb .Lecb_dec_five\r
+ movups 80(%rdi),%xmm7\r
+ je .Lecb_dec_six\r
+ movups 96(%rdi),%xmm8\r
+ movups (%rcx),%xmm0\r
+ xorps %xmm9,%xmm9\r
+ call _aesni_decrypt8\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ pxor %xmm7,%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_one:\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_4:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_4\r
+.byte 102,15,56,223,209\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_two:\r
+ call _aesni_decrypt2\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_three:\r
+ call _aesni_decrypt3\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_four:\r
+ call _aesni_decrypt4\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_five:\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_decrypt6\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ jmp .Lecb_ret\r
+.align 16\r
+.Lecb_dec_six:\r
+ call _aesni_decrypt6\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ pxor %xmm7,%xmm7\r
+\r
+.Lecb_ret:\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ecb_encrypt,.-aesni_ecb_encrypt\r
+.globl aesni_ccm64_encrypt_blocks\r
+.type aesni_ccm64_encrypt_blocks,@function\r
+.align 16\r
+aesni_ccm64_encrypt_blocks:\r
+.cfi_startproc\r
+ movl 240(%rcx),%eax\r
+ movdqu (%r8),%xmm6\r
+ movdqa .Lincrement64(%rip),%xmm9\r
+ movdqa .Lbswap_mask(%rip),%xmm7\r
+\r
+ shll $4,%eax\r
+ movl $16,%r10d\r
+ leaq 0(%rcx),%r11\r
+ movdqu (%r9),%xmm3\r
+ movdqa %xmm6,%xmm2\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+.byte 102,15,56,0,247\r
+ subq %rax,%r10\r
+ jmp .Lccm64_enc_outer\r
+.align 16\r
+.Lccm64_enc_outer:\r
+ movups (%r11),%xmm0\r
+ movq %r10,%rax\r
+ movups (%rdi),%xmm8\r
+\r
+ xorps %xmm0,%xmm2\r
+ movups 16(%r11),%xmm1\r
+ xorps %xmm8,%xmm0\r
+ xorps %xmm0,%xmm3\r
+ movups 32(%r11),%xmm0\r
+\r
+.Lccm64_enc2_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lccm64_enc2_loop\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ paddq %xmm9,%xmm6\r
+ decq %rdx\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+\r
+ leaq 16(%rdi),%rdi\r
+ xorps %xmm2,%xmm8\r
+ movdqa %xmm6,%xmm2\r
+ movups %xmm8,(%rsi)\r
+.byte 102,15,56,0,215\r
+ leaq 16(%rsi),%rsi\r
+ jnz .Lccm64_enc_outer\r
+\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,(%r9)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm6,%xmm6\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ccm64_encrypt_blocks,.-aesni_ccm64_encrypt_blocks\r
+.globl aesni_ccm64_decrypt_blocks\r
+.type aesni_ccm64_decrypt_blocks,@function\r
+.align 16\r
+aesni_ccm64_decrypt_blocks:\r
+.cfi_startproc\r
+ movl 240(%rcx),%eax\r
+ movups (%r8),%xmm6\r
+ movdqu (%r9),%xmm3\r
+ movdqa .Lincrement64(%rip),%xmm9\r
+ movdqa .Lbswap_mask(%rip),%xmm7\r
+\r
+ movaps %xmm6,%xmm2\r
+ movl %eax,%r10d\r
+ movq %rcx,%r11\r
+.byte 102,15,56,0,247\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_5:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_5\r
+.byte 102,15,56,221,209\r
+ shll $4,%r10d\r
+ movl $16,%eax\r
+ movups (%rdi),%xmm8\r
+ paddq %xmm9,%xmm6\r
+ leaq 16(%rdi),%rdi\r
+ subq %r10,%rax\r
+ leaq 32(%r11,%r10,1),%rcx\r
+ movq %rax,%r10\r
+ jmp .Lccm64_dec_outer\r
+.align 16\r
+.Lccm64_dec_outer:\r
+ xorps %xmm2,%xmm8\r
+ movdqa %xmm6,%xmm2\r
+ movups %xmm8,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+.byte 102,15,56,0,215\r
+\r
+ subq $1,%rdx\r
+ jz .Lccm64_dec_break\r
+\r
+ movups (%r11),%xmm0\r
+ movq %r10,%rax\r
+ movups 16(%r11),%xmm1\r
+ xorps %xmm0,%xmm8\r
+ xorps %xmm0,%xmm2\r
+ xorps %xmm8,%xmm3\r
+ movups 32(%r11),%xmm0\r
+ jmp .Lccm64_dec2_loop\r
+.align 16\r
+.Lccm64_dec2_loop:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Lccm64_dec2_loop\r
+ movups (%rdi),%xmm8\r
+ paddq %xmm9,%xmm6\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,221,208\r
+.byte 102,15,56,221,216\r
+ leaq 16(%rdi),%rdi\r
+ jmp .Lccm64_dec_outer\r
+\r
+.align 16\r
+.Lccm64_dec_break:\r
+\r
+ movl 240(%r11),%eax\r
+ movups (%r11),%xmm0\r
+ movups 16(%r11),%xmm1\r
+ xorps %xmm0,%xmm8\r
+ leaq 32(%r11),%r11\r
+ xorps %xmm8,%xmm3\r
+.Loop_enc1_6:\r
+.byte 102,15,56,220,217\r
+ decl %eax\r
+ movups (%r11),%xmm1\r
+ leaq 16(%r11),%r11\r
+ jnz .Loop_enc1_6\r
+.byte 102,15,56,221,217\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ movups %xmm3,(%r9)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm6,%xmm6\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ccm64_decrypt_blocks,.-aesni_ccm64_decrypt_blocks\r
+.globl aesni_ctr32_encrypt_blocks\r
+.type aesni_ctr32_encrypt_blocks,@function\r
+.align 16\r
+aesni_ctr32_encrypt_blocks:\r
+.cfi_startproc\r
+ cmpq $1,%rdx\r
+ jne .Lctr32_bulk\r
+\r
+\r
+\r
+ movups (%r8),%xmm2\r
+ movups (%rdi),%xmm3\r
+ movl 240(%rcx),%edx\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_7:\r
+.byte 102,15,56,220,209\r
+ decl %edx\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_7\r
+.byte 102,15,56,221,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ xorps %xmm3,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm2,(%rsi)\r
+ xorps %xmm2,%xmm2\r
+ jmp .Lctr32_epilogue\r
+\r
+.align 16\r
+.Lctr32_bulk:\r
+ leaq (%rsp),%r11\r
+.cfi_def_cfa_register %r11\r
+ pushq %rbp\r
+.cfi_offset %rbp,-16\r
+ subq $128,%rsp\r
+ andq $-16,%rsp\r
+\r
+\r
+\r
+\r
+ movdqu (%r8),%xmm2\r
+ movdqu (%rcx),%xmm0\r
+ movl 12(%r8),%r8d\r
+ pxor %xmm0,%xmm2\r
+ movl 12(%rcx),%ebp\r
+ movdqa %xmm2,0(%rsp)\r
+ bswapl %r8d\r
+ movdqa %xmm2,%xmm3\r
+ movdqa %xmm2,%xmm4\r
+ movdqa %xmm2,%xmm5\r
+ movdqa %xmm2,64(%rsp)\r
+ movdqa %xmm2,80(%rsp)\r
+ movdqa %xmm2,96(%rsp)\r
+ movq %rdx,%r10\r
+ movdqa %xmm2,112(%rsp)\r
+\r
+ leaq 1(%r8),%rax\r
+ leaq 2(%r8),%rdx\r
+ bswapl %eax\r
+ bswapl %edx\r
+ xorl %ebp,%eax\r
+ xorl %ebp,%edx\r
+.byte 102,15,58,34,216,3\r
+ leaq 3(%r8),%rax\r
+ movdqa %xmm3,16(%rsp)\r
+.byte 102,15,58,34,226,3\r
+ bswapl %eax\r
+ movq %r10,%rdx\r
+ leaq 4(%r8),%r10\r
+ movdqa %xmm4,32(%rsp)\r
+ xorl %ebp,%eax\r
+ bswapl %r10d\r
+.byte 102,15,58,34,232,3\r
+ xorl %ebp,%r10d\r
+ movdqa %xmm5,48(%rsp)\r
+ leaq 5(%r8),%r9\r
+ movl %r10d,64+12(%rsp)\r
+ bswapl %r9d\r
+ leaq 6(%r8),%r10\r
+ movl 240(%rcx),%eax\r
+ xorl %ebp,%r9d\r
+ bswapl %r10d\r
+ movl %r9d,80+12(%rsp)\r
+ xorl %ebp,%r10d\r
+ leaq 7(%r8),%r9\r
+ movl %r10d,96+12(%rsp)\r
+ bswapl %r9d\r
+ movl OPENSSL_ia32cap_P+4(%rip),%r10d\r
+ xorl %ebp,%r9d\r
+ andl $71303168,%r10d\r
+ movl %r9d,112+12(%rsp)\r
+\r
+ movups 16(%rcx),%xmm1\r
+\r
+ movdqa 64(%rsp),%xmm6\r
+ movdqa 80(%rsp),%xmm7\r
+\r
+ cmpq $8,%rdx\r
+ jb .Lctr32_tail\r
+\r
+ subq $6,%rdx\r
+ cmpl $4194304,%r10d\r
+ je .Lctr32_6x\r
+\r
+ leaq 128(%rcx),%rcx\r
+ subq $2,%rdx\r
+ jmp .Lctr32_loop8\r
+\r
+.align 16\r
+.Lctr32_6x:\r
+ shll $4,%eax\r
+ movl $48,%r10d\r
+ bswapl %ebp\r
+ leaq 32(%rcx,%rax,1),%rcx\r
+ subq %rax,%r10\r
+ jmp .Lctr32_loop6\r
+\r
+.align 16\r
+.Lctr32_loop6:\r
+ addl $6,%r8d\r
+ movups -48(%rcx,%r10,1),%xmm0\r
+.byte 102,15,56,220,209\r
+ movl %r8d,%eax\r
+ xorl %ebp,%eax\r
+.byte 102,15,56,220,217\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,12\r
+ leal 1(%r8),%eax\r
+.byte 102,15,56,220,225\r
+ xorl %ebp,%eax\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,28\r
+.byte 102,15,56,220,233\r
+ leal 2(%r8),%eax\r
+ xorl %ebp,%eax\r
+.byte 102,15,56,220,241\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,44\r
+ leal 3(%r8),%eax\r
+.byte 102,15,56,220,249\r
+ movups -32(%rcx,%r10,1),%xmm1\r
+ xorl %ebp,%eax\r
+\r
+.byte 102,15,56,220,208\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,60\r
+ leal 4(%r8),%eax\r
+.byte 102,15,56,220,216\r
+ xorl %ebp,%eax\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,76\r
+.byte 102,15,56,220,224\r
+ leal 5(%r8),%eax\r
+ xorl %ebp,%eax\r
+.byte 102,15,56,220,232\r
+.byte 0x0f,0x38,0xf1,0x44,0x24,92\r
+ movq %r10,%rax\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups -16(%rcx,%r10,1),%xmm0\r
+\r
+ call .Lenc_loop6\r
+\r
+ movdqu (%rdi),%xmm8\r
+ movdqu 16(%rdi),%xmm9\r
+ movdqu 32(%rdi),%xmm10\r
+ movdqu 48(%rdi),%xmm11\r
+ movdqu 64(%rdi),%xmm12\r
+ movdqu 80(%rdi),%xmm13\r
+ leaq 96(%rdi),%rdi\r
+ movups -64(%rcx,%r10,1),%xmm1\r
+ pxor %xmm2,%xmm8\r
+ movaps 0(%rsp),%xmm2\r
+ pxor %xmm3,%xmm9\r
+ movaps 16(%rsp),%xmm3\r
+ pxor %xmm4,%xmm10\r
+ movaps 32(%rsp),%xmm4\r
+ pxor %xmm5,%xmm11\r
+ movaps 48(%rsp),%xmm5\r
+ pxor %xmm6,%xmm12\r
+ movaps 64(%rsp),%xmm6\r
+ pxor %xmm7,%xmm13\r
+ movaps 80(%rsp),%xmm7\r
+ movdqu %xmm8,(%rsi)\r
+ movdqu %xmm9,16(%rsi)\r
+ movdqu %xmm10,32(%rsi)\r
+ movdqu %xmm11,48(%rsi)\r
+ movdqu %xmm12,64(%rsi)\r
+ movdqu %xmm13,80(%rsi)\r
+ leaq 96(%rsi),%rsi\r
+\r
+ subq $6,%rdx\r
+ jnc .Lctr32_loop6\r
+\r
+ addq $6,%rdx\r
+ jz .Lctr32_done\r
+\r
+ leal -48(%r10),%eax\r
+ leaq -80(%rcx,%r10,1),%rcx\r
+ negl %eax\r
+ shrl $4,%eax\r
+ jmp .Lctr32_tail\r
+\r
+.align 32\r
+.Lctr32_loop8:\r
+ addl $8,%r8d\r
+ movdqa 96(%rsp),%xmm8\r
+.byte 102,15,56,220,209\r
+ movl %r8d,%r9d\r
+ movdqa 112(%rsp),%xmm9\r
+.byte 102,15,56,220,217\r
+ bswapl %r9d\r
+ movups 32-128(%rcx),%xmm0\r
+.byte 102,15,56,220,225\r
+ xorl %ebp,%r9d\r
+ nop\r
+.byte 102,15,56,220,233\r
+ movl %r9d,0+12(%rsp)\r
+ leaq 1(%r8),%r9\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 48-128(%rcx),%xmm1\r
+ bswapl %r9d\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movl %r9d,16+12(%rsp)\r
+ leaq 2(%r8),%r9\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 64-128(%rcx),%xmm0\r
+ bswapl %r9d\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movl %r9d,32+12(%rsp)\r
+ leaq 3(%r8),%r9\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 80-128(%rcx),%xmm1\r
+ bswapl %r9d\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movl %r9d,48+12(%rsp)\r
+ leaq 4(%r8),%r9\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 96-128(%rcx),%xmm0\r
+ bswapl %r9d\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movl %r9d,64+12(%rsp)\r
+ leaq 5(%r8),%r9\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 112-128(%rcx),%xmm1\r
+ bswapl %r9d\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movl %r9d,80+12(%rsp)\r
+ leaq 6(%r8),%r9\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 128-128(%rcx),%xmm0\r
+ bswapl %r9d\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ xorl %ebp,%r9d\r
+.byte 0x66,0x90\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movl %r9d,96+12(%rsp)\r
+ leaq 7(%r8),%r9\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 144-128(%rcx),%xmm1\r
+ bswapl %r9d\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+ xorl %ebp,%r9d\r
+ movdqu 0(%rdi),%xmm10\r
+.byte 102,15,56,220,232\r
+ movl %r9d,112+12(%rsp)\r
+ cmpl $11,%eax\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 160-128(%rcx),%xmm0\r
+\r
+ jb .Lctr32_enc_done\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 176-128(%rcx),%xmm1\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 192-128(%rcx),%xmm0\r
+ je .Lctr32_enc_done\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movups 208-128(%rcx),%xmm1\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+.byte 102,68,15,56,220,192\r
+.byte 102,68,15,56,220,200\r
+ movups 224-128(%rcx),%xmm0\r
+ jmp .Lctr32_enc_done\r
+\r
+.align 16\r
+.Lctr32_enc_done:\r
+ movdqu 16(%rdi),%xmm11\r
+ pxor %xmm0,%xmm10\r
+ movdqu 32(%rdi),%xmm12\r
+ pxor %xmm0,%xmm11\r
+ movdqu 48(%rdi),%xmm13\r
+ pxor %xmm0,%xmm12\r
+ movdqu 64(%rdi),%xmm14\r
+ pxor %xmm0,%xmm13\r
+ movdqu 80(%rdi),%xmm15\r
+ pxor %xmm0,%xmm14\r
+ pxor %xmm0,%xmm15\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+.byte 102,68,15,56,220,201\r
+ movdqu 96(%rdi),%xmm1\r
+ leaq 128(%rdi),%rdi\r
+\r
+.byte 102,65,15,56,221,210\r
+ pxor %xmm0,%xmm1\r
+ movdqu 112-128(%rdi),%xmm10\r
+.byte 102,65,15,56,221,219\r
+ pxor %xmm0,%xmm10\r
+ movdqa 0(%rsp),%xmm11\r
+.byte 102,65,15,56,221,228\r
+.byte 102,65,15,56,221,237\r
+ movdqa 16(%rsp),%xmm12\r
+ movdqa 32(%rsp),%xmm13\r
+.byte 102,65,15,56,221,246\r
+.byte 102,65,15,56,221,255\r
+ movdqa 48(%rsp),%xmm14\r
+ movdqa 64(%rsp),%xmm15\r
+.byte 102,68,15,56,221,193\r
+ movdqa 80(%rsp),%xmm0\r
+ movups 16-128(%rcx),%xmm1\r
+.byte 102,69,15,56,221,202\r
+\r
+ movups %xmm2,(%rsi)\r
+ movdqa %xmm11,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ movdqa %xmm12,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ movdqa %xmm13,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ movdqa %xmm14,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ movdqa %xmm15,%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ movdqa %xmm0,%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ movups %xmm9,112(%rsi)\r
+ leaq 128(%rsi),%rsi\r
+\r
+ subq $8,%rdx\r
+ jnc .Lctr32_loop8\r
+\r
+ addq $8,%rdx\r
+ jz .Lctr32_done\r
+ leaq -128(%rcx),%rcx\r
+\r
+.Lctr32_tail:\r
+\r
+\r
+ leaq 16(%rcx),%rcx\r
+ cmpq $4,%rdx\r
+ jb .Lctr32_loop3\r
+ je .Lctr32_loop4\r
+\r
+\r
+ shll $4,%eax\r
+ movdqa 96(%rsp),%xmm8\r
+ pxor %xmm9,%xmm9\r
+\r
+ movups 16(%rcx),%xmm0\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+ leaq 32-16(%rcx,%rax,1),%rcx\r
+ negq %rax\r
+.byte 102,15,56,220,225\r
+ addq $16,%rax\r
+ movups (%rdi),%xmm10\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+ movups 16(%rdi),%xmm11\r
+ movups 32(%rdi),%xmm12\r
+.byte 102,15,56,220,249\r
+.byte 102,68,15,56,220,193\r
+\r
+ call .Lenc_loop8_enter\r
+\r
+ movdqu 48(%rdi),%xmm13\r
+ pxor %xmm10,%xmm2\r
+ movdqu 64(%rdi),%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm10,%xmm6\r
+ movdqu %xmm5,48(%rsi)\r
+ movdqu %xmm6,64(%rsi)\r
+ cmpq $6,%rdx\r
+ jb .Lctr32_done\r
+\r
+ movups 80(%rdi),%xmm11\r
+ xorps %xmm11,%xmm7\r
+ movups %xmm7,80(%rsi)\r
+ je .Lctr32_done\r
+\r
+ movups 96(%rdi),%xmm12\r
+ xorps %xmm12,%xmm8\r
+ movups %xmm8,96(%rsi)\r
+ jmp .Lctr32_done\r
+\r
+.align 32\r
+.Lctr32_loop4:\r
+.byte 102,15,56,220,209\r
+ leaq 16(%rcx),%rcx\r
+ decl %eax\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups (%rcx),%xmm1\r
+ jnz .Lctr32_loop4\r
+.byte 102,15,56,221,209\r
+.byte 102,15,56,221,217\r
+ movups (%rdi),%xmm10\r
+ movups 16(%rdi),%xmm11\r
+.byte 102,15,56,221,225\r
+.byte 102,15,56,221,233\r
+ movups 32(%rdi),%xmm12\r
+ movups 48(%rdi),%xmm13\r
+\r
+ xorps %xmm10,%xmm2\r
+ movups %xmm2,(%rsi)\r
+ xorps %xmm11,%xmm3\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm5,48(%rsi)\r
+ jmp .Lctr32_done\r
+\r
+.align 32\r
+.Lctr32_loop3:\r
+.byte 102,15,56,220,209\r
+ leaq 16(%rcx),%rcx\r
+ decl %eax\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+ movups (%rcx),%xmm1\r
+ jnz .Lctr32_loop3\r
+.byte 102,15,56,221,209\r
+.byte 102,15,56,221,217\r
+.byte 102,15,56,221,225\r
+\r
+ movups (%rdi),%xmm10\r
+ xorps %xmm10,%xmm2\r
+ movups %xmm2,(%rsi)\r
+ cmpq $2,%rdx\r
+ jb .Lctr32_done\r
+\r
+ movups 16(%rdi),%xmm11\r
+ xorps %xmm11,%xmm3\r
+ movups %xmm3,16(%rsi)\r
+ je .Lctr32_done\r
+\r
+ movups 32(%rdi),%xmm12\r
+ xorps %xmm12,%xmm4\r
+ movups %xmm4,32(%rsi)\r
+\r
+.Lctr32_done:\r
+ xorps %xmm0,%xmm0\r
+ xorl %ebp,%ebp\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ movaps %xmm0,0(%rsp)\r
+ pxor %xmm8,%xmm8\r
+ movaps %xmm0,16(%rsp)\r
+ pxor %xmm9,%xmm9\r
+ movaps %xmm0,32(%rsp)\r
+ pxor %xmm10,%xmm10\r
+ movaps %xmm0,48(%rsp)\r
+ pxor %xmm11,%xmm11\r
+ movaps %xmm0,64(%rsp)\r
+ pxor %xmm12,%xmm12\r
+ movaps %xmm0,80(%rsp)\r
+ pxor %xmm13,%xmm13\r
+ movaps %xmm0,96(%rsp)\r
+ pxor %xmm14,%xmm14\r
+ movaps %xmm0,112(%rsp)\r
+ pxor %xmm15,%xmm15\r
+ movq -8(%r11),%rbp\r
+.cfi_restore %rbp\r
+ leaq (%r11),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lctr32_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ctr32_encrypt_blocks,.-aesni_ctr32_encrypt_blocks\r
+.globl aesni_xts_encrypt\r
+.type aesni_xts_encrypt,@function\r
+.align 16\r
+aesni_xts_encrypt:\r
+.cfi_startproc\r
+ leaq (%rsp),%r11\r
+.cfi_def_cfa_register %r11\r
+ pushq %rbp\r
+.cfi_offset %rbp,-16\r
+ subq $112,%rsp\r
+ andq $-16,%rsp\r
+ movups (%r9),%xmm2\r
+ movl 240(%r8),%eax\r
+ movl 240(%rcx),%r10d\r
+ movups (%r8),%xmm0\r
+ movups 16(%r8),%xmm1\r
+ leaq 32(%r8),%r8\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_8:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%r8),%xmm1\r
+ leaq 16(%r8),%r8\r
+ jnz .Loop_enc1_8\r
+.byte 102,15,56,221,209\r
+ movups (%rcx),%xmm0\r
+ movq %rcx,%rbp\r
+ movl %r10d,%eax\r
+ shll $4,%r10d\r
+ movq %rdx,%r9\r
+ andq $-16,%rdx\r
+\r
+ movups 16(%rcx,%r10,1),%xmm1\r
+\r
+ movdqa .Lxts_magic(%rip),%xmm8\r
+ movdqa %xmm2,%xmm15\r
+ pshufd $0x5f,%xmm2,%xmm9\r
+ pxor %xmm0,%xmm1\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm10\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm10\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm11\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm11\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm12\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm12\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm13\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm13\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm15,%xmm14\r
+ psrad $31,%xmm9\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm9\r
+ pxor %xmm0,%xmm14\r
+ pxor %xmm9,%xmm15\r
+ movaps %xmm1,96(%rsp)\r
+\r
+ subq $96,%rdx\r
+ jc .Lxts_enc_short\r
+\r
+ movl $16+96,%eax\r
+ leaq 32(%rbp,%r10,1),%rcx\r
+ subq %r10,%rax\r
+ movups 16(%rbp),%xmm1\r
+ movq %rax,%r10\r
+ leaq .Lxts_magic(%rip),%r8\r
+ jmp .Lxts_enc_grandloop\r
+\r
+.align 32\r
+.Lxts_enc_grandloop:\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqa %xmm0,%xmm8\r
+ movdqu 16(%rdi),%xmm3\r
+ pxor %xmm10,%xmm2\r
+ movdqu 32(%rdi),%xmm4\r
+ pxor %xmm11,%xmm3\r
+.byte 102,15,56,220,209\r
+ movdqu 48(%rdi),%xmm5\r
+ pxor %xmm12,%xmm4\r
+.byte 102,15,56,220,217\r
+ movdqu 64(%rdi),%xmm6\r
+ pxor %xmm13,%xmm5\r
+.byte 102,15,56,220,225\r
+ movdqu 80(%rdi),%xmm7\r
+ pxor %xmm15,%xmm8\r
+ movdqa 96(%rsp),%xmm9\r
+ pxor %xmm14,%xmm6\r
+.byte 102,15,56,220,233\r
+ movups 32(%rbp),%xmm0\r
+ leaq 96(%rdi),%rdi\r
+ pxor %xmm8,%xmm7\r
+\r
+ pxor %xmm9,%xmm10\r
+.byte 102,15,56,220,241\r
+ pxor %xmm9,%xmm11\r
+ movdqa %xmm10,0(%rsp)\r
+.byte 102,15,56,220,249\r
+ movups 48(%rbp),%xmm1\r
+ pxor %xmm9,%xmm12\r
+\r
+.byte 102,15,56,220,208\r
+ pxor %xmm9,%xmm13\r
+ movdqa %xmm11,16(%rsp)\r
+.byte 102,15,56,220,216\r
+ pxor %xmm9,%xmm14\r
+ movdqa %xmm12,32(%rsp)\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ pxor %xmm9,%xmm8\r
+ movdqa %xmm14,64(%rsp)\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups 64(%rbp),%xmm0\r
+ movdqa %xmm8,80(%rsp)\r
+ pshufd $0x5f,%xmm15,%xmm9\r
+ jmp .Lxts_enc_loop6\r
+.align 32\r
+.Lxts_enc_loop6:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movups -64(%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups -80(%rcx,%rax,1),%xmm0\r
+ jnz .Lxts_enc_loop6\r
+\r
+ movdqa (%r8),%xmm8\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,220,209\r
+ paddq %xmm15,%xmm15\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,220,217\r
+ pand %xmm8,%xmm14\r
+ movups (%rbp),%xmm10\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+ pxor %xmm14,%xmm15\r
+ movaps %xmm10,%xmm11\r
+.byte 102,15,56,220,249\r
+ movups -64(%rcx),%xmm1\r
+\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,220,208\r
+ paddd %xmm9,%xmm9\r
+ pxor %xmm15,%xmm10\r
+.byte 102,15,56,220,216\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ pand %xmm8,%xmm14\r
+ movaps %xmm11,%xmm12\r
+.byte 102,15,56,220,240\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,220,248\r
+ movups -48(%rcx),%xmm0\r
+\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,220,209\r
+ pxor %xmm15,%xmm11\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,220,217\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movdqa %xmm13,48(%rsp)\r
+ pxor %xmm14,%xmm15\r
+.byte 102,15,56,220,241\r
+ movaps %xmm12,%xmm13\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,220,249\r
+ movups -32(%rcx),%xmm1\r
+\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,220,208\r
+ pxor %xmm15,%xmm12\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,220,216\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+ pxor %xmm14,%xmm15\r
+ movaps %xmm13,%xmm14\r
+.byte 102,15,56,220,248\r
+\r
+ movdqa %xmm9,%xmm0\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,220,209\r
+ pxor %xmm15,%xmm13\r
+ psrad $31,%xmm0\r
+.byte 102,15,56,220,217\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm0\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ pxor %xmm0,%xmm15\r
+ movups (%rbp),%xmm0\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movups 16(%rbp),%xmm1\r
+\r
+ pxor %xmm15,%xmm14\r
+.byte 102,15,56,221,84,36,0\r
+ psrad $31,%xmm9\r
+ paddq %xmm15,%xmm15\r
+.byte 102,15,56,221,92,36,16\r
+.byte 102,15,56,221,100,36,32\r
+ pand %xmm8,%xmm9\r
+ movq %r10,%rax\r
+.byte 102,15,56,221,108,36,48\r
+.byte 102,15,56,221,116,36,64\r
+.byte 102,15,56,221,124,36,80\r
+ pxor %xmm9,%xmm15\r
+\r
+ leaq 96(%rsi),%rsi\r
+ movups %xmm2,-96(%rsi)\r
+ movups %xmm3,-80(%rsi)\r
+ movups %xmm4,-64(%rsi)\r
+ movups %xmm5,-48(%rsi)\r
+ movups %xmm6,-32(%rsi)\r
+ movups %xmm7,-16(%rsi)\r
+ subq $96,%rdx\r
+ jnc .Lxts_enc_grandloop\r
+\r
+ movl $16+96,%eax\r
+ subl %r10d,%eax\r
+ movq %rbp,%rcx\r
+ shrl $4,%eax\r
+\r
+.Lxts_enc_short:\r
+\r
+ movl %eax,%r10d\r
+ pxor %xmm0,%xmm10\r
+ addq $96,%rdx\r
+ jz .Lxts_enc_done\r
+\r
+ pxor %xmm0,%xmm11\r
+ cmpq $0x20,%rdx\r
+ jb .Lxts_enc_one\r
+ pxor %xmm0,%xmm12\r
+ je .Lxts_enc_two\r
+\r
+ pxor %xmm0,%xmm13\r
+ cmpq $0x40,%rdx\r
+ jb .Lxts_enc_three\r
+ pxor %xmm0,%xmm14\r
+ je .Lxts_enc_four\r
+\r
+ movdqu (%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ pxor %xmm10,%xmm2\r
+ movdqu 48(%rdi),%xmm5\r
+ pxor %xmm11,%xmm3\r
+ movdqu 64(%rdi),%xmm6\r
+ leaq 80(%rdi),%rdi\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm13,%xmm5\r
+ pxor %xmm14,%xmm6\r
+ pxor %xmm7,%xmm7\r
+\r
+ call _aesni_encrypt6\r
+\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm15,%xmm10\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+ movdqu %xmm2,(%rsi)\r
+ xorps %xmm13,%xmm5\r
+ movdqu %xmm3,16(%rsi)\r
+ xorps %xmm14,%xmm6\r
+ movdqu %xmm4,32(%rsi)\r
+ movdqu %xmm5,48(%rsi)\r
+ movdqu %xmm6,64(%rsi)\r
+ leaq 80(%rsi),%rsi\r
+ jmp .Lxts_enc_done\r
+\r
+.align 16\r
+.Lxts_enc_one:\r
+ movups (%rdi),%xmm2\r
+ leaq 16(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_9:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_9\r
+.byte 102,15,56,221,209\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm11,%xmm10\r
+ movups %xmm2,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+ jmp .Lxts_enc_done\r
+\r
+.align 16\r
+.Lxts_enc_two:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ leaq 32(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ xorps %xmm11,%xmm3\r
+\r
+ call _aesni_encrypt2\r
+\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm12,%xmm10\r
+ xorps %xmm11,%xmm3\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ leaq 32(%rsi),%rsi\r
+ jmp .Lxts_enc_done\r
+\r
+.align 16\r
+.Lxts_enc_three:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ movups 32(%rdi),%xmm4\r
+ leaq 48(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+\r
+ call _aesni_encrypt3\r
+\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm13,%xmm10\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ leaq 48(%rsi),%rsi\r
+ jmp .Lxts_enc_done\r
+\r
+.align 16\r
+.Lxts_enc_four:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ movups 32(%rdi),%xmm4\r
+ xorps %xmm10,%xmm2\r
+ movups 48(%rdi),%xmm5\r
+ leaq 64(%rdi),%rdi\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+ xorps %xmm13,%xmm5\r
+\r
+ call _aesni_encrypt4\r
+\r
+ pxor %xmm10,%xmm2\r
+ movdqa %xmm14,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm3,16(%rsi)\r
+ movdqu %xmm4,32(%rsi)\r
+ movdqu %xmm5,48(%rsi)\r
+ leaq 64(%rsi),%rsi\r
+ jmp .Lxts_enc_done\r
+\r
+.align 16\r
+.Lxts_enc_done:\r
+ andq $15,%r9\r
+ jz .Lxts_enc_ret\r
+ movq %r9,%rdx\r
+\r
+.Lxts_enc_steal:\r
+ movzbl (%rdi),%eax\r
+ movzbl -16(%rsi),%ecx\r
+ leaq 1(%rdi),%rdi\r
+ movb %al,-16(%rsi)\r
+ movb %cl,0(%rsi)\r
+ leaq 1(%rsi),%rsi\r
+ subq $1,%rdx\r
+ jnz .Lxts_enc_steal\r
+\r
+ subq %r9,%rsi\r
+ movq %rbp,%rcx\r
+ movl %r10d,%eax\r
+\r
+ movups -16(%rsi),%xmm2\r
+ xorps %xmm10,%xmm2\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_10:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_10\r
+.byte 102,15,56,221,209\r
+ xorps %xmm10,%xmm2\r
+ movups %xmm2,-16(%rsi)\r
+\r
+.Lxts_enc_ret:\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ movaps %xmm0,0(%rsp)\r
+ pxor %xmm8,%xmm8\r
+ movaps %xmm0,16(%rsp)\r
+ pxor %xmm9,%xmm9\r
+ movaps %xmm0,32(%rsp)\r
+ pxor %xmm10,%xmm10\r
+ movaps %xmm0,48(%rsp)\r
+ pxor %xmm11,%xmm11\r
+ movaps %xmm0,64(%rsp)\r
+ pxor %xmm12,%xmm12\r
+ movaps %xmm0,80(%rsp)\r
+ pxor %xmm13,%xmm13\r
+ movaps %xmm0,96(%rsp)\r
+ pxor %xmm14,%xmm14\r
+ pxor %xmm15,%xmm15\r
+ movq -8(%r11),%rbp\r
+.cfi_restore %rbp\r
+ leaq (%r11),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lxts_enc_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_xts_encrypt,.-aesni_xts_encrypt\r
+.globl aesni_xts_decrypt\r
+.type aesni_xts_decrypt,@function\r
+.align 16\r
+aesni_xts_decrypt:\r
+.cfi_startproc\r
+ leaq (%rsp),%r11\r
+.cfi_def_cfa_register %r11\r
+ pushq %rbp\r
+.cfi_offset %rbp,-16\r
+ subq $112,%rsp\r
+ andq $-16,%rsp\r
+ movups (%r9),%xmm2\r
+ movl 240(%r8),%eax\r
+ movl 240(%rcx),%r10d\r
+ movups (%r8),%xmm0\r
+ movups 16(%r8),%xmm1\r
+ leaq 32(%r8),%r8\r
+ xorps %xmm0,%xmm2\r
+.Loop_enc1_11:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%r8),%xmm1\r
+ leaq 16(%r8),%r8\r
+ jnz .Loop_enc1_11\r
+.byte 102,15,56,221,209\r
+ xorl %eax,%eax\r
+ testq $15,%rdx\r
+ setnz %al\r
+ shlq $4,%rax\r
+ subq %rax,%rdx\r
+\r
+ movups (%rcx),%xmm0\r
+ movq %rcx,%rbp\r
+ movl %r10d,%eax\r
+ shll $4,%r10d\r
+ movq %rdx,%r9\r
+ andq $-16,%rdx\r
+\r
+ movups 16(%rcx,%r10,1),%xmm1\r
+\r
+ movdqa .Lxts_magic(%rip),%xmm8\r
+ movdqa %xmm2,%xmm15\r
+ pshufd $0x5f,%xmm2,%xmm9\r
+ pxor %xmm0,%xmm1\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm10\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm10\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm11\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm11\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm12\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm12\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+ movdqa %xmm15,%xmm13\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+ pxor %xmm0,%xmm13\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm15,%xmm14\r
+ psrad $31,%xmm9\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm9\r
+ pxor %xmm0,%xmm14\r
+ pxor %xmm9,%xmm15\r
+ movaps %xmm1,96(%rsp)\r
+\r
+ subq $96,%rdx\r
+ jc .Lxts_dec_short\r
+\r
+ movl $16+96,%eax\r
+ leaq 32(%rbp,%r10,1),%rcx\r
+ subq %r10,%rax\r
+ movups 16(%rbp),%xmm1\r
+ movq %rax,%r10\r
+ leaq .Lxts_magic(%rip),%r8\r
+ jmp .Lxts_dec_grandloop\r
+\r
+.align 32\r
+.Lxts_dec_grandloop:\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqa %xmm0,%xmm8\r
+ movdqu 16(%rdi),%xmm3\r
+ pxor %xmm10,%xmm2\r
+ movdqu 32(%rdi),%xmm4\r
+ pxor %xmm11,%xmm3\r
+.byte 102,15,56,222,209\r
+ movdqu 48(%rdi),%xmm5\r
+ pxor %xmm12,%xmm4\r
+.byte 102,15,56,222,217\r
+ movdqu 64(%rdi),%xmm6\r
+ pxor %xmm13,%xmm5\r
+.byte 102,15,56,222,225\r
+ movdqu 80(%rdi),%xmm7\r
+ pxor %xmm15,%xmm8\r
+ movdqa 96(%rsp),%xmm9\r
+ pxor %xmm14,%xmm6\r
+.byte 102,15,56,222,233\r
+ movups 32(%rbp),%xmm0\r
+ leaq 96(%rdi),%rdi\r
+ pxor %xmm8,%xmm7\r
+\r
+ pxor %xmm9,%xmm10\r
+.byte 102,15,56,222,241\r
+ pxor %xmm9,%xmm11\r
+ movdqa %xmm10,0(%rsp)\r
+.byte 102,15,56,222,249\r
+ movups 48(%rbp),%xmm1\r
+ pxor %xmm9,%xmm12\r
+\r
+.byte 102,15,56,222,208\r
+ pxor %xmm9,%xmm13\r
+ movdqa %xmm11,16(%rsp)\r
+.byte 102,15,56,222,216\r
+ pxor %xmm9,%xmm14\r
+ movdqa %xmm12,32(%rsp)\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ pxor %xmm9,%xmm8\r
+ movdqa %xmm14,64(%rsp)\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups 64(%rbp),%xmm0\r
+ movdqa %xmm8,80(%rsp)\r
+ pshufd $0x5f,%xmm15,%xmm9\r
+ jmp .Lxts_dec_loop6\r
+.align 32\r
+.Lxts_dec_loop6:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movups -64(%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups -80(%rcx,%rax,1),%xmm0\r
+ jnz .Lxts_dec_loop6\r
+\r
+ movdqa (%r8),%xmm8\r
+ movdqa %xmm9,%xmm14\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,222,209\r
+ paddq %xmm15,%xmm15\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,222,217\r
+ pand %xmm8,%xmm14\r
+ movups (%rbp),%xmm10\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+ pxor %xmm14,%xmm15\r
+ movaps %xmm10,%xmm11\r
+.byte 102,15,56,222,249\r
+ movups -64(%rcx),%xmm1\r
+\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,222,208\r
+ paddd %xmm9,%xmm9\r
+ pxor %xmm15,%xmm10\r
+.byte 102,15,56,222,216\r
+ psrad $31,%xmm14\r
+ paddq %xmm15,%xmm15\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ pand %xmm8,%xmm14\r
+ movaps %xmm11,%xmm12\r
+.byte 102,15,56,222,240\r
+ pxor %xmm14,%xmm15\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,222,248\r
+ movups -48(%rcx),%xmm0\r
+\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,222,209\r
+ pxor %xmm15,%xmm11\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,222,217\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movdqa %xmm13,48(%rsp)\r
+ pxor %xmm14,%xmm15\r
+.byte 102,15,56,222,241\r
+ movaps %xmm12,%xmm13\r
+ movdqa %xmm9,%xmm14\r
+.byte 102,15,56,222,249\r
+ movups -32(%rcx),%xmm1\r
+\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,222,208\r
+ pxor %xmm15,%xmm12\r
+ psrad $31,%xmm14\r
+.byte 102,15,56,222,216\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm14\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+ pxor %xmm14,%xmm15\r
+ movaps %xmm13,%xmm14\r
+.byte 102,15,56,222,248\r
+\r
+ movdqa %xmm9,%xmm0\r
+ paddd %xmm9,%xmm9\r
+.byte 102,15,56,222,209\r
+ pxor %xmm15,%xmm13\r
+ psrad $31,%xmm0\r
+.byte 102,15,56,222,217\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm0\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ pxor %xmm0,%xmm15\r
+ movups (%rbp),%xmm0\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movups 16(%rbp),%xmm1\r
+\r
+ pxor %xmm15,%xmm14\r
+.byte 102,15,56,223,84,36,0\r
+ psrad $31,%xmm9\r
+ paddq %xmm15,%xmm15\r
+.byte 102,15,56,223,92,36,16\r
+.byte 102,15,56,223,100,36,32\r
+ pand %xmm8,%xmm9\r
+ movq %r10,%rax\r
+.byte 102,15,56,223,108,36,48\r
+.byte 102,15,56,223,116,36,64\r
+.byte 102,15,56,223,124,36,80\r
+ pxor %xmm9,%xmm15\r
+\r
+ leaq 96(%rsi),%rsi\r
+ movups %xmm2,-96(%rsi)\r
+ movups %xmm3,-80(%rsi)\r
+ movups %xmm4,-64(%rsi)\r
+ movups %xmm5,-48(%rsi)\r
+ movups %xmm6,-32(%rsi)\r
+ movups %xmm7,-16(%rsi)\r
+ subq $96,%rdx\r
+ jnc .Lxts_dec_grandloop\r
+\r
+ movl $16+96,%eax\r
+ subl %r10d,%eax\r
+ movq %rbp,%rcx\r
+ shrl $4,%eax\r
+\r
+.Lxts_dec_short:\r
+\r
+ movl %eax,%r10d\r
+ pxor %xmm0,%xmm10\r
+ pxor %xmm0,%xmm11\r
+ addq $96,%rdx\r
+ jz .Lxts_dec_done\r
+\r
+ pxor %xmm0,%xmm12\r
+ cmpq $0x20,%rdx\r
+ jb .Lxts_dec_one\r
+ pxor %xmm0,%xmm13\r
+ je .Lxts_dec_two\r
+\r
+ pxor %xmm0,%xmm14\r
+ cmpq $0x40,%rdx\r
+ jb .Lxts_dec_three\r
+ je .Lxts_dec_four\r
+\r
+ movdqu (%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ pxor %xmm10,%xmm2\r
+ movdqu 48(%rdi),%xmm5\r
+ pxor %xmm11,%xmm3\r
+ movdqu 64(%rdi),%xmm6\r
+ leaq 80(%rdi),%rdi\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm13,%xmm5\r
+ pxor %xmm14,%xmm6\r
+\r
+ call _aesni_decrypt6\r
+\r
+ xorps %xmm10,%xmm2\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+ movdqu %xmm2,(%rsi)\r
+ xorps %xmm13,%xmm5\r
+ movdqu %xmm3,16(%rsi)\r
+ xorps %xmm14,%xmm6\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm14,%xmm14\r
+ movdqu %xmm5,48(%rsi)\r
+ pcmpgtd %xmm15,%xmm14\r
+ movdqu %xmm6,64(%rsi)\r
+ leaq 80(%rsi),%rsi\r
+ pshufd $0x13,%xmm14,%xmm11\r
+ andq $15,%r9\r
+ jz .Lxts_dec_ret\r
+\r
+ movdqa %xmm15,%xmm10\r
+ paddq %xmm15,%xmm15\r
+ pand %xmm8,%xmm11\r
+ pxor %xmm15,%xmm11\r
+ jmp .Lxts_dec_done2\r
+\r
+.align 16\r
+.Lxts_dec_one:\r
+ movups (%rdi),%xmm2\r
+ leaq 16(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_12:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_12\r
+.byte 102,15,56,223,209\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm11,%xmm10\r
+ movups %xmm2,(%rsi)\r
+ movdqa %xmm12,%xmm11\r
+ leaq 16(%rsi),%rsi\r
+ jmp .Lxts_dec_done\r
+\r
+.align 16\r
+.Lxts_dec_two:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ leaq 32(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ xorps %xmm11,%xmm3\r
+\r
+ call _aesni_decrypt2\r
+\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm12,%xmm10\r
+ xorps %xmm11,%xmm3\r
+ movdqa %xmm13,%xmm11\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ leaq 32(%rsi),%rsi\r
+ jmp .Lxts_dec_done\r
+\r
+.align 16\r
+.Lxts_dec_three:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ movups 32(%rdi),%xmm4\r
+ leaq 48(%rdi),%rdi\r
+ xorps %xmm10,%xmm2\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+\r
+ call _aesni_decrypt3\r
+\r
+ xorps %xmm10,%xmm2\r
+ movdqa %xmm13,%xmm10\r
+ xorps %xmm11,%xmm3\r
+ movdqa %xmm14,%xmm11\r
+ xorps %xmm12,%xmm4\r
+ movups %xmm2,(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ leaq 48(%rsi),%rsi\r
+ jmp .Lxts_dec_done\r
+\r
+.align 16\r
+.Lxts_dec_four:\r
+ movups (%rdi),%xmm2\r
+ movups 16(%rdi),%xmm3\r
+ movups 32(%rdi),%xmm4\r
+ xorps %xmm10,%xmm2\r
+ movups 48(%rdi),%xmm5\r
+ leaq 64(%rdi),%rdi\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm12,%xmm4\r
+ xorps %xmm13,%xmm5\r
+\r
+ call _aesni_decrypt4\r
+\r
+ pxor %xmm10,%xmm2\r
+ movdqa %xmm14,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqa %xmm15,%xmm11\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm3,16(%rsi)\r
+ movdqu %xmm4,32(%rsi)\r
+ movdqu %xmm5,48(%rsi)\r
+ leaq 64(%rsi),%rsi\r
+ jmp .Lxts_dec_done\r
+\r
+.align 16\r
+.Lxts_dec_done:\r
+ andq $15,%r9\r
+ jz .Lxts_dec_ret\r
+.Lxts_dec_done2:\r
+ movq %r9,%rdx\r
+ movq %rbp,%rcx\r
+ movl %r10d,%eax\r
+\r
+ movups (%rdi),%xmm2\r
+ xorps %xmm11,%xmm2\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_13:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_13\r
+.byte 102,15,56,223,209\r
+ xorps %xmm11,%xmm2\r
+ movups %xmm2,(%rsi)\r
+\r
+.Lxts_dec_steal:\r
+ movzbl 16(%rdi),%eax\r
+ movzbl (%rsi),%ecx\r
+ leaq 1(%rdi),%rdi\r
+ movb %al,(%rsi)\r
+ movb %cl,16(%rsi)\r
+ leaq 1(%rsi),%rsi\r
+ subq $1,%rdx\r
+ jnz .Lxts_dec_steal\r
+\r
+ subq %r9,%rsi\r
+ movq %rbp,%rcx\r
+ movl %r10d,%eax\r
+\r
+ movups (%rsi),%xmm2\r
+ xorps %xmm10,%xmm2\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_14:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_14\r
+.byte 102,15,56,223,209\r
+ xorps %xmm10,%xmm2\r
+ movups %xmm2,(%rsi)\r
+\r
+.Lxts_dec_ret:\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ movaps %xmm0,0(%rsp)\r
+ pxor %xmm8,%xmm8\r
+ movaps %xmm0,16(%rsp)\r
+ pxor %xmm9,%xmm9\r
+ movaps %xmm0,32(%rsp)\r
+ pxor %xmm10,%xmm10\r
+ movaps %xmm0,48(%rsp)\r
+ pxor %xmm11,%xmm11\r
+ movaps %xmm0,64(%rsp)\r
+ pxor %xmm12,%xmm12\r
+ movaps %xmm0,80(%rsp)\r
+ pxor %xmm13,%xmm13\r
+ movaps %xmm0,96(%rsp)\r
+ pxor %xmm14,%xmm14\r
+ pxor %xmm15,%xmm15\r
+ movq -8(%r11),%rbp\r
+.cfi_restore %rbp\r
+ leaq (%r11),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lxts_dec_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_xts_decrypt,.-aesni_xts_decrypt\r
+.globl aesni_ocb_encrypt\r
+.type aesni_ocb_encrypt,@function\r
+.align 32\r
+aesni_ocb_encrypt:\r
+.cfi_startproc\r
+ leaq (%rsp),%rax\r
+ pushq %rbx\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r14,-48\r
+ movq 8(%rax),%rbx\r
+ movq 8+8(%rax),%rbp\r
+\r
+ movl 240(%rcx),%r10d\r
+ movq %rcx,%r11\r
+ shll $4,%r10d\r
+ movups (%rcx),%xmm9\r
+ movups 16(%rcx,%r10,1),%xmm1\r
+\r
+ movdqu (%r9),%xmm15\r
+ pxor %xmm1,%xmm9\r
+ pxor %xmm1,%xmm15\r
+\r
+ movl $16+32,%eax\r
+ leaq 32(%r11,%r10,1),%rcx\r
+ movups 16(%r11),%xmm1\r
+ subq %r10,%rax\r
+ movq %rax,%r10\r
+\r
+ movdqu (%rbx),%xmm10\r
+ movdqu (%rbp),%xmm8\r
+\r
+ testq $1,%r8\r
+ jnz .Locb_enc_odd\r
+\r
+ bsfq %r8,%r12\r
+ addq $1,%r8\r
+ shlq $4,%r12\r
+ movdqu (%rbx,%r12,1),%xmm7\r
+ movdqu (%rdi),%xmm2\r
+ leaq 16(%rdi),%rdi\r
+\r
+ call __ocb_encrypt1\r
+\r
+ movdqa %xmm7,%xmm15\r
+ movups %xmm2,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+ subq $1,%rdx\r
+ jz .Locb_enc_done\r
+\r
+.Locb_enc_odd:\r
+ leaq 1(%r8),%r12\r
+ leaq 3(%r8),%r13\r
+ leaq 5(%r8),%r14\r
+ leaq 6(%r8),%r8\r
+ bsfq %r12,%r12\r
+ bsfq %r13,%r13\r
+ bsfq %r14,%r14\r
+ shlq $4,%r12\r
+ shlq $4,%r13\r
+ shlq $4,%r14\r
+\r
+ subq $6,%rdx\r
+ jc .Locb_enc_short\r
+ jmp .Locb_enc_grandloop\r
+\r
+.align 32\r
+.Locb_enc_grandloop:\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqu 80(%rdi),%xmm7\r
+ leaq 96(%rdi),%rdi\r
+\r
+ call __ocb_encrypt6\r
+\r
+ movups %xmm2,0(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+ movups %xmm7,80(%rsi)\r
+ leaq 96(%rsi),%rsi\r
+ subq $6,%rdx\r
+ jnc .Locb_enc_grandloop\r
+\r
+.Locb_enc_short:\r
+ addq $6,%rdx\r
+ jz .Locb_enc_done\r
+\r
+ movdqu 0(%rdi),%xmm2\r
+ cmpq $2,%rdx\r
+ jb .Locb_enc_one\r
+ movdqu 16(%rdi),%xmm3\r
+ je .Locb_enc_two\r
+\r
+ movdqu 32(%rdi),%xmm4\r
+ cmpq $4,%rdx\r
+ jb .Locb_enc_three\r
+ movdqu 48(%rdi),%xmm5\r
+ je .Locb_enc_four\r
+\r
+ movdqu 64(%rdi),%xmm6\r
+ pxor %xmm7,%xmm7\r
+\r
+ call __ocb_encrypt6\r
+\r
+ movdqa %xmm14,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+ movups %xmm6,64(%rsi)\r
+\r
+ jmp .Locb_enc_done\r
+\r
+.align 16\r
+.Locb_enc_one:\r
+ movdqa %xmm10,%xmm7\r
+\r
+ call __ocb_encrypt1\r
+\r
+ movdqa %xmm7,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ jmp .Locb_enc_done\r
+\r
+.align 16\r
+.Locb_enc_two:\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+\r
+ call __ocb_encrypt4\r
+\r
+ movdqa %xmm11,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+\r
+ jmp .Locb_enc_done\r
+\r
+.align 16\r
+.Locb_enc_three:\r
+ pxor %xmm5,%xmm5\r
+\r
+ call __ocb_encrypt4\r
+\r
+ movdqa %xmm12,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+\r
+ jmp .Locb_enc_done\r
+\r
+.align 16\r
+.Locb_enc_four:\r
+ call __ocb_encrypt4\r
+\r
+ movdqa %xmm13,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ movups %xmm3,16(%rsi)\r
+ movups %xmm4,32(%rsi)\r
+ movups %xmm5,48(%rsi)\r
+\r
+.Locb_enc_done:\r
+ pxor %xmm0,%xmm15\r
+ movdqu %xmm8,(%rbp)\r
+ movdqu %xmm15,(%r9)\r
+\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+ pxor %xmm10,%xmm10\r
+ pxor %xmm11,%xmm11\r
+ pxor %xmm12,%xmm12\r
+ pxor %xmm13,%xmm13\r
+ pxor %xmm14,%xmm14\r
+ pxor %xmm15,%xmm15\r
+ leaq 40(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movq -40(%rax),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rax),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rax),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Locb_enc_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ocb_encrypt,.-aesni_ocb_encrypt\r
+\r
+.type __ocb_encrypt6,@function\r
+.align 32\r
+__ocb_encrypt6:\r
+.cfi_startproc\r
+ pxor %xmm9,%xmm15\r
+ movdqu (%rbx,%r12,1),%xmm11\r
+ movdqa %xmm10,%xmm12\r
+ movdqu (%rbx,%r13,1),%xmm13\r
+ movdqa %xmm10,%xmm14\r
+ pxor %xmm15,%xmm10\r
+ movdqu (%rbx,%r14,1),%xmm15\r
+ pxor %xmm10,%xmm11\r
+ pxor %xmm2,%xmm8\r
+ pxor %xmm10,%xmm2\r
+ pxor %xmm11,%xmm12\r
+ pxor %xmm3,%xmm8\r
+ pxor %xmm11,%xmm3\r
+ pxor %xmm12,%xmm13\r
+ pxor %xmm4,%xmm8\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm13,%xmm14\r
+ pxor %xmm5,%xmm8\r
+ pxor %xmm13,%xmm5\r
+ pxor %xmm14,%xmm15\r
+ pxor %xmm6,%xmm8\r
+ pxor %xmm14,%xmm6\r
+ pxor %xmm7,%xmm8\r
+ pxor %xmm15,%xmm7\r
+ movups 32(%r11),%xmm0\r
+\r
+ leaq 1(%r8),%r12\r
+ leaq 3(%r8),%r13\r
+ leaq 5(%r8),%r14\r
+ addq $6,%r8\r
+ pxor %xmm9,%xmm10\r
+ bsfq %r12,%r12\r
+ bsfq %r13,%r13\r
+ bsfq %r14,%r14\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ pxor %xmm9,%xmm11\r
+ pxor %xmm9,%xmm12\r
+.byte 102,15,56,220,241\r
+ pxor %xmm9,%xmm13\r
+ pxor %xmm9,%xmm14\r
+.byte 102,15,56,220,249\r
+ movups 48(%r11),%xmm1\r
+ pxor %xmm9,%xmm15\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups 64(%r11),%xmm0\r
+ shlq $4,%r12\r
+ shlq $4,%r13\r
+ jmp .Locb_enc_loop6\r
+\r
+.align 32\r
+.Locb_enc_loop6:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+.byte 102,15,56,220,240\r
+.byte 102,15,56,220,248\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_enc_loop6\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+.byte 102,15,56,220,241\r
+.byte 102,15,56,220,249\r
+ movups 16(%r11),%xmm1\r
+ shlq $4,%r14\r
+\r
+.byte 102,65,15,56,221,210\r
+ movdqu (%rbx),%xmm10\r
+ movq %r10,%rax\r
+.byte 102,65,15,56,221,219\r
+.byte 102,65,15,56,221,228\r
+.byte 102,65,15,56,221,237\r
+.byte 102,65,15,56,221,246\r
+.byte 102,65,15,56,221,255\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_encrypt6,.-__ocb_encrypt6\r
+\r
+.type __ocb_encrypt4,@function\r
+.align 32\r
+__ocb_encrypt4:\r
+.cfi_startproc\r
+ pxor %xmm9,%xmm15\r
+ movdqu (%rbx,%r12,1),%xmm11\r
+ movdqa %xmm10,%xmm12\r
+ movdqu (%rbx,%r13,1),%xmm13\r
+ pxor %xmm15,%xmm10\r
+ pxor %xmm10,%xmm11\r
+ pxor %xmm2,%xmm8\r
+ pxor %xmm10,%xmm2\r
+ pxor %xmm11,%xmm12\r
+ pxor %xmm3,%xmm8\r
+ pxor %xmm11,%xmm3\r
+ pxor %xmm12,%xmm13\r
+ pxor %xmm4,%xmm8\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm5,%xmm8\r
+ pxor %xmm13,%xmm5\r
+ movups 32(%r11),%xmm0\r
+\r
+ pxor %xmm9,%xmm10\r
+ pxor %xmm9,%xmm11\r
+ pxor %xmm9,%xmm12\r
+ pxor %xmm9,%xmm13\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 48(%r11),%xmm1\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups 64(%r11),%xmm0\r
+ jmp .Locb_enc_loop4\r
+\r
+.align 32\r
+.Locb_enc_loop4:\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,220,208\r
+.byte 102,15,56,220,216\r
+.byte 102,15,56,220,224\r
+.byte 102,15,56,220,232\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_enc_loop4\r
+\r
+.byte 102,15,56,220,209\r
+.byte 102,15,56,220,217\r
+.byte 102,15,56,220,225\r
+.byte 102,15,56,220,233\r
+ movups 16(%r11),%xmm1\r
+ movq %r10,%rax\r
+\r
+.byte 102,65,15,56,221,210\r
+.byte 102,65,15,56,221,219\r
+.byte 102,65,15,56,221,228\r
+.byte 102,65,15,56,221,237\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_encrypt4,.-__ocb_encrypt4\r
+\r
+.type __ocb_encrypt1,@function\r
+.align 32\r
+__ocb_encrypt1:\r
+.cfi_startproc\r
+ pxor %xmm15,%xmm7\r
+ pxor %xmm9,%xmm7\r
+ pxor %xmm2,%xmm8\r
+ pxor %xmm7,%xmm2\r
+ movups 32(%r11),%xmm0\r
+\r
+.byte 102,15,56,220,209\r
+ movups 48(%r11),%xmm1\r
+ pxor %xmm9,%xmm7\r
+\r
+.byte 102,15,56,220,208\r
+ movups 64(%r11),%xmm0\r
+ jmp .Locb_enc_loop1\r
+\r
+.align 32\r
+.Locb_enc_loop1:\r
+.byte 102,15,56,220,209\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,220,208\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_enc_loop1\r
+\r
+.byte 102,15,56,220,209\r
+ movups 16(%r11),%xmm1\r
+ movq %r10,%rax\r
+\r
+.byte 102,15,56,221,215\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_encrypt1,.-__ocb_encrypt1\r
+\r
+.globl aesni_ocb_decrypt\r
+.type aesni_ocb_decrypt,@function\r
+.align 32\r
+aesni_ocb_decrypt:\r
+.cfi_startproc\r
+ leaq (%rsp),%rax\r
+ pushq %rbx\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r14,-48\r
+ movq 8(%rax),%rbx\r
+ movq 8+8(%rax),%rbp\r
+\r
+ movl 240(%rcx),%r10d\r
+ movq %rcx,%r11\r
+ shll $4,%r10d\r
+ movups (%rcx),%xmm9\r
+ movups 16(%rcx,%r10,1),%xmm1\r
+\r
+ movdqu (%r9),%xmm15\r
+ pxor %xmm1,%xmm9\r
+ pxor %xmm1,%xmm15\r
+\r
+ movl $16+32,%eax\r
+ leaq 32(%r11,%r10,1),%rcx\r
+ movups 16(%r11),%xmm1\r
+ subq %r10,%rax\r
+ movq %rax,%r10\r
+\r
+ movdqu (%rbx),%xmm10\r
+ movdqu (%rbp),%xmm8\r
+\r
+ testq $1,%r8\r
+ jnz .Locb_dec_odd\r
+\r
+ bsfq %r8,%r12\r
+ addq $1,%r8\r
+ shlq $4,%r12\r
+ movdqu (%rbx,%r12,1),%xmm7\r
+ movdqu (%rdi),%xmm2\r
+ leaq 16(%rdi),%rdi\r
+\r
+ call __ocb_decrypt1\r
+\r
+ movdqa %xmm7,%xmm15\r
+ movups %xmm2,(%rsi)\r
+ xorps %xmm2,%xmm8\r
+ leaq 16(%rsi),%rsi\r
+ subq $1,%rdx\r
+ jz .Locb_dec_done\r
+\r
+.Locb_dec_odd:\r
+ leaq 1(%r8),%r12\r
+ leaq 3(%r8),%r13\r
+ leaq 5(%r8),%r14\r
+ leaq 6(%r8),%r8\r
+ bsfq %r12,%r12\r
+ bsfq %r13,%r13\r
+ bsfq %r14,%r14\r
+ shlq $4,%r12\r
+ shlq $4,%r13\r
+ shlq $4,%r14\r
+\r
+ subq $6,%rdx\r
+ jc .Locb_dec_short\r
+ jmp .Locb_dec_grandloop\r
+\r
+.align 32\r
+.Locb_dec_grandloop:\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqu 80(%rdi),%xmm7\r
+ leaq 96(%rdi),%rdi\r
+\r
+ call __ocb_decrypt6\r
+\r
+ movups %xmm2,0(%rsi)\r
+ pxor %xmm2,%xmm8\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm8\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm8\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm8\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm8\r
+ movups %xmm7,80(%rsi)\r
+ pxor %xmm7,%xmm8\r
+ leaq 96(%rsi),%rsi\r
+ subq $6,%rdx\r
+ jnc .Locb_dec_grandloop\r
+\r
+.Locb_dec_short:\r
+ addq $6,%rdx\r
+ jz .Locb_dec_done\r
+\r
+ movdqu 0(%rdi),%xmm2\r
+ cmpq $2,%rdx\r
+ jb .Locb_dec_one\r
+ movdqu 16(%rdi),%xmm3\r
+ je .Locb_dec_two\r
+\r
+ movdqu 32(%rdi),%xmm4\r
+ cmpq $4,%rdx\r
+ jb .Locb_dec_three\r
+ movdqu 48(%rdi),%xmm5\r
+ je .Locb_dec_four\r
+\r
+ movdqu 64(%rdi),%xmm6\r
+ pxor %xmm7,%xmm7\r
+\r
+ call __ocb_decrypt6\r
+\r
+ movdqa %xmm14,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ pxor %xmm2,%xmm8\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm8\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm8\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm8\r
+ movups %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm8\r
+\r
+ jmp .Locb_dec_done\r
+\r
+.align 16\r
+.Locb_dec_one:\r
+ movdqa %xmm10,%xmm7\r
+\r
+ call __ocb_decrypt1\r
+\r
+ movdqa %xmm7,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ xorps %xmm2,%xmm8\r
+ jmp .Locb_dec_done\r
+\r
+.align 16\r
+.Locb_dec_two:\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+\r
+ call __ocb_decrypt4\r
+\r
+ movdqa %xmm11,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ xorps %xmm2,%xmm8\r
+ movups %xmm3,16(%rsi)\r
+ xorps %xmm3,%xmm8\r
+\r
+ jmp .Locb_dec_done\r
+\r
+.align 16\r
+.Locb_dec_three:\r
+ pxor %xmm5,%xmm5\r
+\r
+ call __ocb_decrypt4\r
+\r
+ movdqa %xmm12,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ xorps %xmm2,%xmm8\r
+ movups %xmm3,16(%rsi)\r
+ xorps %xmm3,%xmm8\r
+ movups %xmm4,32(%rsi)\r
+ xorps %xmm4,%xmm8\r
+\r
+ jmp .Locb_dec_done\r
+\r
+.align 16\r
+.Locb_dec_four:\r
+ call __ocb_decrypt4\r
+\r
+ movdqa %xmm13,%xmm15\r
+ movups %xmm2,0(%rsi)\r
+ pxor %xmm2,%xmm8\r
+ movups %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm8\r
+ movups %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm8\r
+ movups %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm8\r
+\r
+.Locb_dec_done:\r
+ pxor %xmm0,%xmm15\r
+ movdqu %xmm8,(%rbp)\r
+ movdqu %xmm15,(%r9)\r
+\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+ pxor %xmm10,%xmm10\r
+ pxor %xmm11,%xmm11\r
+ pxor %xmm12,%xmm12\r
+ pxor %xmm13,%xmm13\r
+ pxor %xmm14,%xmm14\r
+ pxor %xmm15,%xmm15\r
+ leaq 40(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movq -40(%rax),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rax),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rax),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Locb_dec_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_ocb_decrypt,.-aesni_ocb_decrypt\r
+\r
+.type __ocb_decrypt6,@function\r
+.align 32\r
+__ocb_decrypt6:\r
+.cfi_startproc\r
+ pxor %xmm9,%xmm15\r
+ movdqu (%rbx,%r12,1),%xmm11\r
+ movdqa %xmm10,%xmm12\r
+ movdqu (%rbx,%r13,1),%xmm13\r
+ movdqa %xmm10,%xmm14\r
+ pxor %xmm15,%xmm10\r
+ movdqu (%rbx,%r14,1),%xmm15\r
+ pxor %xmm10,%xmm11\r
+ pxor %xmm10,%xmm2\r
+ pxor %xmm11,%xmm12\r
+ pxor %xmm11,%xmm3\r
+ pxor %xmm12,%xmm13\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm13,%xmm14\r
+ pxor %xmm13,%xmm5\r
+ pxor %xmm14,%xmm15\r
+ pxor %xmm14,%xmm6\r
+ pxor %xmm15,%xmm7\r
+ movups 32(%r11),%xmm0\r
+\r
+ leaq 1(%r8),%r12\r
+ leaq 3(%r8),%r13\r
+ leaq 5(%r8),%r14\r
+ addq $6,%r8\r
+ pxor %xmm9,%xmm10\r
+ bsfq %r12,%r12\r
+ bsfq %r13,%r13\r
+ bsfq %r14,%r14\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ pxor %xmm9,%xmm11\r
+ pxor %xmm9,%xmm12\r
+.byte 102,15,56,222,241\r
+ pxor %xmm9,%xmm13\r
+ pxor %xmm9,%xmm14\r
+.byte 102,15,56,222,249\r
+ movups 48(%r11),%xmm1\r
+ pxor %xmm9,%xmm15\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups 64(%r11),%xmm0\r
+ shlq $4,%r12\r
+ shlq $4,%r13\r
+ jmp .Locb_dec_loop6\r
+\r
+.align 32\r
+.Locb_dec_loop6:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_dec_loop6\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ movups 16(%r11),%xmm1\r
+ shlq $4,%r14\r
+\r
+.byte 102,65,15,56,223,210\r
+ movdqu (%rbx),%xmm10\r
+ movq %r10,%rax\r
+.byte 102,65,15,56,223,219\r
+.byte 102,65,15,56,223,228\r
+.byte 102,65,15,56,223,237\r
+.byte 102,65,15,56,223,246\r
+.byte 102,65,15,56,223,255\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_decrypt6,.-__ocb_decrypt6\r
+\r
+.type __ocb_decrypt4,@function\r
+.align 32\r
+__ocb_decrypt4:\r
+.cfi_startproc\r
+ pxor %xmm9,%xmm15\r
+ movdqu (%rbx,%r12,1),%xmm11\r
+ movdqa %xmm10,%xmm12\r
+ movdqu (%rbx,%r13,1),%xmm13\r
+ pxor %xmm15,%xmm10\r
+ pxor %xmm10,%xmm11\r
+ pxor %xmm10,%xmm2\r
+ pxor %xmm11,%xmm12\r
+ pxor %xmm11,%xmm3\r
+ pxor %xmm12,%xmm13\r
+ pxor %xmm12,%xmm4\r
+ pxor %xmm13,%xmm5\r
+ movups 32(%r11),%xmm0\r
+\r
+ pxor %xmm9,%xmm10\r
+ pxor %xmm9,%xmm11\r
+ pxor %xmm9,%xmm12\r
+ pxor %xmm9,%xmm13\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 48(%r11),%xmm1\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups 64(%r11),%xmm0\r
+ jmp .Locb_dec_loop4\r
+\r
+.align 32\r
+.Locb_dec_loop4:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_dec_loop4\r
+\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ movups 16(%r11),%xmm1\r
+ movq %r10,%rax\r
+\r
+.byte 102,65,15,56,223,210\r
+.byte 102,65,15,56,223,219\r
+.byte 102,65,15,56,223,228\r
+.byte 102,65,15,56,223,237\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_decrypt4,.-__ocb_decrypt4\r
+\r
+.type __ocb_decrypt1,@function\r
+.align 32\r
+__ocb_decrypt1:\r
+.cfi_startproc\r
+ pxor %xmm15,%xmm7\r
+ pxor %xmm9,%xmm7\r
+ pxor %xmm7,%xmm2\r
+ movups 32(%r11),%xmm0\r
+\r
+.byte 102,15,56,222,209\r
+ movups 48(%r11),%xmm1\r
+ pxor %xmm9,%xmm7\r
+\r
+.byte 102,15,56,222,208\r
+ movups 64(%r11),%xmm0\r
+ jmp .Locb_dec_loop1\r
+\r
+.align 32\r
+.Locb_dec_loop1:\r
+.byte 102,15,56,222,209\r
+ movups (%rcx,%rax,1),%xmm1\r
+ addq $32,%rax\r
+\r
+.byte 102,15,56,222,208\r
+ movups -16(%rcx,%rax,1),%xmm0\r
+ jnz .Locb_dec_loop1\r
+\r
+.byte 102,15,56,222,209\r
+ movups 16(%r11),%xmm1\r
+ movq %r10,%rax\r
+\r
+.byte 102,15,56,223,215\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size __ocb_decrypt1,.-__ocb_decrypt1\r
+.globl aesni_cbc_encrypt\r
+.type aesni_cbc_encrypt,@function\r
+.align 16\r
+aesni_cbc_encrypt:\r
+.cfi_startproc\r
+ testq %rdx,%rdx\r
+ jz .Lcbc_ret\r
+\r
+ movl 240(%rcx),%r10d\r
+ movq %rcx,%r11\r
+ testl %r9d,%r9d\r
+ jz .Lcbc_decrypt\r
+\r
+ movups (%r8),%xmm2\r
+ movl %r10d,%eax\r
+ cmpq $16,%rdx\r
+ jb .Lcbc_enc_tail\r
+ subq $16,%rdx\r
+ jmp .Lcbc_enc_loop\r
+.align 16\r
+.Lcbc_enc_loop:\r
+ movups (%rdi),%xmm3\r
+ leaq 16(%rdi),%rdi\r
+\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ xorps %xmm0,%xmm3\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm3,%xmm2\r
+.Loop_enc1_15:\r
+.byte 102,15,56,220,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_enc1_15\r
+.byte 102,15,56,221,209\r
+ movl %r10d,%eax\r
+ movq %r11,%rcx\r
+ movups %xmm2,0(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+ subq $16,%rdx\r
+ jnc .Lcbc_enc_loop\r
+ addq $16,%rdx\r
+ jnz .Lcbc_enc_tail\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm2,(%r8)\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ jmp .Lcbc_ret\r
+\r
+.Lcbc_enc_tail:\r
+ movq %rdx,%rcx\r
+ xchgq %rdi,%rsi\r
+.long 0x9066A4F3\r
+ movl $16,%ecx\r
+ subq %rdx,%rcx\r
+ xorl %eax,%eax\r
+.long 0x9066AAF3\r
+ leaq -16(%rdi),%rdi\r
+ movl %r10d,%eax\r
+ movq %rdi,%rsi\r
+ movq %r11,%rcx\r
+ xorq %rdx,%rdx\r
+ jmp .Lcbc_enc_loop\r
+\r
+.align 16\r
+.Lcbc_decrypt:\r
+ cmpq $16,%rdx\r
+ jne .Lcbc_decrypt_bulk\r
+\r
+\r
+\r
+ movdqu (%rdi),%xmm2\r
+ movdqu (%r8),%xmm3\r
+ movdqa %xmm2,%xmm4\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_16:\r
+.byte 102,15,56,222,209\r
+ decl %r10d\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_16\r
+.byte 102,15,56,223,209\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movdqu %xmm4,(%r8)\r
+ xorps %xmm3,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ jmp .Lcbc_ret\r
+.align 16\r
+.Lcbc_decrypt_bulk:\r
+ leaq (%rsp),%r11\r
+.cfi_def_cfa_register %r11\r
+ pushq %rbp\r
+.cfi_offset %rbp,-16\r
+ subq $16,%rsp\r
+ andq $-16,%rsp\r
+ movq %rcx,%rbp\r
+ movups (%r8),%xmm10\r
+ movl %r10d,%eax\r
+ cmpq $0x50,%rdx\r
+ jbe .Lcbc_dec_tail\r
+\r
+ movups (%rcx),%xmm0\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqa %xmm2,%xmm11\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqa %xmm3,%xmm12\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqa %xmm4,%xmm13\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqa %xmm5,%xmm14\r
+ movdqu 80(%rdi),%xmm7\r
+ movdqa %xmm6,%xmm15\r
+ movl OPENSSL_ia32cap_P+4(%rip),%r9d\r
+ cmpq $0x70,%rdx\r
+ jbe .Lcbc_dec_six_or_seven\r
+\r
+ andl $71303168,%r9d\r
+ subq $0x50,%rdx\r
+ cmpl $4194304,%r9d\r
+ je .Lcbc_dec_loop6_enter\r
+ subq $0x20,%rdx\r
+ leaq 112(%rcx),%rcx\r
+ jmp .Lcbc_dec_loop8_enter\r
+.align 16\r
+.Lcbc_dec_loop8:\r
+ movups %xmm9,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+.Lcbc_dec_loop8_enter:\r
+ movdqu 96(%rdi),%xmm8\r
+ pxor %xmm0,%xmm2\r
+ movdqu 112(%rdi),%xmm9\r
+ pxor %xmm0,%xmm3\r
+ movups 16-112(%rcx),%xmm1\r
+ pxor %xmm0,%xmm4\r
+ movq $-1,%rbp\r
+ cmpq $0x70,%rdx\r
+ pxor %xmm0,%xmm5\r
+ pxor %xmm0,%xmm6\r
+ pxor %xmm0,%xmm7\r
+ pxor %xmm0,%xmm8\r
+\r
+.byte 102,15,56,222,209\r
+ pxor %xmm0,%xmm9\r
+ movups 32-112(%rcx),%xmm0\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+ adcq $0,%rbp\r
+ andq $128,%rbp\r
+.byte 102,68,15,56,222,201\r
+ addq %rdi,%rbp\r
+ movups 48-112(%rcx),%xmm1\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 64-112(%rcx),%xmm0\r
+ nop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movups 80-112(%rcx),%xmm1\r
+ nop\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 96-112(%rcx),%xmm0\r
+ nop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movups 112-112(%rcx),%xmm1\r
+ nop\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 128-112(%rcx),%xmm0\r
+ nop\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movups 144-112(%rcx),%xmm1\r
+ cmpl $11,%eax\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 160-112(%rcx),%xmm0\r
+ jb .Lcbc_dec_done\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movups 176-112(%rcx),%xmm1\r
+ nop\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 192-112(%rcx),%xmm0\r
+ je .Lcbc_dec_done\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movups 208-112(%rcx),%xmm1\r
+ nop\r
+.byte 102,15,56,222,208\r
+.byte 102,15,56,222,216\r
+.byte 102,15,56,222,224\r
+.byte 102,15,56,222,232\r
+.byte 102,15,56,222,240\r
+.byte 102,15,56,222,248\r
+.byte 102,68,15,56,222,192\r
+.byte 102,68,15,56,222,200\r
+ movups 224-112(%rcx),%xmm0\r
+ jmp .Lcbc_dec_done\r
+.align 16\r
+.Lcbc_dec_done:\r
+.byte 102,15,56,222,209\r
+.byte 102,15,56,222,217\r
+ pxor %xmm0,%xmm10\r
+ pxor %xmm0,%xmm11\r
+.byte 102,15,56,222,225\r
+.byte 102,15,56,222,233\r
+ pxor %xmm0,%xmm12\r
+ pxor %xmm0,%xmm13\r
+.byte 102,15,56,222,241\r
+.byte 102,15,56,222,249\r
+ pxor %xmm0,%xmm14\r
+ pxor %xmm0,%xmm15\r
+.byte 102,68,15,56,222,193\r
+.byte 102,68,15,56,222,201\r
+ movdqu 80(%rdi),%xmm1\r
+\r
+.byte 102,65,15,56,223,210\r
+ movdqu 96(%rdi),%xmm10\r
+ pxor %xmm0,%xmm1\r
+.byte 102,65,15,56,223,219\r
+ pxor %xmm0,%xmm10\r
+ movdqu 112(%rdi),%xmm0\r
+.byte 102,65,15,56,223,228\r
+ leaq 128(%rdi),%rdi\r
+ movdqu 0(%rbp),%xmm11\r
+.byte 102,65,15,56,223,237\r
+.byte 102,65,15,56,223,246\r
+ movdqu 16(%rbp),%xmm12\r
+ movdqu 32(%rbp),%xmm13\r
+.byte 102,65,15,56,223,255\r
+.byte 102,68,15,56,223,193\r
+ movdqu 48(%rbp),%xmm14\r
+ movdqu 64(%rbp),%xmm15\r
+.byte 102,69,15,56,223,202\r
+ movdqa %xmm0,%xmm10\r
+ movdqu 80(%rbp),%xmm1\r
+ movups -112(%rcx),%xmm0\r
+\r
+ movups %xmm2,(%rsi)\r
+ movdqa %xmm11,%xmm2\r
+ movups %xmm3,16(%rsi)\r
+ movdqa %xmm12,%xmm3\r
+ movups %xmm4,32(%rsi)\r
+ movdqa %xmm13,%xmm4\r
+ movups %xmm5,48(%rsi)\r
+ movdqa %xmm14,%xmm5\r
+ movups %xmm6,64(%rsi)\r
+ movdqa %xmm15,%xmm6\r
+ movups %xmm7,80(%rsi)\r
+ movdqa %xmm1,%xmm7\r
+ movups %xmm8,96(%rsi)\r
+ leaq 112(%rsi),%rsi\r
+\r
+ subq $0x80,%rdx\r
+ ja .Lcbc_dec_loop8\r
+\r
+ movaps %xmm9,%xmm2\r
+ leaq -112(%rcx),%rcx\r
+ addq $0x70,%rdx\r
+ jle .Lcbc_dec_clear_tail_collected\r
+ movups %xmm9,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+ cmpq $0x50,%rdx\r
+ jbe .Lcbc_dec_tail\r
+\r
+ movaps %xmm11,%xmm2\r
+.Lcbc_dec_six_or_seven:\r
+ cmpq $0x60,%rdx\r
+ ja .Lcbc_dec_seven\r
+\r
+ movaps %xmm7,%xmm8\r
+ call _aesni_decrypt6\r
+ pxor %xmm10,%xmm2\r
+ movaps %xmm8,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm14,%xmm6\r
+ movdqu %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm15,%xmm7\r
+ movdqu %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ leaq 80(%rsi),%rsi\r
+ movdqa %xmm7,%xmm2\r
+ pxor %xmm7,%xmm7\r
+ jmp .Lcbc_dec_tail_collected\r
+\r
+.align 16\r
+.Lcbc_dec_seven:\r
+ movups 96(%rdi),%xmm8\r
+ xorps %xmm9,%xmm9\r
+ call _aesni_decrypt8\r
+ movups 80(%rdi),%xmm9\r
+ pxor %xmm10,%xmm2\r
+ movups 96(%rdi),%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm14,%xmm6\r
+ movdqu %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm15,%xmm7\r
+ movdqu %xmm6,64(%rsi)\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm9,%xmm8\r
+ movdqu %xmm7,80(%rsi)\r
+ pxor %xmm7,%xmm7\r
+ leaq 96(%rsi),%rsi\r
+ movdqa %xmm8,%xmm2\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+ jmp .Lcbc_dec_tail_collected\r
+\r
+.align 16\r
+.Lcbc_dec_loop6:\r
+ movups %xmm7,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+ movdqu 0(%rdi),%xmm2\r
+ movdqu 16(%rdi),%xmm3\r
+ movdqa %xmm2,%xmm11\r
+ movdqu 32(%rdi),%xmm4\r
+ movdqa %xmm3,%xmm12\r
+ movdqu 48(%rdi),%xmm5\r
+ movdqa %xmm4,%xmm13\r
+ movdqu 64(%rdi),%xmm6\r
+ movdqa %xmm5,%xmm14\r
+ movdqu 80(%rdi),%xmm7\r
+ movdqa %xmm6,%xmm15\r
+.Lcbc_dec_loop6_enter:\r
+ leaq 96(%rdi),%rdi\r
+ movdqa %xmm7,%xmm8\r
+\r
+ call _aesni_decrypt6\r
+\r
+ pxor %xmm10,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm14,%xmm6\r
+ movq %rbp,%rcx\r
+ movdqu %xmm5,48(%rsi)\r
+ pxor %xmm15,%xmm7\r
+ movl %r10d,%eax\r
+ movdqu %xmm6,64(%rsi)\r
+ leaq 80(%rsi),%rsi\r
+ subq $0x60,%rdx\r
+ ja .Lcbc_dec_loop6\r
+\r
+ movdqa %xmm7,%xmm2\r
+ addq $0x50,%rdx\r
+ jle .Lcbc_dec_clear_tail_collected\r
+ movups %xmm7,(%rsi)\r
+ leaq 16(%rsi),%rsi\r
+\r
+.Lcbc_dec_tail:\r
+ movups (%rdi),%xmm2\r
+ subq $0x10,%rdx\r
+ jbe .Lcbc_dec_one\r
+\r
+ movups 16(%rdi),%xmm3\r
+ movaps %xmm2,%xmm11\r
+ subq $0x10,%rdx\r
+ jbe .Lcbc_dec_two\r
+\r
+ movups 32(%rdi),%xmm4\r
+ movaps %xmm3,%xmm12\r
+ subq $0x10,%rdx\r
+ jbe .Lcbc_dec_three\r
+\r
+ movups 48(%rdi),%xmm5\r
+ movaps %xmm4,%xmm13\r
+ subq $0x10,%rdx\r
+ jbe .Lcbc_dec_four\r
+\r
+ movups 64(%rdi),%xmm6\r
+ movaps %xmm5,%xmm14\r
+ movaps %xmm6,%xmm15\r
+ xorps %xmm7,%xmm7\r
+ call _aesni_decrypt6\r
+ pxor %xmm10,%xmm2\r
+ movaps %xmm15,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm14,%xmm6\r
+ movdqu %xmm5,48(%rsi)\r
+ pxor %xmm5,%xmm5\r
+ leaq 64(%rsi),%rsi\r
+ movdqa %xmm6,%xmm2\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ subq $0x10,%rdx\r
+ jmp .Lcbc_dec_tail_collected\r
+\r
+.align 16\r
+.Lcbc_dec_one:\r
+ movaps %xmm2,%xmm11\r
+ movups (%rcx),%xmm0\r
+ movups 16(%rcx),%xmm1\r
+ leaq 32(%rcx),%rcx\r
+ xorps %xmm0,%xmm2\r
+.Loop_dec1_17:\r
+.byte 102,15,56,222,209\r
+ decl %eax\r
+ movups (%rcx),%xmm1\r
+ leaq 16(%rcx),%rcx\r
+ jnz .Loop_dec1_17\r
+.byte 102,15,56,223,209\r
+ xorps %xmm10,%xmm2\r
+ movaps %xmm11,%xmm10\r
+ jmp .Lcbc_dec_tail_collected\r
+.align 16\r
+.Lcbc_dec_two:\r
+ movaps %xmm3,%xmm12\r
+ call _aesni_decrypt2\r
+ pxor %xmm10,%xmm2\r
+ movaps %xmm12,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ movdqa %xmm3,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ leaq 16(%rsi),%rsi\r
+ jmp .Lcbc_dec_tail_collected\r
+.align 16\r
+.Lcbc_dec_three:\r
+ movaps %xmm4,%xmm13\r
+ call _aesni_decrypt3\r
+ pxor %xmm10,%xmm2\r
+ movaps %xmm13,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ movdqa %xmm4,%xmm2\r
+ pxor %xmm4,%xmm4\r
+ leaq 32(%rsi),%rsi\r
+ jmp .Lcbc_dec_tail_collected\r
+.align 16\r
+.Lcbc_dec_four:\r
+ movaps %xmm5,%xmm14\r
+ call _aesni_decrypt4\r
+ pxor %xmm10,%xmm2\r
+ movaps %xmm14,%xmm10\r
+ pxor %xmm11,%xmm3\r
+ movdqu %xmm2,(%rsi)\r
+ pxor %xmm12,%xmm4\r
+ movdqu %xmm3,16(%rsi)\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm13,%xmm5\r
+ movdqu %xmm4,32(%rsi)\r
+ pxor %xmm4,%xmm4\r
+ movdqa %xmm5,%xmm2\r
+ pxor %xmm5,%xmm5\r
+ leaq 48(%rsi),%rsi\r
+ jmp .Lcbc_dec_tail_collected\r
+\r
+.align 16\r
+.Lcbc_dec_clear_tail_collected:\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+.Lcbc_dec_tail_collected:\r
+ movups %xmm10,(%r8)\r
+ andq $15,%rdx\r
+ jnz .Lcbc_dec_tail_partial\r
+ movups %xmm2,(%rsi)\r
+ pxor %xmm2,%xmm2\r
+ jmp .Lcbc_dec_ret\r
+.align 16\r
+.Lcbc_dec_tail_partial:\r
+ movaps %xmm2,(%rsp)\r
+ pxor %xmm2,%xmm2\r
+ movq $16,%rcx\r
+ movq %rsi,%rdi\r
+ subq %rdx,%rcx\r
+ leaq (%rsp),%rsi\r
+.long 0x9066A4F3\r
+ movdqa %xmm2,(%rsp)\r
+\r
+.Lcbc_dec_ret:\r
+ xorps %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ movq -8(%r11),%rbp\r
+.cfi_restore %rbp\r
+ leaq (%r11),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lcbc_ret:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_cbc_encrypt,.-aesni_cbc_encrypt\r
+.globl aesni_set_decrypt_key\r
+.type aesni_set_decrypt_key,@function\r
+.align 16\r
+aesni_set_decrypt_key:\r
+.cfi_startproc\r
+.byte 0x48,0x83,0xEC,0x08\r
+.cfi_adjust_cfa_offset 8\r
+ call __aesni_set_encrypt_key\r
+ shll $4,%esi\r
+ testl %eax,%eax\r
+ jnz .Ldec_key_ret\r
+ leaq 16(%rdx,%rsi,1),%rdi\r
+\r
+ movups (%rdx),%xmm0\r
+ movups (%rdi),%xmm1\r
+ movups %xmm0,(%rdi)\r
+ movups %xmm1,(%rdx)\r
+ leaq 16(%rdx),%rdx\r
+ leaq -16(%rdi),%rdi\r
+\r
+.Ldec_key_inverse:\r
+ movups (%rdx),%xmm0\r
+ movups (%rdi),%xmm1\r
+.byte 102,15,56,219,192\r
+.byte 102,15,56,219,201\r
+ leaq 16(%rdx),%rdx\r
+ leaq -16(%rdi),%rdi\r
+ movups %xmm0,16(%rdi)\r
+ movups %xmm1,-16(%rdx)\r
+ cmpq %rdx,%rdi\r
+ ja .Ldec_key_inverse\r
+\r
+ movups (%rdx),%xmm0\r
+.byte 102,15,56,219,192\r
+ pxor %xmm1,%xmm1\r
+ movups %xmm0,(%rdi)\r
+ pxor %xmm0,%xmm0\r
+.Ldec_key_ret:\r
+ addq $8,%rsp\r
+.cfi_adjust_cfa_offset -8\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.LSEH_end_set_decrypt_key:\r
+.size aesni_set_decrypt_key,.-aesni_set_decrypt_key\r
+.globl aesni_set_encrypt_key\r
+.type aesni_set_encrypt_key,@function\r
+.align 16\r
+aesni_set_encrypt_key:\r
+__aesni_set_encrypt_key:\r
+.cfi_startproc\r
+.byte 0x48,0x83,0xEC,0x08\r
+.cfi_adjust_cfa_offset 8\r
+ movq $-1,%rax\r
+ testq %rdi,%rdi\r
+ jz .Lenc_key_ret\r
+ testq %rdx,%rdx\r
+ jz .Lenc_key_ret\r
+\r
+ movl $268437504,%r10d\r
+ movups (%rdi),%xmm0\r
+ xorps %xmm4,%xmm4\r
+ andl OPENSSL_ia32cap_P+4(%rip),%r10d\r
+ leaq 16(%rdx),%rax\r
+ cmpl $256,%esi\r
+ je .L14rounds\r
+ cmpl $192,%esi\r
+ je .L12rounds\r
+ cmpl $128,%esi\r
+ jne .Lbad_keybits\r
+\r
+.L10rounds:\r
+ movl $9,%esi\r
+ cmpl $268435456,%r10d\r
+ je .L10rounds_alt\r
+\r
+ movups %xmm0,(%rdx)\r
+.byte 102,15,58,223,200,1\r
+ call .Lkey_expansion_128_cold\r
+.byte 102,15,58,223,200,2\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,4\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,8\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,16\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,32\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,64\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,128\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,27\r
+ call .Lkey_expansion_128\r
+.byte 102,15,58,223,200,54\r
+ call .Lkey_expansion_128\r
+ movups %xmm0,(%rax)\r
+ movl %esi,80(%rax)\r
+ xorl %eax,%eax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.L10rounds_alt:\r
+ movdqa .Lkey_rotate(%rip),%xmm5\r
+ movl $8,%r10d\r
+ movdqa .Lkey_rcon1(%rip),%xmm4\r
+ movdqa %xmm0,%xmm2\r
+ movdqu %xmm0,(%rdx)\r
+ jmp .Loop_key128\r
+\r
+.align 16\r
+.Loop_key128:\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+ pslld $1,%xmm4\r
+ leaq 16(%rax),%rax\r
+\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,-16(%rax)\r
+ movdqa %xmm0,%xmm2\r
+\r
+ decl %r10d\r
+ jnz .Loop_key128\r
+\r
+ movdqa .Lkey_rcon1b(%rip),%xmm4\r
+\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+ pslld $1,%xmm4\r
+\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,(%rax)\r
+\r
+ movdqa %xmm0,%xmm2\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,221,196\r
+\r
+ movdqa %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm2,%xmm3\r
+ pslldq $4,%xmm2\r
+ pxor %xmm3,%xmm2\r
+\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,16(%rax)\r
+\r
+ movl %esi,96(%rax)\r
+ xorl %eax,%eax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.L12rounds:\r
+ movq 16(%rdi),%xmm2\r
+ movl $11,%esi\r
+ cmpl $268435456,%r10d\r
+ je .L12rounds_alt\r
+\r
+ movups %xmm0,(%rdx)\r
+.byte 102,15,58,223,202,1\r
+ call .Lkey_expansion_192a_cold\r
+.byte 102,15,58,223,202,2\r
+ call .Lkey_expansion_192b\r
+.byte 102,15,58,223,202,4\r
+ call .Lkey_expansion_192a\r
+.byte 102,15,58,223,202,8\r
+ call .Lkey_expansion_192b\r
+.byte 102,15,58,223,202,16\r
+ call .Lkey_expansion_192a\r
+.byte 102,15,58,223,202,32\r
+ call .Lkey_expansion_192b\r
+.byte 102,15,58,223,202,64\r
+ call .Lkey_expansion_192a\r
+.byte 102,15,58,223,202,128\r
+ call .Lkey_expansion_192b\r
+ movups %xmm0,(%rax)\r
+ movl %esi,48(%rax)\r
+ xorq %rax,%rax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.L12rounds_alt:\r
+ movdqa .Lkey_rotate192(%rip),%xmm5\r
+ movdqa .Lkey_rcon1(%rip),%xmm4\r
+ movl $8,%r10d\r
+ movdqu %xmm0,(%rdx)\r
+ jmp .Loop_key192\r
+\r
+.align 16\r
+.Loop_key192:\r
+ movq %xmm2,0(%rax)\r
+ movdqa %xmm2,%xmm1\r
+.byte 102,15,56,0,213\r
+.byte 102,15,56,221,212\r
+ pslld $1,%xmm4\r
+ leaq 24(%rax),%rax\r
+\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm3,%xmm0\r
+\r
+ pshufd $0xff,%xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+\r
+ pxor %xmm2,%xmm0\r
+ pxor %xmm3,%xmm2\r
+ movdqu %xmm0,-16(%rax)\r
+\r
+ decl %r10d\r
+ jnz .Loop_key192\r
+\r
+ movl %esi,32(%rax)\r
+ xorl %eax,%eax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.L14rounds:\r
+ movups 16(%rdi),%xmm2\r
+ movl $13,%esi\r
+ leaq 16(%rax),%rax\r
+ cmpl $268435456,%r10d\r
+ je .L14rounds_alt\r
+\r
+ movups %xmm0,(%rdx)\r
+ movups %xmm2,16(%rdx)\r
+.byte 102,15,58,223,202,1\r
+ call .Lkey_expansion_256a_cold\r
+.byte 102,15,58,223,200,1\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,2\r
+ call .Lkey_expansion_256a\r
+.byte 102,15,58,223,200,2\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,4\r
+ call .Lkey_expansion_256a\r
+.byte 102,15,58,223,200,4\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,8\r
+ call .Lkey_expansion_256a\r
+.byte 102,15,58,223,200,8\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,16\r
+ call .Lkey_expansion_256a\r
+.byte 102,15,58,223,200,16\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,32\r
+ call .Lkey_expansion_256a\r
+.byte 102,15,58,223,200,32\r
+ call .Lkey_expansion_256b\r
+.byte 102,15,58,223,202,64\r
+ call .Lkey_expansion_256a\r
+ movups %xmm0,(%rax)\r
+ movl %esi,16(%rax)\r
+ xorq %rax,%rax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.L14rounds_alt:\r
+ movdqa .Lkey_rotate(%rip),%xmm5\r
+ movdqa .Lkey_rcon1(%rip),%xmm4\r
+ movl $7,%r10d\r
+ movdqu %xmm0,0(%rdx)\r
+ movdqa %xmm2,%xmm1\r
+ movdqu %xmm2,16(%rdx)\r
+ jmp .Loop_key256\r
+\r
+.align 16\r
+.Loop_key256:\r
+.byte 102,15,56,0,213\r
+.byte 102,15,56,221,212\r
+\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ pslldq $4,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ pslld $1,%xmm4\r
+\r
+ pxor %xmm2,%xmm0\r
+ movdqu %xmm0,(%rax)\r
+\r
+ decl %r10d\r
+ jz .Ldone_key256\r
+\r
+ pshufd $0xff,%xmm0,%xmm2\r
+ pxor %xmm3,%xmm3\r
+.byte 102,15,56,221,211\r
+\r
+ movdqa %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm1,%xmm3\r
+ pslldq $4,%xmm1\r
+ pxor %xmm3,%xmm1\r
+\r
+ pxor %xmm1,%xmm2\r
+ movdqu %xmm2,16(%rax)\r
+ leaq 32(%rax),%rax\r
+ movdqa %xmm2,%xmm1\r
+\r
+ jmp .Loop_key256\r
+\r
+.Ldone_key256:\r
+ movl %esi,16(%rax)\r
+ xorl %eax,%eax\r
+ jmp .Lenc_key_ret\r
+\r
+.align 16\r
+.Lbad_keybits:\r
+ movq $-2,%rax\r
+.Lenc_key_ret:\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ addq $8,%rsp\r
+.cfi_adjust_cfa_offset -8\r
+ .byte 0xf3,0xc3\r
+.LSEH_end_set_encrypt_key:\r
+\r
+.align 16\r
+.Lkey_expansion_128:\r
+ movups %xmm0,(%rax)\r
+ leaq 16(%rax),%rax\r
+.Lkey_expansion_128_cold:\r
+ shufps $16,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $255,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm0\r
+ .byte 0xf3,0xc3\r
+\r
+.align 16\r
+.Lkey_expansion_192a:\r
+ movups %xmm0,(%rax)\r
+ leaq 16(%rax),%rax\r
+.Lkey_expansion_192a_cold:\r
+ movaps %xmm2,%xmm5\r
+.Lkey_expansion_192b_warm:\r
+ shufps $16,%xmm0,%xmm4\r
+ movdqa %xmm2,%xmm3\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ pslldq $4,%xmm3\r
+ xorps %xmm4,%xmm0\r
+ pshufd $85,%xmm1,%xmm1\r
+ pxor %xmm3,%xmm2\r
+ pxor %xmm1,%xmm0\r
+ pshufd $255,%xmm0,%xmm3\r
+ pxor %xmm3,%xmm2\r
+ .byte 0xf3,0xc3\r
+\r
+.align 16\r
+.Lkey_expansion_192b:\r
+ movaps %xmm0,%xmm3\r
+ shufps $68,%xmm0,%xmm5\r
+ movups %xmm5,(%rax)\r
+ shufps $78,%xmm2,%xmm3\r
+ movups %xmm3,16(%rax)\r
+ leaq 32(%rax),%rax\r
+ jmp .Lkey_expansion_192b_warm\r
+\r
+.align 16\r
+.Lkey_expansion_256a:\r
+ movups %xmm2,(%rax)\r
+ leaq 16(%rax),%rax\r
+.Lkey_expansion_256a_cold:\r
+ shufps $16,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $140,%xmm0,%xmm4\r
+ xorps %xmm4,%xmm0\r
+ shufps $255,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm0\r
+ .byte 0xf3,0xc3\r
+\r
+.align 16\r
+.Lkey_expansion_256b:\r
+ movups %xmm0,(%rax)\r
+ leaq 16(%rax),%rax\r
+\r
+ shufps $16,%xmm2,%xmm4\r
+ xorps %xmm4,%xmm2\r
+ shufps $140,%xmm2,%xmm4\r
+ xorps %xmm4,%xmm2\r
+ shufps $170,%xmm1,%xmm1\r
+ xorps %xmm1,%xmm2\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_set_encrypt_key,.-aesni_set_encrypt_key\r
+.size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key\r
+.align 64\r
+.Lbswap_mask:\r
+.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0\r
+.Lincrement32:\r
+.long 6,6,6,0\r
+.Lincrement64:\r
+.long 1,0,0,0\r
+.Lxts_magic:\r
+.long 0x87,0,1,0\r
+.Lincrement1:\r
+.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1\r
+.Lkey_rotate:\r
+.long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d\r
+.Lkey_rotate192:\r
+.long 0x04070605,0x04070605,0x04070605,0x04070605\r
+.Lkey_rcon1:\r
+.long 1,1,1,1\r
+.Lkey_rcon1b:\r
+.long 0x1b,0x1b,0x1b,0x1b\r
+\r
+.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,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\r
+.align 64\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/aes/asm/vpaes-x86_64.pl\r
+#\r
+# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_encrypt_core,@function\r
+.align 16\r
+_vpaes_encrypt_core:\r
+.cfi_startproc\r
+ movq %rdx,%r9\r
+ movq $16,%r11\r
+ movl 240(%rdx),%eax\r
+ movdqa %xmm9,%xmm1\r
+ movdqa .Lk_ipt(%rip),%xmm2\r
+ pandn %xmm0,%xmm1\r
+ movdqu (%r9),%xmm5\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm0\r
+.byte 102,15,56,0,208\r
+ movdqa .Lk_ipt+16(%rip),%xmm0\r
+.byte 102,15,56,0,193\r
+ pxor %xmm5,%xmm2\r
+ addq $16,%r9\r
+ pxor %xmm2,%xmm0\r
+ leaq .Lk_mc_backward(%rip),%r10\r
+ jmp .Lenc_entry\r
+\r
+.align 16\r
+.Lenc_loop:\r
+\r
+ movdqa %xmm13,%xmm4\r
+ movdqa %xmm12,%xmm0\r
+.byte 102,15,56,0,226\r
+.byte 102,15,56,0,195\r
+ pxor %xmm5,%xmm4\r
+ movdqa %xmm15,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa -64(%r11,%r10,1),%xmm1\r
+.byte 102,15,56,0,234\r
+ movdqa (%r11,%r10,1),%xmm4\r
+ movdqa %xmm14,%xmm2\r
+.byte 102,15,56,0,211\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm5,%xmm2\r
+.byte 102,15,56,0,193\r
+ addq $16,%r9\r
+ pxor %xmm2,%xmm0\r
+.byte 102,15,56,0,220\r
+ addq $16,%r11\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,56,0,193\r
+ andq $0x30,%r11\r
+ subq $1,%rax\r
+ pxor %xmm3,%xmm0\r
+\r
+.Lenc_entry:\r
+\r
+ movdqa %xmm9,%xmm1\r
+ movdqa %xmm11,%xmm5\r
+ pandn %xmm0,%xmm1\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm0\r
+.byte 102,15,56,0,232\r
+ movdqa %xmm10,%xmm3\r
+ pxor %xmm1,%xmm0\r
+.byte 102,15,56,0,217\r
+ movdqa %xmm10,%xmm4\r
+ pxor %xmm5,%xmm3\r
+.byte 102,15,56,0,224\r
+ movdqa %xmm10,%xmm2\r
+ pxor %xmm5,%xmm4\r
+.byte 102,15,56,0,211\r
+ movdqa %xmm10,%xmm3\r
+ pxor %xmm0,%xmm2\r
+.byte 102,15,56,0,220\r
+ movdqu (%r9),%xmm5\r
+ pxor %xmm1,%xmm3\r
+ jnz .Lenc_loop\r
+\r
+\r
+ movdqa -96(%r10),%xmm4\r
+ movdqa -80(%r10),%xmm0\r
+.byte 102,15,56,0,226\r
+ pxor %xmm5,%xmm4\r
+.byte 102,15,56,0,195\r
+ movdqa 64(%r11,%r10,1),%xmm1\r
+ pxor %xmm4,%xmm0\r
+.byte 102,15,56,0,193\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_encrypt_core,.-_vpaes_encrypt_core\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_decrypt_core,@function\r
+.align 16\r
+_vpaes_decrypt_core:\r
+.cfi_startproc\r
+ movq %rdx,%r9\r
+ movl 240(%rdx),%eax\r
+ movdqa %xmm9,%xmm1\r
+ movdqa .Lk_dipt(%rip),%xmm2\r
+ pandn %xmm0,%xmm1\r
+ movq %rax,%r11\r
+ psrld $4,%xmm1\r
+ movdqu (%r9),%xmm5\r
+ shlq $4,%r11\r
+ pand %xmm9,%xmm0\r
+.byte 102,15,56,0,208\r
+ movdqa .Lk_dipt+16(%rip),%xmm0\r
+ xorq $0x30,%r11\r
+ leaq .Lk_dsbd(%rip),%r10\r
+.byte 102,15,56,0,193\r
+ andq $0x30,%r11\r
+ pxor %xmm5,%xmm2\r
+ movdqa .Lk_mc_forward+48(%rip),%xmm5\r
+ pxor %xmm2,%xmm0\r
+ addq $16,%r9\r
+ addq %r10,%r11\r
+ jmp .Ldec_entry\r
+\r
+.align 16\r
+.Ldec_loop:\r
+\r
+\r
+\r
+ movdqa -32(%r10),%xmm4\r
+ movdqa -16(%r10),%xmm1\r
+.byte 102,15,56,0,226\r
+.byte 102,15,56,0,203\r
+ pxor %xmm4,%xmm0\r
+ movdqa 0(%r10),%xmm4\r
+ pxor %xmm1,%xmm0\r
+ movdqa 16(%r10),%xmm1\r
+\r
+.byte 102,15,56,0,226\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,0,203\r
+ pxor %xmm4,%xmm0\r
+ movdqa 32(%r10),%xmm4\r
+ pxor %xmm1,%xmm0\r
+ movdqa 48(%r10),%xmm1\r
+\r
+.byte 102,15,56,0,226\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,0,203\r
+ pxor %xmm4,%xmm0\r
+ movdqa 64(%r10),%xmm4\r
+ pxor %xmm1,%xmm0\r
+ movdqa 80(%r10),%xmm1\r
+\r
+.byte 102,15,56,0,226\r
+.byte 102,15,56,0,197\r
+.byte 102,15,56,0,203\r
+ pxor %xmm4,%xmm0\r
+ addq $16,%r9\r
+.byte 102,15,58,15,237,12\r
+ pxor %xmm1,%xmm0\r
+ subq $1,%rax\r
+\r
+.Ldec_entry:\r
+\r
+ movdqa %xmm9,%xmm1\r
+ pandn %xmm0,%xmm1\r
+ movdqa %xmm11,%xmm2\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm0\r
+.byte 102,15,56,0,208\r
+ movdqa %xmm10,%xmm3\r
+ pxor %xmm1,%xmm0\r
+.byte 102,15,56,0,217\r
+ movdqa %xmm10,%xmm4\r
+ pxor %xmm2,%xmm3\r
+.byte 102,15,56,0,224\r
+ pxor %xmm2,%xmm4\r
+ movdqa %xmm10,%xmm2\r
+.byte 102,15,56,0,211\r
+ movdqa %xmm10,%xmm3\r
+ pxor %xmm0,%xmm2\r
+.byte 102,15,56,0,220\r
+ movdqu (%r9),%xmm0\r
+ pxor %xmm1,%xmm3\r
+ jnz .Ldec_loop\r
+\r
+\r
+ movdqa 96(%r10),%xmm4\r
+.byte 102,15,56,0,226\r
+ pxor %xmm0,%xmm4\r
+ movdqa 112(%r10),%xmm0\r
+ movdqa -352(%r11),%xmm2\r
+.byte 102,15,56,0,195\r
+ pxor %xmm4,%xmm0\r
+.byte 102,15,56,0,194\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_decrypt_core,.-_vpaes_decrypt_core\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_schedule_core,@function\r
+.align 16\r
+_vpaes_schedule_core:\r
+.cfi_startproc\r
+\r
+\r
+\r
+\r
+\r
+ call _vpaes_preheat\r
+ movdqa .Lk_rcon(%rip),%xmm8\r
+ movdqu (%rdi),%xmm0\r
+\r
+\r
+ movdqa %xmm0,%xmm3\r
+ leaq .Lk_ipt(%rip),%r11\r
+ call _vpaes_schedule_transform\r
+ movdqa %xmm0,%xmm7\r
+\r
+ leaq .Lk_sr(%rip),%r10\r
+ testq %rcx,%rcx\r
+ jnz .Lschedule_am_decrypting\r
+\r
+\r
+ movdqu %xmm0,(%rdx)\r
+ jmp .Lschedule_go\r
+\r
+.Lschedule_am_decrypting:\r
+\r
+ movdqa (%r8,%r10,1),%xmm1\r
+.byte 102,15,56,0,217\r
+ movdqu %xmm3,(%rdx)\r
+ xorq $0x30,%r8\r
+\r
+.Lschedule_go:\r
+ cmpl $192,%esi\r
+ ja .Lschedule_256\r
+ je .Lschedule_192\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.Lschedule_128:\r
+ movl $10,%esi\r
+\r
+.Loop_schedule_128:\r
+ call _vpaes_schedule_round\r
+ decq %rsi\r
+ jz .Lschedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+ jmp .Loop_schedule_128\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.align 16\r
+.Lschedule_192:\r
+ movdqu 8(%rdi),%xmm0\r
+ call _vpaes_schedule_transform\r
+ movdqa %xmm0,%xmm6\r
+ pxor %xmm4,%xmm4\r
+ movhlps %xmm4,%xmm6\r
+ movl $4,%esi\r
+\r
+.Loop_schedule_192:\r
+ call _vpaes_schedule_round\r
+.byte 102,15,58,15,198,8\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_192_smear\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_round\r
+ decq %rsi\r
+ jz .Lschedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+ call _vpaes_schedule_192_smear\r
+ jmp .Loop_schedule_192\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.align 16\r
+.Lschedule_256:\r
+ movdqu 16(%rdi),%xmm0\r
+ call _vpaes_schedule_transform\r
+ movl $7,%esi\r
+\r
+.Loop_schedule_256:\r
+ call _vpaes_schedule_mangle\r
+ movdqa %xmm0,%xmm6\r
+\r
+\r
+ call _vpaes_schedule_round\r
+ decq %rsi\r
+ jz .Lschedule_mangle_last\r
+ call _vpaes_schedule_mangle\r
+\r
+\r
+ pshufd $0xFF,%xmm0,%xmm0\r
+ movdqa %xmm7,%xmm5\r
+ movdqa %xmm6,%xmm7\r
+ call _vpaes_schedule_low_round\r
+ movdqa %xmm5,%xmm7\r
+\r
+ jmp .Loop_schedule_256\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.align 16\r
+.Lschedule_mangle_last:\r
+\r
+ leaq .Lk_deskew(%rip),%r11\r
+ testq %rcx,%rcx\r
+ jnz .Lschedule_mangle_last_dec\r
+\r
+\r
+ movdqa (%r8,%r10,1),%xmm1\r
+.byte 102,15,56,0,193\r
+ leaq .Lk_opt(%rip),%r11\r
+ addq $32,%rdx\r
+\r
+.Lschedule_mangle_last_dec:\r
+ addq $-16,%rdx\r
+ pxor .Lk_s63(%rip),%xmm0\r
+ call _vpaes_schedule_transform\r
+ movdqu %xmm0,(%rdx)\r
+\r
+\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_schedule_core,.-_vpaes_schedule_core\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_schedule_192_smear,@function\r
+.align 16\r
+_vpaes_schedule_192_smear:\r
+.cfi_startproc\r
+ pshufd $0x80,%xmm6,%xmm1\r
+ pshufd $0xFE,%xmm7,%xmm0\r
+ pxor %xmm1,%xmm6\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm0,%xmm6\r
+ movdqa %xmm6,%xmm0\r
+ movhlps %xmm1,%xmm6\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_schedule_round,@function\r
+.align 16\r
+_vpaes_schedule_round:\r
+.cfi_startproc\r
+\r
+ pxor %xmm1,%xmm1\r
+.byte 102,65,15,58,15,200,15\r
+.byte 102,69,15,58,15,192,15\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ pshufd $0xFF,%xmm0,%xmm0\r
+.byte 102,15,58,15,192,1\r
+\r
+\r
+\r
+\r
+_vpaes_schedule_low_round:\r
+\r
+ movdqa %xmm7,%xmm1\r
+ pslldq $4,%xmm7\r
+ pxor %xmm1,%xmm7\r
+ movdqa %xmm7,%xmm1\r
+ pslldq $8,%xmm7\r
+ pxor %xmm1,%xmm7\r
+ pxor .Lk_s63(%rip),%xmm7\r
+\r
+\r
+ movdqa %xmm9,%xmm1\r
+ pandn %xmm0,%xmm1\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm0\r
+ movdqa %xmm11,%xmm2\r
+.byte 102,15,56,0,208\r
+ pxor %xmm1,%xmm0\r
+ movdqa %xmm10,%xmm3\r
+.byte 102,15,56,0,217\r
+ pxor %xmm2,%xmm3\r
+ movdqa %xmm10,%xmm4\r
+.byte 102,15,56,0,224\r
+ pxor %xmm2,%xmm4\r
+ movdqa %xmm10,%xmm2\r
+.byte 102,15,56,0,211\r
+ pxor %xmm0,%xmm2\r
+ movdqa %xmm10,%xmm3\r
+.byte 102,15,56,0,220\r
+ pxor %xmm1,%xmm3\r
+ movdqa %xmm13,%xmm4\r
+.byte 102,15,56,0,226\r
+ movdqa %xmm12,%xmm0\r
+.byte 102,15,56,0,195\r
+ pxor %xmm4,%xmm0\r
+\r
+\r
+ pxor %xmm7,%xmm0\r
+ movdqa %xmm0,%xmm7\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_schedule_round,.-_vpaes_schedule_round\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_schedule_transform,@function\r
+.align 16\r
+_vpaes_schedule_transform:\r
+.cfi_startproc\r
+ movdqa %xmm9,%xmm1\r
+ pandn %xmm0,%xmm1\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm0\r
+ movdqa (%r11),%xmm2\r
+.byte 102,15,56,0,208\r
+ movdqa 16(%r11),%xmm0\r
+.byte 102,15,56,0,193\r
+ pxor %xmm2,%xmm0\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_schedule_transform,.-_vpaes_schedule_transform\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_schedule_mangle,@function\r
+.align 16\r
+_vpaes_schedule_mangle:\r
+.cfi_startproc\r
+ movdqa %xmm0,%xmm4\r
+ movdqa .Lk_mc_forward(%rip),%xmm5\r
+ testq %rcx,%rcx\r
+ jnz .Lschedule_mangle_dec\r
+\r
+\r
+ addq $16,%rdx\r
+ pxor .Lk_s63(%rip),%xmm4\r
+.byte 102,15,56,0,229\r
+ movdqa %xmm4,%xmm3\r
+.byte 102,15,56,0,229\r
+ pxor %xmm4,%xmm3\r
+.byte 102,15,56,0,229\r
+ pxor %xmm4,%xmm3\r
+\r
+ jmp .Lschedule_mangle_both\r
+.align 16\r
+.Lschedule_mangle_dec:\r
+\r
+ leaq .Lk_dksd(%rip),%r11\r
+ movdqa %xmm9,%xmm1\r
+ pandn %xmm4,%xmm1\r
+ psrld $4,%xmm1\r
+ pand %xmm9,%xmm4\r
+\r
+ movdqa 0(%r11),%xmm2\r
+.byte 102,15,56,0,212\r
+ movdqa 16(%r11),%xmm3\r
+.byte 102,15,56,0,217\r
+ pxor %xmm2,%xmm3\r
+.byte 102,15,56,0,221\r
+\r
+ movdqa 32(%r11),%xmm2\r
+.byte 102,15,56,0,212\r
+ pxor %xmm3,%xmm2\r
+ movdqa 48(%r11),%xmm3\r
+.byte 102,15,56,0,217\r
+ pxor %xmm2,%xmm3\r
+.byte 102,15,56,0,221\r
+\r
+ movdqa 64(%r11),%xmm2\r
+.byte 102,15,56,0,212\r
+ pxor %xmm3,%xmm2\r
+ movdqa 80(%r11),%xmm3\r
+.byte 102,15,56,0,217\r
+ pxor %xmm2,%xmm3\r
+.byte 102,15,56,0,221\r
+\r
+ movdqa 96(%r11),%xmm2\r
+.byte 102,15,56,0,212\r
+ pxor %xmm3,%xmm2\r
+ movdqa 112(%r11),%xmm3\r
+.byte 102,15,56,0,217\r
+ pxor %xmm2,%xmm3\r
+\r
+ addq $-16,%rdx\r
+\r
+.Lschedule_mangle_both:\r
+ movdqa (%r8,%r10,1),%xmm1\r
+.byte 102,15,56,0,217\r
+ addq $-16,%r8\r
+ andq $0x30,%r8\r
+ movdqu %xmm3,(%rdx)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle\r
+\r
+\r
+\r
+\r
+.globl vpaes_set_encrypt_key\r
+.type vpaes_set_encrypt_key,@function\r
+.align 16\r
+vpaes_set_encrypt_key:\r
+.cfi_startproc\r
+ movl %esi,%eax\r
+ shrl $5,%eax\r
+ addl $5,%eax\r
+ movl %eax,240(%rdx)\r
+\r
+ movl $0,%ecx\r
+ movl $0x30,%r8d\r
+ call _vpaes_schedule_core\r
+ xorl %eax,%eax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key\r
+\r
+.globl vpaes_set_decrypt_key\r
+.type vpaes_set_decrypt_key,@function\r
+.align 16\r
+vpaes_set_decrypt_key:\r
+.cfi_startproc\r
+ movl %esi,%eax\r
+ shrl $5,%eax\r
+ addl $5,%eax\r
+ movl %eax,240(%rdx)\r
+ shll $4,%eax\r
+ leaq 16(%rdx,%rax,1),%rdx\r
+\r
+ movl $1,%ecx\r
+ movl %esi,%r8d\r
+ shrl $1,%r8d\r
+ andl $32,%r8d\r
+ xorl $32,%r8d\r
+ call _vpaes_schedule_core\r
+ xorl %eax,%eax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key\r
+\r
+.globl vpaes_encrypt\r
+.type vpaes_encrypt,@function\r
+.align 16\r
+vpaes_encrypt:\r
+.cfi_startproc\r
+ movdqu (%rdi),%xmm0\r
+ call _vpaes_preheat\r
+ call _vpaes_encrypt_core\r
+ movdqu %xmm0,(%rsi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size vpaes_encrypt,.-vpaes_encrypt\r
+\r
+.globl vpaes_decrypt\r
+.type vpaes_decrypt,@function\r
+.align 16\r
+vpaes_decrypt:\r
+.cfi_startproc\r
+ movdqu (%rdi),%xmm0\r
+ call _vpaes_preheat\r
+ call _vpaes_decrypt_core\r
+ movdqu %xmm0,(%rsi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size vpaes_decrypt,.-vpaes_decrypt\r
+.globl vpaes_cbc_encrypt\r
+.type vpaes_cbc_encrypt,@function\r
+.align 16\r
+vpaes_cbc_encrypt:\r
+.cfi_startproc\r
+ xchgq %rcx,%rdx\r
+ subq $16,%rcx\r
+ jc .Lcbc_abort\r
+ movdqu (%r8),%xmm6\r
+ subq %rdi,%rsi\r
+ call _vpaes_preheat\r
+ cmpl $0,%r9d\r
+ je .Lcbc_dec_loop\r
+ jmp .Lcbc_enc_loop\r
+.align 16\r
+.Lcbc_enc_loop:\r
+ movdqu (%rdi),%xmm0\r
+ pxor %xmm6,%xmm0\r
+ call _vpaes_encrypt_core\r
+ movdqa %xmm0,%xmm6\r
+ movdqu %xmm0,(%rsi,%rdi,1)\r
+ leaq 16(%rdi),%rdi\r
+ subq $16,%rcx\r
+ jnc .Lcbc_enc_loop\r
+ jmp .Lcbc_done\r
+.align 16\r
+.Lcbc_dec_loop:\r
+ movdqu (%rdi),%xmm0\r
+ movdqa %xmm0,%xmm7\r
+ call _vpaes_decrypt_core\r
+ pxor %xmm6,%xmm0\r
+ movdqa %xmm7,%xmm6\r
+ movdqu %xmm0,(%rsi,%rdi,1)\r
+ leaq 16(%rdi),%rdi\r
+ subq $16,%rcx\r
+ jnc .Lcbc_dec_loop\r
+.Lcbc_done:\r
+ movdqu %xmm6,(%r8)\r
+.Lcbc_abort:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt\r
+\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_preheat,@function\r
+.align 16\r
+_vpaes_preheat:\r
+.cfi_startproc\r
+ leaq .Lk_s0F(%rip),%r10\r
+ movdqa -32(%r10),%xmm10\r
+ movdqa -16(%r10),%xmm11\r
+ movdqa 0(%r10),%xmm9\r
+ movdqa 48(%r10),%xmm13\r
+ movdqa 64(%r10),%xmm12\r
+ movdqa 80(%r10),%xmm15\r
+ movdqa 96(%r10),%xmm14\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size _vpaes_preheat,.-_vpaes_preheat\r
+\r
+\r
+\r
+\r
+\r
+.type _vpaes_consts,@object\r
+.align 64\r
+_vpaes_consts:\r
+.Lk_inv:\r
+.quad 0x0E05060F0D080180, 0x040703090A0B0C02\r
+.quad 0x01040A060F0B0780, 0x030D0E0C02050809\r
+\r
+.Lk_s0F:\r
+.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F\r
+\r
+.Lk_ipt:\r
+.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808\r
+.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81\r
+\r
+.Lk_sb1:\r
+.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544\r
+.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF\r
+.Lk_sb2:\r
+.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD\r
+.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A\r
+.Lk_sbo:\r
+.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878\r
+.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA\r
+\r
+.Lk_mc_forward:\r
+.quad 0x0407060500030201, 0x0C0F0E0D080B0A09\r
+.quad 0x080B0A0904070605, 0x000302010C0F0E0D\r
+.quad 0x0C0F0E0D080B0A09, 0x0407060500030201\r
+.quad 0x000302010C0F0E0D, 0x080B0A0904070605\r
+\r
+.Lk_mc_backward:\r
+.quad 0x0605040702010003, 0x0E0D0C0F0A09080B\r
+.quad 0x020100030E0D0C0F, 0x0A09080B06050407\r
+.quad 0x0E0D0C0F0A09080B, 0x0605040702010003\r
+.quad 0x0A09080B06050407, 0x020100030E0D0C0F\r
+\r
+.Lk_sr:\r
+.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908\r
+.quad 0x030E09040F0A0500, 0x0B06010C07020D08\r
+.quad 0x0F060D040B020900, 0x070E050C030A0108\r
+.quad 0x0B0E0104070A0D00, 0x0306090C0F020508\r
+\r
+.Lk_rcon:\r
+.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81\r
+\r
+.Lk_s63:\r
+.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B\r
+\r
+.Lk_opt:\r
+.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808\r
+.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0\r
+\r
+.Lk_deskew:\r
+.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A\r
+.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77\r
+\r
+\r
+\r
+\r
+\r
+.Lk_dksd:\r
+.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9\r
+.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E\r
+.Lk_dksb:\r
+.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99\r
+.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8\r
+.Lk_dkse:\r
+.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086\r
+.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487\r
+.Lk_dks9:\r
+.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC\r
+.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE\r
+\r
+\r
+\r
+\r
+\r
+.Lk_dipt:\r
+.quad 0x0F505B040B545F00, 0x154A411E114E451A\r
+.quad 0x86E383E660056500, 0x12771772F491F194\r
+\r
+.Lk_dsb9:\r
+.quad 0x851C03539A86D600, 0xCAD51F504F994CC9\r
+.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565\r
+.Lk_dsbd:\r
+.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439\r
+.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3\r
+.Lk_dsbb:\r
+.quad 0xD022649296B44200, 0x602646F6B0F2D404\r
+.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B\r
+.Lk_dsbe:\r
+.quad 0x46F2929626D4D000, 0x2242600464B4F6B0\r
+.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32\r
+.Lk_dsbo:\r
+.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D\r
+.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C\r
+.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0\r
+.align 64\r
+.size _vpaes_consts,.-_vpaes_consts\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/modes/asm/aesni-gcm-x86_64.pl\r
+#\r
+# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+.globl aesni_gcm_encrypt\r
+.type aesni_gcm_encrypt,@function\r
+aesni_gcm_encrypt:\r
+.cfi_startproc\r
+ xorl %eax,%eax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_gcm_encrypt,.-aesni_gcm_encrypt\r
+\r
+.globl aesni_gcm_decrypt\r
+.type aesni_gcm_decrypt,@function\r
+aesni_gcm_decrypt:\r
+.cfi_startproc\r
+ xorl %eax,%eax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size aesni_gcm_decrypt,.-aesni_gcm_decrypt\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/modes/asm/ghash-x86_64.pl\r
+#\r
+# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl gcm_gmult_4bit\r
+.type gcm_gmult_4bit,@function\r
+.align 16\r
+gcm_gmult_4bit:\r
+.cfi_startproc\r
+ pushq %rbx\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r15,-56\r
+ subq $280,%rsp\r
+.cfi_adjust_cfa_offset 280\r
+.Lgmult_prologue:\r
+\r
+ movzbq 15(%rdi),%r8\r
+ leaq .Lrem_4bit(%rip),%r11\r
+ xorq %rax,%rax\r
+ xorq %rbx,%rbx\r
+ movb %r8b,%al\r
+ movb %r8b,%bl\r
+ shlb $4,%al\r
+ movq $14,%rcx\r
+ movq 8(%rsi,%rax,1),%r8\r
+ movq (%rsi,%rax,1),%r9\r
+ andb $0xf0,%bl\r
+ movq %r8,%rdx\r
+ jmp .Loop1\r
+\r
+.align 16\r
+.Loop1:\r
+ shrq $4,%r8\r
+ andq $0xf,%rdx\r
+ movq %r9,%r10\r
+ movb (%rdi,%rcx,1),%al\r
+ shrq $4,%r9\r
+ xorq 8(%rsi,%rbx,1),%r8\r
+ shlq $60,%r10\r
+ xorq (%rsi,%rbx,1),%r9\r
+ movb %al,%bl\r
+ xorq (%r11,%rdx,8),%r9\r
+ movq %r8,%rdx\r
+ shlb $4,%al\r
+ xorq %r10,%r8\r
+ decq %rcx\r
+ js .Lbreak1\r
+\r
+ shrq $4,%r8\r
+ andq $0xf,%rdx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ shlq $60,%r10\r
+ xorq (%rsi,%rax,1),%r9\r
+ andb $0xf0,%bl\r
+ xorq (%r11,%rdx,8),%r9\r
+ movq %r8,%rdx\r
+ xorq %r10,%r8\r
+ jmp .Loop1\r
+\r
+.align 16\r
+.Lbreak1:\r
+ shrq $4,%r8\r
+ andq $0xf,%rdx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ shlq $60,%r10\r
+ xorq (%rsi,%rax,1),%r9\r
+ andb $0xf0,%bl\r
+ xorq (%r11,%rdx,8),%r9\r
+ movq %r8,%rdx\r
+ xorq %r10,%r8\r
+\r
+ shrq $4,%r8\r
+ andq $0xf,%rdx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ xorq 8(%rsi,%rbx,1),%r8\r
+ shlq $60,%r10\r
+ xorq (%rsi,%rbx,1),%r9\r
+ xorq %r10,%r8\r
+ xorq (%r11,%rdx,8),%r9\r
+\r
+ bswapq %r8\r
+ bswapq %r9\r
+ movq %r8,8(%rdi)\r
+ movq %r9,(%rdi)\r
+\r
+ leaq 280+48(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lgmult_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size gcm_gmult_4bit,.-gcm_gmult_4bit\r
+.globl gcm_ghash_4bit\r
+.type gcm_ghash_4bit,@function\r
+.align 16\r
+gcm_ghash_4bit:\r
+.cfi_startproc\r
+ pushq %rbx\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_adjust_cfa_offset 8\r
+.cfi_offset %r15,-56\r
+ subq $280,%rsp\r
+.cfi_adjust_cfa_offset 280\r
+.Lghash_prologue:\r
+ movq %rdx,%r14\r
+ movq %rcx,%r15\r
+ subq $-128,%rsi\r
+ leaq 16+128(%rsp),%rbp\r
+ xorl %edx,%edx\r
+ movq 0+0-128(%rsi),%r8\r
+ movq 0+8-128(%rsi),%rax\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq 16+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq 16+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,0(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,0(%rbp)\r
+ movq 32+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,0-128(%rbp)\r
+ movq 32+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,1(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,8(%rbp)\r
+ movq 48+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,8-128(%rbp)\r
+ movq 48+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,2(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,16(%rbp)\r
+ movq 64+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,16-128(%rbp)\r
+ movq 64+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,3(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,24(%rbp)\r
+ movq 80+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,24-128(%rbp)\r
+ movq 80+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,4(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,32(%rbp)\r
+ movq 96+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,32-128(%rbp)\r
+ movq 96+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,5(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,40(%rbp)\r
+ movq 112+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,40-128(%rbp)\r
+ movq 112+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,6(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,48(%rbp)\r
+ movq 128+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,48-128(%rbp)\r
+ movq 128+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,7(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,56(%rbp)\r
+ movq 144+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,56-128(%rbp)\r
+ movq 144+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,8(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,64(%rbp)\r
+ movq 160+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,64-128(%rbp)\r
+ movq 160+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,9(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,72(%rbp)\r
+ movq 176+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,72-128(%rbp)\r
+ movq 176+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,10(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,80(%rbp)\r
+ movq 192+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,80-128(%rbp)\r
+ movq 192+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,11(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,88(%rbp)\r
+ movq 208+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,88-128(%rbp)\r
+ movq 208+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,12(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,96(%rbp)\r
+ movq 224+0-128(%rsi),%r8\r
+ shlb $4,%dl\r
+ movq %rax,96-128(%rbp)\r
+ movq 224+8-128(%rsi),%rax\r
+ shlq $60,%r10\r
+ movb %dl,13(%rsp)\r
+ orq %r10,%rbx\r
+ movb %al,%dl\r
+ shrq $4,%rax\r
+ movq %r8,%r10\r
+ shrq $4,%r8\r
+ movq %r9,104(%rbp)\r
+ movq 240+0-128(%rsi),%r9\r
+ shlb $4,%dl\r
+ movq %rbx,104-128(%rbp)\r
+ movq 240+8-128(%rsi),%rbx\r
+ shlq $60,%r10\r
+ movb %dl,14(%rsp)\r
+ orq %r10,%rax\r
+ movb %bl,%dl\r
+ shrq $4,%rbx\r
+ movq %r9,%r10\r
+ shrq $4,%r9\r
+ movq %r8,112(%rbp)\r
+ shlb $4,%dl\r
+ movq %rax,112-128(%rbp)\r
+ shlq $60,%r10\r
+ movb %dl,15(%rsp)\r
+ orq %r10,%rbx\r
+ movq %r9,120(%rbp)\r
+ movq %rbx,120-128(%rbp)\r
+ addq $-128,%rsi\r
+ movq 8(%rdi),%r8\r
+ movq 0(%rdi),%r9\r
+ addq %r14,%r15\r
+ leaq .Lrem_8bit(%rip),%r11\r
+ jmp .Louter_loop\r
+.align 16\r
+.Louter_loop:\r
+ xorq (%r14),%r9\r
+ movq 8(%r14),%rdx\r
+ leaq 16(%r14),%r14\r
+ xorq %r8,%rdx\r
+ movq %r9,(%rdi)\r
+ movq %rdx,8(%rdi)\r
+ shrq $32,%rdx\r
+ xorq %rax,%rax\r
+ roll $8,%edx\r
+ movb %dl,%al\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ shrl $4,%ebx\r
+ roll $8,%edx\r
+ movq 8(%rsi,%rax,1),%r8\r
+ movq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ movl 8(%rdi),%edx\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ movl 4(%rdi),%edx\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ movl 0(%rdi),%edx\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ shrl $4,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r12,2),%r12\r
+ movzbl %dl,%ebx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rcx,1),%r13\r
+ shrl $4,%ebx\r
+ shlq $48,%r12\r
+ xorq %r8,%r13\r
+ movq %r9,%r10\r
+ xorq %r12,%r9\r
+ shrq $8,%r8\r
+ movzbq %r13b,%r13\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rcx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rcx,8),%r9\r
+ roll $8,%edx\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ movb %dl,%al\r
+ xorq %r10,%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ movzbl %dl,%ecx\r
+ shlb $4,%al\r
+ movzbq (%rsp,%rbx,1),%r12\r
+ andl $240,%ecx\r
+ shlq $48,%r13\r
+ xorq %r8,%r12\r
+ movq %r9,%r10\r
+ xorq %r13,%r9\r
+ shrq $8,%r8\r
+ movzbq %r12b,%r12\r
+ movl -4(%rdi),%edx\r
+ shrq $8,%r9\r
+ xorq -128(%rbp,%rbx,8),%r8\r
+ shlq $56,%r10\r
+ xorq (%rbp,%rbx,8),%r9\r
+ movzwq (%r11,%r12,2),%r12\r
+ xorq 8(%rsi,%rax,1),%r8\r
+ xorq (%rsi,%rax,1),%r9\r
+ shlq $48,%r12\r
+ xorq %r10,%r8\r
+ xorq %r12,%r9\r
+ movzbq %r8b,%r13\r
+ shrq $4,%r8\r
+ movq %r9,%r10\r
+ shlb $4,%r13b\r
+ shrq $4,%r9\r
+ xorq 8(%rsi,%rcx,1),%r8\r
+ movzwq (%r11,%r13,2),%r13\r
+ shlq $60,%r10\r
+ xorq (%rsi,%rcx,1),%r9\r
+ xorq %r10,%r8\r
+ shlq $48,%r13\r
+ bswapq %r8\r
+ xorq %r13,%r9\r
+ bswapq %r9\r
+ cmpq %r15,%r14\r
+ jb .Louter_loop\r
+ movq %r8,8(%rdi)\r
+ movq %r9,(%rdi)\r
+\r
+ leaq 280+48(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -48(%rsi),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq 0(%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lghash_epilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size gcm_ghash_4bit,.-gcm_ghash_4bit\r
+.globl gcm_init_clmul\r
+.type gcm_init_clmul,@function\r
+.align 16\r
+gcm_init_clmul:\r
+.cfi_startproc\r
+.L_init_clmul:\r
+ movdqu (%rsi),%xmm2\r
+ pshufd $78,%xmm2,%xmm2\r
+\r
+\r
+ pshufd $255,%xmm2,%xmm4\r
+ movdqa %xmm2,%xmm3\r
+ psllq $1,%xmm2\r
+ pxor %xmm5,%xmm5\r
+ psrlq $63,%xmm3\r
+ pcmpgtd %xmm4,%xmm5\r
+ pslldq $8,%xmm3\r
+ por %xmm3,%xmm2\r
+\r
+\r
+ pand .L0x1c2_polynomial(%rip),%xmm5\r
+ pxor %xmm5,%xmm2\r
+\r
+\r
+ pshufd $78,%xmm2,%xmm6\r
+ movdqa %xmm2,%xmm0\r
+ pxor %xmm2,%xmm6\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm3\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,58,68,194,0\r
+.byte 102,15,58,68,202,17\r
+.byte 102,15,58,68,222,0\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+\r
+ movdqa %xmm3,%xmm4\r
+ psrldq $8,%xmm3\r
+ pslldq $8,%xmm4\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ pshufd $78,%xmm2,%xmm3\r
+ pshufd $78,%xmm0,%xmm4\r
+ pxor %xmm2,%xmm3\r
+ movdqu %xmm2,0(%rdi)\r
+ pxor %xmm0,%xmm4\r
+ movdqu %xmm0,16(%rdi)\r
+.byte 102,15,58,15,227,8\r
+ movdqu %xmm4,32(%rdi)\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm3\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,58,68,194,0\r
+.byte 102,15,58,68,202,17\r
+.byte 102,15,58,68,222,0\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+\r
+ movdqa %xmm3,%xmm4\r
+ psrldq $8,%xmm3\r
+ pslldq $8,%xmm4\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ movdqa %xmm0,%xmm5\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm3\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,58,68,194,0\r
+.byte 102,15,58,68,202,17\r
+.byte 102,15,58,68,222,0\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+\r
+ movdqa %xmm3,%xmm4\r
+ psrldq $8,%xmm3\r
+ pslldq $8,%xmm4\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ pshufd $78,%xmm5,%xmm3\r
+ pshufd $78,%xmm0,%xmm4\r
+ pxor %xmm5,%xmm3\r
+ movdqu %xmm5,48(%rdi)\r
+ pxor %xmm0,%xmm4\r
+ movdqu %xmm0,64(%rdi)\r
+.byte 102,15,58,15,227,8\r
+ movdqu %xmm4,80(%rdi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size gcm_init_clmul,.-gcm_init_clmul\r
+.globl gcm_gmult_clmul\r
+.type gcm_gmult_clmul,@function\r
+.align 16\r
+gcm_gmult_clmul:\r
+.cfi_startproc\r
+.L_gmult_clmul:\r
+ movdqu (%rdi),%xmm0\r
+ movdqa .Lbswap_mask(%rip),%xmm5\r
+ movdqu (%rsi),%xmm2\r
+ movdqu 32(%rsi),%xmm4\r
+.byte 102,15,56,0,197\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm3\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,58,68,194,0\r
+.byte 102,15,58,68,202,17\r
+.byte 102,15,58,68,220,0\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+\r
+ movdqa %xmm3,%xmm4\r
+ psrldq $8,%xmm3\r
+ pslldq $8,%xmm4\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+.byte 102,15,56,0,197\r
+ movdqu %xmm0,(%rdi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size gcm_gmult_clmul,.-gcm_gmult_clmul\r
+.globl gcm_ghash_clmul\r
+.type gcm_ghash_clmul,@function\r
+.align 32\r
+gcm_ghash_clmul:\r
+.cfi_startproc\r
+.L_ghash_clmul:\r
+ movdqa .Lbswap_mask(%rip),%xmm10\r
+\r
+ movdqu (%rdi),%xmm0\r
+ movdqu (%rsi),%xmm2\r
+ movdqu 32(%rsi),%xmm7\r
+.byte 102,65,15,56,0,194\r
+\r
+ subq $0x10,%rcx\r
+ jz .Lodd_tail\r
+\r
+ movdqu 16(%rsi),%xmm6\r
+ movl OPENSSL_ia32cap_P+4(%rip),%eax\r
+ cmpq $0x30,%rcx\r
+ jb .Lskip4x\r
+\r
+ andl $71303168,%eax\r
+ cmpl $4194304,%eax\r
+ je .Lskip4x\r
+\r
+ subq $0x30,%rcx\r
+ movq $0xA040608020C0E000,%rax\r
+ movdqu 48(%rsi),%xmm14\r
+ movdqu 64(%rsi),%xmm15\r
+\r
+\r
+\r
+\r
+ movdqu 48(%rdx),%xmm3\r
+ movdqu 32(%rdx),%xmm11\r
+.byte 102,65,15,56,0,218\r
+.byte 102,69,15,56,0,218\r
+ movdqa %xmm3,%xmm5\r
+ pshufd $78,%xmm3,%xmm4\r
+ pxor %xmm3,%xmm4\r
+.byte 102,15,58,68,218,0\r
+.byte 102,15,58,68,234,17\r
+.byte 102,15,58,68,231,0\r
+\r
+ movdqa %xmm11,%xmm13\r
+ pshufd $78,%xmm11,%xmm12\r
+ pxor %xmm11,%xmm12\r
+.byte 102,68,15,58,68,222,0\r
+.byte 102,68,15,58,68,238,17\r
+.byte 102,68,15,58,68,231,16\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm13,%xmm5\r
+ movups 80(%rsi),%xmm7\r
+ xorps %xmm12,%xmm4\r
+\r
+ movdqu 16(%rdx),%xmm11\r
+ movdqu 0(%rdx),%xmm8\r
+.byte 102,69,15,56,0,218\r
+.byte 102,69,15,56,0,194\r
+ movdqa %xmm11,%xmm13\r
+ pshufd $78,%xmm11,%xmm12\r
+ pxor %xmm8,%xmm0\r
+ pxor %xmm11,%xmm12\r
+.byte 102,69,15,58,68,222,0\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm8\r
+ pxor %xmm0,%xmm8\r
+.byte 102,69,15,58,68,238,17\r
+.byte 102,68,15,58,68,231,0\r
+ xorps %xmm11,%xmm3\r
+ xorps %xmm13,%xmm5\r
+\r
+ leaq 64(%rdx),%rdx\r
+ subq $0x40,%rcx\r
+ jc .Ltail4x\r
+\r
+ jmp .Lmod4_loop\r
+.align 32\r
+.Lmod4_loop:\r
+.byte 102,65,15,58,68,199,0\r
+ xorps %xmm12,%xmm4\r
+ movdqu 48(%rdx),%xmm11\r
+.byte 102,69,15,56,0,218\r
+.byte 102,65,15,58,68,207,17\r
+ xorps %xmm3,%xmm0\r
+ movdqu 32(%rdx),%xmm3\r
+ movdqa %xmm11,%xmm13\r
+.byte 102,68,15,58,68,199,16\r
+ pshufd $78,%xmm11,%xmm12\r
+ xorps %xmm5,%xmm1\r
+ pxor %xmm11,%xmm12\r
+.byte 102,65,15,56,0,218\r
+ movups 32(%rsi),%xmm7\r
+ xorps %xmm4,%xmm8\r
+.byte 102,68,15,58,68,218,0\r
+ pshufd $78,%xmm3,%xmm4\r
+\r
+ pxor %xmm0,%xmm8\r
+ movdqa %xmm3,%xmm5\r
+ pxor %xmm1,%xmm8\r
+ pxor %xmm3,%xmm4\r
+ movdqa %xmm8,%xmm9\r
+.byte 102,68,15,58,68,234,17\r
+ pslldq $8,%xmm8\r
+ psrldq $8,%xmm9\r
+ pxor %xmm8,%xmm0\r
+ movdqa .L7_mask(%rip),%xmm8\r
+ pxor %xmm9,%xmm1\r
+.byte 102,76,15,110,200\r
+\r
+ pand %xmm0,%xmm8\r
+.byte 102,69,15,56,0,200\r
+ pxor %xmm0,%xmm9\r
+.byte 102,68,15,58,68,231,0\r
+ psllq $57,%xmm9\r
+ movdqa %xmm9,%xmm8\r
+ pslldq $8,%xmm9\r
+.byte 102,15,58,68,222,0\r
+ psrldq $8,%xmm8\r
+ pxor %xmm9,%xmm0\r
+ pxor %xmm8,%xmm1\r
+ movdqu 0(%rdx),%xmm8\r
+\r
+ movdqa %xmm0,%xmm9\r
+ psrlq $1,%xmm0\r
+.byte 102,15,58,68,238,17\r
+ xorps %xmm11,%xmm3\r
+ movdqu 16(%rdx),%xmm11\r
+.byte 102,69,15,56,0,218\r
+.byte 102,15,58,68,231,16\r
+ xorps %xmm13,%xmm5\r
+ movups 80(%rsi),%xmm7\r
+.byte 102,69,15,56,0,194\r
+ pxor %xmm9,%xmm1\r
+ pxor %xmm0,%xmm9\r
+ psrlq $5,%xmm0\r
+\r
+ movdqa %xmm11,%xmm13\r
+ pxor %xmm12,%xmm4\r
+ pshufd $78,%xmm11,%xmm12\r
+ pxor %xmm9,%xmm0\r
+ pxor %xmm8,%xmm1\r
+ pxor %xmm11,%xmm12\r
+.byte 102,69,15,58,68,222,0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ movdqa %xmm0,%xmm1\r
+.byte 102,69,15,58,68,238,17\r
+ xorps %xmm11,%xmm3\r
+ pshufd $78,%xmm0,%xmm8\r
+ pxor %xmm0,%xmm8\r
+\r
+.byte 102,68,15,58,68,231,0\r
+ xorps %xmm13,%xmm5\r
+\r
+ leaq 64(%rdx),%rdx\r
+ subq $0x40,%rcx\r
+ jnc .Lmod4_loop\r
+\r
+.Ltail4x:\r
+.byte 102,65,15,58,68,199,0\r
+.byte 102,65,15,58,68,207,17\r
+.byte 102,68,15,58,68,199,16\r
+ xorps %xmm12,%xmm4\r
+ xorps %xmm3,%xmm0\r
+ xorps %xmm5,%xmm1\r
+ pxor %xmm0,%xmm1\r
+ pxor %xmm4,%xmm8\r
+\r
+ pxor %xmm1,%xmm8\r
+ pxor %xmm0,%xmm1\r
+\r
+ movdqa %xmm8,%xmm9\r
+ psrldq $8,%xmm8\r
+ pslldq $8,%xmm9\r
+ pxor %xmm8,%xmm1\r
+ pxor %xmm9,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ addq $0x40,%rcx\r
+ jz .Ldone\r
+ movdqu 32(%rsi),%xmm7\r
+ subq $0x10,%rcx\r
+ jz .Lodd_tail\r
+.Lskip4x:\r
+\r
+\r
+\r
+\r
+\r
+ movdqu (%rdx),%xmm8\r
+ movdqu 16(%rdx),%xmm3\r
+.byte 102,69,15,56,0,194\r
+.byte 102,65,15,56,0,218\r
+ pxor %xmm8,%xmm0\r
+\r
+ movdqa %xmm3,%xmm5\r
+ pshufd $78,%xmm3,%xmm4\r
+ pxor %xmm3,%xmm4\r
+.byte 102,15,58,68,218,0\r
+.byte 102,15,58,68,234,17\r
+.byte 102,15,58,68,231,0\r
+\r
+ leaq 32(%rdx),%rdx\r
+ nop\r
+ subq $0x20,%rcx\r
+ jbe .Leven_tail\r
+ nop\r
+ jmp .Lmod_loop\r
+\r
+.align 32\r
+.Lmod_loop:\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm4,%xmm8\r
+ pshufd $78,%xmm0,%xmm4\r
+ pxor %xmm0,%xmm4\r
+\r
+.byte 102,15,58,68,198,0\r
+.byte 102,15,58,68,206,17\r
+.byte 102,15,58,68,231,16\r
+\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm5,%xmm1\r
+ movdqu (%rdx),%xmm9\r
+ pxor %xmm0,%xmm8\r
+.byte 102,69,15,56,0,202\r
+ movdqu 16(%rdx),%xmm3\r
+\r
+ pxor %xmm1,%xmm8\r
+ pxor %xmm9,%xmm1\r
+ pxor %xmm8,%xmm4\r
+.byte 102,65,15,56,0,218\r
+ movdqa %xmm4,%xmm8\r
+ psrldq $8,%xmm8\r
+ pslldq $8,%xmm4\r
+ pxor %xmm8,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm3,%xmm5\r
+\r
+ movdqa %xmm0,%xmm9\r
+ movdqa %xmm0,%xmm8\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm8\r
+.byte 102,15,58,68,218,0\r
+ psllq $1,%xmm0\r
+ pxor %xmm8,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm8\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm8\r
+ pxor %xmm9,%xmm0\r
+ pshufd $78,%xmm5,%xmm4\r
+ pxor %xmm8,%xmm1\r
+ pxor %xmm5,%xmm4\r
+\r
+ movdqa %xmm0,%xmm9\r
+ psrlq $1,%xmm0\r
+.byte 102,15,58,68,234,17\r
+ pxor %xmm9,%xmm1\r
+ pxor %xmm0,%xmm9\r
+ psrlq $5,%xmm0\r
+ pxor %xmm9,%xmm0\r
+ leaq 32(%rdx),%rdx\r
+ psrlq $1,%xmm0\r
+.byte 102,15,58,68,231,0\r
+ pxor %xmm1,%xmm0\r
+\r
+ subq $0x20,%rcx\r
+ ja .Lmod_loop\r
+\r
+.Leven_tail:\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm4,%xmm8\r
+ pshufd $78,%xmm0,%xmm4\r
+ pxor %xmm0,%xmm4\r
+\r
+.byte 102,15,58,68,198,0\r
+.byte 102,15,58,68,206,17\r
+.byte 102,15,58,68,231,16\r
+\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm5,%xmm1\r
+ pxor %xmm0,%xmm8\r
+ pxor %xmm1,%xmm8\r
+ pxor %xmm8,%xmm4\r
+ movdqa %xmm4,%xmm8\r
+ psrldq $8,%xmm8\r
+ pslldq $8,%xmm4\r
+ pxor %xmm8,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ testq %rcx,%rcx\r
+ jnz .Ldone\r
+\r
+.Lodd_tail:\r
+ movdqu (%rdx),%xmm8\r
+.byte 102,69,15,56,0,194\r
+ pxor %xmm8,%xmm0\r
+ movdqa %xmm0,%xmm1\r
+ pshufd $78,%xmm0,%xmm3\r
+ pxor %xmm0,%xmm3\r
+.byte 102,15,58,68,194,0\r
+.byte 102,15,58,68,202,17\r
+.byte 102,15,58,68,223,0\r
+ pxor %xmm0,%xmm3\r
+ pxor %xmm1,%xmm3\r
+\r
+ movdqa %xmm3,%xmm4\r
+ psrldq $8,%xmm3\r
+ pslldq $8,%xmm4\r
+ pxor %xmm3,%xmm1\r
+ pxor %xmm4,%xmm0\r
+\r
+ movdqa %xmm0,%xmm4\r
+ movdqa %xmm0,%xmm3\r
+ psllq $5,%xmm0\r
+ pxor %xmm0,%xmm3\r
+ psllq $1,%xmm0\r
+ pxor %xmm3,%xmm0\r
+ psllq $57,%xmm0\r
+ movdqa %xmm0,%xmm3\r
+ pslldq $8,%xmm0\r
+ psrldq $8,%xmm3\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm3,%xmm1\r
+\r
+\r
+ movdqa %xmm0,%xmm4\r
+ psrlq $1,%xmm0\r
+ pxor %xmm4,%xmm1\r
+ pxor %xmm0,%xmm4\r
+ psrlq $5,%xmm0\r
+ pxor %xmm4,%xmm0\r
+ psrlq $1,%xmm0\r
+ pxor %xmm1,%xmm0\r
+.Ldone:\r
+.byte 102,65,15,56,0,194\r
+ movdqu %xmm0,(%rdi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size gcm_ghash_clmul,.-gcm_ghash_clmul\r
+.globl gcm_init_avx\r
+.type gcm_init_avx,@function\r
+.align 32\r
+gcm_init_avx:\r
+.cfi_startproc\r
+ jmp .L_init_clmul\r
+.cfi_endproc\r
+.size gcm_init_avx,.-gcm_init_avx\r
+.globl gcm_gmult_avx\r
+.type gcm_gmult_avx,@function\r
+.align 32\r
+gcm_gmult_avx:\r
+.cfi_startproc\r
+ jmp .L_gmult_clmul\r
+.cfi_endproc\r
+.size gcm_gmult_avx,.-gcm_gmult_avx\r
+.globl gcm_ghash_avx\r
+.type gcm_ghash_avx,@function\r
+.align 32\r
+gcm_ghash_avx:\r
+.cfi_startproc\r
+ jmp .L_ghash_clmul\r
+.cfi_endproc\r
+.size gcm_ghash_avx,.-gcm_ghash_avx\r
+.align 64\r
+.Lbswap_mask:\r
+.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0\r
+.L0x1c2_polynomial:\r
+.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2\r
+.L7_mask:\r
+.long 7,0,7,0\r
+.L7_mask_poly:\r
+.long 7,0,450,0\r
+.align 64\r
+.type .Lrem_4bit,@object\r
+.Lrem_4bit:\r
+.long 0,0,0,471859200,0,943718400,0,610271232\r
+.long 0,1887436800,0,1822425088,0,1220542464,0,1423966208\r
+.long 0,3774873600,0,4246732800,0,3644850176,0,3311403008\r
+.long 0,2441084928,0,2376073216,0,2847932416,0,3051356160\r
+.type .Lrem_8bit,@object\r
+.Lrem_8bit:\r
+.value 0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E\r
+.value 0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E\r
+.value 0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E\r
+.value 0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E\r
+.value 0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E\r
+.value 0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E\r
+.value 0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E\r
+.value 0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E\r
+.value 0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE\r
+.value 0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE\r
+.value 0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE\r
+.value 0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE\r
+.value 0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E\r
+.value 0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E\r
+.value 0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE\r
+.value 0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE\r
+.value 0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E\r
+.value 0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E\r
+.value 0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E\r
+.value 0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E\r
+.value 0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E\r
+.value 0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E\r
+.value 0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E\r
+.value 0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E\r
+.value 0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE\r
+.value 0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE\r
+.value 0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE\r
+.value 0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE\r
+.value 0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E\r
+.value 0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E\r
+.value 0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE\r
+.value 0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE\r
+\r
+.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\r
+.align 64\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/sha/asm/sha1-mb-x86_64.pl\r
+#\r
+# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+\r
+.globl sha1_multi_block\r
+.type sha1_multi_block,@function\r
+.align 32\r
+sha1_multi_block:\r
+.cfi_startproc\r
+ movq OPENSSL_ia32cap_P+4(%rip),%rcx\r
+ btq $61,%rcx\r
+ jc _shaext_shortcut\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbx,-24\r
+ subq $288,%rsp\r
+ andq $-256,%rsp\r
+ movq %rax,272(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08\r
+.Lbody:\r
+ leaq K_XX_XX(%rip),%rbp\r
+ leaq 256(%rsp),%rbx\r
+\r
+.Loop_grande:\r
+ movl %edx,280(%rsp)\r
+ xorl %edx,%edx\r
+ movq 0(%rsi),%r8\r
+ movl 8(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,0(%rbx)\r
+ cmovleq %rbp,%r8\r
+ movq 16(%rsi),%r9\r
+ movl 24(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,4(%rbx)\r
+ cmovleq %rbp,%r9\r
+ movq 32(%rsi),%r10\r
+ movl 40(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,8(%rbx)\r
+ cmovleq %rbp,%r10\r
+ movq 48(%rsi),%r11\r
+ movl 56(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,12(%rbx)\r
+ cmovleq %rbp,%r11\r
+ testl %edx,%edx\r
+ jz .Ldone\r
+\r
+ movdqu 0(%rdi),%xmm10\r
+ leaq 128(%rsp),%rax\r
+ movdqu 32(%rdi),%xmm11\r
+ movdqu 64(%rdi),%xmm12\r
+ movdqu 96(%rdi),%xmm13\r
+ movdqu 128(%rdi),%xmm14\r
+ movdqa 96(%rbp),%xmm5\r
+ movdqa -32(%rbp),%xmm15\r
+ jmp .Loop\r
+\r
+.align 32\r
+.Loop:\r
+ movd (%r8),%xmm0\r
+ leaq 64(%r8),%r8\r
+ movd (%r9),%xmm2\r
+ leaq 64(%r9),%r9\r
+ movd (%r10),%xmm3\r
+ leaq 64(%r10),%r10\r
+ movd (%r11),%xmm4\r
+ leaq 64(%r11),%r11\r
+ punpckldq %xmm3,%xmm0\r
+ movd -60(%r8),%xmm1\r
+ punpckldq %xmm4,%xmm2\r
+ movd -60(%r9),%xmm9\r
+ punpckldq %xmm2,%xmm0\r
+ movd -60(%r10),%xmm8\r
+.byte 102,15,56,0,197\r
+ movd -60(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ paddd %xmm15,%xmm14\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm11,%xmm7\r
+ movdqa %xmm11,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm13,%xmm7\r
+ pand %xmm12,%xmm6\r
+ punpckldq %xmm9,%xmm1\r
+ movdqa %xmm10,%xmm9\r
+\r
+ movdqa %xmm0,0-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ movd -56(%r8),%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -56(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+.byte 102,15,56,0,205\r
+ movd -56(%r10),%xmm8\r
+ por %xmm7,%xmm11\r
+ movd -56(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm2\r
+ movdqa %xmm14,%xmm8\r
+ paddd %xmm15,%xmm13\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm10,%xmm7\r
+ movdqa %xmm10,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm12,%xmm7\r
+ pand %xmm11,%xmm6\r
+ punpckldq %xmm9,%xmm2\r
+ movdqa %xmm14,%xmm9\r
+\r
+ movdqa %xmm1,16-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ movd -52(%r8),%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -52(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+.byte 102,15,56,0,213\r
+ movd -52(%r10),%xmm8\r
+ por %xmm7,%xmm10\r
+ movd -52(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm3\r
+ movdqa %xmm13,%xmm8\r
+ paddd %xmm15,%xmm12\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm14,%xmm7\r
+ movdqa %xmm14,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm11,%xmm7\r
+ pand %xmm10,%xmm6\r
+ punpckldq %xmm9,%xmm3\r
+ movdqa %xmm13,%xmm9\r
+\r
+ movdqa %xmm2,32-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ movd -48(%r8),%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -48(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+.byte 102,15,56,0,221\r
+ movd -48(%r10),%xmm8\r
+ por %xmm7,%xmm14\r
+ movd -48(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm4\r
+ movdqa %xmm12,%xmm8\r
+ paddd %xmm15,%xmm11\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm13,%xmm7\r
+ movdqa %xmm13,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm10,%xmm7\r
+ pand %xmm14,%xmm6\r
+ punpckldq %xmm9,%xmm4\r
+ movdqa %xmm12,%xmm9\r
+\r
+ movdqa %xmm3,48-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ movd -44(%r8),%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -44(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+.byte 102,15,56,0,229\r
+ movd -44(%r10),%xmm8\r
+ por %xmm7,%xmm13\r
+ movd -44(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm0\r
+ movdqa %xmm11,%xmm8\r
+ paddd %xmm15,%xmm10\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm12,%xmm7\r
+ movdqa %xmm12,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm14,%xmm7\r
+ pand %xmm13,%xmm6\r
+ punpckldq %xmm9,%xmm0\r
+ movdqa %xmm11,%xmm9\r
+\r
+ movdqa %xmm4,64-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ movd -40(%r8),%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -40(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+.byte 102,15,56,0,197\r
+ movd -40(%r10),%xmm8\r
+ por %xmm7,%xmm12\r
+ movd -40(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ paddd %xmm15,%xmm14\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm11,%xmm7\r
+ movdqa %xmm11,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm13,%xmm7\r
+ pand %xmm12,%xmm6\r
+ punpckldq %xmm9,%xmm1\r
+ movdqa %xmm10,%xmm9\r
+\r
+ movdqa %xmm0,80-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ movd -36(%r8),%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -36(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+.byte 102,15,56,0,205\r
+ movd -36(%r10),%xmm8\r
+ por %xmm7,%xmm11\r
+ movd -36(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm2\r
+ movdqa %xmm14,%xmm8\r
+ paddd %xmm15,%xmm13\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm10,%xmm7\r
+ movdqa %xmm10,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm12,%xmm7\r
+ pand %xmm11,%xmm6\r
+ punpckldq %xmm9,%xmm2\r
+ movdqa %xmm14,%xmm9\r
+\r
+ movdqa %xmm1,96-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ movd -32(%r8),%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -32(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+.byte 102,15,56,0,213\r
+ movd -32(%r10),%xmm8\r
+ por %xmm7,%xmm10\r
+ movd -32(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm3\r
+ movdqa %xmm13,%xmm8\r
+ paddd %xmm15,%xmm12\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm14,%xmm7\r
+ movdqa %xmm14,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm11,%xmm7\r
+ pand %xmm10,%xmm6\r
+ punpckldq %xmm9,%xmm3\r
+ movdqa %xmm13,%xmm9\r
+\r
+ movdqa %xmm2,112-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ movd -28(%r8),%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -28(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+.byte 102,15,56,0,221\r
+ movd -28(%r10),%xmm8\r
+ por %xmm7,%xmm14\r
+ movd -28(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm4\r
+ movdqa %xmm12,%xmm8\r
+ paddd %xmm15,%xmm11\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm13,%xmm7\r
+ movdqa %xmm13,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm10,%xmm7\r
+ pand %xmm14,%xmm6\r
+ punpckldq %xmm9,%xmm4\r
+ movdqa %xmm12,%xmm9\r
+\r
+ movdqa %xmm3,128-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ movd -24(%r8),%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -24(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+.byte 102,15,56,0,229\r
+ movd -24(%r10),%xmm8\r
+ por %xmm7,%xmm13\r
+ movd -24(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm0\r
+ movdqa %xmm11,%xmm8\r
+ paddd %xmm15,%xmm10\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm12,%xmm7\r
+ movdqa %xmm12,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm14,%xmm7\r
+ pand %xmm13,%xmm6\r
+ punpckldq %xmm9,%xmm0\r
+ movdqa %xmm11,%xmm9\r
+\r
+ movdqa %xmm4,144-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ movd -20(%r8),%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -20(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+.byte 102,15,56,0,197\r
+ movd -20(%r10),%xmm8\r
+ por %xmm7,%xmm12\r
+ movd -20(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ paddd %xmm15,%xmm14\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm11,%xmm7\r
+ movdqa %xmm11,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm13,%xmm7\r
+ pand %xmm12,%xmm6\r
+ punpckldq %xmm9,%xmm1\r
+ movdqa %xmm10,%xmm9\r
+\r
+ movdqa %xmm0,160-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ movd -16(%r8),%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -16(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+.byte 102,15,56,0,205\r
+ movd -16(%r10),%xmm8\r
+ por %xmm7,%xmm11\r
+ movd -16(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm2\r
+ movdqa %xmm14,%xmm8\r
+ paddd %xmm15,%xmm13\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm10,%xmm7\r
+ movdqa %xmm10,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm12,%xmm7\r
+ pand %xmm11,%xmm6\r
+ punpckldq %xmm9,%xmm2\r
+ movdqa %xmm14,%xmm9\r
+\r
+ movdqa %xmm1,176-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ movd -12(%r8),%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -12(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+.byte 102,15,56,0,213\r
+ movd -12(%r10),%xmm8\r
+ por %xmm7,%xmm10\r
+ movd -12(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm3\r
+ movdqa %xmm13,%xmm8\r
+ paddd %xmm15,%xmm12\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm14,%xmm7\r
+ movdqa %xmm14,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm11,%xmm7\r
+ pand %xmm10,%xmm6\r
+ punpckldq %xmm9,%xmm3\r
+ movdqa %xmm13,%xmm9\r
+\r
+ movdqa %xmm2,192-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ movd -8(%r8),%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -8(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+.byte 102,15,56,0,221\r
+ movd -8(%r10),%xmm8\r
+ por %xmm7,%xmm14\r
+ movd -8(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm4\r
+ movdqa %xmm12,%xmm8\r
+ paddd %xmm15,%xmm11\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm13,%xmm7\r
+ movdqa %xmm13,%xmm6\r
+ pslld $5,%xmm8\r
+ pandn %xmm10,%xmm7\r
+ pand %xmm14,%xmm6\r
+ punpckldq %xmm9,%xmm4\r
+ movdqa %xmm12,%xmm9\r
+\r
+ movdqa %xmm3,208-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ movd -4(%r8),%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ por %xmm9,%xmm8\r
+ movd -4(%r9),%xmm9\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+.byte 102,15,56,0,229\r
+ movd -4(%r10),%xmm8\r
+ por %xmm7,%xmm13\r
+ movdqa 0-128(%rax),%xmm1\r
+ movd -4(%r11),%xmm7\r
+ punpckldq %xmm8,%xmm0\r
+ movdqa %xmm11,%xmm8\r
+ paddd %xmm15,%xmm10\r
+ punpckldq %xmm7,%xmm9\r
+ movdqa %xmm12,%xmm7\r
+ movdqa %xmm12,%xmm6\r
+ pslld $5,%xmm8\r
+ prefetcht0 63(%r8)\r
+ pandn %xmm14,%xmm7\r
+ pand %xmm13,%xmm6\r
+ punpckldq %xmm9,%xmm0\r
+ movdqa %xmm11,%xmm9\r
+\r
+ movdqa %xmm4,224-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+ prefetcht0 63(%r9)\r
+\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm10\r
+ prefetcht0 63(%r10)\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+.byte 102,15,56,0,197\r
+ prefetcht0 63(%r11)\r
+ por %xmm7,%xmm12\r
+ movdqa 16-128(%rax),%xmm2\r
+ pxor %xmm3,%xmm1\r
+ movdqa 32-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ pxor 128-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ movdqa %xmm11,%xmm7\r
+ pslld $5,%xmm8\r
+ pxor %xmm3,%xmm1\r
+ movdqa %xmm11,%xmm6\r
+ pandn %xmm13,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ pand %xmm12,%xmm6\r
+ movdqa %xmm10,%xmm9\r
+ psrld $31,%xmm5\r
+ paddd %xmm1,%xmm1\r
+\r
+ movdqa %xmm0,240-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+\r
+ movdqa %xmm11,%xmm7\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 48-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ pxor 144-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ movdqa %xmm10,%xmm7\r
+ pslld $5,%xmm8\r
+ pxor %xmm4,%xmm2\r
+ movdqa %xmm10,%xmm6\r
+ pandn %xmm12,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ pand %xmm11,%xmm6\r
+ movdqa %xmm14,%xmm9\r
+ psrld $31,%xmm5\r
+ paddd %xmm2,%xmm2\r
+\r
+ movdqa %xmm1,0-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+\r
+ movdqa %xmm10,%xmm7\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 64-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ pxor 160-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ movdqa %xmm14,%xmm7\r
+ pslld $5,%xmm8\r
+ pxor %xmm0,%xmm3\r
+ movdqa %xmm14,%xmm6\r
+ pandn %xmm11,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ pand %xmm10,%xmm6\r
+ movdqa %xmm13,%xmm9\r
+ psrld $31,%xmm5\r
+ paddd %xmm3,%xmm3\r
+\r
+ movdqa %xmm2,16-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+\r
+ movdqa %xmm14,%xmm7\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 80-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ pxor 176-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ movdqa %xmm13,%xmm7\r
+ pslld $5,%xmm8\r
+ pxor %xmm1,%xmm4\r
+ movdqa %xmm13,%xmm6\r
+ pandn %xmm10,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ pand %xmm14,%xmm6\r
+ movdqa %xmm12,%xmm9\r
+ psrld $31,%xmm5\r
+ paddd %xmm4,%xmm4\r
+\r
+ movdqa %xmm3,32-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+\r
+ movdqa %xmm13,%xmm7\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 96-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ pxor 192-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ movdqa %xmm12,%xmm7\r
+ pslld $5,%xmm8\r
+ pxor %xmm2,%xmm0\r
+ movdqa %xmm12,%xmm6\r
+ pandn %xmm14,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ pand %xmm13,%xmm6\r
+ movdqa %xmm11,%xmm9\r
+ psrld $31,%xmm5\r
+ paddd %xmm0,%xmm0\r
+\r
+ movdqa %xmm4,48-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ psrld $27,%xmm9\r
+ pxor %xmm7,%xmm6\r
+\r
+ movdqa %xmm12,%xmm7\r
+ por %xmm9,%xmm8\r
+ pslld $30,%xmm7\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ movdqa 0(%rbp),%xmm15\r
+ pxor %xmm3,%xmm1\r
+ movdqa 112-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 208-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,64-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 128-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 224-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,80-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 144-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 240-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,96-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 160-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 0-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,112-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 176-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 16-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,128-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 192-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 32-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,144-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 208-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 48-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,160-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 224-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 64-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,176-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 240-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 80-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,192-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 0-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 96-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,208-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 16-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 112-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,224-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 32-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 128-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,240-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 48-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 144-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,0-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 64-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 160-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,16-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 80-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 176-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,32-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 96-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 192-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,48-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 112-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 208-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,64-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 128-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 224-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,80-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 144-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 240-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,96-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 160-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 0-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,112-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ movdqa 32(%rbp),%xmm15\r
+ pxor %xmm3,%xmm1\r
+ movdqa 176-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm7\r
+ pxor 16-128(%rax),%xmm1\r
+ pxor %xmm3,%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ movdqa %xmm10,%xmm9\r
+ pand %xmm12,%xmm7\r
+\r
+ movdqa %xmm13,%xmm6\r
+ movdqa %xmm1,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm14\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm0,128-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm11,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm1,%xmm1\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 192-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm7\r
+ pxor 32-128(%rax),%xmm2\r
+ pxor %xmm4,%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ movdqa %xmm14,%xmm9\r
+ pand %xmm11,%xmm7\r
+\r
+ movdqa %xmm12,%xmm6\r
+ movdqa %xmm2,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm13\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm1,144-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm10,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm2,%xmm2\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 208-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm7\r
+ pxor 48-128(%rax),%xmm3\r
+ pxor %xmm0,%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ movdqa %xmm13,%xmm9\r
+ pand %xmm10,%xmm7\r
+\r
+ movdqa %xmm11,%xmm6\r
+ movdqa %xmm3,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm12\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm2,160-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm14,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm3,%xmm3\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 224-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm7\r
+ pxor 64-128(%rax),%xmm4\r
+ pxor %xmm1,%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ movdqa %xmm12,%xmm9\r
+ pand %xmm14,%xmm7\r
+\r
+ movdqa %xmm10,%xmm6\r
+ movdqa %xmm4,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm11\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm3,176-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm13,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm4,%xmm4\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 240-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm7\r
+ pxor 80-128(%rax),%xmm0\r
+ pxor %xmm2,%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ movdqa %xmm11,%xmm9\r
+ pand %xmm13,%xmm7\r
+\r
+ movdqa %xmm14,%xmm6\r
+ movdqa %xmm0,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm10\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm4,192-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm12,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm0,%xmm0\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 0-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm7\r
+ pxor 96-128(%rax),%xmm1\r
+ pxor %xmm3,%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ movdqa %xmm10,%xmm9\r
+ pand %xmm12,%xmm7\r
+\r
+ movdqa %xmm13,%xmm6\r
+ movdqa %xmm1,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm14\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm0,208-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm11,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm1,%xmm1\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 16-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm7\r
+ pxor 112-128(%rax),%xmm2\r
+ pxor %xmm4,%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ movdqa %xmm14,%xmm9\r
+ pand %xmm11,%xmm7\r
+\r
+ movdqa %xmm12,%xmm6\r
+ movdqa %xmm2,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm13\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm1,224-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm10,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm2,%xmm2\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 32-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm7\r
+ pxor 128-128(%rax),%xmm3\r
+ pxor %xmm0,%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ movdqa %xmm13,%xmm9\r
+ pand %xmm10,%xmm7\r
+\r
+ movdqa %xmm11,%xmm6\r
+ movdqa %xmm3,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm12\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm2,240-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm14,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm3,%xmm3\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 48-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm7\r
+ pxor 144-128(%rax),%xmm4\r
+ pxor %xmm1,%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ movdqa %xmm12,%xmm9\r
+ pand %xmm14,%xmm7\r
+\r
+ movdqa %xmm10,%xmm6\r
+ movdqa %xmm4,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm11\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm3,0-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm13,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm4,%xmm4\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 64-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm7\r
+ pxor 160-128(%rax),%xmm0\r
+ pxor %xmm2,%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ movdqa %xmm11,%xmm9\r
+ pand %xmm13,%xmm7\r
+\r
+ movdqa %xmm14,%xmm6\r
+ movdqa %xmm0,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm10\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm4,16-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm12,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm0,%xmm0\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 80-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm7\r
+ pxor 176-128(%rax),%xmm1\r
+ pxor %xmm3,%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ movdqa %xmm10,%xmm9\r
+ pand %xmm12,%xmm7\r
+\r
+ movdqa %xmm13,%xmm6\r
+ movdqa %xmm1,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm14\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm0,32-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm11,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm1,%xmm1\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 96-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm7\r
+ pxor 192-128(%rax),%xmm2\r
+ pxor %xmm4,%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ movdqa %xmm14,%xmm9\r
+ pand %xmm11,%xmm7\r
+\r
+ movdqa %xmm12,%xmm6\r
+ movdqa %xmm2,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm13\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm1,48-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm10,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm2,%xmm2\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 112-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm7\r
+ pxor 208-128(%rax),%xmm3\r
+ pxor %xmm0,%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ movdqa %xmm13,%xmm9\r
+ pand %xmm10,%xmm7\r
+\r
+ movdqa %xmm11,%xmm6\r
+ movdqa %xmm3,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm12\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm2,64-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm14,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm3,%xmm3\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 128-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm7\r
+ pxor 224-128(%rax),%xmm4\r
+ pxor %xmm1,%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ movdqa %xmm12,%xmm9\r
+ pand %xmm14,%xmm7\r
+\r
+ movdqa %xmm10,%xmm6\r
+ movdqa %xmm4,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm11\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm3,80-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm13,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm4,%xmm4\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 144-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm7\r
+ pxor 240-128(%rax),%xmm0\r
+ pxor %xmm2,%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ movdqa %xmm11,%xmm9\r
+ pand %xmm13,%xmm7\r
+\r
+ movdqa %xmm14,%xmm6\r
+ movdqa %xmm0,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm10\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm4,96-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm12,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm0,%xmm0\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 160-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm7\r
+ pxor 0-128(%rax),%xmm1\r
+ pxor %xmm3,%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ movdqa %xmm10,%xmm9\r
+ pand %xmm12,%xmm7\r
+\r
+ movdqa %xmm13,%xmm6\r
+ movdqa %xmm1,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm14\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm0,112-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm11,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm1,%xmm1\r
+ paddd %xmm6,%xmm14\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 176-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm7\r
+ pxor 16-128(%rax),%xmm2\r
+ pxor %xmm4,%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ movdqa %xmm14,%xmm9\r
+ pand %xmm11,%xmm7\r
+\r
+ movdqa %xmm12,%xmm6\r
+ movdqa %xmm2,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm13\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm1,128-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm10,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm2,%xmm2\r
+ paddd %xmm6,%xmm13\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 192-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm7\r
+ pxor 32-128(%rax),%xmm3\r
+ pxor %xmm0,%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ movdqa %xmm13,%xmm9\r
+ pand %xmm10,%xmm7\r
+\r
+ movdqa %xmm11,%xmm6\r
+ movdqa %xmm3,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm12\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm2,144-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm14,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm3,%xmm3\r
+ paddd %xmm6,%xmm12\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 208-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm7\r
+ pxor 48-128(%rax),%xmm4\r
+ pxor %xmm1,%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ movdqa %xmm12,%xmm9\r
+ pand %xmm14,%xmm7\r
+\r
+ movdqa %xmm10,%xmm6\r
+ movdqa %xmm4,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm11\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm3,160-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm13,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm4,%xmm4\r
+ paddd %xmm6,%xmm11\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 224-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm7\r
+ pxor 64-128(%rax),%xmm0\r
+ pxor %xmm2,%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ movdqa %xmm11,%xmm9\r
+ pand %xmm13,%xmm7\r
+\r
+ movdqa %xmm14,%xmm6\r
+ movdqa %xmm0,%xmm5\r
+ psrld $27,%xmm9\r
+ paddd %xmm7,%xmm10\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm4,176-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ pand %xmm12,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ paddd %xmm0,%xmm0\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ movdqa 64(%rbp),%xmm15\r
+ pxor %xmm3,%xmm1\r
+ movdqa 240-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 80-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,192-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 0-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 96-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,208-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 16-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 112-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,224-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 32-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 128-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,240-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 48-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 144-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,0-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 64-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 160-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,16-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 80-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 176-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,32-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 96-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 192-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ movdqa %xmm2,48-128(%rax)\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 112-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 208-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ movdqa %xmm3,64-128(%rax)\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 128-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 224-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ movdqa %xmm4,80-128(%rax)\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 144-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 240-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ movdqa %xmm0,96-128(%rax)\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 160-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 0-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ movdqa %xmm1,112-128(%rax)\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 176-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 16-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 192-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 32-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ pxor %xmm2,%xmm0\r
+ movdqa 208-128(%rax),%xmm2\r
+\r
+ movdqa %xmm11,%xmm8\r
+ movdqa %xmm14,%xmm6\r
+ pxor 48-128(%rax),%xmm0\r
+ paddd %xmm15,%xmm10\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ paddd %xmm4,%xmm10\r
+ pxor %xmm2,%xmm0\r
+ psrld $27,%xmm9\r
+ pxor %xmm13,%xmm6\r
+ movdqa %xmm12,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm0,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm0,%xmm0\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm5,%xmm0\r
+ por %xmm7,%xmm12\r
+ pxor %xmm3,%xmm1\r
+ movdqa 224-128(%rax),%xmm3\r
+\r
+ movdqa %xmm10,%xmm8\r
+ movdqa %xmm13,%xmm6\r
+ pxor 64-128(%rax),%xmm1\r
+ paddd %xmm15,%xmm14\r
+ pslld $5,%xmm8\r
+ pxor %xmm11,%xmm6\r
+\r
+ movdqa %xmm10,%xmm9\r
+ paddd %xmm0,%xmm14\r
+ pxor %xmm3,%xmm1\r
+ psrld $27,%xmm9\r
+ pxor %xmm12,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm1,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm1,%xmm1\r
+\r
+ psrld $2,%xmm11\r
+ paddd %xmm8,%xmm14\r
+ por %xmm5,%xmm1\r
+ por %xmm7,%xmm11\r
+ pxor %xmm4,%xmm2\r
+ movdqa 240-128(%rax),%xmm4\r
+\r
+ movdqa %xmm14,%xmm8\r
+ movdqa %xmm12,%xmm6\r
+ pxor 80-128(%rax),%xmm2\r
+ paddd %xmm15,%xmm13\r
+ pslld $5,%xmm8\r
+ pxor %xmm10,%xmm6\r
+\r
+ movdqa %xmm14,%xmm9\r
+ paddd %xmm1,%xmm13\r
+ pxor %xmm4,%xmm2\r
+ psrld $27,%xmm9\r
+ pxor %xmm11,%xmm6\r
+ movdqa %xmm10,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm2,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm13\r
+ paddd %xmm2,%xmm2\r
+\r
+ psrld $2,%xmm10\r
+ paddd %xmm8,%xmm13\r
+ por %xmm5,%xmm2\r
+ por %xmm7,%xmm10\r
+ pxor %xmm0,%xmm3\r
+ movdqa 0-128(%rax),%xmm0\r
+\r
+ movdqa %xmm13,%xmm8\r
+ movdqa %xmm11,%xmm6\r
+ pxor 96-128(%rax),%xmm3\r
+ paddd %xmm15,%xmm12\r
+ pslld $5,%xmm8\r
+ pxor %xmm14,%xmm6\r
+\r
+ movdqa %xmm13,%xmm9\r
+ paddd %xmm2,%xmm12\r
+ pxor %xmm0,%xmm3\r
+ psrld $27,%xmm9\r
+ pxor %xmm10,%xmm6\r
+ movdqa %xmm14,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm3,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm3,%xmm3\r
+\r
+ psrld $2,%xmm14\r
+ paddd %xmm8,%xmm12\r
+ por %xmm5,%xmm3\r
+ por %xmm7,%xmm14\r
+ pxor %xmm1,%xmm4\r
+ movdqa 16-128(%rax),%xmm1\r
+\r
+ movdqa %xmm12,%xmm8\r
+ movdqa %xmm10,%xmm6\r
+ pxor 112-128(%rax),%xmm4\r
+ paddd %xmm15,%xmm11\r
+ pslld $5,%xmm8\r
+ pxor %xmm13,%xmm6\r
+\r
+ movdqa %xmm12,%xmm9\r
+ paddd %xmm3,%xmm11\r
+ pxor %xmm1,%xmm4\r
+ psrld $27,%xmm9\r
+ pxor %xmm14,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ pslld $30,%xmm7\r
+ movdqa %xmm4,%xmm5\r
+ por %xmm9,%xmm8\r
+ psrld $31,%xmm5\r
+ paddd %xmm6,%xmm11\r
+ paddd %xmm4,%xmm4\r
+\r
+ psrld $2,%xmm13\r
+ paddd %xmm8,%xmm11\r
+ por %xmm5,%xmm4\r
+ por %xmm7,%xmm13\r
+ movdqa %xmm11,%xmm8\r
+ paddd %xmm15,%xmm10\r
+ movdqa %xmm14,%xmm6\r
+ pslld $5,%xmm8\r
+ pxor %xmm12,%xmm6\r
+\r
+ movdqa %xmm11,%xmm9\r
+ paddd %xmm4,%xmm10\r
+ psrld $27,%xmm9\r
+ movdqa %xmm12,%xmm7\r
+ pxor %xmm13,%xmm6\r
+\r
+ pslld $30,%xmm7\r
+ por %xmm9,%xmm8\r
+ paddd %xmm6,%xmm10\r
+\r
+ psrld $2,%xmm12\r
+ paddd %xmm8,%xmm10\r
+ por %xmm7,%xmm12\r
+ movdqa (%rbx),%xmm0\r
+ movl $1,%ecx\r
+ cmpl 0(%rbx),%ecx\r
+ pxor %xmm8,%xmm8\r
+ cmovgeq %rbp,%r8\r
+ cmpl 4(%rbx),%ecx\r
+ movdqa %xmm0,%xmm1\r
+ cmovgeq %rbp,%r9\r
+ cmpl 8(%rbx),%ecx\r
+ pcmpgtd %xmm8,%xmm1\r
+ cmovgeq %rbp,%r10\r
+ cmpl 12(%rbx),%ecx\r
+ paddd %xmm1,%xmm0\r
+ cmovgeq %rbp,%r11\r
+\r
+ movdqu 0(%rdi),%xmm6\r
+ pand %xmm1,%xmm10\r
+ movdqu 32(%rdi),%xmm7\r
+ pand %xmm1,%xmm11\r
+ paddd %xmm6,%xmm10\r
+ movdqu 64(%rdi),%xmm8\r
+ pand %xmm1,%xmm12\r
+ paddd %xmm7,%xmm11\r
+ movdqu 96(%rdi),%xmm9\r
+ pand %xmm1,%xmm13\r
+ paddd %xmm8,%xmm12\r
+ movdqu 128(%rdi),%xmm5\r
+ pand %xmm1,%xmm14\r
+ movdqu %xmm10,0(%rdi)\r
+ paddd %xmm9,%xmm13\r
+ movdqu %xmm11,32(%rdi)\r
+ paddd %xmm5,%xmm14\r
+ movdqu %xmm12,64(%rdi)\r
+ movdqu %xmm13,96(%rdi)\r
+ movdqu %xmm14,128(%rdi)\r
+\r
+ movdqa %xmm0,(%rbx)\r
+ movdqa 96(%rbp),%xmm5\r
+ movdqa -32(%rbp),%xmm15\r
+ decl %edx\r
+ jnz .Loop\r
+\r
+ movl 280(%rsp),%edx\r
+ leaq 16(%rdi),%rdi\r
+ leaq 64(%rsi),%rsi\r
+ decl %edx\r
+ jnz .Loop_grande\r
+\r
+.Ldone:\r
+ movq 272(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha1_multi_block,.-sha1_multi_block\r
+.type sha1_multi_block_shaext,@function\r
+.align 32\r
+sha1_multi_block_shaext:\r
+.cfi_startproc\r
+_shaext_shortcut:\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ subq $288,%rsp\r
+ shll $1,%edx\r
+ andq $-256,%rsp\r
+ leaq 64(%rdi),%rdi\r
+ movq %rax,272(%rsp)\r
+.Lbody_shaext:\r
+ leaq 256(%rsp),%rbx\r
+ movdqa K_XX_XX+128(%rip),%xmm3\r
+\r
+.Loop_grande_shaext:\r
+ movl %edx,280(%rsp)\r
+ xorl %edx,%edx\r
+ movq 0(%rsi),%r8\r
+ movl 8(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,0(%rbx)\r
+ cmovleq %rsp,%r8\r
+ movq 16(%rsi),%r9\r
+ movl 24(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,4(%rbx)\r
+ cmovleq %rsp,%r9\r
+ testl %edx,%edx\r
+ jz .Ldone_shaext\r
+\r
+ movq 0-64(%rdi),%xmm0\r
+ movq 32-64(%rdi),%xmm4\r
+ movq 64-64(%rdi),%xmm5\r
+ movq 96-64(%rdi),%xmm6\r
+ movq 128-64(%rdi),%xmm7\r
+\r
+ punpckldq %xmm4,%xmm0\r
+ punpckldq %xmm6,%xmm5\r
+\r
+ movdqa %xmm0,%xmm8\r
+ punpcklqdq %xmm5,%xmm0\r
+ punpckhqdq %xmm5,%xmm8\r
+\r
+ pshufd $63,%xmm7,%xmm1\r
+ pshufd $127,%xmm7,%xmm9\r
+ pshufd $27,%xmm0,%xmm0\r
+ pshufd $27,%xmm8,%xmm8\r
+ jmp .Loop_shaext\r
+\r
+.align 32\r
+.Loop_shaext:\r
+ movdqu 0(%r8),%xmm4\r
+ movdqu 0(%r9),%xmm11\r
+ movdqu 16(%r8),%xmm5\r
+ movdqu 16(%r9),%xmm12\r
+ movdqu 32(%r8),%xmm6\r
+.byte 102,15,56,0,227\r
+ movdqu 32(%r9),%xmm13\r
+.byte 102,68,15,56,0,219\r
+ movdqu 48(%r8),%xmm7\r
+ leaq 64(%r8),%r8\r
+.byte 102,15,56,0,235\r
+ movdqu 48(%r9),%xmm14\r
+ leaq 64(%r9),%r9\r
+.byte 102,68,15,56,0,227\r
+\r
+ movdqa %xmm1,80(%rsp)\r
+ paddd %xmm4,%xmm1\r
+ movdqa %xmm9,112(%rsp)\r
+ paddd %xmm11,%xmm9\r
+ movdqa %xmm0,64(%rsp)\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,96(%rsp)\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,213\r
+.byte 69,15,58,204,193,0\r
+.byte 69,15,56,200,212\r
+.byte 102,15,56,0,243\r
+ prefetcht0 127(%r8)\r
+.byte 15,56,201,229\r
+.byte 102,68,15,56,0,235\r
+ prefetcht0 127(%r9)\r
+.byte 69,15,56,201,220\r
+\r
+.byte 102,15,56,0,251\r
+ movdqa %xmm0,%xmm1\r
+.byte 102,68,15,56,0,243\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,0\r
+.byte 15,56,200,206\r
+.byte 69,15,58,204,194,0\r
+.byte 69,15,56,200,205\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ pxor %xmm13,%xmm11\r
+.byte 69,15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,215\r
+.byte 69,15,58,204,193,0\r
+.byte 69,15,56,200,214\r
+.byte 15,56,202,231\r
+.byte 69,15,56,202,222\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,201,247\r
+ pxor %xmm14,%xmm12\r
+.byte 69,15,56,201,238\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,0\r
+.byte 15,56,200,204\r
+.byte 69,15,58,204,194,0\r
+.byte 69,15,56,200,203\r
+.byte 15,56,202,236\r
+.byte 69,15,56,202,227\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+ pxor %xmm11,%xmm13\r
+.byte 69,15,56,201,243\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,213\r
+.byte 69,15,58,204,193,0\r
+.byte 69,15,56,200,212\r
+.byte 15,56,202,245\r
+.byte 69,15,56,202,236\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,201,229\r
+ pxor %xmm12,%xmm14\r
+.byte 69,15,56,201,220\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,206\r
+.byte 69,15,58,204,194,1\r
+.byte 69,15,56,200,205\r
+.byte 15,56,202,254\r
+.byte 69,15,56,202,245\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ pxor %xmm13,%xmm11\r
+.byte 69,15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,1\r
+.byte 15,56,200,215\r
+.byte 69,15,58,204,193,1\r
+.byte 69,15,56,200,214\r
+.byte 15,56,202,231\r
+.byte 69,15,56,202,222\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,201,247\r
+ pxor %xmm14,%xmm12\r
+.byte 69,15,56,201,238\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,204\r
+.byte 69,15,58,204,194,1\r
+.byte 69,15,56,200,203\r
+.byte 15,56,202,236\r
+.byte 69,15,56,202,227\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+ pxor %xmm11,%xmm13\r
+.byte 69,15,56,201,243\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,1\r
+.byte 15,56,200,213\r
+.byte 69,15,58,204,193,1\r
+.byte 69,15,56,200,212\r
+.byte 15,56,202,245\r
+.byte 69,15,56,202,236\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,201,229\r
+ pxor %xmm12,%xmm14\r
+.byte 69,15,56,201,220\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,206\r
+.byte 69,15,58,204,194,1\r
+.byte 69,15,56,200,205\r
+.byte 15,56,202,254\r
+.byte 69,15,56,202,245\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ pxor %xmm13,%xmm11\r
+.byte 69,15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,215\r
+.byte 69,15,58,204,193,2\r
+.byte 69,15,56,200,214\r
+.byte 15,56,202,231\r
+.byte 69,15,56,202,222\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,201,247\r
+ pxor %xmm14,%xmm12\r
+.byte 69,15,56,201,238\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,2\r
+.byte 15,56,200,204\r
+.byte 69,15,58,204,194,2\r
+.byte 69,15,56,200,203\r
+.byte 15,56,202,236\r
+.byte 69,15,56,202,227\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+ pxor %xmm11,%xmm13\r
+.byte 69,15,56,201,243\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,213\r
+.byte 69,15,58,204,193,2\r
+.byte 69,15,56,200,212\r
+.byte 15,56,202,245\r
+.byte 69,15,56,202,236\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,201,229\r
+ pxor %xmm12,%xmm14\r
+.byte 69,15,56,201,220\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,2\r
+.byte 15,56,200,206\r
+.byte 69,15,58,204,194,2\r
+.byte 69,15,56,200,205\r
+.byte 15,56,202,254\r
+.byte 69,15,56,202,245\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+ pxor %xmm13,%xmm11\r
+.byte 69,15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,215\r
+.byte 69,15,58,204,193,2\r
+.byte 69,15,56,200,214\r
+.byte 15,56,202,231\r
+.byte 69,15,56,202,222\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,201,247\r
+ pxor %xmm14,%xmm12\r
+.byte 69,15,56,201,238\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,3\r
+.byte 15,56,200,204\r
+.byte 69,15,58,204,194,3\r
+.byte 69,15,56,200,203\r
+.byte 15,56,202,236\r
+.byte 69,15,56,202,227\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+ pxor %xmm11,%xmm13\r
+.byte 69,15,56,201,243\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,3\r
+.byte 15,56,200,213\r
+.byte 69,15,58,204,193,3\r
+.byte 69,15,56,200,212\r
+.byte 15,56,202,245\r
+.byte 69,15,56,202,236\r
+ pxor %xmm5,%xmm7\r
+ pxor %xmm12,%xmm14\r
+\r
+ movl $1,%ecx\r
+ pxor %xmm4,%xmm4\r
+ cmpl 0(%rbx),%ecx\r
+ cmovgeq %rsp,%r8\r
+\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,3\r
+.byte 15,56,200,206\r
+.byte 69,15,58,204,194,3\r
+.byte 69,15,56,200,205\r
+.byte 15,56,202,254\r
+.byte 69,15,56,202,245\r
+\r
+ cmpl 4(%rbx),%ecx\r
+ cmovgeq %rsp,%r9\r
+ movq (%rbx),%xmm6\r
+\r
+ movdqa %xmm0,%xmm2\r
+ movdqa %xmm8,%xmm10\r
+.byte 15,58,204,193,3\r
+.byte 15,56,200,215\r
+.byte 69,15,58,204,193,3\r
+.byte 69,15,56,200,214\r
+\r
+ pshufd $0x00,%xmm6,%xmm11\r
+ pshufd $0x55,%xmm6,%xmm12\r
+ movdqa %xmm6,%xmm7\r
+ pcmpgtd %xmm4,%xmm11\r
+ pcmpgtd %xmm4,%xmm12\r
+\r
+ movdqa %xmm0,%xmm1\r
+ movdqa %xmm8,%xmm9\r
+.byte 15,58,204,194,3\r
+.byte 15,56,200,204\r
+.byte 69,15,58,204,194,3\r
+.byte 68,15,56,200,204\r
+\r
+ pcmpgtd %xmm4,%xmm7\r
+ pand %xmm11,%xmm0\r
+ pand %xmm11,%xmm1\r
+ pand %xmm12,%xmm8\r
+ pand %xmm12,%xmm9\r
+ paddd %xmm7,%xmm6\r
+\r
+ paddd 64(%rsp),%xmm0\r
+ paddd 80(%rsp),%xmm1\r
+ paddd 96(%rsp),%xmm8\r
+ paddd 112(%rsp),%xmm9\r
+\r
+ movq %xmm6,(%rbx)\r
+ decl %edx\r
+ jnz .Loop_shaext\r
+\r
+ movl 280(%rsp),%edx\r
+\r
+ pshufd $27,%xmm0,%xmm0\r
+ pshufd $27,%xmm8,%xmm8\r
+\r
+ movdqa %xmm0,%xmm6\r
+ punpckldq %xmm8,%xmm0\r
+ punpckhdq %xmm8,%xmm6\r
+ punpckhdq %xmm9,%xmm1\r
+ movq %xmm0,0-64(%rdi)\r
+ psrldq $8,%xmm0\r
+ movq %xmm6,64-64(%rdi)\r
+ psrldq $8,%xmm6\r
+ movq %xmm0,32-64(%rdi)\r
+ psrldq $8,%xmm1\r
+ movq %xmm6,96-64(%rdi)\r
+ movq %xmm1,128-64(%rdi)\r
+\r
+ leaq 8(%rdi),%rdi\r
+ leaq 32(%rsi),%rsi\r
+ decl %edx\r
+ jnz .Loop_grande_shaext\r
+\r
+.Ldone_shaext:\r
+\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue_shaext:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha1_multi_block_shaext,.-sha1_multi_block_shaext\r
+\r
+.align 256\r
+.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+K_XX_XX:\r
+.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+.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,115,115,108,46,111,114,103,62,0\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/sha/asm/sha1-x86_64.pl\r
+#\r
+# Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl sha1_block_data_order\r
+.type sha1_block_data_order,@function\r
+.align 16\r
+sha1_block_data_order:\r
+.cfi_startproc\r
+ movl OPENSSL_ia32cap_P+0(%rip),%r9d\r
+ movl OPENSSL_ia32cap_P+4(%rip),%r8d\r
+ movl OPENSSL_ia32cap_P+8(%rip),%r10d\r
+ testl $512,%r8d\r
+ jz .Lialu\r
+ testl $536870912,%r10d\r
+ jnz _shaext_shortcut\r
+ jmp _ssse3_shortcut\r
+\r
+.align 16\r
+.Lialu:\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ movq %rdi,%r8\r
+ subq $72,%rsp\r
+ movq %rsi,%r9\r
+ andq $-64,%rsp\r
+ movq %rdx,%r10\r
+ movq %rax,64(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0xc0,0x00,0x06,0x23,0x08\r
+.Lprologue:\r
+\r
+ movl 0(%r8),%esi\r
+ movl 4(%r8),%edi\r
+ movl 8(%r8),%r11d\r
+ movl 12(%r8),%r12d\r
+ movl 16(%r8),%r13d\r
+ jmp .Lloop\r
+\r
+.align 16\r
+.Lloop:\r
+ movl 0(%r9),%edx\r
+ bswapl %edx\r
+ movl 4(%r9),%ebp\r
+ movl %r12d,%eax\r
+ movl %edx,0(%rsp)\r
+ movl %esi,%ecx\r
+ bswapl %ebp\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ andl %edi,%eax\r
+ leal 1518500249(%rdx,%r13,1),%r13d\r
+ addl %ecx,%r13d\r
+ xorl %r12d,%eax\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ movl 8(%r9),%r14d\r
+ movl %r11d,%eax\r
+ movl %ebp,4(%rsp)\r
+ movl %r13d,%ecx\r
+ bswapl %r14d\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ andl %esi,%eax\r
+ leal 1518500249(%rbp,%r12,1),%r12d\r
+ addl %ecx,%r12d\r
+ xorl %r11d,%eax\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ movl 12(%r9),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,8(%rsp)\r
+ movl %r12d,%ecx\r
+ bswapl %edx\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ andl %r13d,%eax\r
+ leal 1518500249(%r14,%r11,1),%r11d\r
+ addl %ecx,%r11d\r
+ xorl %edi,%eax\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ movl 16(%r9),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,12(%rsp)\r
+ movl %r11d,%ecx\r
+ bswapl %ebp\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ andl %r12d,%eax\r
+ leal 1518500249(%rdx,%rdi,1),%edi\r
+ addl %ecx,%edi\r
+ xorl %esi,%eax\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ movl 20(%r9),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,16(%rsp)\r
+ movl %edi,%ecx\r
+ bswapl %r14d\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ andl %r11d,%eax\r
+ leal 1518500249(%rbp,%rsi,1),%esi\r
+ addl %ecx,%esi\r
+ xorl %r13d,%eax\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ movl 24(%r9),%edx\r
+ movl %r12d,%eax\r
+ movl %r14d,20(%rsp)\r
+ movl %esi,%ecx\r
+ bswapl %edx\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ andl %edi,%eax\r
+ leal 1518500249(%r14,%r13,1),%r13d\r
+ addl %ecx,%r13d\r
+ xorl %r12d,%eax\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ movl 28(%r9),%ebp\r
+ movl %r11d,%eax\r
+ movl %edx,24(%rsp)\r
+ movl %r13d,%ecx\r
+ bswapl %ebp\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ andl %esi,%eax\r
+ leal 1518500249(%rdx,%r12,1),%r12d\r
+ addl %ecx,%r12d\r
+ xorl %r11d,%eax\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ movl 32(%r9),%r14d\r
+ movl %edi,%eax\r
+ movl %ebp,28(%rsp)\r
+ movl %r12d,%ecx\r
+ bswapl %r14d\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ andl %r13d,%eax\r
+ leal 1518500249(%rbp,%r11,1),%r11d\r
+ addl %ecx,%r11d\r
+ xorl %edi,%eax\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ movl 36(%r9),%edx\r
+ movl %esi,%eax\r
+ movl %r14d,32(%rsp)\r
+ movl %r11d,%ecx\r
+ bswapl %edx\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ andl %r12d,%eax\r
+ leal 1518500249(%r14,%rdi,1),%edi\r
+ addl %ecx,%edi\r
+ xorl %esi,%eax\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ movl 40(%r9),%ebp\r
+ movl %r13d,%eax\r
+ movl %edx,36(%rsp)\r
+ movl %edi,%ecx\r
+ bswapl %ebp\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ andl %r11d,%eax\r
+ leal 1518500249(%rdx,%rsi,1),%esi\r
+ addl %ecx,%esi\r
+ xorl %r13d,%eax\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ movl 44(%r9),%r14d\r
+ movl %r12d,%eax\r
+ movl %ebp,40(%rsp)\r
+ movl %esi,%ecx\r
+ bswapl %r14d\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ andl %edi,%eax\r
+ leal 1518500249(%rbp,%r13,1),%r13d\r
+ addl %ecx,%r13d\r
+ xorl %r12d,%eax\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ movl 48(%r9),%edx\r
+ movl %r11d,%eax\r
+ movl %r14d,44(%rsp)\r
+ movl %r13d,%ecx\r
+ bswapl %edx\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ andl %esi,%eax\r
+ leal 1518500249(%r14,%r12,1),%r12d\r
+ addl %ecx,%r12d\r
+ xorl %r11d,%eax\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ movl 52(%r9),%ebp\r
+ movl %edi,%eax\r
+ movl %edx,48(%rsp)\r
+ movl %r12d,%ecx\r
+ bswapl %ebp\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ andl %r13d,%eax\r
+ leal 1518500249(%rdx,%r11,1),%r11d\r
+ addl %ecx,%r11d\r
+ xorl %edi,%eax\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ movl 56(%r9),%r14d\r
+ movl %esi,%eax\r
+ movl %ebp,52(%rsp)\r
+ movl %r11d,%ecx\r
+ bswapl %r14d\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ andl %r12d,%eax\r
+ leal 1518500249(%rbp,%rdi,1),%edi\r
+ addl %ecx,%edi\r
+ xorl %esi,%eax\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ movl 60(%r9),%edx\r
+ movl %r13d,%eax\r
+ movl %r14d,56(%rsp)\r
+ movl %edi,%ecx\r
+ bswapl %edx\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ andl %r11d,%eax\r
+ leal 1518500249(%r14,%rsi,1),%esi\r
+ addl %ecx,%esi\r
+ xorl %r13d,%eax\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ xorl 0(%rsp),%ebp\r
+ movl %r12d,%eax\r
+ movl %edx,60(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 8(%rsp),%ebp\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 32(%rsp),%ebp\r
+ andl %edi,%eax\r
+ leal 1518500249(%rdx,%r13,1),%r13d\r
+ roll $30,%edi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%r13d\r
+ roll $1,%ebp\r
+ addl %eax,%r13d\r
+ xorl 4(%rsp),%r14d\r
+ movl %r11d,%eax\r
+ movl %ebp,0(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 12(%rsp),%r14d\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 36(%rsp),%r14d\r
+ andl %esi,%eax\r
+ leal 1518500249(%rbp,%r12,1),%r12d\r
+ roll $30,%esi\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r12d\r
+ roll $1,%r14d\r
+ addl %eax,%r12d\r
+ xorl 8(%rsp),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,4(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 16(%rsp),%edx\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 40(%rsp),%edx\r
+ andl %r13d,%eax\r
+ leal 1518500249(%r14,%r11,1),%r11d\r
+ roll $30,%r13d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r11d\r
+ roll $1,%edx\r
+ addl %eax,%r11d\r
+ xorl 12(%rsp),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,8(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 20(%rsp),%ebp\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 44(%rsp),%ebp\r
+ andl %r12d,%eax\r
+ leal 1518500249(%rdx,%rdi,1),%edi\r
+ roll $30,%r12d\r
+ xorl %esi,%eax\r
+ addl %ecx,%edi\r
+ roll $1,%ebp\r
+ addl %eax,%edi\r
+ xorl 16(%rsp),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,12(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 24(%rsp),%r14d\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 48(%rsp),%r14d\r
+ andl %r11d,%eax\r
+ leal 1518500249(%rbp,%rsi,1),%esi\r
+ roll $30,%r11d\r
+ xorl %r13d,%eax\r
+ addl %ecx,%esi\r
+ roll $1,%r14d\r
+ addl %eax,%esi\r
+ xorl 20(%rsp),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,16(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 28(%rsp),%edx\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 52(%rsp),%edx\r
+ leal 1859775393(%r14,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%edx\r
+ xorl 24(%rsp),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,20(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 32(%rsp),%ebp\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 56(%rsp),%ebp\r
+ leal 1859775393(%rdx,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%ebp\r
+ xorl 28(%rsp),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,24(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 36(%rsp),%r14d\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 60(%rsp),%r14d\r
+ leal 1859775393(%rbp,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%r14d\r
+ xorl 32(%rsp),%edx\r
+ movl %r12d,%eax\r
+ movl %r14d,28(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 40(%rsp),%edx\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 0(%rsp),%edx\r
+ leal 1859775393(%r14,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%edx\r
+ xorl 36(%rsp),%ebp\r
+ movl %r11d,%eax\r
+ movl %edx,32(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 44(%rsp),%ebp\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 4(%rsp),%ebp\r
+ leal 1859775393(%rdx,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%ebp\r
+ xorl 40(%rsp),%r14d\r
+ movl %edi,%eax\r
+ movl %ebp,36(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 48(%rsp),%r14d\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 8(%rsp),%r14d\r
+ leal 1859775393(%rbp,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%r14d\r
+ xorl 44(%rsp),%edx\r
+ movl %esi,%eax\r
+ movl %r14d,40(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 52(%rsp),%edx\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 12(%rsp),%edx\r
+ leal 1859775393(%r14,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%edx\r
+ xorl 48(%rsp),%ebp\r
+ movl %r13d,%eax\r
+ movl %edx,44(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 56(%rsp),%ebp\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 16(%rsp),%ebp\r
+ leal 1859775393(%rdx,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%ebp\r
+ xorl 52(%rsp),%r14d\r
+ movl %r12d,%eax\r
+ movl %ebp,48(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 60(%rsp),%r14d\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 20(%rsp),%r14d\r
+ leal 1859775393(%rbp,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%r14d\r
+ xorl 56(%rsp),%edx\r
+ movl %r11d,%eax\r
+ movl %r14d,52(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 0(%rsp),%edx\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 24(%rsp),%edx\r
+ leal 1859775393(%r14,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%edx\r
+ xorl 60(%rsp),%ebp\r
+ movl %edi,%eax\r
+ movl %edx,56(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 4(%rsp),%ebp\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 28(%rsp),%ebp\r
+ leal 1859775393(%rdx,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%ebp\r
+ xorl 0(%rsp),%r14d\r
+ movl %esi,%eax\r
+ movl %ebp,60(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 8(%rsp),%r14d\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 32(%rsp),%r14d\r
+ leal 1859775393(%rbp,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%r14d\r
+ xorl 4(%rsp),%edx\r
+ movl %r13d,%eax\r
+ movl %r14d,0(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 12(%rsp),%edx\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 36(%rsp),%edx\r
+ leal 1859775393(%r14,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%edx\r
+ xorl 8(%rsp),%ebp\r
+ movl %r12d,%eax\r
+ movl %edx,4(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 16(%rsp),%ebp\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 40(%rsp),%ebp\r
+ leal 1859775393(%rdx,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%ebp\r
+ xorl 12(%rsp),%r14d\r
+ movl %r11d,%eax\r
+ movl %ebp,8(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 20(%rsp),%r14d\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 44(%rsp),%r14d\r
+ leal 1859775393(%rbp,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%r14d\r
+ xorl 16(%rsp),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,12(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 24(%rsp),%edx\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 48(%rsp),%edx\r
+ leal 1859775393(%r14,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%edx\r
+ xorl 20(%rsp),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,16(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 28(%rsp),%ebp\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 52(%rsp),%ebp\r
+ leal 1859775393(%rdx,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%ebp\r
+ xorl 24(%rsp),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,20(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 32(%rsp),%r14d\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 56(%rsp),%r14d\r
+ leal 1859775393(%rbp,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%r14d\r
+ xorl 28(%rsp),%edx\r
+ movl %r12d,%eax\r
+ movl %r14d,24(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 36(%rsp),%edx\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 60(%rsp),%edx\r
+ leal 1859775393(%r14,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%edx\r
+ xorl 32(%rsp),%ebp\r
+ movl %r11d,%eax\r
+ movl %edx,28(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 40(%rsp),%ebp\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 0(%rsp),%ebp\r
+ leal 1859775393(%rdx,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%ebp\r
+ xorl 36(%rsp),%r14d\r
+ movl %r12d,%eax\r
+ movl %ebp,32(%rsp)\r
+ movl %r12d,%ebx\r
+ xorl 44(%rsp),%r14d\r
+ andl %r11d,%eax\r
+ movl %esi,%ecx\r
+ xorl 4(%rsp),%r14d\r
+ leal -1894007588(%rbp,%r13,1),%r13d\r
+ xorl %r11d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r13d\r
+ roll $1,%r14d\r
+ andl %edi,%ebx\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %ebx,%r13d\r
+ xorl 40(%rsp),%edx\r
+ movl %r11d,%eax\r
+ movl %r14d,36(%rsp)\r
+ movl %r11d,%ebx\r
+ xorl 48(%rsp),%edx\r
+ andl %edi,%eax\r
+ movl %r13d,%ecx\r
+ xorl 8(%rsp),%edx\r
+ leal -1894007588(%r14,%r12,1),%r12d\r
+ xorl %edi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r12d\r
+ roll $1,%edx\r
+ andl %esi,%ebx\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %ebx,%r12d\r
+ xorl 44(%rsp),%ebp\r
+ movl %edi,%eax\r
+ movl %edx,40(%rsp)\r
+ movl %edi,%ebx\r
+ xorl 52(%rsp),%ebp\r
+ andl %esi,%eax\r
+ movl %r12d,%ecx\r
+ xorl 12(%rsp),%ebp\r
+ leal -1894007588(%rdx,%r11,1),%r11d\r
+ xorl %esi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r11d\r
+ roll $1,%ebp\r
+ andl %r13d,%ebx\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %ebx,%r11d\r
+ xorl 48(%rsp),%r14d\r
+ movl %esi,%eax\r
+ movl %ebp,44(%rsp)\r
+ movl %esi,%ebx\r
+ xorl 56(%rsp),%r14d\r
+ andl %r13d,%eax\r
+ movl %r11d,%ecx\r
+ xorl 16(%rsp),%r14d\r
+ leal -1894007588(%rbp,%rdi,1),%edi\r
+ xorl %r13d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%edi\r
+ roll $1,%r14d\r
+ andl %r12d,%ebx\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %ebx,%edi\r
+ xorl 52(%rsp),%edx\r
+ movl %r13d,%eax\r
+ movl %r14d,48(%rsp)\r
+ movl %r13d,%ebx\r
+ xorl 60(%rsp),%edx\r
+ andl %r12d,%eax\r
+ movl %edi,%ecx\r
+ xorl 20(%rsp),%edx\r
+ leal -1894007588(%r14,%rsi,1),%esi\r
+ xorl %r12d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%esi\r
+ roll $1,%edx\r
+ andl %r11d,%ebx\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %ebx,%esi\r
+ xorl 56(%rsp),%ebp\r
+ movl %r12d,%eax\r
+ movl %edx,52(%rsp)\r
+ movl %r12d,%ebx\r
+ xorl 0(%rsp),%ebp\r
+ andl %r11d,%eax\r
+ movl %esi,%ecx\r
+ xorl 24(%rsp),%ebp\r
+ leal -1894007588(%rdx,%r13,1),%r13d\r
+ xorl %r11d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r13d\r
+ roll $1,%ebp\r
+ andl %edi,%ebx\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %ebx,%r13d\r
+ xorl 60(%rsp),%r14d\r
+ movl %r11d,%eax\r
+ movl %ebp,56(%rsp)\r
+ movl %r11d,%ebx\r
+ xorl 4(%rsp),%r14d\r
+ andl %edi,%eax\r
+ movl %r13d,%ecx\r
+ xorl 28(%rsp),%r14d\r
+ leal -1894007588(%rbp,%r12,1),%r12d\r
+ xorl %edi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r12d\r
+ roll $1,%r14d\r
+ andl %esi,%ebx\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %ebx,%r12d\r
+ xorl 0(%rsp),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,60(%rsp)\r
+ movl %edi,%ebx\r
+ xorl 8(%rsp),%edx\r
+ andl %esi,%eax\r
+ movl %r12d,%ecx\r
+ xorl 32(%rsp),%edx\r
+ leal -1894007588(%r14,%r11,1),%r11d\r
+ xorl %esi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r11d\r
+ roll $1,%edx\r
+ andl %r13d,%ebx\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %ebx,%r11d\r
+ xorl 4(%rsp),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,0(%rsp)\r
+ movl %esi,%ebx\r
+ xorl 12(%rsp),%ebp\r
+ andl %r13d,%eax\r
+ movl %r11d,%ecx\r
+ xorl 36(%rsp),%ebp\r
+ leal -1894007588(%rdx,%rdi,1),%edi\r
+ xorl %r13d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%edi\r
+ roll $1,%ebp\r
+ andl %r12d,%ebx\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %ebx,%edi\r
+ xorl 8(%rsp),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,4(%rsp)\r
+ movl %r13d,%ebx\r
+ xorl 16(%rsp),%r14d\r
+ andl %r12d,%eax\r
+ movl %edi,%ecx\r
+ xorl 40(%rsp),%r14d\r
+ leal -1894007588(%rbp,%rsi,1),%esi\r
+ xorl %r12d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%esi\r
+ roll $1,%r14d\r
+ andl %r11d,%ebx\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %ebx,%esi\r
+ xorl 12(%rsp),%edx\r
+ movl %r12d,%eax\r
+ movl %r14d,8(%rsp)\r
+ movl %r12d,%ebx\r
+ xorl 20(%rsp),%edx\r
+ andl %r11d,%eax\r
+ movl %esi,%ecx\r
+ xorl 44(%rsp),%edx\r
+ leal -1894007588(%r14,%r13,1),%r13d\r
+ xorl %r11d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r13d\r
+ roll $1,%edx\r
+ andl %edi,%ebx\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %ebx,%r13d\r
+ xorl 16(%rsp),%ebp\r
+ movl %r11d,%eax\r
+ movl %edx,12(%rsp)\r
+ movl %r11d,%ebx\r
+ xorl 24(%rsp),%ebp\r
+ andl %edi,%eax\r
+ movl %r13d,%ecx\r
+ xorl 48(%rsp),%ebp\r
+ leal -1894007588(%rdx,%r12,1),%r12d\r
+ xorl %edi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r12d\r
+ roll $1,%ebp\r
+ andl %esi,%ebx\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %ebx,%r12d\r
+ xorl 20(%rsp),%r14d\r
+ movl %edi,%eax\r
+ movl %ebp,16(%rsp)\r
+ movl %edi,%ebx\r
+ xorl 28(%rsp),%r14d\r
+ andl %esi,%eax\r
+ movl %r12d,%ecx\r
+ xorl 52(%rsp),%r14d\r
+ leal -1894007588(%rbp,%r11,1),%r11d\r
+ xorl %esi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r11d\r
+ roll $1,%r14d\r
+ andl %r13d,%ebx\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %ebx,%r11d\r
+ xorl 24(%rsp),%edx\r
+ movl %esi,%eax\r
+ movl %r14d,20(%rsp)\r
+ movl %esi,%ebx\r
+ xorl 32(%rsp),%edx\r
+ andl %r13d,%eax\r
+ movl %r11d,%ecx\r
+ xorl 56(%rsp),%edx\r
+ leal -1894007588(%r14,%rdi,1),%edi\r
+ xorl %r13d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%edi\r
+ roll $1,%edx\r
+ andl %r12d,%ebx\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %ebx,%edi\r
+ xorl 28(%rsp),%ebp\r
+ movl %r13d,%eax\r
+ movl %edx,24(%rsp)\r
+ movl %r13d,%ebx\r
+ xorl 36(%rsp),%ebp\r
+ andl %r12d,%eax\r
+ movl %edi,%ecx\r
+ xorl 60(%rsp),%ebp\r
+ leal -1894007588(%rdx,%rsi,1),%esi\r
+ xorl %r12d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%esi\r
+ roll $1,%ebp\r
+ andl %r11d,%ebx\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %ebx,%esi\r
+ xorl 32(%rsp),%r14d\r
+ movl %r12d,%eax\r
+ movl %ebp,28(%rsp)\r
+ movl %r12d,%ebx\r
+ xorl 40(%rsp),%r14d\r
+ andl %r11d,%eax\r
+ movl %esi,%ecx\r
+ xorl 0(%rsp),%r14d\r
+ leal -1894007588(%rbp,%r13,1),%r13d\r
+ xorl %r11d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r13d\r
+ roll $1,%r14d\r
+ andl %edi,%ebx\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %ebx,%r13d\r
+ xorl 36(%rsp),%edx\r
+ movl %r11d,%eax\r
+ movl %r14d,32(%rsp)\r
+ movl %r11d,%ebx\r
+ xorl 44(%rsp),%edx\r
+ andl %edi,%eax\r
+ movl %r13d,%ecx\r
+ xorl 4(%rsp),%edx\r
+ leal -1894007588(%r14,%r12,1),%r12d\r
+ xorl %edi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r12d\r
+ roll $1,%edx\r
+ andl %esi,%ebx\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %ebx,%r12d\r
+ xorl 40(%rsp),%ebp\r
+ movl %edi,%eax\r
+ movl %edx,36(%rsp)\r
+ movl %edi,%ebx\r
+ xorl 48(%rsp),%ebp\r
+ andl %esi,%eax\r
+ movl %r12d,%ecx\r
+ xorl 8(%rsp),%ebp\r
+ leal -1894007588(%rdx,%r11,1),%r11d\r
+ xorl %esi,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%r11d\r
+ roll $1,%ebp\r
+ andl %r13d,%ebx\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %ebx,%r11d\r
+ xorl 44(%rsp),%r14d\r
+ movl %esi,%eax\r
+ movl %ebp,40(%rsp)\r
+ movl %esi,%ebx\r
+ xorl 52(%rsp),%r14d\r
+ andl %r13d,%eax\r
+ movl %r11d,%ecx\r
+ xorl 12(%rsp),%r14d\r
+ leal -1894007588(%rbp,%rdi,1),%edi\r
+ xorl %r13d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%edi\r
+ roll $1,%r14d\r
+ andl %r12d,%ebx\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %ebx,%edi\r
+ xorl 48(%rsp),%edx\r
+ movl %r13d,%eax\r
+ movl %r14d,44(%rsp)\r
+ movl %r13d,%ebx\r
+ xorl 56(%rsp),%edx\r
+ andl %r12d,%eax\r
+ movl %edi,%ecx\r
+ xorl 16(%rsp),%edx\r
+ leal -1894007588(%r14,%rsi,1),%esi\r
+ xorl %r12d,%ebx\r
+ roll $5,%ecx\r
+ addl %eax,%esi\r
+ roll $1,%edx\r
+ andl %r11d,%ebx\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %ebx,%esi\r
+ xorl 52(%rsp),%ebp\r
+ movl %edi,%eax\r
+ movl %edx,48(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 60(%rsp),%ebp\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 20(%rsp),%ebp\r
+ leal -899497514(%rdx,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%ebp\r
+ xorl 56(%rsp),%r14d\r
+ movl %esi,%eax\r
+ movl %ebp,52(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 0(%rsp),%r14d\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 24(%rsp),%r14d\r
+ leal -899497514(%rbp,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%r14d\r
+ xorl 60(%rsp),%edx\r
+ movl %r13d,%eax\r
+ movl %r14d,56(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 4(%rsp),%edx\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 28(%rsp),%edx\r
+ leal -899497514(%r14,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%edx\r
+ xorl 0(%rsp),%ebp\r
+ movl %r12d,%eax\r
+ movl %edx,60(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 8(%rsp),%ebp\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 32(%rsp),%ebp\r
+ leal -899497514(%rdx,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%ebp\r
+ xorl 4(%rsp),%r14d\r
+ movl %r11d,%eax\r
+ movl %ebp,0(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 12(%rsp),%r14d\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 36(%rsp),%r14d\r
+ leal -899497514(%rbp,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%r14d\r
+ xorl 8(%rsp),%edx\r
+ movl %edi,%eax\r
+ movl %r14d,4(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 16(%rsp),%edx\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 40(%rsp),%edx\r
+ leal -899497514(%r14,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%edx\r
+ xorl 12(%rsp),%ebp\r
+ movl %esi,%eax\r
+ movl %edx,8(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 20(%rsp),%ebp\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 44(%rsp),%ebp\r
+ leal -899497514(%rdx,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%ebp\r
+ xorl 16(%rsp),%r14d\r
+ movl %r13d,%eax\r
+ movl %ebp,12(%rsp)\r
+ movl %r12d,%ecx\r
+ xorl 24(%rsp),%r14d\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 48(%rsp),%r14d\r
+ leal -899497514(%rbp,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%r14d\r
+ xorl 20(%rsp),%edx\r
+ movl %r12d,%eax\r
+ movl %r14d,16(%rsp)\r
+ movl %r11d,%ecx\r
+ xorl 28(%rsp),%edx\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 52(%rsp),%edx\r
+ leal -899497514(%r14,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%edx\r
+ xorl 24(%rsp),%ebp\r
+ movl %r11d,%eax\r
+ movl %edx,20(%rsp)\r
+ movl %edi,%ecx\r
+ xorl 32(%rsp),%ebp\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 56(%rsp),%ebp\r
+ leal -899497514(%rdx,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%ebp\r
+ xorl 28(%rsp),%r14d\r
+ movl %edi,%eax\r
+ movl %ebp,24(%rsp)\r
+ movl %esi,%ecx\r
+ xorl 36(%rsp),%r14d\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 60(%rsp),%r14d\r
+ leal -899497514(%rbp,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%r14d\r
+ xorl 32(%rsp),%edx\r
+ movl %esi,%eax\r
+ movl %r14d,28(%rsp)\r
+ movl %r13d,%ecx\r
+ xorl 40(%rsp),%edx\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 0(%rsp),%edx\r
+ leal -899497514(%r14,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%edx\r
+ xorl 36(%rsp),%ebp\r
+ movl %r13d,%eax\r
+\r
+ movl %r12d,%ecx\r
+ xorl 44(%rsp),%ebp\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 4(%rsp),%ebp\r
+ leal -899497514(%rdx,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%ebp\r
+ xorl 40(%rsp),%r14d\r
+ movl %r12d,%eax\r
+\r
+ movl %r11d,%ecx\r
+ xorl 48(%rsp),%r14d\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 8(%rsp),%r14d\r
+ leal -899497514(%rbp,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%r14d\r
+ xorl 44(%rsp),%edx\r
+ movl %r11d,%eax\r
+\r
+ movl %edi,%ecx\r
+ xorl 52(%rsp),%edx\r
+ xorl %r13d,%eax\r
+ roll $5,%ecx\r
+ xorl 12(%rsp),%edx\r
+ leal -899497514(%r14,%rsi,1),%esi\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ roll $1,%edx\r
+ xorl 48(%rsp),%ebp\r
+ movl %edi,%eax\r
+\r
+ movl %esi,%ecx\r
+ xorl 56(%rsp),%ebp\r
+ xorl %r12d,%eax\r
+ roll $5,%ecx\r
+ xorl 16(%rsp),%ebp\r
+ leal -899497514(%rdx,%r13,1),%r13d\r
+ xorl %r11d,%eax\r
+ addl %ecx,%r13d\r
+ roll $30,%edi\r
+ addl %eax,%r13d\r
+ roll $1,%ebp\r
+ xorl 52(%rsp),%r14d\r
+ movl %esi,%eax\r
+\r
+ movl %r13d,%ecx\r
+ xorl 60(%rsp),%r14d\r
+ xorl %r11d,%eax\r
+ roll $5,%ecx\r
+ xorl 20(%rsp),%r14d\r
+ leal -899497514(%rbp,%r12,1),%r12d\r
+ xorl %edi,%eax\r
+ addl %ecx,%r12d\r
+ roll $30,%esi\r
+ addl %eax,%r12d\r
+ roll $1,%r14d\r
+ xorl 56(%rsp),%edx\r
+ movl %r13d,%eax\r
+\r
+ movl %r12d,%ecx\r
+ xorl 0(%rsp),%edx\r
+ xorl %edi,%eax\r
+ roll $5,%ecx\r
+ xorl 24(%rsp),%edx\r
+ leal -899497514(%r14,%r11,1),%r11d\r
+ xorl %esi,%eax\r
+ addl %ecx,%r11d\r
+ roll $30,%r13d\r
+ addl %eax,%r11d\r
+ roll $1,%edx\r
+ xorl 60(%rsp),%ebp\r
+ movl %r12d,%eax\r
+\r
+ movl %r11d,%ecx\r
+ xorl 4(%rsp),%ebp\r
+ xorl %esi,%eax\r
+ roll $5,%ecx\r
+ xorl 28(%rsp),%ebp\r
+ leal -899497514(%rdx,%rdi,1),%edi\r
+ xorl %r13d,%eax\r
+ addl %ecx,%edi\r
+ roll $30,%r12d\r
+ addl %eax,%edi\r
+ roll $1,%ebp\r
+ movl %r11d,%eax\r
+ movl %edi,%ecx\r
+ xorl %r13d,%eax\r
+ leal -899497514(%rbp,%rsi,1),%esi\r
+ roll $5,%ecx\r
+ xorl %r12d,%eax\r
+ addl %ecx,%esi\r
+ roll $30,%r11d\r
+ addl %eax,%esi\r
+ addl 0(%r8),%esi\r
+ addl 4(%r8),%edi\r
+ addl 8(%r8),%r11d\r
+ addl 12(%r8),%r12d\r
+ addl 16(%r8),%r13d\r
+ movl %esi,0(%r8)\r
+ movl %edi,4(%r8)\r
+ movl %r11d,8(%r8)\r
+ movl %r12d,12(%r8)\r
+ movl %r13d,16(%r8)\r
+\r
+ subq $1,%r10\r
+ leaq 64(%r9),%r9\r
+ jnz .Lloop\r
+\r
+ movq 64(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -40(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha1_block_data_order,.-sha1_block_data_order\r
+.type sha1_block_data_order_shaext,@function\r
+.align 32\r
+sha1_block_data_order_shaext:\r
+_shaext_shortcut:\r
+.cfi_startproc\r
+ movdqu (%rdi),%xmm0\r
+ movd 16(%rdi),%xmm1\r
+ movdqa K_XX_XX+160(%rip),%xmm3\r
+\r
+ movdqu (%rsi),%xmm4\r
+ pshufd $27,%xmm0,%xmm0\r
+ movdqu 16(%rsi),%xmm5\r
+ pshufd $27,%xmm1,%xmm1\r
+ movdqu 32(%rsi),%xmm6\r
+.byte 102,15,56,0,227\r
+ movdqu 48(%rsi),%xmm7\r
+.byte 102,15,56,0,235\r
+.byte 102,15,56,0,243\r
+ movdqa %xmm1,%xmm9\r
+.byte 102,15,56,0,251\r
+ jmp .Loop_shaext\r
+\r
+.align 16\r
+.Loop_shaext:\r
+ decq %rdx\r
+ leaq 64(%rsi),%r8\r
+ paddd %xmm4,%xmm1\r
+ cmovneq %r8,%rsi\r
+ movdqa %xmm0,%xmm8\r
+.byte 15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,213\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+.byte 15,56,202,231\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,0\r
+.byte 15,56,200,206\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,202,236\r
+.byte 15,56,201,247\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,215\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+.byte 15,56,202,245\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,0\r
+.byte 15,56,200,204\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,202,254\r
+.byte 15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,0\r
+.byte 15,56,200,213\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+.byte 15,56,202,231\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,206\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,202,236\r
+.byte 15,56,201,247\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,1\r
+.byte 15,56,200,215\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+.byte 15,56,202,245\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,204\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,202,254\r
+.byte 15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,1\r
+.byte 15,56,200,213\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+.byte 15,56,202,231\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,1\r
+.byte 15,56,200,206\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,202,236\r
+.byte 15,56,201,247\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,215\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+.byte 15,56,202,245\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,2\r
+.byte 15,56,200,204\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,202,254\r
+.byte 15,56,201,229\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,213\r
+ pxor %xmm6,%xmm4\r
+.byte 15,56,201,238\r
+.byte 15,56,202,231\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,2\r
+.byte 15,56,200,206\r
+ pxor %xmm7,%xmm5\r
+.byte 15,56,202,236\r
+.byte 15,56,201,247\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,2\r
+.byte 15,56,200,215\r
+ pxor %xmm4,%xmm6\r
+.byte 15,56,201,252\r
+.byte 15,56,202,245\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,3\r
+.byte 15,56,200,204\r
+ pxor %xmm5,%xmm7\r
+.byte 15,56,202,254\r
+ movdqu (%rsi),%xmm4\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,3\r
+.byte 15,56,200,213\r
+ movdqu 16(%rsi),%xmm5\r
+.byte 102,15,56,0,227\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,3\r
+.byte 15,56,200,206\r
+ movdqu 32(%rsi),%xmm6\r
+.byte 102,15,56,0,235\r
+\r
+ movdqa %xmm0,%xmm2\r
+.byte 15,58,204,193,3\r
+.byte 15,56,200,215\r
+ movdqu 48(%rsi),%xmm7\r
+.byte 102,15,56,0,243\r
+\r
+ movdqa %xmm0,%xmm1\r
+.byte 15,58,204,194,3\r
+.byte 65,15,56,200,201\r
+.byte 102,15,56,0,251\r
+\r
+ paddd %xmm8,%xmm0\r
+ movdqa %xmm1,%xmm9\r
+\r
+ jnz .Loop_shaext\r
+\r
+ pshufd $27,%xmm0,%xmm0\r
+ pshufd $27,%xmm1,%xmm1\r
+ movdqu %xmm0,(%rdi)\r
+ movd %xmm1,16(%rdi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha1_block_data_order_shaext,.-sha1_block_data_order_shaext\r
+.type sha1_block_data_order_ssse3,@function\r
+.align 16\r
+sha1_block_data_order_ssse3:\r
+_ssse3_shortcut:\r
+.cfi_startproc\r
+ movq %rsp,%r11\r
+.cfi_def_cfa_register %r11\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ leaq -64(%rsp),%rsp\r
+ andq $-64,%rsp\r
+ movq %rdi,%r8\r
+ movq %rsi,%r9\r
+ movq %rdx,%r10\r
+\r
+ shlq $6,%r10\r
+ addq %r9,%r10\r
+ leaq K_XX_XX+64(%rip),%r14\r
+\r
+ movl 0(%r8),%eax\r
+ movl 4(%r8),%ebx\r
+ movl 8(%r8),%ecx\r
+ movl 12(%r8),%edx\r
+ movl %ebx,%esi\r
+ movl 16(%r8),%ebp\r
+ movl %ecx,%edi\r
+ xorl %edx,%edi\r
+ andl %edi,%esi\r
+\r
+ movdqa 64(%r14),%xmm6\r
+ movdqa -64(%r14),%xmm9\r
+ movdqu 0(%r9),%xmm0\r
+ movdqu 16(%r9),%xmm1\r
+ movdqu 32(%r9),%xmm2\r
+ movdqu 48(%r9),%xmm3\r
+.byte 102,15,56,0,198\r
+.byte 102,15,56,0,206\r
+.byte 102,15,56,0,214\r
+ addq $64,%r9\r
+ paddd %xmm9,%xmm0\r
+.byte 102,15,56,0,222\r
+ paddd %xmm9,%xmm1\r
+ paddd %xmm9,%xmm2\r
+ movdqa %xmm0,0(%rsp)\r
+ psubd %xmm9,%xmm0\r
+ movdqa %xmm1,16(%rsp)\r
+ psubd %xmm9,%xmm1\r
+ movdqa %xmm2,32(%rsp)\r
+ psubd %xmm9,%xmm2\r
+ jmp .Loop_ssse3\r
+.align 16\r
+.Loop_ssse3:\r
+ rorl $2,%ebx\r
+ pshufd $238,%xmm0,%xmm4\r
+ xorl %edx,%esi\r
+ movdqa %xmm3,%xmm8\r
+ paddd %xmm3,%xmm9\r
+ movl %eax,%edi\r
+ addl 0(%rsp),%ebp\r
+ punpcklqdq %xmm1,%xmm4\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ psrldq $4,%xmm8\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ pxor %xmm0,%xmm4\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ pxor %xmm2,%xmm8\r
+ xorl %ecx,%edi\r
+ movl %ebp,%esi\r
+ addl 4(%rsp),%edx\r
+ pxor %xmm8,%xmm4\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ movdqa %xmm9,48(%rsp)\r
+ addl %edi,%edx\r
+ andl %eax,%esi\r
+ movdqa %xmm4,%xmm10\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ movdqa %xmm4,%xmm8\r
+ xorl %ebx,%esi\r
+ pslldq $12,%xmm10\r
+ paddd %xmm4,%xmm4\r
+ movl %edx,%edi\r
+ addl 8(%rsp),%ecx\r
+ psrld $31,%xmm8\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movdqa %xmm10,%xmm9\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ psrld $30,%xmm10\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ por %xmm8,%xmm4\r
+ xorl %eax,%edi\r
+ movl %ecx,%esi\r
+ addl 12(%rsp),%ebx\r
+ pslld $2,%xmm9\r
+ pxor %xmm10,%xmm4\r
+ xorl %ebp,%edx\r
+ movdqa -64(%r14),%xmm10\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ andl %edx,%esi\r
+ pxor %xmm9,%xmm4\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ pshufd $238,%xmm1,%xmm5\r
+ xorl %ebp,%esi\r
+ movdqa %xmm4,%xmm9\r
+ paddd %xmm4,%xmm10\r
+ movl %ebx,%edi\r
+ addl 16(%rsp),%eax\r
+ punpcklqdq %xmm2,%xmm5\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ psrldq $4,%xmm9\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ pxor %xmm1,%xmm5\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ pxor %xmm3,%xmm9\r
+ xorl %edx,%edi\r
+ movl %eax,%esi\r
+ addl 20(%rsp),%ebp\r
+ pxor %xmm9,%xmm5\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ movdqa %xmm10,0(%rsp)\r
+ addl %edi,%ebp\r
+ andl %ebx,%esi\r
+ movdqa %xmm5,%xmm8\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ movdqa %xmm5,%xmm9\r
+ xorl %ecx,%esi\r
+ pslldq $12,%xmm8\r
+ paddd %xmm5,%xmm5\r
+ movl %ebp,%edi\r
+ addl 24(%rsp),%edx\r
+ psrld $31,%xmm9\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ movdqa %xmm8,%xmm10\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ psrld $30,%xmm8\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ por %xmm9,%xmm5\r
+ xorl %ebx,%edi\r
+ movl %edx,%esi\r
+ addl 28(%rsp),%ecx\r
+ pslld $2,%xmm10\r
+ pxor %xmm8,%xmm5\r
+ xorl %eax,%ebp\r
+ movdqa -32(%r14),%xmm8\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ andl %ebp,%esi\r
+ pxor %xmm10,%xmm5\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ pshufd $238,%xmm2,%xmm6\r
+ xorl %eax,%esi\r
+ movdqa %xmm5,%xmm10\r
+ paddd %xmm5,%xmm8\r
+ movl %ecx,%edi\r
+ addl 32(%rsp),%ebx\r
+ punpcklqdq %xmm3,%xmm6\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ psrldq $4,%xmm10\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ pxor %xmm2,%xmm6\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ pxor %xmm4,%xmm10\r
+ xorl %ebp,%edi\r
+ movl %ebx,%esi\r
+ addl 36(%rsp),%eax\r
+ pxor %xmm10,%xmm6\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ movdqa %xmm8,16(%rsp)\r
+ addl %edi,%eax\r
+ andl %ecx,%esi\r
+ movdqa %xmm6,%xmm9\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ movdqa %xmm6,%xmm10\r
+ xorl %edx,%esi\r
+ pslldq $12,%xmm9\r
+ paddd %xmm6,%xmm6\r
+ movl %eax,%edi\r
+ addl 40(%rsp),%ebp\r
+ psrld $31,%xmm10\r
+ xorl %ecx,%ebx\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ movdqa %xmm9,%xmm8\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ psrld $30,%xmm9\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ por %xmm10,%xmm6\r
+ xorl %ecx,%edi\r
+ movl %ebp,%esi\r
+ addl 44(%rsp),%edx\r
+ pslld $2,%xmm8\r
+ pxor %xmm9,%xmm6\r
+ xorl %ebx,%eax\r
+ movdqa -32(%r14),%xmm9\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ andl %eax,%esi\r
+ pxor %xmm8,%xmm6\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ rorl $7,%ebp\r
+ pshufd $238,%xmm3,%xmm7\r
+ xorl %ebx,%esi\r
+ movdqa %xmm6,%xmm8\r
+ paddd %xmm6,%xmm9\r
+ movl %edx,%edi\r
+ addl 48(%rsp),%ecx\r
+ punpcklqdq %xmm4,%xmm7\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ psrldq $4,%xmm8\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ pxor %xmm3,%xmm7\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ pxor %xmm5,%xmm8\r
+ xorl %eax,%edi\r
+ movl %ecx,%esi\r
+ addl 52(%rsp),%ebx\r
+ pxor %xmm8,%xmm7\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ movdqa %xmm9,32(%rsp)\r
+ addl %edi,%ebx\r
+ andl %edx,%esi\r
+ movdqa %xmm7,%xmm10\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ rorl $7,%ecx\r
+ movdqa %xmm7,%xmm8\r
+ xorl %ebp,%esi\r
+ pslldq $12,%xmm10\r
+ paddd %xmm7,%xmm7\r
+ movl %ebx,%edi\r
+ addl 56(%rsp),%eax\r
+ psrld $31,%xmm8\r
+ xorl %edx,%ecx\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ movdqa %xmm10,%xmm9\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ psrld $30,%xmm10\r
+ addl %ebx,%eax\r
+ rorl $7,%ebx\r
+ por %xmm8,%xmm7\r
+ xorl %edx,%edi\r
+ movl %eax,%esi\r
+ addl 60(%rsp),%ebp\r
+ pslld $2,%xmm9\r
+ pxor %xmm10,%xmm7\r
+ xorl %ecx,%ebx\r
+ movdqa -32(%r14),%xmm10\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ andl %ebx,%esi\r
+ pxor %xmm9,%xmm7\r
+ pshufd $238,%xmm6,%xmm9\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ rorl $7,%eax\r
+ pxor %xmm4,%xmm0\r
+ xorl %ecx,%esi\r
+ movl %ebp,%edi\r
+ addl 0(%rsp),%edx\r
+ punpcklqdq %xmm7,%xmm9\r
+ xorl %ebx,%eax\r
+ roll $5,%ebp\r
+ pxor %xmm1,%xmm0\r
+ addl %esi,%edx\r
+ andl %eax,%edi\r
+ movdqa %xmm10,%xmm8\r
+ xorl %ebx,%eax\r
+ paddd %xmm7,%xmm10\r
+ addl %ebp,%edx\r
+ pxor %xmm9,%xmm0\r
+ rorl $7,%ebp\r
+ xorl %ebx,%edi\r
+ movl %edx,%esi\r
+ addl 4(%rsp),%ecx\r
+ movdqa %xmm0,%xmm9\r
+ xorl %eax,%ebp\r
+ roll $5,%edx\r
+ movdqa %xmm10,48(%rsp)\r
+ addl %edi,%ecx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ pslld $2,%xmm0\r
+ addl %edx,%ecx\r
+ rorl $7,%edx\r
+ psrld $30,%xmm9\r
+ xorl %eax,%esi\r
+ movl %ecx,%edi\r
+ addl 8(%rsp),%ebx\r
+ por %xmm9,%xmm0\r
+ xorl %ebp,%edx\r
+ roll $5,%ecx\r
+ pshufd $238,%xmm7,%xmm10\r
+ addl %esi,%ebx\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ addl 12(%rsp),%eax\r
+ xorl %ebp,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ pxor %xmm5,%xmm1\r
+ addl 16(%rsp),%ebp\r
+ xorl %ecx,%esi\r
+ punpcklqdq %xmm0,%xmm10\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ pxor %xmm2,%xmm1\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ movdqa %xmm8,%xmm9\r
+ rorl $7,%ebx\r
+ paddd %xmm0,%xmm8\r
+ addl %eax,%ebp\r
+ pxor %xmm10,%xmm1\r
+ addl 20(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ movdqa %xmm1,%xmm10\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ movdqa %xmm8,0(%rsp)\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 24(%rsp),%ecx\r
+ pslld $2,%xmm1\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ psrld $30,%xmm10\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ por %xmm10,%xmm1\r
+ addl %edx,%ecx\r
+ addl 28(%rsp),%ebx\r
+ pshufd $238,%xmm0,%xmm8\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ pxor %xmm6,%xmm2\r
+ addl 32(%rsp),%eax\r
+ xorl %edx,%esi\r
+ punpcklqdq %xmm1,%xmm8\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ pxor %xmm3,%xmm2\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ movdqa 0(%r14),%xmm10\r
+ rorl $7,%ecx\r
+ paddd %xmm1,%xmm9\r
+ addl %ebx,%eax\r
+ pxor %xmm8,%xmm2\r
+ addl 36(%rsp),%ebp\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ movdqa %xmm2,%xmm8\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ movdqa %xmm9,16(%rsp)\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 40(%rsp),%edx\r
+ pslld $2,%xmm2\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ psrld $30,%xmm8\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ por %xmm8,%xmm2\r
+ addl %ebp,%edx\r
+ addl 44(%rsp),%ecx\r
+ pshufd $238,%xmm1,%xmm9\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ pxor %xmm7,%xmm3\r
+ addl 48(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ punpcklqdq %xmm2,%xmm9\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ pxor %xmm4,%xmm3\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ movdqa %xmm10,%xmm8\r
+ rorl $7,%edx\r
+ paddd %xmm2,%xmm10\r
+ addl %ecx,%ebx\r
+ pxor %xmm9,%xmm3\r
+ addl 52(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ movdqa %xmm3,%xmm9\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ movdqa %xmm10,32(%rsp)\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 56(%rsp),%ebp\r
+ pslld $2,%xmm3\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ psrld $30,%xmm9\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ por %xmm9,%xmm3\r
+ addl %eax,%ebp\r
+ addl 60(%rsp),%edx\r
+ pshufd $238,%xmm2,%xmm10\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ pxor %xmm0,%xmm4\r
+ addl 0(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ punpcklqdq %xmm3,%xmm10\r
+ movl %edx,%edi\r
+ roll $5,%edx\r
+ pxor %xmm5,%xmm4\r
+ addl %esi,%ecx\r
+ xorl %eax,%edi\r
+ movdqa %xmm8,%xmm9\r
+ rorl $7,%ebp\r
+ paddd %xmm3,%xmm8\r
+ addl %edx,%ecx\r
+ pxor %xmm10,%xmm4\r
+ addl 4(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ movdqa %xmm4,%xmm10\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ movdqa %xmm8,48(%rsp)\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 8(%rsp),%eax\r
+ pslld $2,%xmm4\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ psrld $30,%xmm10\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ por %xmm10,%xmm4\r
+ addl %ebx,%eax\r
+ addl 12(%rsp),%ebp\r
+ pshufd $238,%xmm3,%xmm8\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ pxor %xmm1,%xmm5\r
+ addl 16(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ punpcklqdq %xmm4,%xmm8\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ pxor %xmm6,%xmm5\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ movdqa %xmm9,%xmm10\r
+ rorl $7,%eax\r
+ paddd %xmm4,%xmm9\r
+ addl %ebp,%edx\r
+ pxor %xmm8,%xmm5\r
+ addl 20(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ movdqa %xmm5,%xmm8\r
+ addl %edi,%ecx\r
+ xorl %eax,%esi\r
+ movdqa %xmm9,0(%rsp)\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 24(%rsp),%ebx\r
+ pslld $2,%xmm5\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ psrld $30,%xmm8\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ por %xmm8,%xmm5\r
+ addl %ecx,%ebx\r
+ addl 28(%rsp),%eax\r
+ pshufd $238,%xmm4,%xmm9\r
+ rorl $7,%ecx\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ pxor %xmm2,%xmm6\r
+ addl 32(%rsp),%ebp\r
+ andl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ punpcklqdq %xmm5,%xmm9\r
+ movl %eax,%edi\r
+ xorl %ecx,%esi\r
+ pxor %xmm7,%xmm6\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ movdqa %xmm10,%xmm8\r
+ xorl %ebx,%edi\r
+ paddd %xmm5,%xmm10\r
+ xorl %ecx,%ebx\r
+ pxor %xmm9,%xmm6\r
+ addl %eax,%ebp\r
+ addl 36(%rsp),%edx\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ movdqa %xmm6,%xmm9\r
+ movl %ebp,%esi\r
+ xorl %ebx,%edi\r
+ movdqa %xmm10,16(%rsp)\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %eax,%esi\r
+ pslld $2,%xmm6\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ psrld $30,%xmm9\r
+ addl 40(%rsp),%ecx\r
+ andl %eax,%esi\r
+ xorl %ebx,%eax\r
+ por %xmm9,%xmm6\r
+ rorl $7,%ebp\r
+ movl %edx,%edi\r
+ xorl %eax,%esi\r
+ roll $5,%edx\r
+ pshufd $238,%xmm5,%xmm10\r
+ addl %esi,%ecx\r
+ xorl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ addl 44(%rsp),%ebx\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ movl %ecx,%esi\r
+ xorl %ebp,%edi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %edx,%esi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ pxor %xmm3,%xmm7\r
+ addl 48(%rsp),%eax\r
+ andl %edx,%esi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ punpcklqdq %xmm6,%xmm10\r
+ movl %ebx,%edi\r
+ xorl %edx,%esi\r
+ pxor %xmm0,%xmm7\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ movdqa 32(%r14),%xmm9\r
+ xorl %ecx,%edi\r
+ paddd %xmm6,%xmm8\r
+ xorl %edx,%ecx\r
+ pxor %xmm10,%xmm7\r
+ addl %ebx,%eax\r
+ addl 52(%rsp),%ebp\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ movdqa %xmm7,%xmm10\r
+ movl %eax,%esi\r
+ xorl %ecx,%edi\r
+ movdqa %xmm8,32(%rsp)\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ebx,%esi\r
+ pslld $2,%xmm7\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ psrld $30,%xmm10\r
+ addl 56(%rsp),%edx\r
+ andl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ por %xmm10,%xmm7\r
+ rorl $7,%eax\r
+ movl %ebp,%edi\r
+ xorl %ebx,%esi\r
+ roll $5,%ebp\r
+ pshufd $238,%xmm6,%xmm8\r
+ addl %esi,%edx\r
+ xorl %eax,%edi\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ addl 60(%rsp),%ecx\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ movl %edx,%esi\r
+ xorl %eax,%edi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ pxor %xmm4,%xmm0\r
+ addl 0(%rsp),%ebx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ punpcklqdq %xmm7,%xmm8\r
+ movl %ecx,%edi\r
+ xorl %ebp,%esi\r
+ pxor %xmm1,%xmm0\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ movdqa %xmm9,%xmm10\r
+ xorl %edx,%edi\r
+ paddd %xmm7,%xmm9\r
+ xorl %ebp,%edx\r
+ pxor %xmm8,%xmm0\r
+ addl %ecx,%ebx\r
+ addl 4(%rsp),%eax\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ movdqa %xmm0,%xmm8\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ movdqa %xmm9,48(%rsp)\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %ecx,%esi\r
+ pslld $2,%xmm0\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ psrld $30,%xmm8\r
+ addl 8(%rsp),%ebp\r
+ andl %ecx,%esi\r
+ xorl %edx,%ecx\r
+ por %xmm8,%xmm0\r
+ rorl $7,%ebx\r
+ movl %eax,%edi\r
+ xorl %ecx,%esi\r
+ roll $5,%eax\r
+ pshufd $238,%xmm7,%xmm9\r
+ addl %esi,%ebp\r
+ xorl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ addl 12(%rsp),%edx\r
+ andl %ebx,%edi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ movl %ebp,%esi\r
+ xorl %ebx,%edi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %eax,%esi\r
+ xorl %ebx,%eax\r
+ addl %ebp,%edx\r
+ pxor %xmm5,%xmm1\r
+ addl 16(%rsp),%ecx\r
+ andl %eax,%esi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ punpcklqdq %xmm0,%xmm9\r
+ movl %edx,%edi\r
+ xorl %eax,%esi\r
+ pxor %xmm2,%xmm1\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ movdqa %xmm10,%xmm8\r
+ xorl %ebp,%edi\r
+ paddd %xmm0,%xmm10\r
+ xorl %eax,%ebp\r
+ pxor %xmm9,%xmm1\r
+ addl %edx,%ecx\r
+ addl 20(%rsp),%ebx\r
+ andl %ebp,%edi\r
+ xorl %eax,%ebp\r
+ rorl $7,%edx\r
+ movdqa %xmm1,%xmm9\r
+ movl %ecx,%esi\r
+ xorl %ebp,%edi\r
+ movdqa %xmm10,0(%rsp)\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %edx,%esi\r
+ pslld $2,%xmm1\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ psrld $30,%xmm9\r
+ addl 24(%rsp),%eax\r
+ andl %edx,%esi\r
+ xorl %ebp,%edx\r
+ por %xmm9,%xmm1\r
+ rorl $7,%ecx\r
+ movl %ebx,%edi\r
+ xorl %edx,%esi\r
+ roll $5,%ebx\r
+ pshufd $238,%xmm0,%xmm10\r
+ addl %esi,%eax\r
+ xorl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ addl %ebx,%eax\r
+ addl 28(%rsp),%ebp\r
+ andl %ecx,%edi\r
+ xorl %edx,%ecx\r
+ rorl $7,%ebx\r
+ movl %eax,%esi\r
+ xorl %ecx,%edi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ addl %eax,%ebp\r
+ pxor %xmm6,%xmm2\r
+ addl 32(%rsp),%edx\r
+ andl %ebx,%esi\r
+ xorl %ecx,%ebx\r
+ rorl $7,%eax\r
+ punpcklqdq %xmm1,%xmm10\r
+ movl %ebp,%edi\r
+ xorl %ebx,%esi\r
+ pxor %xmm3,%xmm2\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ movdqa %xmm8,%xmm9\r
+ xorl %eax,%edi\r
+ paddd %xmm1,%xmm8\r
+ xorl %ebx,%eax\r
+ pxor %xmm10,%xmm2\r
+ addl %ebp,%edx\r
+ addl 36(%rsp),%ecx\r
+ andl %eax,%edi\r
+ xorl %ebx,%eax\r
+ rorl $7,%ebp\r
+ movdqa %xmm2,%xmm10\r
+ movl %edx,%esi\r
+ xorl %eax,%edi\r
+ movdqa %xmm8,16(%rsp)\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %ebp,%esi\r
+ pslld $2,%xmm2\r
+ xorl %eax,%ebp\r
+ addl %edx,%ecx\r
+ psrld $30,%xmm10\r
+ addl 40(%rsp),%ebx\r
+ andl %ebp,%esi\r
+ xorl %eax,%ebp\r
+ por %xmm10,%xmm2\r
+ rorl $7,%edx\r
+ movl %ecx,%edi\r
+ xorl %ebp,%esi\r
+ roll $5,%ecx\r
+ pshufd $238,%xmm1,%xmm8\r
+ addl %esi,%ebx\r
+ xorl %edx,%edi\r
+ xorl %ebp,%edx\r
+ addl %ecx,%ebx\r
+ addl 44(%rsp),%eax\r
+ andl %edx,%edi\r
+ xorl %ebp,%edx\r
+ rorl $7,%ecx\r
+ movl %ebx,%esi\r
+ xorl %edx,%edi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ addl %ebx,%eax\r
+ pxor %xmm7,%xmm3\r
+ addl 48(%rsp),%ebp\r
+ xorl %ecx,%esi\r
+ punpcklqdq %xmm2,%xmm8\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ pxor %xmm4,%xmm3\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ movdqa %xmm9,%xmm10\r
+ rorl $7,%ebx\r
+ paddd %xmm2,%xmm9\r
+ addl %eax,%ebp\r
+ pxor %xmm8,%xmm3\r
+ addl 52(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ movdqa %xmm3,%xmm8\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ movdqa %xmm9,32(%rsp)\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 56(%rsp),%ecx\r
+ pslld $2,%xmm3\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ psrld $30,%xmm8\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ por %xmm8,%xmm3\r
+ addl %edx,%ecx\r
+ addl 60(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 0(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ paddd %xmm3,%xmm10\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ movdqa %xmm10,48(%rsp)\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 4(%rsp),%ebp\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 8(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 12(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ cmpq %r10,%r9\r
+ je .Ldone_ssse3\r
+ movdqa 64(%r14),%xmm6\r
+ movdqa -64(%r14),%xmm9\r
+ movdqu 0(%r9),%xmm0\r
+ movdqu 16(%r9),%xmm1\r
+ movdqu 32(%r9),%xmm2\r
+ movdqu 48(%r9),%xmm3\r
+.byte 102,15,56,0,198\r
+ addq $64,%r9\r
+ addl 16(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+.byte 102,15,56,0,206\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ paddd %xmm9,%xmm0\r
+ addl %ecx,%ebx\r
+ addl 20(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ movdqa %xmm0,0(%rsp)\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ psubd %xmm9,%xmm0\r
+ addl %ebx,%eax\r
+ addl 24(%rsp),%ebp\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 28(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 32(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+.byte 102,15,56,0,214\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ paddd %xmm9,%xmm1\r
+ addl %edx,%ecx\r
+ addl 36(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ movdqa %xmm1,16(%rsp)\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ psubd %xmm9,%xmm1\r
+ addl %ecx,%ebx\r
+ addl 40(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 44(%rsp),%ebp\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 48(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+.byte 102,15,56,0,222\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ paddd %xmm9,%xmm2\r
+ addl %ebp,%edx\r
+ addl 52(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ movdqa %xmm2,32(%rsp)\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ psubd %xmm9,%xmm2\r
+ addl %edx,%ecx\r
+ addl 56(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 60(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 0(%r8),%eax\r
+ addl 4(%r8),%esi\r
+ addl 8(%r8),%ecx\r
+ addl 12(%r8),%edx\r
+ movl %eax,0(%r8)\r
+ addl 16(%r8),%ebp\r
+ movl %esi,4(%r8)\r
+ movl %esi,%ebx\r
+ movl %ecx,8(%r8)\r
+ movl %ecx,%edi\r
+ movl %edx,12(%r8)\r
+ xorl %edx,%edi\r
+ movl %ebp,16(%r8)\r
+ andl %edi,%esi\r
+ jmp .Loop_ssse3\r
+\r
+.align 16\r
+.Ldone_ssse3:\r
+ addl 16(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 20(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ xorl %edx,%esi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 24(%rsp),%ebp\r
+ xorl %ecx,%esi\r
+ movl %eax,%edi\r
+ roll $5,%eax\r
+ addl %esi,%ebp\r
+ xorl %ecx,%edi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 28(%rsp),%edx\r
+ xorl %ebx,%edi\r
+ movl %ebp,%esi\r
+ roll $5,%ebp\r
+ addl %edi,%edx\r
+ xorl %ebx,%esi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 32(%rsp),%ecx\r
+ xorl %eax,%esi\r
+ movl %edx,%edi\r
+ roll $5,%edx\r
+ addl %esi,%ecx\r
+ xorl %eax,%edi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 36(%rsp),%ebx\r
+ xorl %ebp,%edi\r
+ movl %ecx,%esi\r
+ roll $5,%ecx\r
+ addl %edi,%ebx\r
+ xorl %ebp,%esi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 40(%rsp),%eax\r
+ xorl %edx,%esi\r
+ movl %ebx,%edi\r
+ roll $5,%ebx\r
+ addl %esi,%eax\r
+ xorl %edx,%edi\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 44(%rsp),%ebp\r
+ xorl %ecx,%edi\r
+ movl %eax,%esi\r
+ roll $5,%eax\r
+ addl %edi,%ebp\r
+ xorl %ecx,%esi\r
+ rorl $7,%ebx\r
+ addl %eax,%ebp\r
+ addl 48(%rsp),%edx\r
+ xorl %ebx,%esi\r
+ movl %ebp,%edi\r
+ roll $5,%ebp\r
+ addl %esi,%edx\r
+ xorl %ebx,%edi\r
+ rorl $7,%eax\r
+ addl %ebp,%edx\r
+ addl 52(%rsp),%ecx\r
+ xorl %eax,%edi\r
+ movl %edx,%esi\r
+ roll $5,%edx\r
+ addl %edi,%ecx\r
+ xorl %eax,%esi\r
+ rorl $7,%ebp\r
+ addl %edx,%ecx\r
+ addl 56(%rsp),%ebx\r
+ xorl %ebp,%esi\r
+ movl %ecx,%edi\r
+ roll $5,%ecx\r
+ addl %esi,%ebx\r
+ xorl %ebp,%edi\r
+ rorl $7,%edx\r
+ addl %ecx,%ebx\r
+ addl 60(%rsp),%eax\r
+ xorl %edx,%edi\r
+ movl %ebx,%esi\r
+ roll $5,%ebx\r
+ addl %edi,%eax\r
+ rorl $7,%ecx\r
+ addl %ebx,%eax\r
+ addl 0(%r8),%eax\r
+ addl 4(%r8),%esi\r
+ addl 8(%r8),%ecx\r
+ movl %eax,0(%r8)\r
+ addl 12(%r8),%edx\r
+ movl %esi,4(%r8)\r
+ addl 16(%r8),%ebp\r
+ movl %ecx,8(%r8)\r
+ movl %edx,12(%r8)\r
+ movl %ebp,16(%r8)\r
+ movq -40(%r11),%r14\r
+.cfi_restore %r14\r
+ movq -32(%r11),%r13\r
+.cfi_restore %r13\r
+ movq -24(%r11),%r12\r
+.cfi_restore %r12\r
+ movq -16(%r11),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%r11),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%r11),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue_ssse3:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha1_block_data_order_ssse3,.-sha1_block_data_order_ssse3\r
+.align 64\r
+K_XX_XX:\r
+.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+.long 0x5a827999,0x5a827999,0x5a827999,0x5a827999\r
+.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+.long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1\r
+.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+.long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc\r
+.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+.long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0\r
+.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,103,62,0\r
+.align 64\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl\r
+#\r
+# Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+\r
+.globl sha256_multi_block\r
+.type sha256_multi_block,@function\r
+.align 32\r
+sha256_multi_block:\r
+.cfi_startproc\r
+ movq OPENSSL_ia32cap_P+4(%rip),%rcx\r
+ btq $61,%rcx\r
+ jc _shaext_shortcut\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ subq $288,%rsp\r
+ andq $-256,%rsp\r
+ movq %rax,272(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0x90,0x02,0x06,0x23,0x08\r
+.Lbody:\r
+ leaq K256+128(%rip),%rbp\r
+ leaq 256(%rsp),%rbx\r
+ leaq 128(%rdi),%rdi\r
+\r
+.Loop_grande:\r
+ movl %edx,280(%rsp)\r
+ xorl %edx,%edx\r
+ movq 0(%rsi),%r8\r
+ movl 8(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,0(%rbx)\r
+ cmovleq %rbp,%r8\r
+ movq 16(%rsi),%r9\r
+ movl 24(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,4(%rbx)\r
+ cmovleq %rbp,%r9\r
+ movq 32(%rsi),%r10\r
+ movl 40(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,8(%rbx)\r
+ cmovleq %rbp,%r10\r
+ movq 48(%rsi),%r11\r
+ movl 56(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,12(%rbx)\r
+ cmovleq %rbp,%r11\r
+ testl %edx,%edx\r
+ jz .Ldone\r
+\r
+ movdqu 0-128(%rdi),%xmm8\r
+ leaq 128(%rsp),%rax\r
+ movdqu 32-128(%rdi),%xmm9\r
+ movdqu 64-128(%rdi),%xmm10\r
+ movdqu 96-128(%rdi),%xmm11\r
+ movdqu 128-128(%rdi),%xmm12\r
+ movdqu 160-128(%rdi),%xmm13\r
+ movdqu 192-128(%rdi),%xmm14\r
+ movdqu 224-128(%rdi),%xmm15\r
+ movdqu .Lpbswap(%rip),%xmm6\r
+ jmp .Loop\r
+\r
+.align 32\r
+.Loop:\r
+ movdqa %xmm10,%xmm4\r
+ pxor %xmm9,%xmm4\r
+ movd 0(%r8),%xmm5\r
+ movd 0(%r9),%xmm0\r
+ movd 0(%r10),%xmm1\r
+ movd 0(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm12,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm12,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm12,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,0-128(%rax)\r
+ paddd %xmm15,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -128(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm12,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm14,%xmm0\r
+ pand %xmm13,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm8,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm9,%xmm3\r
+ movdqa %xmm8,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm8,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm9,%xmm15\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm15\r
+ paddd %xmm5,%xmm11\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm15\r
+ paddd %xmm7,%xmm15\r
+ movd 4(%r8),%xmm5\r
+ movd 4(%r9),%xmm0\r
+ movd 4(%r10),%xmm1\r
+ movd 4(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm11,%xmm7\r
+\r
+ movdqa %xmm11,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm11,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,16-128(%rax)\r
+ paddd %xmm14,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -96(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm11,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm13,%xmm0\r
+ pand %xmm12,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm15,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm8,%xmm4\r
+ movdqa %xmm15,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm15,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm8,%xmm14\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm14\r
+ paddd %xmm5,%xmm10\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm14\r
+ paddd %xmm7,%xmm14\r
+ movd 8(%r8),%xmm5\r
+ movd 8(%r9),%xmm0\r
+ movd 8(%r10),%xmm1\r
+ movd 8(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm10,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm10,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm10,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,32-128(%rax)\r
+ paddd %xmm13,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm10,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm12,%xmm0\r
+ pand %xmm11,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm14,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm15,%xmm3\r
+ movdqa %xmm14,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm14,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm15,%xmm13\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm13\r
+ paddd %xmm5,%xmm9\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm13\r
+ paddd %xmm7,%xmm13\r
+ movd 12(%r8),%xmm5\r
+ movd 12(%r9),%xmm0\r
+ movd 12(%r10),%xmm1\r
+ movd 12(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm9,%xmm7\r
+\r
+ movdqa %xmm9,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm9,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,48-128(%rax)\r
+ paddd %xmm12,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -32(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm9,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm11,%xmm0\r
+ pand %xmm10,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm13,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm14,%xmm4\r
+ movdqa %xmm13,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm13,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm14,%xmm12\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm12\r
+ paddd %xmm5,%xmm8\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm12\r
+ paddd %xmm7,%xmm12\r
+ movd 16(%r8),%xmm5\r
+ movd 16(%r9),%xmm0\r
+ movd 16(%r10),%xmm1\r
+ movd 16(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm8,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm8,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm8,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,64-128(%rax)\r
+ paddd %xmm11,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 0(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm8,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm10,%xmm0\r
+ pand %xmm9,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm12,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm13,%xmm3\r
+ movdqa %xmm12,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm12,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm13,%xmm11\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm11\r
+ paddd %xmm5,%xmm15\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm11\r
+ paddd %xmm7,%xmm11\r
+ movd 20(%r8),%xmm5\r
+ movd 20(%r9),%xmm0\r
+ movd 20(%r10),%xmm1\r
+ movd 20(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm15,%xmm7\r
+\r
+ movdqa %xmm15,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm15,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,80-128(%rax)\r
+ paddd %xmm10,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 32(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm15,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm9,%xmm0\r
+ pand %xmm8,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm12,%xmm4\r
+ movdqa %xmm11,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm11,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm12,%xmm10\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm10\r
+ paddd %xmm5,%xmm14\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm10\r
+ paddd %xmm7,%xmm10\r
+ movd 24(%r8),%xmm5\r
+ movd 24(%r9),%xmm0\r
+ movd 24(%r10),%xmm1\r
+ movd 24(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm14,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm14,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm14,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,96-128(%rax)\r
+ paddd %xmm9,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm14,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm8,%xmm0\r
+ pand %xmm15,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm10,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm11,%xmm3\r
+ movdqa %xmm10,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm10,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm11,%xmm9\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm9\r
+ paddd %xmm5,%xmm13\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm9\r
+ paddd %xmm7,%xmm9\r
+ movd 28(%r8),%xmm5\r
+ movd 28(%r9),%xmm0\r
+ movd 28(%r10),%xmm1\r
+ movd 28(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm13,%xmm7\r
+\r
+ movdqa %xmm13,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm13,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,112-128(%rax)\r
+ paddd %xmm8,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 96(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm13,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm15,%xmm0\r
+ pand %xmm14,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm9,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm10,%xmm4\r
+ movdqa %xmm9,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm9,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm8\r
+ paddd %xmm5,%xmm12\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm8\r
+ paddd %xmm7,%xmm8\r
+ leaq 256(%rbp),%rbp\r
+ movd 32(%r8),%xmm5\r
+ movd 32(%r9),%xmm0\r
+ movd 32(%r10),%xmm1\r
+ movd 32(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm12,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm12,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm12,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,128-128(%rax)\r
+ paddd %xmm15,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -128(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm12,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm14,%xmm0\r
+ pand %xmm13,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm8,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm9,%xmm3\r
+ movdqa %xmm8,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm8,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm9,%xmm15\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm15\r
+ paddd %xmm5,%xmm11\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm15\r
+ paddd %xmm7,%xmm15\r
+ movd 36(%r8),%xmm5\r
+ movd 36(%r9),%xmm0\r
+ movd 36(%r10),%xmm1\r
+ movd 36(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm11,%xmm7\r
+\r
+ movdqa %xmm11,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm11,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,144-128(%rax)\r
+ paddd %xmm14,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -96(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm11,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm13,%xmm0\r
+ pand %xmm12,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm15,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm8,%xmm4\r
+ movdqa %xmm15,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm15,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm8,%xmm14\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm14\r
+ paddd %xmm5,%xmm10\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm14\r
+ paddd %xmm7,%xmm14\r
+ movd 40(%r8),%xmm5\r
+ movd 40(%r9),%xmm0\r
+ movd 40(%r10),%xmm1\r
+ movd 40(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm10,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm10,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm10,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,160-128(%rax)\r
+ paddd %xmm13,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm10,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm12,%xmm0\r
+ pand %xmm11,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm14,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm15,%xmm3\r
+ movdqa %xmm14,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm14,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm15,%xmm13\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm13\r
+ paddd %xmm5,%xmm9\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm13\r
+ paddd %xmm7,%xmm13\r
+ movd 44(%r8),%xmm5\r
+ movd 44(%r9),%xmm0\r
+ movd 44(%r10),%xmm1\r
+ movd 44(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm9,%xmm7\r
+\r
+ movdqa %xmm9,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm9,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,176-128(%rax)\r
+ paddd %xmm12,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -32(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm9,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm11,%xmm0\r
+ pand %xmm10,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm13,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm14,%xmm4\r
+ movdqa %xmm13,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm13,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm14,%xmm12\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm12\r
+ paddd %xmm5,%xmm8\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm12\r
+ paddd %xmm7,%xmm12\r
+ movd 48(%r8),%xmm5\r
+ movd 48(%r9),%xmm0\r
+ movd 48(%r10),%xmm1\r
+ movd 48(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm8,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm8,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm8,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,192-128(%rax)\r
+ paddd %xmm11,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 0(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm8,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm10,%xmm0\r
+ pand %xmm9,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm12,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm13,%xmm3\r
+ movdqa %xmm12,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm12,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm13,%xmm11\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm11\r
+ paddd %xmm5,%xmm15\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm11\r
+ paddd %xmm7,%xmm11\r
+ movd 52(%r8),%xmm5\r
+ movd 52(%r9),%xmm0\r
+ movd 52(%r10),%xmm1\r
+ movd 52(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm15,%xmm7\r
+\r
+ movdqa %xmm15,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm15,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,208-128(%rax)\r
+ paddd %xmm10,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 32(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm15,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm9,%xmm0\r
+ pand %xmm8,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm12,%xmm4\r
+ movdqa %xmm11,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm11,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm12,%xmm10\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm10\r
+ paddd %xmm5,%xmm14\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm10\r
+ paddd %xmm7,%xmm10\r
+ movd 56(%r8),%xmm5\r
+ movd 56(%r9),%xmm0\r
+ movd 56(%r10),%xmm1\r
+ movd 56(%r11),%xmm2\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm14,%xmm7\r
+.byte 102,15,56,0,238\r
+ movdqa %xmm14,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm14,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,224-128(%rax)\r
+ paddd %xmm9,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm14,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm8,%xmm0\r
+ pand %xmm15,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm10,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm11,%xmm3\r
+ movdqa %xmm10,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm10,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm11,%xmm9\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm9\r
+ paddd %xmm5,%xmm13\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm9\r
+ paddd %xmm7,%xmm9\r
+ movd 60(%r8),%xmm5\r
+ leaq 64(%r8),%r8\r
+ movd 60(%r9),%xmm0\r
+ leaq 64(%r9),%r9\r
+ movd 60(%r10),%xmm1\r
+ leaq 64(%r10),%r10\r
+ movd 60(%r11),%xmm2\r
+ leaq 64(%r11),%r11\r
+ punpckldq %xmm1,%xmm5\r
+ punpckldq %xmm2,%xmm0\r
+ punpckldq %xmm0,%xmm5\r
+ movdqa %xmm13,%xmm7\r
+\r
+ movdqa %xmm13,%xmm2\r
+.byte 102,15,56,0,238\r
+ psrld $6,%xmm7\r
+ movdqa %xmm13,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,240-128(%rax)\r
+ paddd %xmm8,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 96(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm13,%xmm0\r
+ prefetcht0 63(%r8)\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm15,%xmm0\r
+ pand %xmm14,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+ prefetcht0 63(%r9)\r
+ movdqa %xmm9,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm10,%xmm4\r
+ movdqa %xmm9,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm9,%xmm4\r
+\r
+ prefetcht0 63(%r10)\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+ prefetcht0 63(%r11)\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm8\r
+ paddd %xmm5,%xmm12\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm8\r
+ paddd %xmm7,%xmm8\r
+ leaq 256(%rbp),%rbp\r
+ movdqu 0-128(%rax),%xmm5\r
+ movl $3,%ecx\r
+ jmp .Loop_16_xx\r
+.align 32\r
+.Loop_16_xx:\r
+ movdqa 16-128(%rax),%xmm6\r
+ paddd 144-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 224-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm12,%xmm7\r
+\r
+ movdqa %xmm12,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm12,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,0-128(%rax)\r
+ paddd %xmm15,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -128(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm12,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm14,%xmm0\r
+ pand %xmm13,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm8,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm9,%xmm3\r
+ movdqa %xmm8,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm8,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm9,%xmm15\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm15\r
+ paddd %xmm5,%xmm11\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm15\r
+ paddd %xmm7,%xmm15\r
+ movdqa 32-128(%rax),%xmm5\r
+ paddd 160-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 240-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ movdqa %xmm11,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm11,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,16-128(%rax)\r
+ paddd %xmm14,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -96(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm11,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm13,%xmm0\r
+ pand %xmm12,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm15,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm8,%xmm4\r
+ movdqa %xmm15,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm15,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm8,%xmm14\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm14\r
+ paddd %xmm6,%xmm10\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm7,%xmm14\r
+ movdqa 48-128(%rax),%xmm6\r
+ paddd 176-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 0-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm10,%xmm7\r
+\r
+ movdqa %xmm10,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm10,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,32-128(%rax)\r
+ paddd %xmm13,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm10,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm12,%xmm0\r
+ pand %xmm11,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm14,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm15,%xmm3\r
+ movdqa %xmm14,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm14,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm15,%xmm13\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm13\r
+ paddd %xmm5,%xmm9\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm13\r
+ paddd %xmm7,%xmm13\r
+ movdqa 64-128(%rax),%xmm5\r
+ paddd 192-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 16-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm9,%xmm7\r
+\r
+ movdqa %xmm9,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm9,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,48-128(%rax)\r
+ paddd %xmm12,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -32(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm9,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm11,%xmm0\r
+ pand %xmm10,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm13,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm14,%xmm4\r
+ movdqa %xmm13,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm13,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm14,%xmm12\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm12\r
+ paddd %xmm6,%xmm8\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm7,%xmm12\r
+ movdqa 80-128(%rax),%xmm6\r
+ paddd 208-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 32-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm8,%xmm7\r
+\r
+ movdqa %xmm8,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm8,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,64-128(%rax)\r
+ paddd %xmm11,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 0(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm8,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm10,%xmm0\r
+ pand %xmm9,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm12,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm13,%xmm3\r
+ movdqa %xmm12,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm12,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm13,%xmm11\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm11\r
+ paddd %xmm5,%xmm15\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm11\r
+ paddd %xmm7,%xmm11\r
+ movdqa 96-128(%rax),%xmm5\r
+ paddd 224-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 48-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm15,%xmm7\r
+\r
+ movdqa %xmm15,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm15,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,80-128(%rax)\r
+ paddd %xmm10,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 32(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm15,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm9,%xmm0\r
+ pand %xmm8,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm12,%xmm4\r
+ movdqa %xmm11,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm11,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm12,%xmm10\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm10\r
+ paddd %xmm6,%xmm14\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm7,%xmm10\r
+ movdqa 112-128(%rax),%xmm6\r
+ paddd 240-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 64-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm14,%xmm7\r
+\r
+ movdqa %xmm14,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm14,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,96-128(%rax)\r
+ paddd %xmm9,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm14,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm8,%xmm0\r
+ pand %xmm15,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm10,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm11,%xmm3\r
+ movdqa %xmm10,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm10,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm11,%xmm9\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm9\r
+ paddd %xmm5,%xmm13\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm9\r
+ paddd %xmm7,%xmm9\r
+ movdqa 128-128(%rax),%xmm5\r
+ paddd 0-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 80-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ movdqa %xmm13,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm13,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,112-128(%rax)\r
+ paddd %xmm8,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 96(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm13,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm15,%xmm0\r
+ pand %xmm14,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm9,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm10,%xmm4\r
+ movdqa %xmm9,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm9,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm8\r
+ paddd %xmm6,%xmm12\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm8\r
+ paddd %xmm7,%xmm8\r
+ leaq 256(%rbp),%rbp\r
+ movdqa 144-128(%rax),%xmm6\r
+ paddd 16-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 96-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm12,%xmm7\r
+\r
+ movdqa %xmm12,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm12,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,128-128(%rax)\r
+ paddd %xmm15,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -128(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm12,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm14,%xmm0\r
+ pand %xmm13,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm8,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm9,%xmm3\r
+ movdqa %xmm8,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm8,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm9,%xmm15\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm15\r
+ paddd %xmm5,%xmm11\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm15\r
+ paddd %xmm7,%xmm15\r
+ movdqa 160-128(%rax),%xmm5\r
+ paddd 32-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 112-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm11,%xmm7\r
+\r
+ movdqa %xmm11,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm11,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,144-128(%rax)\r
+ paddd %xmm14,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -96(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm11,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm13,%xmm0\r
+ pand %xmm12,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm15,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm8,%xmm4\r
+ movdqa %xmm15,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm15,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm8,%xmm14\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm14\r
+ paddd %xmm6,%xmm10\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm14\r
+ paddd %xmm7,%xmm14\r
+ movdqa 176-128(%rax),%xmm6\r
+ paddd 48-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 128-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm10,%xmm7\r
+\r
+ movdqa %xmm10,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm10,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,160-128(%rax)\r
+ paddd %xmm13,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm10,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm12,%xmm0\r
+ pand %xmm11,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm14,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm15,%xmm3\r
+ movdqa %xmm14,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm14,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm15,%xmm13\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm13\r
+ paddd %xmm5,%xmm9\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm13\r
+ paddd %xmm7,%xmm13\r
+ movdqa 192-128(%rax),%xmm5\r
+ paddd 64-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 144-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm9,%xmm7\r
+\r
+ movdqa %xmm9,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm9,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,176-128(%rax)\r
+ paddd %xmm12,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd -32(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm9,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm11,%xmm0\r
+ pand %xmm10,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm13,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm14,%xmm4\r
+ movdqa %xmm13,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm13,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm14,%xmm12\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm12\r
+ paddd %xmm6,%xmm8\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm12\r
+ paddd %xmm7,%xmm12\r
+ movdqa 208-128(%rax),%xmm6\r
+ paddd 80-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 160-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm8,%xmm7\r
+\r
+ movdqa %xmm8,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm8,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,192-128(%rax)\r
+ paddd %xmm11,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 0(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm8,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm8,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm10,%xmm0\r
+ pand %xmm9,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm12,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm12,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm13,%xmm3\r
+ movdqa %xmm12,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm12,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm13,%xmm11\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm11\r
+ paddd %xmm5,%xmm15\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm11\r
+ paddd %xmm7,%xmm11\r
+ movdqa 224-128(%rax),%xmm5\r
+ paddd 96-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 176-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm15,%xmm7\r
+\r
+ movdqa %xmm15,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm15,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,208-128(%rax)\r
+ paddd %xmm10,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 32(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm15,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm15,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm9,%xmm0\r
+ pand %xmm8,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm11,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm12,%xmm4\r
+ movdqa %xmm11,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm11,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm12,%xmm10\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm10\r
+ paddd %xmm6,%xmm14\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm10\r
+ paddd %xmm7,%xmm10\r
+ movdqa 240-128(%rax),%xmm6\r
+ paddd 112-128(%rax),%xmm5\r
+\r
+ movdqa %xmm6,%xmm7\r
+ movdqa %xmm6,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm6,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 192-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm3,%xmm1\r
+\r
+ psrld $17,%xmm3\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ psrld $19-17,%xmm3\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm3,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm5\r
+ movdqa %xmm14,%xmm7\r
+\r
+ movdqa %xmm14,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm14,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm5,224-128(%rax)\r
+ paddd %xmm9,%xmm5\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 64(%rbp),%xmm5\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm14,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm14,%xmm3\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm8,%xmm0\r
+ pand %xmm15,%xmm3\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm10,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm10,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm5\r
+ pxor %xmm3,%xmm0\r
+ movdqa %xmm11,%xmm3\r
+ movdqa %xmm10,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm10,%xmm3\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm5\r
+ pslld $19-10,%xmm2\r
+ pand %xmm3,%xmm4\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm11,%xmm9\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm4,%xmm9\r
+ paddd %xmm5,%xmm13\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm5,%xmm9\r
+ paddd %xmm7,%xmm9\r
+ movdqa 0-128(%rax),%xmm5\r
+ paddd 128-128(%rax),%xmm6\r
+\r
+ movdqa %xmm5,%xmm7\r
+ movdqa %xmm5,%xmm1\r
+ psrld $3,%xmm7\r
+ movdqa %xmm5,%xmm2\r
+\r
+ psrld $7,%xmm1\r
+ movdqa 208-128(%rax),%xmm0\r
+ pslld $14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $18-7,%xmm1\r
+ movdqa %xmm0,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $25-14,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ psrld $10,%xmm0\r
+ movdqa %xmm4,%xmm1\r
+\r
+ psrld $17,%xmm4\r
+ pxor %xmm2,%xmm7\r
+ pslld $13,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ psrld $19-17,%xmm4\r
+ pxor %xmm1,%xmm0\r
+ pslld $15-13,%xmm1\r
+ pxor %xmm4,%xmm0\r
+ pxor %xmm1,%xmm0\r
+ paddd %xmm0,%xmm6\r
+ movdqa %xmm13,%xmm7\r
+\r
+ movdqa %xmm13,%xmm2\r
+\r
+ psrld $6,%xmm7\r
+ movdqa %xmm13,%xmm1\r
+ pslld $7,%xmm2\r
+ movdqa %xmm6,240-128(%rax)\r
+ paddd %xmm8,%xmm6\r
+\r
+ psrld $11,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ pslld $21-7,%xmm2\r
+ paddd 96(%rbp),%xmm6\r
+ pxor %xmm1,%xmm7\r
+\r
+ psrld $25-11,%xmm1\r
+ movdqa %xmm13,%xmm0\r
+\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm13,%xmm4\r
+ pslld $26-21,%xmm2\r
+ pandn %xmm15,%xmm0\r
+ pand %xmm14,%xmm4\r
+ pxor %xmm1,%xmm7\r
+\r
+\r
+ movdqa %xmm9,%xmm1\r
+ pxor %xmm2,%xmm7\r
+ movdqa %xmm9,%xmm2\r
+ psrld $2,%xmm1\r
+ paddd %xmm7,%xmm6\r
+ pxor %xmm4,%xmm0\r
+ movdqa %xmm10,%xmm4\r
+ movdqa %xmm9,%xmm7\r
+ pslld $10,%xmm2\r
+ pxor %xmm9,%xmm4\r
+\r
+\r
+ psrld $13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ paddd %xmm0,%xmm6\r
+ pslld $19-10,%xmm2\r
+ pand %xmm4,%xmm3\r
+ pxor %xmm7,%xmm1\r
+\r
+\r
+ psrld $22-13,%xmm7\r
+ pxor %xmm2,%xmm1\r
+ movdqa %xmm10,%xmm8\r
+ pslld $30-19,%xmm2\r
+ pxor %xmm1,%xmm7\r
+ pxor %xmm3,%xmm8\r
+ paddd %xmm6,%xmm12\r
+ pxor %xmm2,%xmm7\r
+\r
+ paddd %xmm6,%xmm8\r
+ paddd %xmm7,%xmm8\r
+ leaq 256(%rbp),%rbp\r
+ decl %ecx\r
+ jnz .Loop_16_xx\r
+\r
+ movl $1,%ecx\r
+ leaq K256+128(%rip),%rbp\r
+\r
+ movdqa (%rbx),%xmm7\r
+ cmpl 0(%rbx),%ecx\r
+ pxor %xmm0,%xmm0\r
+ cmovgeq %rbp,%r8\r
+ cmpl 4(%rbx),%ecx\r
+ movdqa %xmm7,%xmm6\r
+ cmovgeq %rbp,%r9\r
+ cmpl 8(%rbx),%ecx\r
+ pcmpgtd %xmm0,%xmm6\r
+ cmovgeq %rbp,%r10\r
+ cmpl 12(%rbx),%ecx\r
+ paddd %xmm6,%xmm7\r
+ cmovgeq %rbp,%r11\r
+\r
+ movdqu 0-128(%rdi),%xmm0\r
+ pand %xmm6,%xmm8\r
+ movdqu 32-128(%rdi),%xmm1\r
+ pand %xmm6,%xmm9\r
+ movdqu 64-128(%rdi),%xmm2\r
+ pand %xmm6,%xmm10\r
+ movdqu 96-128(%rdi),%xmm5\r
+ pand %xmm6,%xmm11\r
+ paddd %xmm0,%xmm8\r
+ movdqu 128-128(%rdi),%xmm0\r
+ pand %xmm6,%xmm12\r
+ paddd %xmm1,%xmm9\r
+ movdqu 160-128(%rdi),%xmm1\r
+ pand %xmm6,%xmm13\r
+ paddd %xmm2,%xmm10\r
+ movdqu 192-128(%rdi),%xmm2\r
+ pand %xmm6,%xmm14\r
+ paddd %xmm5,%xmm11\r
+ movdqu 224-128(%rdi),%xmm5\r
+ pand %xmm6,%xmm15\r
+ paddd %xmm0,%xmm12\r
+ paddd %xmm1,%xmm13\r
+ movdqu %xmm8,0-128(%rdi)\r
+ paddd %xmm2,%xmm14\r
+ movdqu %xmm9,32-128(%rdi)\r
+ paddd %xmm5,%xmm15\r
+ movdqu %xmm10,64-128(%rdi)\r
+ movdqu %xmm11,96-128(%rdi)\r
+ movdqu %xmm12,128-128(%rdi)\r
+ movdqu %xmm13,160-128(%rdi)\r
+ movdqu %xmm14,192-128(%rdi)\r
+ movdqu %xmm15,224-128(%rdi)\r
+\r
+ movdqa %xmm7,(%rbx)\r
+ movdqa .Lpbswap(%rip),%xmm6\r
+ decl %edx\r
+ jnz .Loop\r
+\r
+ movl 280(%rsp),%edx\r
+ leaq 16(%rdi),%rdi\r
+ leaq 64(%rsi),%rsi\r
+ decl %edx\r
+ jnz .Loop_grande\r
+\r
+.Ldone:\r
+ movq 272(%rsp),%rax\r
+.cfi_def_cfa %rax,8\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha256_multi_block,.-sha256_multi_block\r
+.type sha256_multi_block_shaext,@function\r
+.align 32\r
+sha256_multi_block_shaext:\r
+.cfi_startproc\r
+_shaext_shortcut:\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ subq $288,%rsp\r
+ shll $1,%edx\r
+ andq $-256,%rsp\r
+ leaq 128(%rdi),%rdi\r
+ movq %rax,272(%rsp)\r
+.Lbody_shaext:\r
+ leaq 256(%rsp),%rbx\r
+ leaq K256_shaext+128(%rip),%rbp\r
+\r
+.Loop_grande_shaext:\r
+ movl %edx,280(%rsp)\r
+ xorl %edx,%edx\r
+ movq 0(%rsi),%r8\r
+ movl 8(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,0(%rbx)\r
+ cmovleq %rsp,%r8\r
+ movq 16(%rsi),%r9\r
+ movl 24(%rsi),%ecx\r
+ cmpl %edx,%ecx\r
+ cmovgl %ecx,%edx\r
+ testl %ecx,%ecx\r
+ movl %ecx,4(%rbx)\r
+ cmovleq %rsp,%r9\r
+ testl %edx,%edx\r
+ jz .Ldone_shaext\r
+\r
+ movq 0-128(%rdi),%xmm12\r
+ movq 32-128(%rdi),%xmm4\r
+ movq 64-128(%rdi),%xmm13\r
+ movq 96-128(%rdi),%xmm5\r
+ movq 128-128(%rdi),%xmm8\r
+ movq 160-128(%rdi),%xmm9\r
+ movq 192-128(%rdi),%xmm10\r
+ movq 224-128(%rdi),%xmm11\r
+\r
+ punpckldq %xmm4,%xmm12\r
+ punpckldq %xmm5,%xmm13\r
+ punpckldq %xmm9,%xmm8\r
+ punpckldq %xmm11,%xmm10\r
+ movdqa K256_shaext-16(%rip),%xmm3\r
+\r
+ movdqa %xmm12,%xmm14\r
+ movdqa %xmm13,%xmm15\r
+ punpcklqdq %xmm8,%xmm12\r
+ punpcklqdq %xmm10,%xmm13\r
+ punpckhqdq %xmm8,%xmm14\r
+ punpckhqdq %xmm10,%xmm15\r
+\r
+ pshufd $27,%xmm12,%xmm12\r
+ pshufd $27,%xmm13,%xmm13\r
+ pshufd $27,%xmm14,%xmm14\r
+ pshufd $27,%xmm15,%xmm15\r
+ jmp .Loop_shaext\r
+\r
+.align 32\r
+.Loop_shaext:\r
+ movdqu 0(%r8),%xmm4\r
+ movdqu 0(%r9),%xmm8\r
+ movdqu 16(%r8),%xmm5\r
+ movdqu 16(%r9),%xmm9\r
+ movdqu 32(%r8),%xmm6\r
+.byte 102,15,56,0,227\r
+ movdqu 32(%r9),%xmm10\r
+.byte 102,68,15,56,0,195\r
+ movdqu 48(%r8),%xmm7\r
+ leaq 64(%r8),%r8\r
+ movdqu 48(%r9),%xmm11\r
+ leaq 64(%r9),%r9\r
+\r
+ movdqa 0-128(%rbp),%xmm0\r
+.byte 102,15,56,0,235\r
+ paddd %xmm4,%xmm0\r
+ pxor %xmm12,%xmm4\r
+ movdqa %xmm0,%xmm1\r
+ movdqa 0-128(%rbp),%xmm2\r
+.byte 102,68,15,56,0,203\r
+ paddd %xmm8,%xmm2\r
+ movdqa %xmm13,80(%rsp)\r
+.byte 69,15,56,203,236\r
+ pxor %xmm14,%xmm8\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm15,112(%rsp)\r
+.byte 69,15,56,203,254\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ pxor %xmm12,%xmm4\r
+ movdqa %xmm12,64(%rsp)\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ pxor %xmm14,%xmm8\r
+ movdqa %xmm14,96(%rsp)\r
+ movdqa 16-128(%rbp),%xmm1\r
+ paddd %xmm5,%xmm1\r
+.byte 102,15,56,0,243\r
+.byte 69,15,56,203,247\r
+\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 16-128(%rbp),%xmm2\r
+ paddd %xmm9,%xmm2\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ prefetcht0 127(%r8)\r
+.byte 102,15,56,0,251\r
+.byte 102,68,15,56,0,211\r
+ prefetcht0 127(%r9)\r
+.byte 69,15,56,203,254\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+.byte 102,68,15,56,0,219\r
+.byte 15,56,204,229\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 32-128(%rbp),%xmm1\r
+ paddd %xmm6,%xmm1\r
+.byte 69,15,56,203,247\r
+\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 32-128(%rbp),%xmm2\r
+ paddd %xmm10,%xmm2\r
+.byte 69,15,56,203,236\r
+.byte 69,15,56,204,193\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm7,%xmm3\r
+.byte 69,15,56,203,254\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+.byte 102,15,58,15,222,4\r
+ paddd %xmm3,%xmm4\r
+ movdqa %xmm11,%xmm3\r
+.byte 102,65,15,58,15,218,4\r
+.byte 15,56,204,238\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 48-128(%rbp),%xmm1\r
+ paddd %xmm7,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,202\r
+\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 48-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm8\r
+ paddd %xmm11,%xmm2\r
+.byte 15,56,205,231\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm4,%xmm3\r
+.byte 102,15,58,15,223,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,195\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm5\r
+ movdqa %xmm8,%xmm3\r
+.byte 102,65,15,58,15,219,4\r
+.byte 15,56,204,247\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 64-128(%rbp),%xmm1\r
+ paddd %xmm4,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,211\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 64-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm9\r
+ paddd %xmm8,%xmm2\r
+.byte 15,56,205,236\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm5,%xmm3\r
+.byte 102,15,58,15,220,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,200\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm6\r
+ movdqa %xmm9,%xmm3\r
+.byte 102,65,15,58,15,216,4\r
+.byte 15,56,204,252\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 80-128(%rbp),%xmm1\r
+ paddd %xmm5,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,216\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 80-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm10\r
+ paddd %xmm9,%xmm2\r
+.byte 15,56,205,245\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm6,%xmm3\r
+.byte 102,15,58,15,221,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,209\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+.byte 102,65,15,58,15,217,4\r
+.byte 15,56,204,229\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 96-128(%rbp),%xmm1\r
+ paddd %xmm6,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,193\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 96-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm11\r
+ paddd %xmm10,%xmm2\r
+.byte 15,56,205,254\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm7,%xmm3\r
+.byte 102,15,58,15,222,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,218\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm4\r
+ movdqa %xmm11,%xmm3\r
+.byte 102,65,15,58,15,218,4\r
+.byte 15,56,204,238\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 112-128(%rbp),%xmm1\r
+ paddd %xmm7,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,202\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 112-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm8\r
+ paddd %xmm11,%xmm2\r
+.byte 15,56,205,231\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm4,%xmm3\r
+.byte 102,15,58,15,223,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,195\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm5\r
+ movdqa %xmm8,%xmm3\r
+.byte 102,65,15,58,15,219,4\r
+.byte 15,56,204,247\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 128-128(%rbp),%xmm1\r
+ paddd %xmm4,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,211\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 128-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm9\r
+ paddd %xmm8,%xmm2\r
+.byte 15,56,205,236\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm5,%xmm3\r
+.byte 102,15,58,15,220,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,200\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm6\r
+ movdqa %xmm9,%xmm3\r
+.byte 102,65,15,58,15,216,4\r
+.byte 15,56,204,252\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 144-128(%rbp),%xmm1\r
+ paddd %xmm5,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,216\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 144-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm10\r
+ paddd %xmm9,%xmm2\r
+.byte 15,56,205,245\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm6,%xmm3\r
+.byte 102,15,58,15,221,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,209\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+.byte 102,65,15,58,15,217,4\r
+.byte 15,56,204,229\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 160-128(%rbp),%xmm1\r
+ paddd %xmm6,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,193\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 160-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm11\r
+ paddd %xmm10,%xmm2\r
+.byte 15,56,205,254\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm7,%xmm3\r
+.byte 102,15,58,15,222,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,218\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm4\r
+ movdqa %xmm11,%xmm3\r
+.byte 102,65,15,58,15,218,4\r
+.byte 15,56,204,238\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 176-128(%rbp),%xmm1\r
+ paddd %xmm7,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,202\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 176-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm8\r
+ paddd %xmm11,%xmm2\r
+.byte 15,56,205,231\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm4,%xmm3\r
+.byte 102,15,58,15,223,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,195\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm5\r
+ movdqa %xmm8,%xmm3\r
+.byte 102,65,15,58,15,219,4\r
+.byte 15,56,204,247\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 192-128(%rbp),%xmm1\r
+ paddd %xmm4,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,211\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 192-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm9\r
+ paddd %xmm8,%xmm2\r
+.byte 15,56,205,236\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm5,%xmm3\r
+.byte 102,15,58,15,220,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,200\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm6\r
+ movdqa %xmm9,%xmm3\r
+.byte 102,65,15,58,15,216,4\r
+.byte 15,56,204,252\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 208-128(%rbp),%xmm1\r
+ paddd %xmm5,%xmm1\r
+.byte 69,15,56,203,247\r
+.byte 69,15,56,204,216\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 208-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm10\r
+ paddd %xmm9,%xmm2\r
+.byte 15,56,205,245\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movdqa %xmm6,%xmm3\r
+.byte 102,15,58,15,221,4\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,209\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ paddd %xmm3,%xmm7\r
+ movdqa %xmm10,%xmm3\r
+.byte 102,65,15,58,15,217,4\r
+ nop\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 224-128(%rbp),%xmm1\r
+ paddd %xmm6,%xmm1\r
+.byte 69,15,56,203,247\r
+\r
+ movdqa %xmm1,%xmm0\r
+ movdqa 224-128(%rbp),%xmm2\r
+ paddd %xmm3,%xmm11\r
+ paddd %xmm10,%xmm2\r
+.byte 15,56,205,254\r
+ nop\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ movl $1,%ecx\r
+ pxor %xmm6,%xmm6\r
+.byte 69,15,56,203,254\r
+.byte 69,15,56,205,218\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ movdqa 240-128(%rbp),%xmm1\r
+ paddd %xmm7,%xmm1\r
+ movq (%rbx),%xmm7\r
+ nop\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ movdqa 240-128(%rbp),%xmm2\r
+ paddd %xmm11,%xmm2\r
+.byte 69,15,56,203,247\r
+\r
+ movdqa %xmm1,%xmm0\r
+ cmpl 0(%rbx),%ecx\r
+ cmovgeq %rsp,%r8\r
+ cmpl 4(%rbx),%ecx\r
+ cmovgeq %rsp,%r9\r
+ pshufd $0x00,%xmm7,%xmm9\r
+.byte 69,15,56,203,236\r
+ movdqa %xmm2,%xmm0\r
+ pshufd $0x55,%xmm7,%xmm10\r
+ movdqa %xmm7,%xmm11\r
+.byte 69,15,56,203,254\r
+ pshufd $0x0e,%xmm1,%xmm0\r
+ pcmpgtd %xmm6,%xmm9\r
+ pcmpgtd %xmm6,%xmm10\r
+.byte 69,15,56,203,229\r
+ pshufd $0x0e,%xmm2,%xmm0\r
+ pcmpgtd %xmm6,%xmm11\r
+ movdqa K256_shaext-16(%rip),%xmm3\r
+.byte 69,15,56,203,247\r
+\r
+ pand %xmm9,%xmm13\r
+ pand %xmm10,%xmm15\r
+ pand %xmm9,%xmm12\r
+ pand %xmm10,%xmm14\r
+ paddd %xmm7,%xmm11\r
+\r
+ paddd 80(%rsp),%xmm13\r
+ paddd 112(%rsp),%xmm15\r
+ paddd 64(%rsp),%xmm12\r
+ paddd 96(%rsp),%xmm14\r
+\r
+ movq %xmm11,(%rbx)\r
+ decl %edx\r
+ jnz .Loop_shaext\r
+\r
+ movl 280(%rsp),%edx\r
+\r
+ pshufd $27,%xmm12,%xmm12\r
+ pshufd $27,%xmm13,%xmm13\r
+ pshufd $27,%xmm14,%xmm14\r
+ pshufd $27,%xmm15,%xmm15\r
+\r
+ movdqa %xmm12,%xmm5\r
+ movdqa %xmm13,%xmm6\r
+ punpckldq %xmm14,%xmm12\r
+ punpckhdq %xmm14,%xmm5\r
+ punpckldq %xmm15,%xmm13\r
+ punpckhdq %xmm15,%xmm6\r
+\r
+ movq %xmm12,0-128(%rdi)\r
+ psrldq $8,%xmm12\r
+ movq %xmm5,128-128(%rdi)\r
+ psrldq $8,%xmm5\r
+ movq %xmm12,32-128(%rdi)\r
+ movq %xmm5,160-128(%rdi)\r
+\r
+ movq %xmm13,64-128(%rdi)\r
+ psrldq $8,%xmm13\r
+ movq %xmm6,192-128(%rdi)\r
+ psrldq $8,%xmm6\r
+ movq %xmm13,96-128(%rdi)\r
+ movq %xmm6,224-128(%rdi)\r
+\r
+ leaq 8(%rdi),%rdi\r
+ leaq 32(%rsi),%rsi\r
+ decl %edx\r
+ jnz .Loop_grande_shaext\r
+\r
+.Ldone_shaext:\r
+\r
+ movq -16(%rax),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rax),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rax),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue_shaext:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha256_multi_block_shaext,.-sha256_multi_block_shaext\r
+.align 256\r
+K256:\r
+.long 1116352408,1116352408,1116352408,1116352408\r
+.long 1116352408,1116352408,1116352408,1116352408\r
+.long 1899447441,1899447441,1899447441,1899447441\r
+.long 1899447441,1899447441,1899447441,1899447441\r
+.long 3049323471,3049323471,3049323471,3049323471\r
+.long 3049323471,3049323471,3049323471,3049323471\r
+.long 3921009573,3921009573,3921009573,3921009573\r
+.long 3921009573,3921009573,3921009573,3921009573\r
+.long 961987163,961987163,961987163,961987163\r
+.long 961987163,961987163,961987163,961987163\r
+.long 1508970993,1508970993,1508970993,1508970993\r
+.long 1508970993,1508970993,1508970993,1508970993\r
+.long 2453635748,2453635748,2453635748,2453635748\r
+.long 2453635748,2453635748,2453635748,2453635748\r
+.long 2870763221,2870763221,2870763221,2870763221\r
+.long 2870763221,2870763221,2870763221,2870763221\r
+.long 3624381080,3624381080,3624381080,3624381080\r
+.long 3624381080,3624381080,3624381080,3624381080\r
+.long 310598401,310598401,310598401,310598401\r
+.long 310598401,310598401,310598401,310598401\r
+.long 607225278,607225278,607225278,607225278\r
+.long 607225278,607225278,607225278,607225278\r
+.long 1426881987,1426881987,1426881987,1426881987\r
+.long 1426881987,1426881987,1426881987,1426881987\r
+.long 1925078388,1925078388,1925078388,1925078388\r
+.long 1925078388,1925078388,1925078388,1925078388\r
+.long 2162078206,2162078206,2162078206,2162078206\r
+.long 2162078206,2162078206,2162078206,2162078206\r
+.long 2614888103,2614888103,2614888103,2614888103\r
+.long 2614888103,2614888103,2614888103,2614888103\r
+.long 3248222580,3248222580,3248222580,3248222580\r
+.long 3248222580,3248222580,3248222580,3248222580\r
+.long 3835390401,3835390401,3835390401,3835390401\r
+.long 3835390401,3835390401,3835390401,3835390401\r
+.long 4022224774,4022224774,4022224774,4022224774\r
+.long 4022224774,4022224774,4022224774,4022224774\r
+.long 264347078,264347078,264347078,264347078\r
+.long 264347078,264347078,264347078,264347078\r
+.long 604807628,604807628,604807628,604807628\r
+.long 604807628,604807628,604807628,604807628\r
+.long 770255983,770255983,770255983,770255983\r
+.long 770255983,770255983,770255983,770255983\r
+.long 1249150122,1249150122,1249150122,1249150122\r
+.long 1249150122,1249150122,1249150122,1249150122\r
+.long 1555081692,1555081692,1555081692,1555081692\r
+.long 1555081692,1555081692,1555081692,1555081692\r
+.long 1996064986,1996064986,1996064986,1996064986\r
+.long 1996064986,1996064986,1996064986,1996064986\r
+.long 2554220882,2554220882,2554220882,2554220882\r
+.long 2554220882,2554220882,2554220882,2554220882\r
+.long 2821834349,2821834349,2821834349,2821834349\r
+.long 2821834349,2821834349,2821834349,2821834349\r
+.long 2952996808,2952996808,2952996808,2952996808\r
+.long 2952996808,2952996808,2952996808,2952996808\r
+.long 3210313671,3210313671,3210313671,3210313671\r
+.long 3210313671,3210313671,3210313671,3210313671\r
+.long 3336571891,3336571891,3336571891,3336571891\r
+.long 3336571891,3336571891,3336571891,3336571891\r
+.long 3584528711,3584528711,3584528711,3584528711\r
+.long 3584528711,3584528711,3584528711,3584528711\r
+.long 113926993,113926993,113926993,113926993\r
+.long 113926993,113926993,113926993,113926993\r
+.long 338241895,338241895,338241895,338241895\r
+.long 338241895,338241895,338241895,338241895\r
+.long 666307205,666307205,666307205,666307205\r
+.long 666307205,666307205,666307205,666307205\r
+.long 773529912,773529912,773529912,773529912\r
+.long 773529912,773529912,773529912,773529912\r
+.long 1294757372,1294757372,1294757372,1294757372\r
+.long 1294757372,1294757372,1294757372,1294757372\r
+.long 1396182291,1396182291,1396182291,1396182291\r
+.long 1396182291,1396182291,1396182291,1396182291\r
+.long 1695183700,1695183700,1695183700,1695183700\r
+.long 1695183700,1695183700,1695183700,1695183700\r
+.long 1986661051,1986661051,1986661051,1986661051\r
+.long 1986661051,1986661051,1986661051,1986661051\r
+.long 2177026350,2177026350,2177026350,2177026350\r
+.long 2177026350,2177026350,2177026350,2177026350\r
+.long 2456956037,2456956037,2456956037,2456956037\r
+.long 2456956037,2456956037,2456956037,2456956037\r
+.long 2730485921,2730485921,2730485921,2730485921\r
+.long 2730485921,2730485921,2730485921,2730485921\r
+.long 2820302411,2820302411,2820302411,2820302411\r
+.long 2820302411,2820302411,2820302411,2820302411\r
+.long 3259730800,3259730800,3259730800,3259730800\r
+.long 3259730800,3259730800,3259730800,3259730800\r
+.long 3345764771,3345764771,3345764771,3345764771\r
+.long 3345764771,3345764771,3345764771,3345764771\r
+.long 3516065817,3516065817,3516065817,3516065817\r
+.long 3516065817,3516065817,3516065817,3516065817\r
+.long 3600352804,3600352804,3600352804,3600352804\r
+.long 3600352804,3600352804,3600352804,3600352804\r
+.long 4094571909,4094571909,4094571909,4094571909\r
+.long 4094571909,4094571909,4094571909,4094571909\r
+.long 275423344,275423344,275423344,275423344\r
+.long 275423344,275423344,275423344,275423344\r
+.long 430227734,430227734,430227734,430227734\r
+.long 430227734,430227734,430227734,430227734\r
+.long 506948616,506948616,506948616,506948616\r
+.long 506948616,506948616,506948616,506948616\r
+.long 659060556,659060556,659060556,659060556\r
+.long 659060556,659060556,659060556,659060556\r
+.long 883997877,883997877,883997877,883997877\r
+.long 883997877,883997877,883997877,883997877\r
+.long 958139571,958139571,958139571,958139571\r
+.long 958139571,958139571,958139571,958139571\r
+.long 1322822218,1322822218,1322822218,1322822218\r
+.long 1322822218,1322822218,1322822218,1322822218\r
+.long 1537002063,1537002063,1537002063,1537002063\r
+.long 1537002063,1537002063,1537002063,1537002063\r
+.long 1747873779,1747873779,1747873779,1747873779\r
+.long 1747873779,1747873779,1747873779,1747873779\r
+.long 1955562222,1955562222,1955562222,1955562222\r
+.long 1955562222,1955562222,1955562222,1955562222\r
+.long 2024104815,2024104815,2024104815,2024104815\r
+.long 2024104815,2024104815,2024104815,2024104815\r
+.long 2227730452,2227730452,2227730452,2227730452\r
+.long 2227730452,2227730452,2227730452,2227730452\r
+.long 2361852424,2361852424,2361852424,2361852424\r
+.long 2361852424,2361852424,2361852424,2361852424\r
+.long 2428436474,2428436474,2428436474,2428436474\r
+.long 2428436474,2428436474,2428436474,2428436474\r
+.long 2756734187,2756734187,2756734187,2756734187\r
+.long 2756734187,2756734187,2756734187,2756734187\r
+.long 3204031479,3204031479,3204031479,3204031479\r
+.long 3204031479,3204031479,3204031479,3204031479\r
+.long 3329325298,3329325298,3329325298,3329325298\r
+.long 3329325298,3329325298,3329325298,3329325298\r
+.Lpbswap:\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+K256_shaext:\r
+.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+.byte 83,72,65,50,53,54,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,115,115,108,46,111,114,103,62,0\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/sha/asm/sha512-x86_64.pl\r
+#\r
+# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl sha256_block_data_order\r
+.type sha256_block_data_order,@function\r
+.align 16\r
+sha256_block_data_order:\r
+.cfi_startproc\r
+ leaq OPENSSL_ia32cap_P(%rip),%r11\r
+ movl 0(%r11),%r9d\r
+ movl 4(%r11),%r10d\r
+ movl 8(%r11),%r11d\r
+ testl $536870912,%r11d\r
+ jnz _shaext_shortcut\r
+ testl $512,%r10d\r
+ jnz .Lssse3_shortcut\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_offset %r15,-56\r
+ shlq $4,%rdx\r
+ subq $64+32,%rsp\r
+ leaq (%rsi,%rdx,4),%rdx\r
+ andq $-64,%rsp\r
+ movq %rdi,64+0(%rsp)\r
+ movq %rsi,64+8(%rsp)\r
+ movq %rdx,64+16(%rsp)\r
+ movq %rax,88(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08\r
+.Lprologue:\r
+\r
+ movl 0(%rdi),%eax\r
+ movl 4(%rdi),%ebx\r
+ movl 8(%rdi),%ecx\r
+ movl 12(%rdi),%edx\r
+ movl 16(%rdi),%r8d\r
+ movl 20(%rdi),%r9d\r
+ movl 24(%rdi),%r10d\r
+ movl 28(%rdi),%r11d\r
+ jmp .Lloop\r
+\r
+.align 16\r
+.Lloop:\r
+ movl %ebx,%edi\r
+ leaq K256(%rip),%rbp\r
+ xorl %ecx,%edi\r
+ movl 0(%rsi),%r12d\r
+ movl %r8d,%r13d\r
+ movl %eax,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r9d,%r15d\r
+\r
+ xorl %r8d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r15d\r
+\r
+ movl %r12d,0(%rsp)\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r11d,%r12d\r
+ xorl %r10d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %eax,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %eax,%r14d\r
+\r
+ xorl %ebx,%r15d\r
+ rorl $6,%r13d\r
+ movl %ebx,%r11d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r11d\r
+ addl %r12d,%edx\r
+ addl %r12d,%r11d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r11d\r
+ movl 4(%rsi),%r12d\r
+ movl %edx,%r13d\r
+ movl %r11d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r8d,%edi\r
+\r
+ xorl %edx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%edi\r
+\r
+ movl %r12d,4(%rsp)\r
+ xorl %r11d,%r14d\r
+ andl %edx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r10d,%r12d\r
+ xorl %r9d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %edx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r11d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r11d,%r14d\r
+\r
+ xorl %eax,%edi\r
+ rorl $6,%r13d\r
+ movl %eax,%r10d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r10d\r
+ addl %r12d,%ecx\r
+ addl %r12d,%r10d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r10d\r
+ movl 8(%rsi),%r12d\r
+ movl %ecx,%r13d\r
+ movl %r10d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %edx,%r15d\r
+\r
+ xorl %ecx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r15d\r
+\r
+ movl %r12d,8(%rsp)\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r9d,%r12d\r
+ xorl %r8d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r10d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r10d,%r14d\r
+\r
+ xorl %r11d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r11d,%r9d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r9d\r
+ addl %r12d,%ebx\r
+ addl %r12d,%r9d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r9d\r
+ movl 12(%rsi),%r12d\r
+ movl %ebx,%r13d\r
+ movl %r9d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %ecx,%edi\r
+\r
+ xorl %ebx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %edx,%edi\r
+\r
+ movl %r12d,12(%rsp)\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r8d,%r12d\r
+ xorl %edx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r9d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r9d,%r14d\r
+\r
+ xorl %r10d,%edi\r
+ rorl $6,%r13d\r
+ movl %r10d,%r8d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r8d\r
+ addl %r12d,%eax\r
+ addl %r12d,%r8d\r
+\r
+ leaq 20(%rbp),%rbp\r
+ addl %r14d,%r8d\r
+ movl 16(%rsi),%r12d\r
+ movl %eax,%r13d\r
+ movl %r8d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %ebx,%r15d\r
+\r
+ xorl %eax,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r15d\r
+\r
+ movl %r12d,16(%rsp)\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %edx,%r12d\r
+ xorl %ecx,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %eax,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r8d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r8d,%r14d\r
+\r
+ xorl %r9d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r9d,%edx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%edx\r
+ addl %r12d,%r11d\r
+ addl %r12d,%edx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%edx\r
+ movl 20(%rsi),%r12d\r
+ movl %r11d,%r13d\r
+ movl %edx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %eax,%edi\r
+\r
+ xorl %r11d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%edi\r
+\r
+ movl %r12d,20(%rsp)\r
+ xorl %edx,%r14d\r
+ andl %r11d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %ecx,%r12d\r
+ xorl %ebx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %edx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %edx,%r14d\r
+\r
+ xorl %r8d,%edi\r
+ rorl $6,%r13d\r
+ movl %r8d,%ecx\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%ecx\r
+ addl %r12d,%r10d\r
+ addl %r12d,%ecx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%ecx\r
+ movl 24(%rsi),%r12d\r
+ movl %r10d,%r13d\r
+ movl %ecx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r11d,%r15d\r
+\r
+ xorl %r10d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r15d\r
+\r
+ movl %r12d,24(%rsp)\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %ebx,%r12d\r
+ xorl %eax,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %ecx,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %ecx,%r14d\r
+\r
+ xorl %edx,%r15d\r
+ rorl $6,%r13d\r
+ movl %edx,%ebx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%ebx\r
+ addl %r12d,%r9d\r
+ addl %r12d,%ebx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%ebx\r
+ movl 28(%rsi),%r12d\r
+ movl %r9d,%r13d\r
+ movl %ebx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r10d,%edi\r
+\r
+ xorl %r9d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%edi\r
+\r
+ movl %r12d,28(%rsp)\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %eax,%r12d\r
+ xorl %r11d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %ebx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %ebx,%r14d\r
+\r
+ xorl %ecx,%edi\r
+ rorl $6,%r13d\r
+ movl %ecx,%eax\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%eax\r
+ addl %r12d,%r8d\r
+ addl %r12d,%eax\r
+\r
+ leaq 20(%rbp),%rbp\r
+ addl %r14d,%eax\r
+ movl 32(%rsi),%r12d\r
+ movl %r8d,%r13d\r
+ movl %eax,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r9d,%r15d\r
+\r
+ xorl %r8d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r15d\r
+\r
+ movl %r12d,32(%rsp)\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r11d,%r12d\r
+ xorl %r10d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %eax,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %eax,%r14d\r
+\r
+ xorl %ebx,%r15d\r
+ rorl $6,%r13d\r
+ movl %ebx,%r11d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r11d\r
+ addl %r12d,%edx\r
+ addl %r12d,%r11d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r11d\r
+ movl 36(%rsi),%r12d\r
+ movl %edx,%r13d\r
+ movl %r11d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r8d,%edi\r
+\r
+ xorl %edx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%edi\r
+\r
+ movl %r12d,36(%rsp)\r
+ xorl %r11d,%r14d\r
+ andl %edx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r10d,%r12d\r
+ xorl %r9d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %edx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r11d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r11d,%r14d\r
+\r
+ xorl %eax,%edi\r
+ rorl $6,%r13d\r
+ movl %eax,%r10d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r10d\r
+ addl %r12d,%ecx\r
+ addl %r12d,%r10d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r10d\r
+ movl 40(%rsi),%r12d\r
+ movl %ecx,%r13d\r
+ movl %r10d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %edx,%r15d\r
+\r
+ xorl %ecx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r15d\r
+\r
+ movl %r12d,40(%rsp)\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r9d,%r12d\r
+ xorl %r8d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r10d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r10d,%r14d\r
+\r
+ xorl %r11d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r11d,%r9d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r9d\r
+ addl %r12d,%ebx\r
+ addl %r12d,%r9d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%r9d\r
+ movl 44(%rsi),%r12d\r
+ movl %ebx,%r13d\r
+ movl %r9d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %ecx,%edi\r
+\r
+ xorl %ebx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %edx,%edi\r
+\r
+ movl %r12d,44(%rsp)\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r8d,%r12d\r
+ xorl %edx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r9d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r9d,%r14d\r
+\r
+ xorl %r10d,%edi\r
+ rorl $6,%r13d\r
+ movl %r10d,%r8d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r8d\r
+ addl %r12d,%eax\r
+ addl %r12d,%r8d\r
+\r
+ leaq 20(%rbp),%rbp\r
+ addl %r14d,%r8d\r
+ movl 48(%rsi),%r12d\r
+ movl %eax,%r13d\r
+ movl %r8d,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %ebx,%r15d\r
+\r
+ xorl %eax,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r15d\r
+\r
+ movl %r12d,48(%rsp)\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %edx,%r12d\r
+ xorl %ecx,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %eax,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r8d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r8d,%r14d\r
+\r
+ xorl %r9d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r9d,%edx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%edx\r
+ addl %r12d,%r11d\r
+ addl %r12d,%edx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%edx\r
+ movl 52(%rsi),%r12d\r
+ movl %r11d,%r13d\r
+ movl %edx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %eax,%edi\r
+\r
+ xorl %r11d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%edi\r
+\r
+ movl %r12d,52(%rsp)\r
+ xorl %edx,%r14d\r
+ andl %r11d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %ecx,%r12d\r
+ xorl %ebx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %edx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %edx,%r14d\r
+\r
+ xorl %r8d,%edi\r
+ rorl $6,%r13d\r
+ movl %r8d,%ecx\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%ecx\r
+ addl %r12d,%r10d\r
+ addl %r12d,%ecx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%ecx\r
+ movl 56(%rsi),%r12d\r
+ movl %r10d,%r13d\r
+ movl %ecx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r11d,%r15d\r
+\r
+ xorl %r10d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r15d\r
+\r
+ movl %r12d,56(%rsp)\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %ebx,%r12d\r
+ xorl %eax,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %ecx,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %ecx,%r14d\r
+\r
+ xorl %edx,%r15d\r
+ rorl $6,%r13d\r
+ movl %edx,%ebx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%ebx\r
+ addl %r12d,%r9d\r
+ addl %r12d,%ebx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ addl %r14d,%ebx\r
+ movl 60(%rsi),%r12d\r
+ movl %r9d,%r13d\r
+ movl %ebx,%r14d\r
+ bswapl %r12d\r
+ rorl $14,%r13d\r
+ movl %r10d,%edi\r
+\r
+ xorl %r9d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%edi\r
+\r
+ movl %r12d,60(%rsp)\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %eax,%r12d\r
+ xorl %r11d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %ebx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %ebx,%r14d\r
+\r
+ xorl %ecx,%edi\r
+ rorl $6,%r13d\r
+ movl %ecx,%eax\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%eax\r
+ addl %r12d,%r8d\r
+ addl %r12d,%eax\r
+\r
+ leaq 20(%rbp),%rbp\r
+ jmp .Lrounds_16_xx\r
+.align 16\r
+.Lrounds_16_xx:\r
+ movl 4(%rsp),%r13d\r
+ movl 56(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%eax\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 36(%rsp),%r12d\r
+\r
+ addl 0(%rsp),%r12d\r
+ movl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+ movl %eax,%r14d\r
+ rorl $14,%r13d\r
+ movl %r9d,%r15d\r
+\r
+ xorl %r8d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r15d\r
+\r
+ movl %r12d,0(%rsp)\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r11d,%r12d\r
+ xorl %r10d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %eax,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %eax,%r14d\r
+\r
+ xorl %ebx,%r15d\r
+ rorl $6,%r13d\r
+ movl %ebx,%r11d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r11d\r
+ addl %r12d,%edx\r
+ addl %r12d,%r11d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 8(%rsp),%r13d\r
+ movl 60(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r11d\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 40(%rsp),%r12d\r
+\r
+ addl 4(%rsp),%r12d\r
+ movl %edx,%r13d\r
+ addl %edi,%r12d\r
+ movl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r8d,%edi\r
+\r
+ xorl %edx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%edi\r
+\r
+ movl %r12d,4(%rsp)\r
+ xorl %r11d,%r14d\r
+ andl %edx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r10d,%r12d\r
+ xorl %r9d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %edx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r11d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r11d,%r14d\r
+\r
+ xorl %eax,%edi\r
+ rorl $6,%r13d\r
+ movl %eax,%r10d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r10d\r
+ addl %r12d,%ecx\r
+ addl %r12d,%r10d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 12(%rsp),%r13d\r
+ movl 0(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r10d\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 44(%rsp),%r12d\r
+\r
+ addl 8(%rsp),%r12d\r
+ movl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+ movl %r10d,%r14d\r
+ rorl $14,%r13d\r
+ movl %edx,%r15d\r
+\r
+ xorl %ecx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r15d\r
+\r
+ movl %r12d,8(%rsp)\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r9d,%r12d\r
+ xorl %r8d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r10d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r10d,%r14d\r
+\r
+ xorl %r11d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r11d,%r9d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r9d\r
+ addl %r12d,%ebx\r
+ addl %r12d,%r9d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 16(%rsp),%r13d\r
+ movl 4(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r9d\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 48(%rsp),%r12d\r
+\r
+ addl 12(%rsp),%r12d\r
+ movl %ebx,%r13d\r
+ addl %edi,%r12d\r
+ movl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ movl %ecx,%edi\r
+\r
+ xorl %ebx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %edx,%edi\r
+\r
+ movl %r12d,12(%rsp)\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r8d,%r12d\r
+ xorl %edx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r9d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r9d,%r14d\r
+\r
+ xorl %r10d,%edi\r
+ rorl $6,%r13d\r
+ movl %r10d,%r8d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r8d\r
+ addl %r12d,%eax\r
+ addl %r12d,%r8d\r
+\r
+ leaq 20(%rbp),%rbp\r
+ movl 20(%rsp),%r13d\r
+ movl 8(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r8d\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 52(%rsp),%r12d\r
+\r
+ addl 16(%rsp),%r12d\r
+ movl %eax,%r13d\r
+ addl %r15d,%r12d\r
+ movl %r8d,%r14d\r
+ rorl $14,%r13d\r
+ movl %ebx,%r15d\r
+\r
+ xorl %eax,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r15d\r
+\r
+ movl %r12d,16(%rsp)\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %edx,%r12d\r
+ xorl %ecx,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %eax,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r8d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r8d,%r14d\r
+\r
+ xorl %r9d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r9d,%edx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%edx\r
+ addl %r12d,%r11d\r
+ addl %r12d,%edx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 24(%rsp),%r13d\r
+ movl 12(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%edx\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 56(%rsp),%r12d\r
+\r
+ addl 20(%rsp),%r12d\r
+ movl %r11d,%r13d\r
+ addl %edi,%r12d\r
+ movl %edx,%r14d\r
+ rorl $14,%r13d\r
+ movl %eax,%edi\r
+\r
+ xorl %r11d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%edi\r
+\r
+ movl %r12d,20(%rsp)\r
+ xorl %edx,%r14d\r
+ andl %r11d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %ecx,%r12d\r
+ xorl %ebx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %edx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %edx,%r14d\r
+\r
+ xorl %r8d,%edi\r
+ rorl $6,%r13d\r
+ movl %r8d,%ecx\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%ecx\r
+ addl %r12d,%r10d\r
+ addl %r12d,%ecx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 28(%rsp),%r13d\r
+ movl 16(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%ecx\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 60(%rsp),%r12d\r
+\r
+ addl 24(%rsp),%r12d\r
+ movl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+ movl %ecx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r11d,%r15d\r
+\r
+ xorl %r10d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r15d\r
+\r
+ movl %r12d,24(%rsp)\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %ebx,%r12d\r
+ xorl %eax,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %ecx,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %ecx,%r14d\r
+\r
+ xorl %edx,%r15d\r
+ rorl $6,%r13d\r
+ movl %edx,%ebx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%ebx\r
+ addl %r12d,%r9d\r
+ addl %r12d,%ebx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 32(%rsp),%r13d\r
+ movl 20(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%ebx\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 0(%rsp),%r12d\r
+\r
+ addl 28(%rsp),%r12d\r
+ movl %r9d,%r13d\r
+ addl %edi,%r12d\r
+ movl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r10d,%edi\r
+\r
+ xorl %r9d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%edi\r
+\r
+ movl %r12d,28(%rsp)\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %eax,%r12d\r
+ xorl %r11d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %ebx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %ebx,%r14d\r
+\r
+ xorl %ecx,%edi\r
+ rorl $6,%r13d\r
+ movl %ecx,%eax\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%eax\r
+ addl %r12d,%r8d\r
+ addl %r12d,%eax\r
+\r
+ leaq 20(%rbp),%rbp\r
+ movl 36(%rsp),%r13d\r
+ movl 24(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%eax\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 4(%rsp),%r12d\r
+\r
+ addl 32(%rsp),%r12d\r
+ movl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+ movl %eax,%r14d\r
+ rorl $14,%r13d\r
+ movl %r9d,%r15d\r
+\r
+ xorl %r8d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r15d\r
+\r
+ movl %r12d,32(%rsp)\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r11d,%r12d\r
+ xorl %r10d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r8d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %eax,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %eax,%r14d\r
+\r
+ xorl %ebx,%r15d\r
+ rorl $6,%r13d\r
+ movl %ebx,%r11d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r11d\r
+ addl %r12d,%edx\r
+ addl %r12d,%r11d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 40(%rsp),%r13d\r
+ movl 28(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r11d\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 8(%rsp),%r12d\r
+\r
+ addl 36(%rsp),%r12d\r
+ movl %edx,%r13d\r
+ addl %edi,%r12d\r
+ movl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r8d,%edi\r
+\r
+ xorl %edx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%edi\r
+\r
+ movl %r12d,36(%rsp)\r
+ xorl %r11d,%r14d\r
+ andl %edx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r10d,%r12d\r
+ xorl %r9d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %edx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r11d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r11d,%r14d\r
+\r
+ xorl %eax,%edi\r
+ rorl $6,%r13d\r
+ movl %eax,%r10d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r10d\r
+ addl %r12d,%ecx\r
+ addl %r12d,%r10d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 44(%rsp),%r13d\r
+ movl 32(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r10d\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 12(%rsp),%r12d\r
+\r
+ addl 40(%rsp),%r12d\r
+ movl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+ movl %r10d,%r14d\r
+ rorl $14,%r13d\r
+ movl %edx,%r15d\r
+\r
+ xorl %ecx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r15d\r
+\r
+ movl %r12d,40(%rsp)\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %r9d,%r12d\r
+ xorl %r8d,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %ecx,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r10d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r10d,%r14d\r
+\r
+ xorl %r11d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r11d,%r9d\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%r9d\r
+ addl %r12d,%ebx\r
+ addl %r12d,%r9d\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 48(%rsp),%r13d\r
+ movl 36(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r9d\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 16(%rsp),%r12d\r
+\r
+ addl 44(%rsp),%r12d\r
+ movl %ebx,%r13d\r
+ addl %edi,%r12d\r
+ movl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ movl %ecx,%edi\r
+\r
+ xorl %ebx,%r13d\r
+ rorl $9,%r14d\r
+ xorl %edx,%edi\r
+\r
+ movl %r12d,44(%rsp)\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %r8d,%r12d\r
+ xorl %edx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %r9d,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %r9d,%r14d\r
+\r
+ xorl %r10d,%edi\r
+ rorl $6,%r13d\r
+ movl %r10d,%r8d\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%r8d\r
+ addl %r12d,%eax\r
+ addl %r12d,%r8d\r
+\r
+ leaq 20(%rbp),%rbp\r
+ movl 52(%rsp),%r13d\r
+ movl 40(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%r8d\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 20(%rsp),%r12d\r
+\r
+ addl 48(%rsp),%r12d\r
+ movl %eax,%r13d\r
+ addl %r15d,%r12d\r
+ movl %r8d,%r14d\r
+ rorl $14,%r13d\r
+ movl %ebx,%r15d\r
+\r
+ xorl %eax,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r15d\r
+\r
+ movl %r12d,48(%rsp)\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %edx,%r12d\r
+ xorl %ecx,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %eax,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %r8d,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %r8d,%r14d\r
+\r
+ xorl %r9d,%r15d\r
+ rorl $6,%r13d\r
+ movl %r9d,%edx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%edx\r
+ addl %r12d,%r11d\r
+ addl %r12d,%edx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 56(%rsp),%r13d\r
+ movl 44(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%edx\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 24(%rsp),%r12d\r
+\r
+ addl 52(%rsp),%r12d\r
+ movl %r11d,%r13d\r
+ addl %edi,%r12d\r
+ movl %edx,%r14d\r
+ rorl $14,%r13d\r
+ movl %eax,%edi\r
+\r
+ xorl %r11d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%edi\r
+\r
+ movl %r12d,52(%rsp)\r
+ xorl %edx,%r14d\r
+ andl %r11d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %ecx,%r12d\r
+ xorl %ebx,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %edx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %edx,%r14d\r
+\r
+ xorl %r8d,%edi\r
+ rorl $6,%r13d\r
+ movl %r8d,%ecx\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%ecx\r
+ addl %r12d,%r10d\r
+ addl %r12d,%ecx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 60(%rsp),%r13d\r
+ movl 48(%rsp),%r15d\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%ecx\r
+ movl %r15d,%r14d\r
+ rorl $2,%r15d\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%r15d\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%r15d\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%r15d\r
+ addl 28(%rsp),%r12d\r
+\r
+ addl 56(%rsp),%r12d\r
+ movl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+ movl %ecx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r11d,%r15d\r
+\r
+ xorl %r10d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r15d\r
+\r
+ movl %r12d,56(%rsp)\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r15d\r
+\r
+ rorl $5,%r13d\r
+ addl %ebx,%r12d\r
+ xorl %eax,%r15d\r
+\r
+ rorl $11,%r14d\r
+ xorl %r10d,%r13d\r
+ addl %r15d,%r12d\r
+\r
+ movl %ecx,%r15d\r
+ addl (%rbp),%r12d\r
+ xorl %ecx,%r14d\r
+\r
+ xorl %edx,%r15d\r
+ rorl $6,%r13d\r
+ movl %edx,%ebx\r
+\r
+ andl %r15d,%edi\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %edi,%ebx\r
+ addl %r12d,%r9d\r
+ addl %r12d,%ebx\r
+\r
+ leaq 4(%rbp),%rbp\r
+ movl 0(%rsp),%r13d\r
+ movl 52(%rsp),%edi\r
+\r
+ movl %r13d,%r12d\r
+ rorl $11,%r13d\r
+ addl %r14d,%ebx\r
+ movl %edi,%r14d\r
+ rorl $2,%edi\r
+\r
+ xorl %r12d,%r13d\r
+ shrl $3,%r12d\r
+ rorl $7,%r13d\r
+ xorl %r14d,%edi\r
+ shrl $10,%r14d\r
+\r
+ rorl $17,%edi\r
+ xorl %r13d,%r12d\r
+ xorl %r14d,%edi\r
+ addl 32(%rsp),%r12d\r
+\r
+ addl 60(%rsp),%r12d\r
+ movl %r9d,%r13d\r
+ addl %edi,%r12d\r
+ movl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r10d,%edi\r
+\r
+ xorl %r9d,%r13d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%edi\r
+\r
+ movl %r12d,60(%rsp)\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%edi\r
+\r
+ rorl $5,%r13d\r
+ addl %eax,%r12d\r
+ xorl %r11d,%edi\r
+\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r13d\r
+ addl %edi,%r12d\r
+\r
+ movl %ebx,%edi\r
+ addl (%rbp),%r12d\r
+ xorl %ebx,%r14d\r
+\r
+ xorl %ecx,%edi\r
+ rorl $6,%r13d\r
+ movl %ecx,%eax\r
+\r
+ andl %edi,%r15d\r
+ rorl $2,%r14d\r
+ addl %r13d,%r12d\r
+\r
+ xorl %r15d,%eax\r
+ addl %r12d,%r8d\r
+ addl %r12d,%eax\r
+\r
+ leaq 20(%rbp),%rbp\r
+ cmpb $0,3(%rbp)\r
+ jnz .Lrounds_16_xx\r
+\r
+ movq 64+0(%rsp),%rdi\r
+ addl %r14d,%eax\r
+ leaq 64(%rsi),%rsi\r
+\r
+ addl 0(%rdi),%eax\r
+ addl 4(%rdi),%ebx\r
+ addl 8(%rdi),%ecx\r
+ addl 12(%rdi),%edx\r
+ addl 16(%rdi),%r8d\r
+ addl 20(%rdi),%r9d\r
+ addl 24(%rdi),%r10d\r
+ addl 28(%rdi),%r11d\r
+\r
+ cmpq 64+16(%rsp),%rsi\r
+\r
+ movl %eax,0(%rdi)\r
+ movl %ebx,4(%rdi)\r
+ movl %ecx,8(%rdi)\r
+ movl %edx,12(%rdi)\r
+ movl %r8d,16(%rdi)\r
+ movl %r9d,20(%rdi)\r
+ movl %r10d,24(%rdi)\r
+ movl %r11d,28(%rdi)\r
+ jb .Lloop\r
+\r
+ movq 88(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -48(%rsi),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha256_block_data_order,.-sha256_block_data_order\r
+.align 64\r
+.type K256,@object\r
+K256:\r
+.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+.long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5\r
+.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+.long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5\r
+.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+.long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3\r
+.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+.long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174\r
+.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+.long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc\r
+.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+.long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da\r
+.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+.long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7\r
+.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+.long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967\r
+.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+.long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13\r
+.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+.long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85\r
+.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+.long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3\r
+.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+.long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070\r
+.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+.long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5\r
+.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+.long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3\r
+.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+.long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208\r
+.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+.long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2\r
+\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f\r
+.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff\r
+.long 0x03020100,0x0b0a0908,0xffffffff,0xffffffff\r
+.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908\r
+.long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908\r
+.byte 83,72,65,50,53,54,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,103,62,0\r
+.type sha256_block_data_order_shaext,@function\r
+.align 64\r
+sha256_block_data_order_shaext:\r
+_shaext_shortcut:\r
+.cfi_startproc\r
+ leaq K256+128(%rip),%rcx\r
+ movdqu (%rdi),%xmm1\r
+ movdqu 16(%rdi),%xmm2\r
+ movdqa 512-128(%rcx),%xmm7\r
+\r
+ pshufd $0x1b,%xmm1,%xmm0\r
+ pshufd $0xb1,%xmm1,%xmm1\r
+ pshufd $0x1b,%xmm2,%xmm2\r
+ movdqa %xmm7,%xmm8\r
+.byte 102,15,58,15,202,8\r
+ punpcklqdq %xmm0,%xmm2\r
+ jmp .Loop_shaext\r
+\r
+.align 16\r
+.Loop_shaext:\r
+ movdqu (%rsi),%xmm3\r
+ movdqu 16(%rsi),%xmm4\r
+ movdqu 32(%rsi),%xmm5\r
+.byte 102,15,56,0,223\r
+ movdqu 48(%rsi),%xmm6\r
+\r
+ movdqa 0-128(%rcx),%xmm0\r
+ paddd %xmm3,%xmm0\r
+.byte 102,15,56,0,231\r
+ movdqa %xmm2,%xmm10\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ nop\r
+ movdqa %xmm1,%xmm9\r
+.byte 15,56,203,202\r
+\r
+ movdqa 32-128(%rcx),%xmm0\r
+ paddd %xmm4,%xmm0\r
+.byte 102,15,56,0,239\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ leaq 64(%rsi),%rsi\r
+.byte 15,56,204,220\r
+.byte 15,56,203,202\r
+\r
+ movdqa 64-128(%rcx),%xmm0\r
+ paddd %xmm5,%xmm0\r
+.byte 102,15,56,0,247\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm6,%xmm7\r
+.byte 102,15,58,15,253,4\r
+ nop\r
+ paddd %xmm7,%xmm3\r
+.byte 15,56,204,229\r
+.byte 15,56,203,202\r
+\r
+ movdqa 96-128(%rcx),%xmm0\r
+ paddd %xmm6,%xmm0\r
+.byte 15,56,205,222\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm3,%xmm7\r
+.byte 102,15,58,15,254,4\r
+ nop\r
+ paddd %xmm7,%xmm4\r
+.byte 15,56,204,238\r
+.byte 15,56,203,202\r
+ movdqa 128-128(%rcx),%xmm0\r
+ paddd %xmm3,%xmm0\r
+.byte 15,56,205,227\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm4,%xmm7\r
+.byte 102,15,58,15,251,4\r
+ nop\r
+ paddd %xmm7,%xmm5\r
+.byte 15,56,204,243\r
+.byte 15,56,203,202\r
+ movdqa 160-128(%rcx),%xmm0\r
+ paddd %xmm4,%xmm0\r
+.byte 15,56,205,236\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm5,%xmm7\r
+.byte 102,15,58,15,252,4\r
+ nop\r
+ paddd %xmm7,%xmm6\r
+.byte 15,56,204,220\r
+.byte 15,56,203,202\r
+ movdqa 192-128(%rcx),%xmm0\r
+ paddd %xmm5,%xmm0\r
+.byte 15,56,205,245\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm6,%xmm7\r
+.byte 102,15,58,15,253,4\r
+ nop\r
+ paddd %xmm7,%xmm3\r
+.byte 15,56,204,229\r
+.byte 15,56,203,202\r
+ movdqa 224-128(%rcx),%xmm0\r
+ paddd %xmm6,%xmm0\r
+.byte 15,56,205,222\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm3,%xmm7\r
+.byte 102,15,58,15,254,4\r
+ nop\r
+ paddd %xmm7,%xmm4\r
+.byte 15,56,204,238\r
+.byte 15,56,203,202\r
+ movdqa 256-128(%rcx),%xmm0\r
+ paddd %xmm3,%xmm0\r
+.byte 15,56,205,227\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm4,%xmm7\r
+.byte 102,15,58,15,251,4\r
+ nop\r
+ paddd %xmm7,%xmm5\r
+.byte 15,56,204,243\r
+.byte 15,56,203,202\r
+ movdqa 288-128(%rcx),%xmm0\r
+ paddd %xmm4,%xmm0\r
+.byte 15,56,205,236\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm5,%xmm7\r
+.byte 102,15,58,15,252,4\r
+ nop\r
+ paddd %xmm7,%xmm6\r
+.byte 15,56,204,220\r
+.byte 15,56,203,202\r
+ movdqa 320-128(%rcx),%xmm0\r
+ paddd %xmm5,%xmm0\r
+.byte 15,56,205,245\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm6,%xmm7\r
+.byte 102,15,58,15,253,4\r
+ nop\r
+ paddd %xmm7,%xmm3\r
+.byte 15,56,204,229\r
+.byte 15,56,203,202\r
+ movdqa 352-128(%rcx),%xmm0\r
+ paddd %xmm6,%xmm0\r
+.byte 15,56,205,222\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm3,%xmm7\r
+.byte 102,15,58,15,254,4\r
+ nop\r
+ paddd %xmm7,%xmm4\r
+.byte 15,56,204,238\r
+.byte 15,56,203,202\r
+ movdqa 384-128(%rcx),%xmm0\r
+ paddd %xmm3,%xmm0\r
+.byte 15,56,205,227\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm4,%xmm7\r
+.byte 102,15,58,15,251,4\r
+ nop\r
+ paddd %xmm7,%xmm5\r
+.byte 15,56,204,243\r
+.byte 15,56,203,202\r
+ movdqa 416-128(%rcx),%xmm0\r
+ paddd %xmm4,%xmm0\r
+.byte 15,56,205,236\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ movdqa %xmm5,%xmm7\r
+.byte 102,15,58,15,252,4\r
+.byte 15,56,203,202\r
+ paddd %xmm7,%xmm6\r
+\r
+ movdqa 448-128(%rcx),%xmm0\r
+ paddd %xmm5,%xmm0\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+.byte 15,56,205,245\r
+ movdqa %xmm8,%xmm7\r
+.byte 15,56,203,202\r
+\r
+ movdqa 480-128(%rcx),%xmm0\r
+ paddd %xmm6,%xmm0\r
+ nop\r
+.byte 15,56,203,209\r
+ pshufd $0x0e,%xmm0,%xmm0\r
+ decq %rdx\r
+ nop\r
+.byte 15,56,203,202\r
+\r
+ paddd %xmm10,%xmm2\r
+ paddd %xmm9,%xmm1\r
+ jnz .Loop_shaext\r
+\r
+ pshufd $0xb1,%xmm2,%xmm2\r
+ pshufd $0x1b,%xmm1,%xmm7\r
+ pshufd $0xb1,%xmm1,%xmm1\r
+ punpckhqdq %xmm2,%xmm1\r
+.byte 102,15,58,15,215,8\r
+\r
+ movdqu %xmm1,(%rdi)\r
+ movdqu %xmm2,16(%rdi)\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha256_block_data_order_shaext,.-sha256_block_data_order_shaext\r
+.type sha256_block_data_order_ssse3,@function\r
+.align 64\r
+sha256_block_data_order_ssse3:\r
+.cfi_startproc\r
+.Lssse3_shortcut:\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_offset %r15,-56\r
+ shlq $4,%rdx\r
+ subq $96,%rsp\r
+ leaq (%rsi,%rdx,4),%rdx\r
+ andq $-64,%rsp\r
+ movq %rdi,64+0(%rsp)\r
+ movq %rsi,64+8(%rsp)\r
+ movq %rdx,64+16(%rsp)\r
+ movq %rax,88(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0xd8,0x00,0x06,0x23,0x08\r
+.Lprologue_ssse3:\r
+\r
+ movl 0(%rdi),%eax\r
+ movl 4(%rdi),%ebx\r
+ movl 8(%rdi),%ecx\r
+ movl 12(%rdi),%edx\r
+ movl 16(%rdi),%r8d\r
+ movl 20(%rdi),%r9d\r
+ movl 24(%rdi),%r10d\r
+ movl 28(%rdi),%r11d\r
+\r
+\r
+ jmp .Lloop_ssse3\r
+.align 16\r
+.Lloop_ssse3:\r
+ movdqa K256+512(%rip),%xmm7\r
+ movdqu 0(%rsi),%xmm0\r
+ movdqu 16(%rsi),%xmm1\r
+ movdqu 32(%rsi),%xmm2\r
+.byte 102,15,56,0,199\r
+ movdqu 48(%rsi),%xmm3\r
+ leaq K256(%rip),%rbp\r
+.byte 102,15,56,0,207\r
+ movdqa 0(%rbp),%xmm4\r
+ movdqa 32(%rbp),%xmm5\r
+.byte 102,15,56,0,215\r
+ paddd %xmm0,%xmm4\r
+ movdqa 64(%rbp),%xmm6\r
+.byte 102,15,56,0,223\r
+ movdqa 96(%rbp),%xmm7\r
+ paddd %xmm1,%xmm5\r
+ paddd %xmm2,%xmm6\r
+ paddd %xmm3,%xmm7\r
+ movdqa %xmm4,0(%rsp)\r
+ movl %eax,%r14d\r
+ movdqa %xmm5,16(%rsp)\r
+ movl %ebx,%edi\r
+ movdqa %xmm6,32(%rsp)\r
+ xorl %ecx,%edi\r
+ movdqa %xmm7,48(%rsp)\r
+ movl %r8d,%r13d\r
+ jmp .Lssse3_00_47\r
+\r
+.align 16\r
+.Lssse3_00_47:\r
+ subq $-128,%rbp\r
+ rorl $14,%r13d\r
+ movdqa %xmm1,%xmm4\r
+ movl %r14d,%eax\r
+ movl %r9d,%r12d\r
+ movdqa %xmm3,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r13d\r
+ xorl %r10d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %eax,%r14d\r
+.byte 102,15,58,15,224,4\r
+ andl %r8d,%r12d\r
+ xorl %r8d,%r13d\r
+.byte 102,15,58,15,250,4\r
+ addl 0(%rsp),%r11d\r
+ movl %eax,%r15d\r
+ xorl %r10d,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm4,%xmm5\r
+ xorl %ebx,%r15d\r
+ addl %r12d,%r11d\r
+ movdqa %xmm4,%xmm6\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ psrld $3,%xmm4\r
+ xorl %eax,%r14d\r
+ addl %r13d,%r11d\r
+ xorl %ebx,%edi\r
+ paddd %xmm7,%xmm0\r
+ rorl $2,%r14d\r
+ addl %r11d,%edx\r
+ psrld $7,%xmm6\r
+ addl %edi,%r11d\r
+ movl %edx,%r13d\r
+ pshufd $250,%xmm3,%xmm7\r
+ addl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ pslld $14,%xmm5\r
+ movl %r14d,%r11d\r
+ movl %r8d,%r12d\r
+ pxor %xmm6,%xmm4\r
+ rorl $9,%r14d\r
+ xorl %edx,%r13d\r
+ xorl %r9d,%r12d\r
+ rorl $5,%r13d\r
+ psrld $11,%xmm6\r
+ xorl %r11d,%r14d\r
+ pxor %xmm5,%xmm4\r
+ andl %edx,%r12d\r
+ xorl %edx,%r13d\r
+ pslld $11,%xmm5\r
+ addl 4(%rsp),%r10d\r
+ movl %r11d,%edi\r
+ pxor %xmm6,%xmm4\r
+ xorl %r9d,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm7,%xmm6\r
+ xorl %eax,%edi\r
+ addl %r12d,%r10d\r
+ pxor %xmm5,%xmm4\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r11d,%r14d\r
+ psrld $10,%xmm7\r
+ addl %r13d,%r10d\r
+ xorl %eax,%r15d\r
+ paddd %xmm4,%xmm0\r
+ rorl $2,%r14d\r
+ addl %r10d,%ecx\r
+ psrlq $17,%xmm6\r
+ addl %r15d,%r10d\r
+ movl %ecx,%r13d\r
+ addl %r10d,%r14d\r
+ pxor %xmm6,%xmm7\r
+ rorl $14,%r13d\r
+ movl %r14d,%r10d\r
+ movl %edx,%r12d\r
+ rorl $9,%r14d\r
+ psrlq $2,%xmm6\r
+ xorl %ecx,%r13d\r
+ xorl %r8d,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $5,%r13d\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r12d\r
+ pshufd $128,%xmm7,%xmm7\r
+ xorl %ecx,%r13d\r
+ addl 8(%rsp),%r9d\r
+ movl %r10d,%r15d\r
+ psrldq $8,%xmm7\r
+ xorl %r8d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r15d\r
+ addl %r12d,%r9d\r
+ rorl $6,%r13d\r
+ paddd %xmm7,%xmm0\r
+ andl %r15d,%edi\r
+ xorl %r10d,%r14d\r
+ addl %r13d,%r9d\r
+ pshufd $80,%xmm0,%xmm7\r
+ xorl %r11d,%edi\r
+ rorl $2,%r14d\r
+ addl %r9d,%ebx\r
+ movdqa %xmm7,%xmm6\r
+ addl %edi,%r9d\r
+ movl %ebx,%r13d\r
+ psrld $10,%xmm7\r
+ addl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ psrlq $17,%xmm6\r
+ movl %r14d,%r9d\r
+ movl %ecx,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %ebx,%r13d\r
+ xorl %edx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r9d,%r14d\r
+ psrlq $2,%xmm6\r
+ andl %ebx,%r12d\r
+ xorl %ebx,%r13d\r
+ addl 12(%rsp),%r8d\r
+ pxor %xmm6,%xmm7\r
+ movl %r9d,%edi\r
+ xorl %edx,%r12d\r
+ rorl $11,%r14d\r
+ pshufd $8,%xmm7,%xmm7\r
+ xorl %r10d,%edi\r
+ addl %r12d,%r8d\r
+ movdqa 0(%rbp),%xmm6\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ pslldq $8,%xmm7\r
+ xorl %r9d,%r14d\r
+ addl %r13d,%r8d\r
+ xorl %r10d,%r15d\r
+ paddd %xmm7,%xmm0\r
+ rorl $2,%r14d\r
+ addl %r8d,%eax\r
+ addl %r15d,%r8d\r
+ paddd %xmm0,%xmm6\r
+ movl %eax,%r13d\r
+ addl %r8d,%r14d\r
+ movdqa %xmm6,0(%rsp)\r
+ rorl $14,%r13d\r
+ movdqa %xmm2,%xmm4\r
+ movl %r14d,%r8d\r
+ movl %ebx,%r12d\r
+ movdqa %xmm0,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %eax,%r13d\r
+ xorl %ecx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r8d,%r14d\r
+.byte 102,15,58,15,225,4\r
+ andl %eax,%r12d\r
+ xorl %eax,%r13d\r
+.byte 102,15,58,15,251,4\r
+ addl 16(%rsp),%edx\r
+ movl %r8d,%r15d\r
+ xorl %ecx,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm4,%xmm5\r
+ xorl %r9d,%r15d\r
+ addl %r12d,%edx\r
+ movdqa %xmm4,%xmm6\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ psrld $3,%xmm4\r
+ xorl %r8d,%r14d\r
+ addl %r13d,%edx\r
+ xorl %r9d,%edi\r
+ paddd %xmm7,%xmm1\r
+ rorl $2,%r14d\r
+ addl %edx,%r11d\r
+ psrld $7,%xmm6\r
+ addl %edi,%edx\r
+ movl %r11d,%r13d\r
+ pshufd $250,%xmm0,%xmm7\r
+ addl %edx,%r14d\r
+ rorl $14,%r13d\r
+ pslld $14,%xmm5\r
+ movl %r14d,%edx\r
+ movl %eax,%r12d\r
+ pxor %xmm6,%xmm4\r
+ rorl $9,%r14d\r
+ xorl %r11d,%r13d\r
+ xorl %ebx,%r12d\r
+ rorl $5,%r13d\r
+ psrld $11,%xmm6\r
+ xorl %edx,%r14d\r
+ pxor %xmm5,%xmm4\r
+ andl %r11d,%r12d\r
+ xorl %r11d,%r13d\r
+ pslld $11,%xmm5\r
+ addl 20(%rsp),%ecx\r
+ movl %edx,%edi\r
+ pxor %xmm6,%xmm4\r
+ xorl %ebx,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm7,%xmm6\r
+ xorl %r8d,%edi\r
+ addl %r12d,%ecx\r
+ pxor %xmm5,%xmm4\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %edx,%r14d\r
+ psrld $10,%xmm7\r
+ addl %r13d,%ecx\r
+ xorl %r8d,%r15d\r
+ paddd %xmm4,%xmm1\r
+ rorl $2,%r14d\r
+ addl %ecx,%r10d\r
+ psrlq $17,%xmm6\r
+ addl %r15d,%ecx\r
+ movl %r10d,%r13d\r
+ addl %ecx,%r14d\r
+ pxor %xmm6,%xmm7\r
+ rorl $14,%r13d\r
+ movl %r14d,%ecx\r
+ movl %r11d,%r12d\r
+ rorl $9,%r14d\r
+ psrlq $2,%xmm6\r
+ xorl %r10d,%r13d\r
+ xorl %eax,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $5,%r13d\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r12d\r
+ pshufd $128,%xmm7,%xmm7\r
+ xorl %r10d,%r13d\r
+ addl 24(%rsp),%ebx\r
+ movl %ecx,%r15d\r
+ psrldq $8,%xmm7\r
+ xorl %eax,%r12d\r
+ rorl $11,%r14d\r
+ xorl %edx,%r15d\r
+ addl %r12d,%ebx\r
+ rorl $6,%r13d\r
+ paddd %xmm7,%xmm1\r
+ andl %r15d,%edi\r
+ xorl %ecx,%r14d\r
+ addl %r13d,%ebx\r
+ pshufd $80,%xmm1,%xmm7\r
+ xorl %edx,%edi\r
+ rorl $2,%r14d\r
+ addl %ebx,%r9d\r
+ movdqa %xmm7,%xmm6\r
+ addl %edi,%ebx\r
+ movl %r9d,%r13d\r
+ psrld $10,%xmm7\r
+ addl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ psrlq $17,%xmm6\r
+ movl %r14d,%ebx\r
+ movl %r10d,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %r9d,%r13d\r
+ xorl %r11d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ebx,%r14d\r
+ psrlq $2,%xmm6\r
+ andl %r9d,%r12d\r
+ xorl %r9d,%r13d\r
+ addl 28(%rsp),%eax\r
+ pxor %xmm6,%xmm7\r
+ movl %ebx,%edi\r
+ xorl %r11d,%r12d\r
+ rorl $11,%r14d\r
+ pshufd $8,%xmm7,%xmm7\r
+ xorl %ecx,%edi\r
+ addl %r12d,%eax\r
+ movdqa 32(%rbp),%xmm6\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ pslldq $8,%xmm7\r
+ xorl %ebx,%r14d\r
+ addl %r13d,%eax\r
+ xorl %ecx,%r15d\r
+ paddd %xmm7,%xmm1\r
+ rorl $2,%r14d\r
+ addl %eax,%r8d\r
+ addl %r15d,%eax\r
+ paddd %xmm1,%xmm6\r
+ movl %r8d,%r13d\r
+ addl %eax,%r14d\r
+ movdqa %xmm6,16(%rsp)\r
+ rorl $14,%r13d\r
+ movdqa %xmm3,%xmm4\r
+ movl %r14d,%eax\r
+ movl %r9d,%r12d\r
+ movdqa %xmm1,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r13d\r
+ xorl %r10d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %eax,%r14d\r
+.byte 102,15,58,15,226,4\r
+ andl %r8d,%r12d\r
+ xorl %r8d,%r13d\r
+.byte 102,15,58,15,248,4\r
+ addl 32(%rsp),%r11d\r
+ movl %eax,%r15d\r
+ xorl %r10d,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm4,%xmm5\r
+ xorl %ebx,%r15d\r
+ addl %r12d,%r11d\r
+ movdqa %xmm4,%xmm6\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ psrld $3,%xmm4\r
+ xorl %eax,%r14d\r
+ addl %r13d,%r11d\r
+ xorl %ebx,%edi\r
+ paddd %xmm7,%xmm2\r
+ rorl $2,%r14d\r
+ addl %r11d,%edx\r
+ psrld $7,%xmm6\r
+ addl %edi,%r11d\r
+ movl %edx,%r13d\r
+ pshufd $250,%xmm1,%xmm7\r
+ addl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ pslld $14,%xmm5\r
+ movl %r14d,%r11d\r
+ movl %r8d,%r12d\r
+ pxor %xmm6,%xmm4\r
+ rorl $9,%r14d\r
+ xorl %edx,%r13d\r
+ xorl %r9d,%r12d\r
+ rorl $5,%r13d\r
+ psrld $11,%xmm6\r
+ xorl %r11d,%r14d\r
+ pxor %xmm5,%xmm4\r
+ andl %edx,%r12d\r
+ xorl %edx,%r13d\r
+ pslld $11,%xmm5\r
+ addl 36(%rsp),%r10d\r
+ movl %r11d,%edi\r
+ pxor %xmm6,%xmm4\r
+ xorl %r9d,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm7,%xmm6\r
+ xorl %eax,%edi\r
+ addl %r12d,%r10d\r
+ pxor %xmm5,%xmm4\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r11d,%r14d\r
+ psrld $10,%xmm7\r
+ addl %r13d,%r10d\r
+ xorl %eax,%r15d\r
+ paddd %xmm4,%xmm2\r
+ rorl $2,%r14d\r
+ addl %r10d,%ecx\r
+ psrlq $17,%xmm6\r
+ addl %r15d,%r10d\r
+ movl %ecx,%r13d\r
+ addl %r10d,%r14d\r
+ pxor %xmm6,%xmm7\r
+ rorl $14,%r13d\r
+ movl %r14d,%r10d\r
+ movl %edx,%r12d\r
+ rorl $9,%r14d\r
+ psrlq $2,%xmm6\r
+ xorl %ecx,%r13d\r
+ xorl %r8d,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $5,%r13d\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r12d\r
+ pshufd $128,%xmm7,%xmm7\r
+ xorl %ecx,%r13d\r
+ addl 40(%rsp),%r9d\r
+ movl %r10d,%r15d\r
+ psrldq $8,%xmm7\r
+ xorl %r8d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r15d\r
+ addl %r12d,%r9d\r
+ rorl $6,%r13d\r
+ paddd %xmm7,%xmm2\r
+ andl %r15d,%edi\r
+ xorl %r10d,%r14d\r
+ addl %r13d,%r9d\r
+ pshufd $80,%xmm2,%xmm7\r
+ xorl %r11d,%edi\r
+ rorl $2,%r14d\r
+ addl %r9d,%ebx\r
+ movdqa %xmm7,%xmm6\r
+ addl %edi,%r9d\r
+ movl %ebx,%r13d\r
+ psrld $10,%xmm7\r
+ addl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ psrlq $17,%xmm6\r
+ movl %r14d,%r9d\r
+ movl %ecx,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %ebx,%r13d\r
+ xorl %edx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r9d,%r14d\r
+ psrlq $2,%xmm6\r
+ andl %ebx,%r12d\r
+ xorl %ebx,%r13d\r
+ addl 44(%rsp),%r8d\r
+ pxor %xmm6,%xmm7\r
+ movl %r9d,%edi\r
+ xorl %edx,%r12d\r
+ rorl $11,%r14d\r
+ pshufd $8,%xmm7,%xmm7\r
+ xorl %r10d,%edi\r
+ addl %r12d,%r8d\r
+ movdqa 64(%rbp),%xmm6\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ pslldq $8,%xmm7\r
+ xorl %r9d,%r14d\r
+ addl %r13d,%r8d\r
+ xorl %r10d,%r15d\r
+ paddd %xmm7,%xmm2\r
+ rorl $2,%r14d\r
+ addl %r8d,%eax\r
+ addl %r15d,%r8d\r
+ paddd %xmm2,%xmm6\r
+ movl %eax,%r13d\r
+ addl %r8d,%r14d\r
+ movdqa %xmm6,32(%rsp)\r
+ rorl $14,%r13d\r
+ movdqa %xmm0,%xmm4\r
+ movl %r14d,%r8d\r
+ movl %ebx,%r12d\r
+ movdqa %xmm2,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %eax,%r13d\r
+ xorl %ecx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r8d,%r14d\r
+.byte 102,15,58,15,227,4\r
+ andl %eax,%r12d\r
+ xorl %eax,%r13d\r
+.byte 102,15,58,15,249,4\r
+ addl 48(%rsp),%edx\r
+ movl %r8d,%r15d\r
+ xorl %ecx,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm4,%xmm5\r
+ xorl %r9d,%r15d\r
+ addl %r12d,%edx\r
+ movdqa %xmm4,%xmm6\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ psrld $3,%xmm4\r
+ xorl %r8d,%r14d\r
+ addl %r13d,%edx\r
+ xorl %r9d,%edi\r
+ paddd %xmm7,%xmm3\r
+ rorl $2,%r14d\r
+ addl %edx,%r11d\r
+ psrld $7,%xmm6\r
+ addl %edi,%edx\r
+ movl %r11d,%r13d\r
+ pshufd $250,%xmm2,%xmm7\r
+ addl %edx,%r14d\r
+ rorl $14,%r13d\r
+ pslld $14,%xmm5\r
+ movl %r14d,%edx\r
+ movl %eax,%r12d\r
+ pxor %xmm6,%xmm4\r
+ rorl $9,%r14d\r
+ xorl %r11d,%r13d\r
+ xorl %ebx,%r12d\r
+ rorl $5,%r13d\r
+ psrld $11,%xmm6\r
+ xorl %edx,%r14d\r
+ pxor %xmm5,%xmm4\r
+ andl %r11d,%r12d\r
+ xorl %r11d,%r13d\r
+ pslld $11,%xmm5\r
+ addl 52(%rsp),%ecx\r
+ movl %edx,%edi\r
+ pxor %xmm6,%xmm4\r
+ xorl %ebx,%r12d\r
+ rorl $11,%r14d\r
+ movdqa %xmm7,%xmm6\r
+ xorl %r8d,%edi\r
+ addl %r12d,%ecx\r
+ pxor %xmm5,%xmm4\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %edx,%r14d\r
+ psrld $10,%xmm7\r
+ addl %r13d,%ecx\r
+ xorl %r8d,%r15d\r
+ paddd %xmm4,%xmm3\r
+ rorl $2,%r14d\r
+ addl %ecx,%r10d\r
+ psrlq $17,%xmm6\r
+ addl %r15d,%ecx\r
+ movl %r10d,%r13d\r
+ addl %ecx,%r14d\r
+ pxor %xmm6,%xmm7\r
+ rorl $14,%r13d\r
+ movl %r14d,%ecx\r
+ movl %r11d,%r12d\r
+ rorl $9,%r14d\r
+ psrlq $2,%xmm6\r
+ xorl %r10d,%r13d\r
+ xorl %eax,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $5,%r13d\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r12d\r
+ pshufd $128,%xmm7,%xmm7\r
+ xorl %r10d,%r13d\r
+ addl 56(%rsp),%ebx\r
+ movl %ecx,%r15d\r
+ psrldq $8,%xmm7\r
+ xorl %eax,%r12d\r
+ rorl $11,%r14d\r
+ xorl %edx,%r15d\r
+ addl %r12d,%ebx\r
+ rorl $6,%r13d\r
+ paddd %xmm7,%xmm3\r
+ andl %r15d,%edi\r
+ xorl %ecx,%r14d\r
+ addl %r13d,%ebx\r
+ pshufd $80,%xmm3,%xmm7\r
+ xorl %edx,%edi\r
+ rorl $2,%r14d\r
+ addl %ebx,%r9d\r
+ movdqa %xmm7,%xmm6\r
+ addl %edi,%ebx\r
+ movl %r9d,%r13d\r
+ psrld $10,%xmm7\r
+ addl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ psrlq $17,%xmm6\r
+ movl %r14d,%ebx\r
+ movl %r10d,%r12d\r
+ pxor %xmm6,%xmm7\r
+ rorl $9,%r14d\r
+ xorl %r9d,%r13d\r
+ xorl %r11d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ebx,%r14d\r
+ psrlq $2,%xmm6\r
+ andl %r9d,%r12d\r
+ xorl %r9d,%r13d\r
+ addl 60(%rsp),%eax\r
+ pxor %xmm6,%xmm7\r
+ movl %ebx,%edi\r
+ xorl %r11d,%r12d\r
+ rorl $11,%r14d\r
+ pshufd $8,%xmm7,%xmm7\r
+ xorl %ecx,%edi\r
+ addl %r12d,%eax\r
+ movdqa 96(%rbp),%xmm6\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ pslldq $8,%xmm7\r
+ xorl %ebx,%r14d\r
+ addl %r13d,%eax\r
+ xorl %ecx,%r15d\r
+ paddd %xmm7,%xmm3\r
+ rorl $2,%r14d\r
+ addl %eax,%r8d\r
+ addl %r15d,%eax\r
+ paddd %xmm3,%xmm6\r
+ movl %r8d,%r13d\r
+ addl %eax,%r14d\r
+ movdqa %xmm6,48(%rsp)\r
+ cmpb $0,131(%rbp)\r
+ jne .Lssse3_00_47\r
+ rorl $14,%r13d\r
+ movl %r14d,%eax\r
+ movl %r9d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r13d\r
+ xorl %r10d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r12d\r
+ xorl %r8d,%r13d\r
+ addl 0(%rsp),%r11d\r
+ movl %eax,%r15d\r
+ xorl %r10d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r15d\r
+ addl %r12d,%r11d\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %eax,%r14d\r
+ addl %r13d,%r11d\r
+ xorl %ebx,%edi\r
+ rorl $2,%r14d\r
+ addl %r11d,%edx\r
+ addl %edi,%r11d\r
+ movl %edx,%r13d\r
+ addl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r11d\r
+ movl %r8d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %edx,%r13d\r
+ xorl %r9d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r11d,%r14d\r
+ andl %edx,%r12d\r
+ xorl %edx,%r13d\r
+ addl 4(%rsp),%r10d\r
+ movl %r11d,%edi\r
+ xorl %r9d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %eax,%edi\r
+ addl %r12d,%r10d\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r11d,%r14d\r
+ addl %r13d,%r10d\r
+ xorl %eax,%r15d\r
+ rorl $2,%r14d\r
+ addl %r10d,%ecx\r
+ addl %r15d,%r10d\r
+ movl %ecx,%r13d\r
+ addl %r10d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r10d\r
+ movl %edx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r13d\r
+ xorl %r8d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r12d\r
+ xorl %ecx,%r13d\r
+ addl 8(%rsp),%r9d\r
+ movl %r10d,%r15d\r
+ xorl %r8d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r15d\r
+ addl %r12d,%r9d\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %r10d,%r14d\r
+ addl %r13d,%r9d\r
+ xorl %r11d,%edi\r
+ rorl $2,%r14d\r
+ addl %r9d,%ebx\r
+ addl %edi,%r9d\r
+ movl %ebx,%r13d\r
+ addl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r9d\r
+ movl %ecx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%r13d\r
+ xorl %edx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%r12d\r
+ xorl %ebx,%r13d\r
+ addl 12(%rsp),%r8d\r
+ movl %r9d,%edi\r
+ xorl %edx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r10d,%edi\r
+ addl %r12d,%r8d\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r9d,%r14d\r
+ addl %r13d,%r8d\r
+ xorl %r10d,%r15d\r
+ rorl $2,%r14d\r
+ addl %r8d,%eax\r
+ addl %r15d,%r8d\r
+ movl %eax,%r13d\r
+ addl %r8d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r8d\r
+ movl %ebx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r13d\r
+ xorl %ecx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r12d\r
+ xorl %eax,%r13d\r
+ addl 16(%rsp),%edx\r
+ movl %r8d,%r15d\r
+ xorl %ecx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r15d\r
+ addl %r12d,%edx\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %r8d,%r14d\r
+ addl %r13d,%edx\r
+ xorl %r9d,%edi\r
+ rorl $2,%r14d\r
+ addl %edx,%r11d\r
+ addl %edi,%edx\r
+ movl %r11d,%r13d\r
+ addl %edx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%edx\r
+ movl %eax,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%r13d\r
+ xorl %ebx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %edx,%r14d\r
+ andl %r11d,%r12d\r
+ xorl %r11d,%r13d\r
+ addl 20(%rsp),%ecx\r
+ movl %edx,%edi\r
+ xorl %ebx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r8d,%edi\r
+ addl %r12d,%ecx\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %edx,%r14d\r
+ addl %r13d,%ecx\r
+ xorl %r8d,%r15d\r
+ rorl $2,%r14d\r
+ addl %ecx,%r10d\r
+ addl %r15d,%ecx\r
+ movl %r10d,%r13d\r
+ addl %ecx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%ecx\r
+ movl %r11d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r13d\r
+ xorl %eax,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r12d\r
+ xorl %r10d,%r13d\r
+ addl 24(%rsp),%ebx\r
+ movl %ecx,%r15d\r
+ xorl %eax,%r12d\r
+ rorl $11,%r14d\r
+ xorl %edx,%r15d\r
+ addl %r12d,%ebx\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %ecx,%r14d\r
+ addl %r13d,%ebx\r
+ xorl %edx,%edi\r
+ rorl $2,%r14d\r
+ addl %ebx,%r9d\r
+ addl %edi,%ebx\r
+ movl %r9d,%r13d\r
+ addl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%ebx\r
+ movl %r10d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%r13d\r
+ xorl %r11d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%r12d\r
+ xorl %r9d,%r13d\r
+ addl 28(%rsp),%eax\r
+ movl %ebx,%edi\r
+ xorl %r11d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %ecx,%edi\r
+ addl %r12d,%eax\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %ebx,%r14d\r
+ addl %r13d,%eax\r
+ xorl %ecx,%r15d\r
+ rorl $2,%r14d\r
+ addl %eax,%r8d\r
+ addl %r15d,%eax\r
+ movl %r8d,%r13d\r
+ addl %eax,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%eax\r
+ movl %r9d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r8d,%r13d\r
+ xorl %r10d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %eax,%r14d\r
+ andl %r8d,%r12d\r
+ xorl %r8d,%r13d\r
+ addl 32(%rsp),%r11d\r
+ movl %eax,%r15d\r
+ xorl %r10d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %ebx,%r15d\r
+ addl %r12d,%r11d\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %eax,%r14d\r
+ addl %r13d,%r11d\r
+ xorl %ebx,%edi\r
+ rorl $2,%r14d\r
+ addl %r11d,%edx\r
+ addl %edi,%r11d\r
+ movl %edx,%r13d\r
+ addl %r11d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r11d\r
+ movl %r8d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %edx,%r13d\r
+ xorl %r9d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r11d,%r14d\r
+ andl %edx,%r12d\r
+ xorl %edx,%r13d\r
+ addl 36(%rsp),%r10d\r
+ movl %r11d,%edi\r
+ xorl %r9d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %eax,%edi\r
+ addl %r12d,%r10d\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r11d,%r14d\r
+ addl %r13d,%r10d\r
+ xorl %eax,%r15d\r
+ rorl $2,%r14d\r
+ addl %r10d,%ecx\r
+ addl %r15d,%r10d\r
+ movl %ecx,%r13d\r
+ addl %r10d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r10d\r
+ movl %edx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %ecx,%r13d\r
+ xorl %r8d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r10d,%r14d\r
+ andl %ecx,%r12d\r
+ xorl %ecx,%r13d\r
+ addl 40(%rsp),%r9d\r
+ movl %r10d,%r15d\r
+ xorl %r8d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r11d,%r15d\r
+ addl %r12d,%r9d\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %r10d,%r14d\r
+ addl %r13d,%r9d\r
+ xorl %r11d,%edi\r
+ rorl $2,%r14d\r
+ addl %r9d,%ebx\r
+ addl %edi,%r9d\r
+ movl %ebx,%r13d\r
+ addl %r9d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r9d\r
+ movl %ecx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %ebx,%r13d\r
+ xorl %edx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r9d,%r14d\r
+ andl %ebx,%r12d\r
+ xorl %ebx,%r13d\r
+ addl 44(%rsp),%r8d\r
+ movl %r9d,%edi\r
+ xorl %edx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r10d,%edi\r
+ addl %r12d,%r8d\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %r9d,%r14d\r
+ addl %r13d,%r8d\r
+ xorl %r10d,%r15d\r
+ rorl $2,%r14d\r
+ addl %r8d,%eax\r
+ addl %r15d,%r8d\r
+ movl %eax,%r13d\r
+ addl %r8d,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%r8d\r
+ movl %ebx,%r12d\r
+ rorl $9,%r14d\r
+ xorl %eax,%r13d\r
+ xorl %ecx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %r8d,%r14d\r
+ andl %eax,%r12d\r
+ xorl %eax,%r13d\r
+ addl 48(%rsp),%edx\r
+ movl %r8d,%r15d\r
+ xorl %ecx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r9d,%r15d\r
+ addl %r12d,%edx\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %r8d,%r14d\r
+ addl %r13d,%edx\r
+ xorl %r9d,%edi\r
+ rorl $2,%r14d\r
+ addl %edx,%r11d\r
+ addl %edi,%edx\r
+ movl %r11d,%r13d\r
+ addl %edx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%edx\r
+ movl %eax,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r11d,%r13d\r
+ xorl %ebx,%r12d\r
+ rorl $5,%r13d\r
+ xorl %edx,%r14d\r
+ andl %r11d,%r12d\r
+ xorl %r11d,%r13d\r
+ addl 52(%rsp),%ecx\r
+ movl %edx,%edi\r
+ xorl %ebx,%r12d\r
+ rorl $11,%r14d\r
+ xorl %r8d,%edi\r
+ addl %r12d,%ecx\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %edx,%r14d\r
+ addl %r13d,%ecx\r
+ xorl %r8d,%r15d\r
+ rorl $2,%r14d\r
+ addl %ecx,%r10d\r
+ addl %r15d,%ecx\r
+ movl %r10d,%r13d\r
+ addl %ecx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%ecx\r
+ movl %r11d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r10d,%r13d\r
+ xorl %eax,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ecx,%r14d\r
+ andl %r10d,%r12d\r
+ xorl %r10d,%r13d\r
+ addl 56(%rsp),%ebx\r
+ movl %ecx,%r15d\r
+ xorl %eax,%r12d\r
+ rorl $11,%r14d\r
+ xorl %edx,%r15d\r
+ addl %r12d,%ebx\r
+ rorl $6,%r13d\r
+ andl %r15d,%edi\r
+ xorl %ecx,%r14d\r
+ addl %r13d,%ebx\r
+ xorl %edx,%edi\r
+ rorl $2,%r14d\r
+ addl %ebx,%r9d\r
+ addl %edi,%ebx\r
+ movl %r9d,%r13d\r
+ addl %ebx,%r14d\r
+ rorl $14,%r13d\r
+ movl %r14d,%ebx\r
+ movl %r10d,%r12d\r
+ rorl $9,%r14d\r
+ xorl %r9d,%r13d\r
+ xorl %r11d,%r12d\r
+ rorl $5,%r13d\r
+ xorl %ebx,%r14d\r
+ andl %r9d,%r12d\r
+ xorl %r9d,%r13d\r
+ addl 60(%rsp),%eax\r
+ movl %ebx,%edi\r
+ xorl %r11d,%r12d\r
+ rorl $11,%r14d\r
+ xorl %ecx,%edi\r
+ addl %r12d,%eax\r
+ rorl $6,%r13d\r
+ andl %edi,%r15d\r
+ xorl %ebx,%r14d\r
+ addl %r13d,%eax\r
+ xorl %ecx,%r15d\r
+ rorl $2,%r14d\r
+ addl %eax,%r8d\r
+ addl %r15d,%eax\r
+ movl %r8d,%r13d\r
+ addl %eax,%r14d\r
+ movq 64+0(%rsp),%rdi\r
+ movl %r14d,%eax\r
+\r
+ addl 0(%rdi),%eax\r
+ leaq 64(%rsi),%rsi\r
+ addl 4(%rdi),%ebx\r
+ addl 8(%rdi),%ecx\r
+ addl 12(%rdi),%edx\r
+ addl 16(%rdi),%r8d\r
+ addl 20(%rdi),%r9d\r
+ addl 24(%rdi),%r10d\r
+ addl 28(%rdi),%r11d\r
+\r
+ cmpq 64+16(%rsp),%rsi\r
+\r
+ movl %eax,0(%rdi)\r
+ movl %ebx,4(%rdi)\r
+ movl %ecx,8(%rdi)\r
+ movl %edx,12(%rdi)\r
+ movl %r8d,16(%rdi)\r
+ movl %r9d,20(%rdi)\r
+ movl %r10d,24(%rdi)\r
+ movl %r11d,28(%rdi)\r
+ jb .Lloop_ssse3\r
+\r
+ movq 88(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -48(%rsi),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue_ssse3:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha256_block_data_order_ssse3,.-sha256_block_data_order_ssse3\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/sha/asm/sha512-x86_64.pl\r
+#\r
+# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+.text\r
+\r
+\r
+.globl sha512_block_data_order\r
+.type sha512_block_data_order,@function\r
+.align 16\r
+sha512_block_data_order:\r
+.cfi_startproc\r
+ movq %rsp,%rax\r
+.cfi_def_cfa_register %rax\r
+ pushq %rbx\r
+.cfi_offset %rbx,-16\r
+ pushq %rbp\r
+.cfi_offset %rbp,-24\r
+ pushq %r12\r
+.cfi_offset %r12,-32\r
+ pushq %r13\r
+.cfi_offset %r13,-40\r
+ pushq %r14\r
+.cfi_offset %r14,-48\r
+ pushq %r15\r
+.cfi_offset %r15,-56\r
+ shlq $4,%rdx\r
+ subq $128+32,%rsp\r
+ leaq (%rsi,%rdx,8),%rdx\r
+ andq $-64,%rsp\r
+ movq %rdi,128+0(%rsp)\r
+ movq %rsi,128+8(%rsp)\r
+ movq %rdx,128+16(%rsp)\r
+ movq %rax,152(%rsp)\r
+.cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08\r
+.Lprologue:\r
+\r
+ movq 0(%rdi),%rax\r
+ movq 8(%rdi),%rbx\r
+ movq 16(%rdi),%rcx\r
+ movq 24(%rdi),%rdx\r
+ movq 32(%rdi),%r8\r
+ movq 40(%rdi),%r9\r
+ movq 48(%rdi),%r10\r
+ movq 56(%rdi),%r11\r
+ jmp .Lloop\r
+\r
+.align 16\r
+.Lloop:\r
+ movq %rbx,%rdi\r
+ leaq K512(%rip),%rbp\r
+ xorq %rcx,%rdi\r
+ movq 0(%rsi),%r12\r
+ movq %r8,%r13\r
+ movq %rax,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r9,%r15\r
+\r
+ xorq %r8,%r13\r
+ rorq $5,%r14\r
+ xorq %r10,%r15\r
+\r
+ movq %r12,0(%rsp)\r
+ xorq %rax,%r14\r
+ andq %r8,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r11,%r12\r
+ xorq %r10,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r8,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rax,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rax,%r14\r
+\r
+ xorq %rbx,%r15\r
+ rorq $14,%r13\r
+ movq %rbx,%r11\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r11\r
+ addq %r12,%rdx\r
+ addq %r12,%r11\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%r11\r
+ movq 8(%rsi),%r12\r
+ movq %rdx,%r13\r
+ movq %r11,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r8,%rdi\r
+\r
+ xorq %rdx,%r13\r
+ rorq $5,%r14\r
+ xorq %r9,%rdi\r
+\r
+ movq %r12,8(%rsp)\r
+ xorq %r11,%r14\r
+ andq %rdx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r10,%r12\r
+ xorq %r9,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rdx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r11,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r11,%r14\r
+\r
+ xorq %rax,%rdi\r
+ rorq $14,%r13\r
+ movq %rax,%r10\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r10\r
+ addq %r12,%rcx\r
+ addq %r12,%r10\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%r10\r
+ movq 16(%rsi),%r12\r
+ movq %rcx,%r13\r
+ movq %r10,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rdx,%r15\r
+\r
+ xorq %rcx,%r13\r
+ rorq $5,%r14\r
+ xorq %r8,%r15\r
+\r
+ movq %r12,16(%rsp)\r
+ xorq %r10,%r14\r
+ andq %rcx,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r9,%r12\r
+ xorq %r8,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rcx,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r10,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r10,%r14\r
+\r
+ xorq %r11,%r15\r
+ rorq $14,%r13\r
+ movq %r11,%r9\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r9\r
+ addq %r12,%rbx\r
+ addq %r12,%r9\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%r9\r
+ movq 24(%rsi),%r12\r
+ movq %rbx,%r13\r
+ movq %r9,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rcx,%rdi\r
+\r
+ xorq %rbx,%r13\r
+ rorq $5,%r14\r
+ xorq %rdx,%rdi\r
+\r
+ movq %r12,24(%rsp)\r
+ xorq %r9,%r14\r
+ andq %rbx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r8,%r12\r
+ xorq %rdx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rbx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r9,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r9,%r14\r
+\r
+ xorq %r10,%rdi\r
+ rorq $14,%r13\r
+ movq %r10,%r8\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r8\r
+ addq %r12,%rax\r
+ addq %r12,%r8\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%r8\r
+ movq 32(%rsi),%r12\r
+ movq %rax,%r13\r
+ movq %r8,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rbx,%r15\r
+\r
+ xorq %rax,%r13\r
+ rorq $5,%r14\r
+ xorq %rcx,%r15\r
+\r
+ movq %r12,32(%rsp)\r
+ xorq %r8,%r14\r
+ andq %rax,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rdx,%r12\r
+ xorq %rcx,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rax,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r8,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r8,%r14\r
+\r
+ xorq %r9,%r15\r
+ rorq $14,%r13\r
+ movq %r9,%rdx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rdx\r
+ addq %r12,%r11\r
+ addq %r12,%rdx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%rdx\r
+ movq 40(%rsi),%r12\r
+ movq %r11,%r13\r
+ movq %rdx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rax,%rdi\r
+\r
+ xorq %r11,%r13\r
+ rorq $5,%r14\r
+ xorq %rbx,%rdi\r
+\r
+ movq %r12,40(%rsp)\r
+ xorq %rdx,%r14\r
+ andq %r11,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rcx,%r12\r
+ xorq %rbx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r11,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rdx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rdx,%r14\r
+\r
+ xorq %r8,%rdi\r
+ rorq $14,%r13\r
+ movq %r8,%rcx\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rcx\r
+ addq %r12,%r10\r
+ addq %r12,%rcx\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%rcx\r
+ movq 48(%rsi),%r12\r
+ movq %r10,%r13\r
+ movq %rcx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r11,%r15\r
+\r
+ xorq %r10,%r13\r
+ rorq $5,%r14\r
+ xorq %rax,%r15\r
+\r
+ movq %r12,48(%rsp)\r
+ xorq %rcx,%r14\r
+ andq %r10,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rbx,%r12\r
+ xorq %rax,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r10,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rcx,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rcx,%r14\r
+\r
+ xorq %rdx,%r15\r
+ rorq $14,%r13\r
+ movq %rdx,%rbx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rbx\r
+ addq %r12,%r9\r
+ addq %r12,%rbx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%rbx\r
+ movq 56(%rsi),%r12\r
+ movq %r9,%r13\r
+ movq %rbx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r10,%rdi\r
+\r
+ xorq %r9,%r13\r
+ rorq $5,%r14\r
+ xorq %r11,%rdi\r
+\r
+ movq %r12,56(%rsp)\r
+ xorq %rbx,%r14\r
+ andq %r9,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rax,%r12\r
+ xorq %r11,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r9,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rbx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rbx,%r14\r
+\r
+ xorq %rcx,%rdi\r
+ rorq $14,%r13\r
+ movq %rcx,%rax\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rax\r
+ addq %r12,%r8\r
+ addq %r12,%rax\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%rax\r
+ movq 64(%rsi),%r12\r
+ movq %r8,%r13\r
+ movq %rax,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r9,%r15\r
+\r
+ xorq %r8,%r13\r
+ rorq $5,%r14\r
+ xorq %r10,%r15\r
+\r
+ movq %r12,64(%rsp)\r
+ xorq %rax,%r14\r
+ andq %r8,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r11,%r12\r
+ xorq %r10,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r8,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rax,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rax,%r14\r
+\r
+ xorq %rbx,%r15\r
+ rorq $14,%r13\r
+ movq %rbx,%r11\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r11\r
+ addq %r12,%rdx\r
+ addq %r12,%r11\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%r11\r
+ movq 72(%rsi),%r12\r
+ movq %rdx,%r13\r
+ movq %r11,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r8,%rdi\r
+\r
+ xorq %rdx,%r13\r
+ rorq $5,%r14\r
+ xorq %r9,%rdi\r
+\r
+ movq %r12,72(%rsp)\r
+ xorq %r11,%r14\r
+ andq %rdx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r10,%r12\r
+ xorq %r9,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rdx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r11,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r11,%r14\r
+\r
+ xorq %rax,%rdi\r
+ rorq $14,%r13\r
+ movq %rax,%r10\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r10\r
+ addq %r12,%rcx\r
+ addq %r12,%r10\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%r10\r
+ movq 80(%rsi),%r12\r
+ movq %rcx,%r13\r
+ movq %r10,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rdx,%r15\r
+\r
+ xorq %rcx,%r13\r
+ rorq $5,%r14\r
+ xorq %r8,%r15\r
+\r
+ movq %r12,80(%rsp)\r
+ xorq %r10,%r14\r
+ andq %rcx,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r9,%r12\r
+ xorq %r8,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rcx,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r10,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r10,%r14\r
+\r
+ xorq %r11,%r15\r
+ rorq $14,%r13\r
+ movq %r11,%r9\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r9\r
+ addq %r12,%rbx\r
+ addq %r12,%r9\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%r9\r
+ movq 88(%rsi),%r12\r
+ movq %rbx,%r13\r
+ movq %r9,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rcx,%rdi\r
+\r
+ xorq %rbx,%r13\r
+ rorq $5,%r14\r
+ xorq %rdx,%rdi\r
+\r
+ movq %r12,88(%rsp)\r
+ xorq %r9,%r14\r
+ andq %rbx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r8,%r12\r
+ xorq %rdx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rbx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r9,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r9,%r14\r
+\r
+ xorq %r10,%rdi\r
+ rorq $14,%r13\r
+ movq %r10,%r8\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r8\r
+ addq %r12,%rax\r
+ addq %r12,%r8\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%r8\r
+ movq 96(%rsi),%r12\r
+ movq %rax,%r13\r
+ movq %r8,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rbx,%r15\r
+\r
+ xorq %rax,%r13\r
+ rorq $5,%r14\r
+ xorq %rcx,%r15\r
+\r
+ movq %r12,96(%rsp)\r
+ xorq %r8,%r14\r
+ andq %rax,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rdx,%r12\r
+ xorq %rcx,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rax,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r8,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r8,%r14\r
+\r
+ xorq %r9,%r15\r
+ rorq $14,%r13\r
+ movq %r9,%rdx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rdx\r
+ addq %r12,%r11\r
+ addq %r12,%rdx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%rdx\r
+ movq 104(%rsi),%r12\r
+ movq %r11,%r13\r
+ movq %rdx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %rax,%rdi\r
+\r
+ xorq %r11,%r13\r
+ rorq $5,%r14\r
+ xorq %rbx,%rdi\r
+\r
+ movq %r12,104(%rsp)\r
+ xorq %rdx,%r14\r
+ andq %r11,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rcx,%r12\r
+ xorq %rbx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r11,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rdx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rdx,%r14\r
+\r
+ xorq %r8,%rdi\r
+ rorq $14,%r13\r
+ movq %r8,%rcx\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rcx\r
+ addq %r12,%r10\r
+ addq %r12,%rcx\r
+\r
+ leaq 24(%rbp),%rbp\r
+ addq %r14,%rcx\r
+ movq 112(%rsi),%r12\r
+ movq %r10,%r13\r
+ movq %rcx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r11,%r15\r
+\r
+ xorq %r10,%r13\r
+ rorq $5,%r14\r
+ xorq %rax,%r15\r
+\r
+ movq %r12,112(%rsp)\r
+ xorq %rcx,%r14\r
+ andq %r10,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rbx,%r12\r
+ xorq %rax,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r10,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rcx,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rcx,%r14\r
+\r
+ xorq %rdx,%r15\r
+ rorq $14,%r13\r
+ movq %rdx,%rbx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rbx\r
+ addq %r12,%r9\r
+ addq %r12,%rbx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ addq %r14,%rbx\r
+ movq 120(%rsi),%r12\r
+ movq %r9,%r13\r
+ movq %rbx,%r14\r
+ bswapq %r12\r
+ rorq $23,%r13\r
+ movq %r10,%rdi\r
+\r
+ xorq %r9,%r13\r
+ rorq $5,%r14\r
+ xorq %r11,%rdi\r
+\r
+ movq %r12,120(%rsp)\r
+ xorq %rbx,%r14\r
+ andq %r9,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rax,%r12\r
+ xorq %r11,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r9,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rbx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rbx,%r14\r
+\r
+ xorq %rcx,%rdi\r
+ rorq $14,%r13\r
+ movq %rcx,%rax\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rax\r
+ addq %r12,%r8\r
+ addq %r12,%rax\r
+\r
+ leaq 24(%rbp),%rbp\r
+ jmp .Lrounds_16_xx\r
+.align 16\r
+.Lrounds_16_xx:\r
+ movq 8(%rsp),%r13\r
+ movq 112(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rax\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 72(%rsp),%r12\r
+\r
+ addq 0(%rsp),%r12\r
+ movq %r8,%r13\r
+ addq %r15,%r12\r
+ movq %rax,%r14\r
+ rorq $23,%r13\r
+ movq %r9,%r15\r
+\r
+ xorq %r8,%r13\r
+ rorq $5,%r14\r
+ xorq %r10,%r15\r
+\r
+ movq %r12,0(%rsp)\r
+ xorq %rax,%r14\r
+ andq %r8,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r11,%r12\r
+ xorq %r10,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r8,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rax,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rax,%r14\r
+\r
+ xorq %rbx,%r15\r
+ rorq $14,%r13\r
+ movq %rbx,%r11\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r11\r
+ addq %r12,%rdx\r
+ addq %r12,%r11\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 16(%rsp),%r13\r
+ movq 120(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r11\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 80(%rsp),%r12\r
+\r
+ addq 8(%rsp),%r12\r
+ movq %rdx,%r13\r
+ addq %rdi,%r12\r
+ movq %r11,%r14\r
+ rorq $23,%r13\r
+ movq %r8,%rdi\r
+\r
+ xorq %rdx,%r13\r
+ rorq $5,%r14\r
+ xorq %r9,%rdi\r
+\r
+ movq %r12,8(%rsp)\r
+ xorq %r11,%r14\r
+ andq %rdx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r10,%r12\r
+ xorq %r9,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rdx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r11,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r11,%r14\r
+\r
+ xorq %rax,%rdi\r
+ rorq $14,%r13\r
+ movq %rax,%r10\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r10\r
+ addq %r12,%rcx\r
+ addq %r12,%r10\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 24(%rsp),%r13\r
+ movq 0(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r10\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 88(%rsp),%r12\r
+\r
+ addq 16(%rsp),%r12\r
+ movq %rcx,%r13\r
+ addq %r15,%r12\r
+ movq %r10,%r14\r
+ rorq $23,%r13\r
+ movq %rdx,%r15\r
+\r
+ xorq %rcx,%r13\r
+ rorq $5,%r14\r
+ xorq %r8,%r15\r
+\r
+ movq %r12,16(%rsp)\r
+ xorq %r10,%r14\r
+ andq %rcx,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r9,%r12\r
+ xorq %r8,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rcx,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r10,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r10,%r14\r
+\r
+ xorq %r11,%r15\r
+ rorq $14,%r13\r
+ movq %r11,%r9\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r9\r
+ addq %r12,%rbx\r
+ addq %r12,%r9\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 32(%rsp),%r13\r
+ movq 8(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r9\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 96(%rsp),%r12\r
+\r
+ addq 24(%rsp),%r12\r
+ movq %rbx,%r13\r
+ addq %rdi,%r12\r
+ movq %r9,%r14\r
+ rorq $23,%r13\r
+ movq %rcx,%rdi\r
+\r
+ xorq %rbx,%r13\r
+ rorq $5,%r14\r
+ xorq %rdx,%rdi\r
+\r
+ movq %r12,24(%rsp)\r
+ xorq %r9,%r14\r
+ andq %rbx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r8,%r12\r
+ xorq %rdx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rbx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r9,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r9,%r14\r
+\r
+ xorq %r10,%rdi\r
+ rorq $14,%r13\r
+ movq %r10,%r8\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r8\r
+ addq %r12,%rax\r
+ addq %r12,%r8\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 40(%rsp),%r13\r
+ movq 16(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r8\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 104(%rsp),%r12\r
+\r
+ addq 32(%rsp),%r12\r
+ movq %rax,%r13\r
+ addq %r15,%r12\r
+ movq %r8,%r14\r
+ rorq $23,%r13\r
+ movq %rbx,%r15\r
+\r
+ xorq %rax,%r13\r
+ rorq $5,%r14\r
+ xorq %rcx,%r15\r
+\r
+ movq %r12,32(%rsp)\r
+ xorq %r8,%r14\r
+ andq %rax,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rdx,%r12\r
+ xorq %rcx,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rax,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r8,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r8,%r14\r
+\r
+ xorq %r9,%r15\r
+ rorq $14,%r13\r
+ movq %r9,%rdx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rdx\r
+ addq %r12,%r11\r
+ addq %r12,%rdx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 48(%rsp),%r13\r
+ movq 24(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rdx\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 112(%rsp),%r12\r
+\r
+ addq 40(%rsp),%r12\r
+ movq %r11,%r13\r
+ addq %rdi,%r12\r
+ movq %rdx,%r14\r
+ rorq $23,%r13\r
+ movq %rax,%rdi\r
+\r
+ xorq %r11,%r13\r
+ rorq $5,%r14\r
+ xorq %rbx,%rdi\r
+\r
+ movq %r12,40(%rsp)\r
+ xorq %rdx,%r14\r
+ andq %r11,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rcx,%r12\r
+ xorq %rbx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r11,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rdx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rdx,%r14\r
+\r
+ xorq %r8,%rdi\r
+ rorq $14,%r13\r
+ movq %r8,%rcx\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rcx\r
+ addq %r12,%r10\r
+ addq %r12,%rcx\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 56(%rsp),%r13\r
+ movq 32(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rcx\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 120(%rsp),%r12\r
+\r
+ addq 48(%rsp),%r12\r
+ movq %r10,%r13\r
+ addq %r15,%r12\r
+ movq %rcx,%r14\r
+ rorq $23,%r13\r
+ movq %r11,%r15\r
+\r
+ xorq %r10,%r13\r
+ rorq $5,%r14\r
+ xorq %rax,%r15\r
+\r
+ movq %r12,48(%rsp)\r
+ xorq %rcx,%r14\r
+ andq %r10,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rbx,%r12\r
+ xorq %rax,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r10,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rcx,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rcx,%r14\r
+\r
+ xorq %rdx,%r15\r
+ rorq $14,%r13\r
+ movq %rdx,%rbx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rbx\r
+ addq %r12,%r9\r
+ addq %r12,%rbx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 64(%rsp),%r13\r
+ movq 40(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rbx\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 0(%rsp),%r12\r
+\r
+ addq 56(%rsp),%r12\r
+ movq %r9,%r13\r
+ addq %rdi,%r12\r
+ movq %rbx,%r14\r
+ rorq $23,%r13\r
+ movq %r10,%rdi\r
+\r
+ xorq %r9,%r13\r
+ rorq $5,%r14\r
+ xorq %r11,%rdi\r
+\r
+ movq %r12,56(%rsp)\r
+ xorq %rbx,%r14\r
+ andq %r9,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rax,%r12\r
+ xorq %r11,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r9,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rbx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rbx,%r14\r
+\r
+ xorq %rcx,%rdi\r
+ rorq $14,%r13\r
+ movq %rcx,%rax\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rax\r
+ addq %r12,%r8\r
+ addq %r12,%rax\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 72(%rsp),%r13\r
+ movq 48(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rax\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 8(%rsp),%r12\r
+\r
+ addq 64(%rsp),%r12\r
+ movq %r8,%r13\r
+ addq %r15,%r12\r
+ movq %rax,%r14\r
+ rorq $23,%r13\r
+ movq %r9,%r15\r
+\r
+ xorq %r8,%r13\r
+ rorq $5,%r14\r
+ xorq %r10,%r15\r
+\r
+ movq %r12,64(%rsp)\r
+ xorq %rax,%r14\r
+ andq %r8,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r11,%r12\r
+ xorq %r10,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r8,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rax,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rax,%r14\r
+\r
+ xorq %rbx,%r15\r
+ rorq $14,%r13\r
+ movq %rbx,%r11\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r11\r
+ addq %r12,%rdx\r
+ addq %r12,%r11\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 80(%rsp),%r13\r
+ movq 56(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r11\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 16(%rsp),%r12\r
+\r
+ addq 72(%rsp),%r12\r
+ movq %rdx,%r13\r
+ addq %rdi,%r12\r
+ movq %r11,%r14\r
+ rorq $23,%r13\r
+ movq %r8,%rdi\r
+\r
+ xorq %rdx,%r13\r
+ rorq $5,%r14\r
+ xorq %r9,%rdi\r
+\r
+ movq %r12,72(%rsp)\r
+ xorq %r11,%r14\r
+ andq %rdx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r10,%r12\r
+ xorq %r9,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rdx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r11,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r11,%r14\r
+\r
+ xorq %rax,%rdi\r
+ rorq $14,%r13\r
+ movq %rax,%r10\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r10\r
+ addq %r12,%rcx\r
+ addq %r12,%r10\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 88(%rsp),%r13\r
+ movq 64(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r10\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 24(%rsp),%r12\r
+\r
+ addq 80(%rsp),%r12\r
+ movq %rcx,%r13\r
+ addq %r15,%r12\r
+ movq %r10,%r14\r
+ rorq $23,%r13\r
+ movq %rdx,%r15\r
+\r
+ xorq %rcx,%r13\r
+ rorq $5,%r14\r
+ xorq %r8,%r15\r
+\r
+ movq %r12,80(%rsp)\r
+ xorq %r10,%r14\r
+ andq %rcx,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %r9,%r12\r
+ xorq %r8,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rcx,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r10,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r10,%r14\r
+\r
+ xorq %r11,%r15\r
+ rorq $14,%r13\r
+ movq %r11,%r9\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%r9\r
+ addq %r12,%rbx\r
+ addq %r12,%r9\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 96(%rsp),%r13\r
+ movq 72(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r9\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 32(%rsp),%r12\r
+\r
+ addq 88(%rsp),%r12\r
+ movq %rbx,%r13\r
+ addq %rdi,%r12\r
+ movq %r9,%r14\r
+ rorq $23,%r13\r
+ movq %rcx,%rdi\r
+\r
+ xorq %rbx,%r13\r
+ rorq $5,%r14\r
+ xorq %rdx,%rdi\r
+\r
+ movq %r12,88(%rsp)\r
+ xorq %r9,%r14\r
+ andq %rbx,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %r8,%r12\r
+ xorq %rdx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %rbx,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %r9,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %r9,%r14\r
+\r
+ xorq %r10,%rdi\r
+ rorq $14,%r13\r
+ movq %r10,%r8\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%r8\r
+ addq %r12,%rax\r
+ addq %r12,%r8\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 104(%rsp),%r13\r
+ movq 80(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%r8\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 40(%rsp),%r12\r
+\r
+ addq 96(%rsp),%r12\r
+ movq %rax,%r13\r
+ addq %r15,%r12\r
+ movq %r8,%r14\r
+ rorq $23,%r13\r
+ movq %rbx,%r15\r
+\r
+ xorq %rax,%r13\r
+ rorq $5,%r14\r
+ xorq %rcx,%r15\r
+\r
+ movq %r12,96(%rsp)\r
+ xorq %r8,%r14\r
+ andq %rax,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rdx,%r12\r
+ xorq %rcx,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %rax,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %r8,%r15\r
+ addq (%rbp),%r12\r
+ xorq %r8,%r14\r
+\r
+ xorq %r9,%r15\r
+ rorq $14,%r13\r
+ movq %r9,%rdx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rdx\r
+ addq %r12,%r11\r
+ addq %r12,%rdx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 112(%rsp),%r13\r
+ movq 88(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rdx\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 48(%rsp),%r12\r
+\r
+ addq 104(%rsp),%r12\r
+ movq %r11,%r13\r
+ addq %rdi,%r12\r
+ movq %rdx,%r14\r
+ rorq $23,%r13\r
+ movq %rax,%rdi\r
+\r
+ xorq %r11,%r13\r
+ rorq $5,%r14\r
+ xorq %rbx,%rdi\r
+\r
+ movq %r12,104(%rsp)\r
+ xorq %rdx,%r14\r
+ andq %r11,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rcx,%r12\r
+ xorq %rbx,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r11,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rdx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rdx,%r14\r
+\r
+ xorq %r8,%rdi\r
+ rorq $14,%r13\r
+ movq %r8,%rcx\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rcx\r
+ addq %r12,%r10\r
+ addq %r12,%rcx\r
+\r
+ leaq 24(%rbp),%rbp\r
+ movq 120(%rsp),%r13\r
+ movq 96(%rsp),%r15\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rcx\r
+ movq %r15,%r14\r
+ rorq $42,%r15\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%r15\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%r15\r
+ xorq %r13,%r12\r
+ xorq %r14,%r15\r
+ addq 56(%rsp),%r12\r
+\r
+ addq 112(%rsp),%r12\r
+ movq %r10,%r13\r
+ addq %r15,%r12\r
+ movq %rcx,%r14\r
+ rorq $23,%r13\r
+ movq %r11,%r15\r
+\r
+ xorq %r10,%r13\r
+ rorq $5,%r14\r
+ xorq %rax,%r15\r
+\r
+ movq %r12,112(%rsp)\r
+ xorq %rcx,%r14\r
+ andq %r10,%r15\r
+\r
+ rorq $4,%r13\r
+ addq %rbx,%r12\r
+ xorq %rax,%r15\r
+\r
+ rorq $6,%r14\r
+ xorq %r10,%r13\r
+ addq %r15,%r12\r
+\r
+ movq %rcx,%r15\r
+ addq (%rbp),%r12\r
+ xorq %rcx,%r14\r
+\r
+ xorq %rdx,%r15\r
+ rorq $14,%r13\r
+ movq %rdx,%rbx\r
+\r
+ andq %r15,%rdi\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %rdi,%rbx\r
+ addq %r12,%r9\r
+ addq %r12,%rbx\r
+\r
+ leaq 8(%rbp),%rbp\r
+ movq 0(%rsp),%r13\r
+ movq 104(%rsp),%rdi\r
+\r
+ movq %r13,%r12\r
+ rorq $7,%r13\r
+ addq %r14,%rbx\r
+ movq %rdi,%r14\r
+ rorq $42,%rdi\r
+\r
+ xorq %r12,%r13\r
+ shrq $7,%r12\r
+ rorq $1,%r13\r
+ xorq %r14,%rdi\r
+ shrq $6,%r14\r
+\r
+ rorq $19,%rdi\r
+ xorq %r13,%r12\r
+ xorq %r14,%rdi\r
+ addq 64(%rsp),%r12\r
+\r
+ addq 120(%rsp),%r12\r
+ movq %r9,%r13\r
+ addq %rdi,%r12\r
+ movq %rbx,%r14\r
+ rorq $23,%r13\r
+ movq %r10,%rdi\r
+\r
+ xorq %r9,%r13\r
+ rorq $5,%r14\r
+ xorq %r11,%rdi\r
+\r
+ movq %r12,120(%rsp)\r
+ xorq %rbx,%r14\r
+ andq %r9,%rdi\r
+\r
+ rorq $4,%r13\r
+ addq %rax,%r12\r
+ xorq %r11,%rdi\r
+\r
+ rorq $6,%r14\r
+ xorq %r9,%r13\r
+ addq %rdi,%r12\r
+\r
+ movq %rbx,%rdi\r
+ addq (%rbp),%r12\r
+ xorq %rbx,%r14\r
+\r
+ xorq %rcx,%rdi\r
+ rorq $14,%r13\r
+ movq %rcx,%rax\r
+\r
+ andq %rdi,%r15\r
+ rorq $28,%r14\r
+ addq %r13,%r12\r
+\r
+ xorq %r15,%rax\r
+ addq %r12,%r8\r
+ addq %r12,%rax\r
+\r
+ leaq 24(%rbp),%rbp\r
+ cmpb $0,7(%rbp)\r
+ jnz .Lrounds_16_xx\r
+\r
+ movq 128+0(%rsp),%rdi\r
+ addq %r14,%rax\r
+ leaq 128(%rsi),%rsi\r
+\r
+ addq 0(%rdi),%rax\r
+ addq 8(%rdi),%rbx\r
+ addq 16(%rdi),%rcx\r
+ addq 24(%rdi),%rdx\r
+ addq 32(%rdi),%r8\r
+ addq 40(%rdi),%r9\r
+ addq 48(%rdi),%r10\r
+ addq 56(%rdi),%r11\r
+\r
+ cmpq 128+16(%rsp),%rsi\r
+\r
+ movq %rax,0(%rdi)\r
+ movq %rbx,8(%rdi)\r
+ movq %rcx,16(%rdi)\r
+ movq %rdx,24(%rdi)\r
+ movq %r8,32(%rdi)\r
+ movq %r9,40(%rdi)\r
+ movq %r10,48(%rdi)\r
+ movq %r11,56(%rdi)\r
+ jb .Lloop\r
+\r
+ movq 152(%rsp),%rsi\r
+.cfi_def_cfa %rsi,8\r
+ movq -48(%rsi),%r15\r
+.cfi_restore %r15\r
+ movq -40(%rsi),%r14\r
+.cfi_restore %r14\r
+ movq -32(%rsi),%r13\r
+.cfi_restore %r13\r
+ movq -24(%rsi),%r12\r
+.cfi_restore %r12\r
+ movq -16(%rsi),%rbp\r
+.cfi_restore %rbp\r
+ movq -8(%rsi),%rbx\r
+.cfi_restore %rbx\r
+ leaq (%rsi),%rsp\r
+.cfi_def_cfa_register %rsp\r
+.Lepilogue:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size sha512_block_data_order,.-sha512_block_data_order\r
+.align 64\r
+.type K512,@object\r
+K512:\r
+.quad 0x428a2f98d728ae22,0x7137449123ef65cd\r
+.quad 0x428a2f98d728ae22,0x7137449123ef65cd\r
+.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc\r
+.quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc\r
+.quad 0x3956c25bf348b538,0x59f111f1b605d019\r
+.quad 0x3956c25bf348b538,0x59f111f1b605d019\r
+.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118\r
+.quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118\r
+.quad 0xd807aa98a3030242,0x12835b0145706fbe\r
+.quad 0xd807aa98a3030242,0x12835b0145706fbe\r
+.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2\r
+.quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2\r
+.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1\r
+.quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1\r
+.quad 0x9bdc06a725c71235,0xc19bf174cf692694\r
+.quad 0x9bdc06a725c71235,0xc19bf174cf692694\r
+.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3\r
+.quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3\r
+.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65\r
+.quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65\r
+.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483\r
+.quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483\r
+.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5\r
+.quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5\r
+.quad 0x983e5152ee66dfab,0xa831c66d2db43210\r
+.quad 0x983e5152ee66dfab,0xa831c66d2db43210\r
+.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4\r
+.quad 0xb00327c898fb213f,0xbf597fc7beef0ee4\r
+.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725\r
+.quad 0xc6e00bf33da88fc2,0xd5a79147930aa725\r
+.quad 0x06ca6351e003826f,0x142929670a0e6e70\r
+.quad 0x06ca6351e003826f,0x142929670a0e6e70\r
+.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926\r
+.quad 0x27b70a8546d22ffc,0x2e1b21385c26c926\r
+.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df\r
+.quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df\r
+.quad 0x650a73548baf63de,0x766a0abb3c77b2a8\r
+.quad 0x650a73548baf63de,0x766a0abb3c77b2a8\r
+.quad 0x81c2c92e47edaee6,0x92722c851482353b\r
+.quad 0x81c2c92e47edaee6,0x92722c851482353b\r
+.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001\r
+.quad 0xa2bfe8a14cf10364,0xa81a664bbc423001\r
+.quad 0xc24b8b70d0f89791,0xc76c51a30654be30\r
+.quad 0xc24b8b70d0f89791,0xc76c51a30654be30\r
+.quad 0xd192e819d6ef5218,0xd69906245565a910\r
+.quad 0xd192e819d6ef5218,0xd69906245565a910\r
+.quad 0xf40e35855771202a,0x106aa07032bbd1b8\r
+.quad 0xf40e35855771202a,0x106aa07032bbd1b8\r
+.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53\r
+.quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53\r
+.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8\r
+.quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8\r
+.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb\r
+.quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb\r
+.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3\r
+.quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3\r
+.quad 0x748f82ee5defb2fc,0x78a5636f43172f60\r
+.quad 0x748f82ee5defb2fc,0x78a5636f43172f60\r
+.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec\r
+.quad 0x84c87814a1f0ab72,0x8cc702081a6439ec\r
+.quad 0x90befffa23631e28,0xa4506cebde82bde9\r
+.quad 0x90befffa23631e28,0xa4506cebde82bde9\r
+.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b\r
+.quad 0xbef9a3f7b2c67915,0xc67178f2e372532b\r
+.quad 0xca273eceea26619c,0xd186b8c721c0c207\r
+.quad 0xca273eceea26619c,0xd186b8c721c0c207\r
+.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178\r
+.quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178\r
+.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6\r
+.quad 0x06f067aa72176fba,0x0a637dc5a2c898a6\r
+.quad 0x113f9804bef90dae,0x1b710b35131c471b\r
+.quad 0x113f9804bef90dae,0x1b710b35131c471b\r
+.quad 0x28db77f523047d84,0x32caab7b40c72493\r
+.quad 0x28db77f523047d84,0x32caab7b40c72493\r
+.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c\r
+.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c\r
+.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a\r
+.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a\r
+.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817\r
+.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817\r
+\r
+.quad 0x0001020304050607,0x08090a0b0c0d0e0f\r
+.quad 0x0001020304050607,0x08090a0b0c0d0e0f\r
+.byte 83,72,65,53,49,50,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,103,62,0\r
--- /dev/null
+# WARNING: do not edit!\r
+# Generated from openssl/crypto/x86_64cpuid.pl\r
+#\r
+# Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+#\r
+# Licensed under the OpenSSL license (the "License"). You may not use\r
+# this file except in compliance with the License. You can obtain a copy\r
+# in the file LICENSE in the source distribution or at\r
+# https://www.openssl.org/source/license.html\r
+\r
+\r
+.hidden OPENSSL_cpuid_setup\r
+.section .init\r
+ call OPENSSL_cpuid_setup\r
+\r
+.hidden OPENSSL_ia32cap_P\r
+.comm OPENSSL_ia32cap_P,16,4\r
+\r
+.text\r
+\r
+.globl OPENSSL_atomic_add\r
+.type OPENSSL_atomic_add,@function\r
+.align 16\r
+OPENSSL_atomic_add:\r
+.cfi_startproc\r
+ movl (%rdi),%eax\r
+.Lspin: leaq (%rsi,%rax,1),%r8\r
+.byte 0xf0\r
+ cmpxchgl %r8d,(%rdi)\r
+ jne .Lspin\r
+ movl %r8d,%eax\r
+.byte 0x48,0x98\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_atomic_add,.-OPENSSL_atomic_add\r
+\r
+.globl OPENSSL_rdtsc\r
+.type OPENSSL_rdtsc,@function\r
+.align 16\r
+OPENSSL_rdtsc:\r
+.cfi_startproc\r
+ rdtsc\r
+ shlq $32,%rdx\r
+ orq %rdx,%rax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_rdtsc,.-OPENSSL_rdtsc\r
+\r
+.globl OPENSSL_ia32_cpuid\r
+.type OPENSSL_ia32_cpuid,@function\r
+.align 16\r
+OPENSSL_ia32_cpuid:\r
+.cfi_startproc\r
+ movq %rbx,%r8\r
+.cfi_register %rbx,%r8\r
+\r
+ xorl %eax,%eax\r
+ movq %rax,8(%rdi)\r
+ cpuid\r
+ movl %eax,%r11d\r
+\r
+ xorl %eax,%eax\r
+ cmpl $0x756e6547,%ebx\r
+ setne %al\r
+ movl %eax,%r9d\r
+ cmpl $0x49656e69,%edx\r
+ setne %al\r
+ orl %eax,%r9d\r
+ cmpl $0x6c65746e,%ecx\r
+ setne %al\r
+ orl %eax,%r9d\r
+ jz .Lintel\r
+\r
+ cmpl $0x68747541,%ebx\r
+ setne %al\r
+ movl %eax,%r10d\r
+ cmpl $0x69746E65,%edx\r
+ setne %al\r
+ orl %eax,%r10d\r
+ cmpl $0x444D4163,%ecx\r
+ setne %al\r
+ orl %eax,%r10d\r
+ jnz .Lintel\r
+\r
+\r
+ movl $0x80000000,%eax\r
+ cpuid\r
+ cmpl $0x80000001,%eax\r
+ jb .Lintel\r
+ movl %eax,%r10d\r
+ movl $0x80000001,%eax\r
+ cpuid\r
+ orl %ecx,%r9d\r
+ andl $0x00000801,%r9d\r
+\r
+ cmpl $0x80000008,%r10d\r
+ jb .Lintel\r
+\r
+ movl $0x80000008,%eax\r
+ cpuid\r
+ movzbq %cl,%r10\r
+ incq %r10\r
+\r
+ movl $1,%eax\r
+ cpuid\r
+ btl $28,%edx\r
+ jnc .Lgeneric\r
+ shrl $16,%ebx\r
+ cmpb %r10b,%bl\r
+ ja .Lgeneric\r
+ andl $0xefffffff,%edx\r
+ jmp .Lgeneric\r
+\r
+.Lintel:\r
+ cmpl $4,%r11d\r
+ movl $-1,%r10d\r
+ jb .Lnocacheinfo\r
+\r
+ movl $4,%eax\r
+ movl $0,%ecx\r
+ cpuid\r
+ movl %eax,%r10d\r
+ shrl $14,%r10d\r
+ andl $0xfff,%r10d\r
+\r
+.Lnocacheinfo:\r
+ movl $1,%eax\r
+ cpuid\r
+ movd %eax,%xmm0\r
+ andl $0xbfefffff,%edx\r
+ cmpl $0,%r9d\r
+ jne .Lnotintel\r
+ orl $0x40000000,%edx\r
+ andb $15,%ah\r
+ cmpb $15,%ah\r
+ jne .LnotP4\r
+ orl $0x00100000,%edx\r
+.LnotP4:\r
+ cmpb $6,%ah\r
+ jne .Lnotintel\r
+ andl $0x0fff0ff0,%eax\r
+ cmpl $0x00050670,%eax\r
+ je .Lknights\r
+ cmpl $0x00080650,%eax\r
+ jne .Lnotintel\r
+.Lknights:\r
+ andl $0xfbffffff,%ecx\r
+\r
+.Lnotintel:\r
+ btl $28,%edx\r
+ jnc .Lgeneric\r
+ andl $0xefffffff,%edx\r
+ cmpl $0,%r10d\r
+ je .Lgeneric\r
+\r
+ orl $0x10000000,%edx\r
+ shrl $16,%ebx\r
+ cmpb $1,%bl\r
+ ja .Lgeneric\r
+ andl $0xefffffff,%edx\r
+.Lgeneric:\r
+ andl $0x00000800,%r9d\r
+ andl $0xfffff7ff,%ecx\r
+ orl %ecx,%r9d\r
+\r
+ movl %edx,%r10d\r
+\r
+ cmpl $7,%r11d\r
+ jb .Lno_extended_info\r
+ movl $7,%eax\r
+ xorl %ecx,%ecx\r
+ cpuid\r
+ btl $26,%r9d\r
+ jc .Lnotknights\r
+ andl $0xfff7ffff,%ebx\r
+.Lnotknights:\r
+ movd %xmm0,%eax\r
+ andl $0x0fff0ff0,%eax\r
+ cmpl $0x00050650,%eax\r
+ jne .Lnotskylakex\r
+ andl $0xfffeffff,%ebx\r
+\r
+.Lnotskylakex:\r
+ movl %ebx,8(%rdi)\r
+ movl %ecx,12(%rdi)\r
+.Lno_extended_info:\r
+\r
+ btl $27,%r9d\r
+ jnc .Lclear_avx\r
+ xorl %ecx,%ecx\r
+.byte 0x0f,0x01,0xd0\r
+ andl $0xe6,%eax\r
+ cmpl $0xe6,%eax\r
+ je .Ldone\r
+ andl $0x3fdeffff,8(%rdi)\r
+\r
+\r
+\r
+\r
+ andl $6,%eax\r
+ cmpl $6,%eax\r
+ je .Ldone\r
+.Lclear_avx:\r
+ movl $0xefffe7ff,%eax\r
+ andl %eax,%r9d\r
+ movl $0x3fdeffdf,%eax\r
+ andl %eax,8(%rdi)\r
+.Ldone:\r
+ shlq $32,%r9\r
+ movl %r10d,%eax\r
+ movq %r8,%rbx\r
+.cfi_restore %rbx\r
+ orq %r9,%rax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid\r
+\r
+.globl OPENSSL_cleanse\r
+.type OPENSSL_cleanse,@function\r
+.align 16\r
+OPENSSL_cleanse:\r
+.cfi_startproc\r
+ xorq %rax,%rax\r
+ cmpq $15,%rsi\r
+ jae .Lot\r
+ cmpq $0,%rsi\r
+ je .Lret\r
+.Little:\r
+ movb %al,(%rdi)\r
+ subq $1,%rsi\r
+ leaq 1(%rdi),%rdi\r
+ jnz .Little\r
+.Lret:\r
+ .byte 0xf3,0xc3\r
+.align 16\r
+.Lot:\r
+ testq $7,%rdi\r
+ jz .Laligned\r
+ movb %al,(%rdi)\r
+ leaq -1(%rsi),%rsi\r
+ leaq 1(%rdi),%rdi\r
+ jmp .Lot\r
+.Laligned:\r
+ movq %rax,(%rdi)\r
+ leaq -8(%rsi),%rsi\r
+ testq $-8,%rsi\r
+ leaq 8(%rdi),%rdi\r
+ jnz .Laligned\r
+ cmpq $0,%rsi\r
+ jne .Little\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_cleanse,.-OPENSSL_cleanse\r
+\r
+.globl CRYPTO_memcmp\r
+.type CRYPTO_memcmp,@function\r
+.align 16\r
+CRYPTO_memcmp:\r
+.cfi_startproc\r
+ xorq %rax,%rax\r
+ xorq %r10,%r10\r
+ cmpq $0,%rdx\r
+ je .Lno_data\r
+ cmpq $16,%rdx\r
+ jne .Loop_cmp\r
+ movq (%rdi),%r10\r
+ movq 8(%rdi),%r11\r
+ movq $1,%rdx\r
+ xorq (%rsi),%r10\r
+ xorq 8(%rsi),%r11\r
+ orq %r11,%r10\r
+ cmovnzq %rdx,%rax\r
+ .byte 0xf3,0xc3\r
+\r
+.align 16\r
+.Loop_cmp:\r
+ movb (%rdi),%r10b\r
+ leaq 1(%rdi),%rdi\r
+ xorb (%rsi),%r10b\r
+ leaq 1(%rsi),%rsi\r
+ orb %r10b,%al\r
+ decq %rdx\r
+ jnz .Loop_cmp\r
+ negq %rax\r
+ shrq $63,%rax\r
+.Lno_data:\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size CRYPTO_memcmp,.-CRYPTO_memcmp\r
+.globl OPENSSL_wipe_cpu\r
+.type OPENSSL_wipe_cpu,@function\r
+.align 16\r
+OPENSSL_wipe_cpu:\r
+.cfi_startproc\r
+ pxor %xmm0,%xmm0\r
+ pxor %xmm1,%xmm1\r
+ pxor %xmm2,%xmm2\r
+ pxor %xmm3,%xmm3\r
+ pxor %xmm4,%xmm4\r
+ pxor %xmm5,%xmm5\r
+ pxor %xmm6,%xmm6\r
+ pxor %xmm7,%xmm7\r
+ pxor %xmm8,%xmm8\r
+ pxor %xmm9,%xmm9\r
+ pxor %xmm10,%xmm10\r
+ pxor %xmm11,%xmm11\r
+ pxor %xmm12,%xmm12\r
+ pxor %xmm13,%xmm13\r
+ pxor %xmm14,%xmm14\r
+ pxor %xmm15,%xmm15\r
+ xorq %rcx,%rcx\r
+ xorq %rdx,%rdx\r
+ xorq %rsi,%rsi\r
+ xorq %rdi,%rdi\r
+ xorq %r8,%r8\r
+ xorq %r9,%r9\r
+ xorq %r10,%r10\r
+ xorq %r11,%r11\r
+ leaq 8(%rsp),%rax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu\r
+.globl OPENSSL_instrument_bus\r
+.type OPENSSL_instrument_bus,@function\r
+.align 16\r
+OPENSSL_instrument_bus:\r
+.cfi_startproc\r
+ movq %rdi,%r10\r
+ movq %rsi,%rcx\r
+ movq %rsi,%r11\r
+\r
+ rdtsc\r
+ movl %eax,%r8d\r
+ movl $0,%r9d\r
+ clflush (%r10)\r
+.byte 0xf0\r
+ addl %r9d,(%r10)\r
+ jmp .Loop\r
+.align 16\r
+.Loop: rdtsc\r
+ movl %eax,%edx\r
+ subl %r8d,%eax\r
+ movl %edx,%r8d\r
+ movl %eax,%r9d\r
+ clflush (%r10)\r
+.byte 0xf0\r
+ addl %eax,(%r10)\r
+ leaq 4(%r10),%r10\r
+ subq $1,%rcx\r
+ jnz .Loop\r
+\r
+ movq %r11,%rax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus\r
+\r
+.globl OPENSSL_instrument_bus2\r
+.type OPENSSL_instrument_bus2,@function\r
+.align 16\r
+OPENSSL_instrument_bus2:\r
+.cfi_startproc\r
+ movq %rdi,%r10\r
+ movq %rsi,%rcx\r
+ movq %rdx,%r11\r
+ movq %rcx,8(%rsp)\r
+\r
+ rdtsc\r
+ movl %eax,%r8d\r
+ movl $0,%r9d\r
+\r
+ clflush (%r10)\r
+.byte 0xf0\r
+ addl %r9d,(%r10)\r
+\r
+ rdtsc\r
+ movl %eax,%edx\r
+ subl %r8d,%eax\r
+ movl %edx,%r8d\r
+ movl %eax,%r9d\r
+.Loop2:\r
+ clflush (%r10)\r
+.byte 0xf0\r
+ addl %eax,(%r10)\r
+\r
+ subq $1,%r11\r
+ jz .Ldone2\r
+\r
+ rdtsc\r
+ movl %eax,%edx\r
+ subl %r8d,%eax\r
+ movl %edx,%r8d\r
+ cmpl %r9d,%eax\r
+ movl %eax,%r9d\r
+ movl $0,%edx\r
+ setne %dl\r
+ subq %rdx,%rcx\r
+ leaq (%r10,%rdx,4),%r10\r
+ jnz .Loop2\r
+\r
+.Ldone2:\r
+ movq 8(%rsp),%rax\r
+ subq %rcx,%rax\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2\r
+.globl OPENSSL_ia32_rdrand_bytes\r
+.type OPENSSL_ia32_rdrand_bytes,@function\r
+.align 16\r
+OPENSSL_ia32_rdrand_bytes:\r
+.cfi_startproc\r
+ xorq %rax,%rax\r
+ cmpq $0,%rsi\r
+ je .Ldone_rdrand_bytes\r
+\r
+ movq $8,%r11\r
+.Loop_rdrand_bytes:\r
+.byte 73,15,199,242\r
+ jc .Lbreak_rdrand_bytes\r
+ decq %r11\r
+ jnz .Loop_rdrand_bytes\r
+ jmp .Ldone_rdrand_bytes\r
+\r
+.align 16\r
+.Lbreak_rdrand_bytes:\r
+ cmpq $8,%rsi\r
+ jb .Ltail_rdrand_bytes\r
+ movq %r10,(%rdi)\r
+ leaq 8(%rdi),%rdi\r
+ addq $8,%rax\r
+ subq $8,%rsi\r
+ jz .Ldone_rdrand_bytes\r
+ movq $8,%r11\r
+ jmp .Loop_rdrand_bytes\r
+\r
+.align 16\r
+.Ltail_rdrand_bytes:\r
+ movb %r10b,(%rdi)\r
+ leaq 1(%rdi),%rdi\r
+ incq %rax\r
+ shrq $8,%r10\r
+ decq %rsi\r
+ jnz .Ltail_rdrand_bytes\r
+\r
+.Ldone_rdrand_bytes:\r
+ xorq %r10,%r10\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes\r
+.globl OPENSSL_ia32_rdseed_bytes\r
+.type OPENSSL_ia32_rdseed_bytes,@function\r
+.align 16\r
+OPENSSL_ia32_rdseed_bytes:\r
+.cfi_startproc\r
+ xorq %rax,%rax\r
+ cmpq $0,%rsi\r
+ je .Ldone_rdseed_bytes\r
+\r
+ movq $8,%r11\r
+.Loop_rdseed_bytes:\r
+.byte 73,15,199,250\r
+ jc .Lbreak_rdseed_bytes\r
+ decq %r11\r
+ jnz .Loop_rdseed_bytes\r
+ jmp .Ldone_rdseed_bytes\r
+\r
+.align 16\r
+.Lbreak_rdseed_bytes:\r
+ cmpq $8,%rsi\r
+ jb .Ltail_rdseed_bytes\r
+ movq %r10,(%rdi)\r
+ leaq 8(%rdi),%rdi\r
+ addq $8,%rax\r
+ subq $8,%rsi\r
+ jz .Ldone_rdseed_bytes\r
+ movq $8,%r11\r
+ jmp .Loop_rdseed_bytes\r
+\r
+.align 16\r
+.Ltail_rdseed_bytes:\r
+ movb %r10b,(%rdi)\r
+ leaq 1(%rdi),%rdi\r
+ incq %rax\r
+ shrq $8,%r10\r
+ decq %rsi\r
+ jnz .Ltail_rdseed_bytes\r
+\r
+.Ldone_rdseed_bytes:\r
+ xorq %r10,%r10\r
+ .byte 0xf3,0xc3\r
+.cfi_endproc\r
+.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes\r