Index: third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm |
diff --git a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm |
index 0f5361a1b54d5e5dab0a18bb790020c572a771f5..168f78db3f491345fbaf5e296298db00e13c559d 100644 |
--- a/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm |
+++ b/third_party/boringssl/win-x86_64/crypto/sha/sha1-x86_64.asm |
@@ -24,6 +24,11 @@ $L$SEH_begin_sha1_block_data_order: |
mov r10d,DWORD[((OPENSSL_ia32cap_P+8))] |
test r8d,512 |
jz NEAR $L$ialu |
+ and r8d,268435456 |
+ and r9d,1073741824 |
+ or r8d,r9d |
+ cmp r8d,1342177280 |
+ je NEAR _avx_shortcut |
jmp NEAR _ssse3_shortcut |
ALIGN 16 |
@@ -2445,6 +2450,1146 @@ $L$epilogue_ssse3: |
mov rsi,QWORD[16+rsp] |
DB 0F3h,0C3h ;repret |
$L$SEH_end_sha1_block_data_order_ssse3: |
+ |
+ALIGN 16 |
+sha1_block_data_order_avx: |
+ mov QWORD[8+rsp],rdi ;WIN64 prologue |
+ mov QWORD[16+rsp],rsi |
+ mov rax,rsp |
+$L$SEH_begin_sha1_block_data_order_avx: |
+ mov rdi,rcx |
+ mov rsi,rdx |
+ mov rdx,r8 |
+ |
+ |
+_avx_shortcut: |
+ mov rax,rsp |
+ push rbx |
+ push rbp |
+ push r12 |
+ push r13 |
+ push r14 |
+ lea rsp,[((-160))+rsp] |
+ vzeroupper |
+ vmovaps XMMWORD[(-40-96)+rax],xmm6 |
+ vmovaps XMMWORD[(-40-80)+rax],xmm7 |
+ vmovaps XMMWORD[(-40-64)+rax],xmm8 |
+ vmovaps XMMWORD[(-40-48)+rax],xmm9 |
+ vmovaps XMMWORD[(-40-32)+rax],xmm10 |
+ vmovaps XMMWORD[(-40-16)+rax],xmm11 |
+$L$prologue_avx: |
+ mov r14,rax |
+ and rsp,-64 |
+ mov r8,rdi |
+ mov r9,rsi |
+ mov r10,rdx |
+ |
+ shl r10,6 |
+ add r10,r9 |
+ lea r11,[((K_XX_XX+64))] |
+ |
+ mov eax,DWORD[r8] |
+ mov ebx,DWORD[4+r8] |
+ mov ecx,DWORD[8+r8] |
+ mov edx,DWORD[12+r8] |
+ mov esi,ebx |
+ mov ebp,DWORD[16+r8] |
+ mov edi,ecx |
+ xor edi,edx |
+ and esi,edi |
+ |
+ vmovdqa xmm6,XMMWORD[64+r11] |
+ vmovdqa xmm11,XMMWORD[((-64))+r11] |
+ vmovdqu xmm0,XMMWORD[r9] |
+ vmovdqu xmm1,XMMWORD[16+r9] |
+ vmovdqu xmm2,XMMWORD[32+r9] |
+ vmovdqu xmm3,XMMWORD[48+r9] |
+ vpshufb xmm0,xmm0,xmm6 |
+ add r9,64 |
+ vpshufb xmm1,xmm1,xmm6 |
+ vpshufb xmm2,xmm2,xmm6 |
+ vpshufb xmm3,xmm3,xmm6 |
+ vpaddd xmm4,xmm0,xmm11 |
+ vpaddd xmm5,xmm1,xmm11 |
+ vpaddd xmm6,xmm2,xmm11 |
+ vmovdqa XMMWORD[rsp],xmm4 |
+ vmovdqa XMMWORD[16+rsp],xmm5 |
+ vmovdqa XMMWORD[32+rsp],xmm6 |
+ jmp NEAR $L$oop_avx |
+ALIGN 16 |
+$L$oop_avx: |
+ shrd ebx,ebx,2 |
+ xor esi,edx |
+ vpalignr xmm4,xmm1,xmm0,8 |
+ mov edi,eax |
+ add ebp,DWORD[rsp] |
+ vpaddd xmm9,xmm11,xmm3 |
+ xor ebx,ecx |
+ shld eax,eax,5 |
+ vpsrldq xmm8,xmm3,4 |
+ add ebp,esi |
+ and edi,ebx |
+ vpxor xmm4,xmm4,xmm0 |
+ xor ebx,ecx |
+ add ebp,eax |
+ vpxor xmm8,xmm8,xmm2 |
+ shrd eax,eax,7 |
+ xor edi,ecx |
+ mov esi,ebp |
+ add edx,DWORD[4+rsp] |
+ vpxor xmm4,xmm4,xmm8 |
+ xor eax,ebx |
+ shld ebp,ebp,5 |
+ vmovdqa XMMWORD[48+rsp],xmm9 |
+ add edx,edi |
+ and esi,eax |
+ vpsrld xmm8,xmm4,31 |
+ xor eax,ebx |
+ add edx,ebp |
+ shrd ebp,ebp,7 |
+ xor esi,ebx |
+ vpslldq xmm10,xmm4,12 |
+ vpaddd xmm4,xmm4,xmm4 |
+ mov edi,edx |
+ add ecx,DWORD[8+rsp] |
+ xor ebp,eax |
+ shld edx,edx,5 |
+ vpsrld xmm9,xmm10,30 |
+ vpor xmm4,xmm4,xmm8 |
+ add ecx,esi |
+ and edi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ vpslld xmm10,xmm10,2 |
+ vpxor xmm4,xmm4,xmm9 |
+ shrd edx,edx,7 |
+ xor edi,eax |
+ mov esi,ecx |
+ add ebx,DWORD[12+rsp] |
+ vpxor xmm4,xmm4,xmm10 |
+ xor edx,ebp |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ and esi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ shrd ecx,ecx,7 |
+ xor esi,ebp |
+ vpalignr xmm5,xmm2,xmm1,8 |
+ mov edi,ebx |
+ add eax,DWORD[16+rsp] |
+ vpaddd xmm9,xmm11,xmm4 |
+ xor ecx,edx |
+ shld ebx,ebx,5 |
+ vpsrldq xmm8,xmm4,4 |
+ add eax,esi |
+ and edi,ecx |
+ vpxor xmm5,xmm5,xmm1 |
+ xor ecx,edx |
+ add eax,ebx |
+ vpxor xmm8,xmm8,xmm3 |
+ shrd ebx,ebx,7 |
+ xor edi,edx |
+ mov esi,eax |
+ add ebp,DWORD[20+rsp] |
+ vpxor xmm5,xmm5,xmm8 |
+ xor ebx,ecx |
+ shld eax,eax,5 |
+ vmovdqa XMMWORD[rsp],xmm9 |
+ add ebp,edi |
+ and esi,ebx |
+ vpsrld xmm8,xmm5,31 |
+ xor ebx,ecx |
+ add ebp,eax |
+ shrd eax,eax,7 |
+ xor esi,ecx |
+ vpslldq xmm10,xmm5,12 |
+ vpaddd xmm5,xmm5,xmm5 |
+ mov edi,ebp |
+ add edx,DWORD[24+rsp] |
+ xor eax,ebx |
+ shld ebp,ebp,5 |
+ vpsrld xmm9,xmm10,30 |
+ vpor xmm5,xmm5,xmm8 |
+ add edx,esi |
+ and edi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ vpslld xmm10,xmm10,2 |
+ vpxor xmm5,xmm5,xmm9 |
+ shrd ebp,ebp,7 |
+ xor edi,ebx |
+ mov esi,edx |
+ add ecx,DWORD[28+rsp] |
+ vpxor xmm5,xmm5,xmm10 |
+ xor ebp,eax |
+ shld edx,edx,5 |
+ vmovdqa xmm11,XMMWORD[((-32))+r11] |
+ add ecx,edi |
+ and esi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ shrd edx,edx,7 |
+ xor esi,eax |
+ vpalignr xmm6,xmm3,xmm2,8 |
+ mov edi,ecx |
+ add ebx,DWORD[32+rsp] |
+ vpaddd xmm9,xmm11,xmm5 |
+ xor edx,ebp |
+ shld ecx,ecx,5 |
+ vpsrldq xmm8,xmm5,4 |
+ add ebx,esi |
+ and edi,edx |
+ vpxor xmm6,xmm6,xmm2 |
+ xor edx,ebp |
+ add ebx,ecx |
+ vpxor xmm8,xmm8,xmm4 |
+ shrd ecx,ecx,7 |
+ xor edi,ebp |
+ mov esi,ebx |
+ add eax,DWORD[36+rsp] |
+ vpxor xmm6,xmm6,xmm8 |
+ xor ecx,edx |
+ shld ebx,ebx,5 |
+ vmovdqa XMMWORD[16+rsp],xmm9 |
+ add eax,edi |
+ and esi,ecx |
+ vpsrld xmm8,xmm6,31 |
+ xor ecx,edx |
+ add eax,ebx |
+ shrd ebx,ebx,7 |
+ xor esi,edx |
+ vpslldq xmm10,xmm6,12 |
+ vpaddd xmm6,xmm6,xmm6 |
+ mov edi,eax |
+ add ebp,DWORD[40+rsp] |
+ xor ebx,ecx |
+ shld eax,eax,5 |
+ vpsrld xmm9,xmm10,30 |
+ vpor xmm6,xmm6,xmm8 |
+ add ebp,esi |
+ and edi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ vpslld xmm10,xmm10,2 |
+ vpxor xmm6,xmm6,xmm9 |
+ shrd eax,eax,7 |
+ xor edi,ecx |
+ mov esi,ebp |
+ add edx,DWORD[44+rsp] |
+ vpxor xmm6,xmm6,xmm10 |
+ xor eax,ebx |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ and esi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ shrd ebp,ebp,7 |
+ xor esi,ebx |
+ vpalignr xmm7,xmm4,xmm3,8 |
+ mov edi,edx |
+ add ecx,DWORD[48+rsp] |
+ vpaddd xmm9,xmm11,xmm6 |
+ xor ebp,eax |
+ shld edx,edx,5 |
+ vpsrldq xmm8,xmm6,4 |
+ add ecx,esi |
+ and edi,ebp |
+ vpxor xmm7,xmm7,xmm3 |
+ xor ebp,eax |
+ add ecx,edx |
+ vpxor xmm8,xmm8,xmm5 |
+ shrd edx,edx,7 |
+ xor edi,eax |
+ mov esi,ecx |
+ add ebx,DWORD[52+rsp] |
+ vpxor xmm7,xmm7,xmm8 |
+ xor edx,ebp |
+ shld ecx,ecx,5 |
+ vmovdqa XMMWORD[32+rsp],xmm9 |
+ add ebx,edi |
+ and esi,edx |
+ vpsrld xmm8,xmm7,31 |
+ xor edx,ebp |
+ add ebx,ecx |
+ shrd ecx,ecx,7 |
+ xor esi,ebp |
+ vpslldq xmm10,xmm7,12 |
+ vpaddd xmm7,xmm7,xmm7 |
+ mov edi,ebx |
+ add eax,DWORD[56+rsp] |
+ xor ecx,edx |
+ shld ebx,ebx,5 |
+ vpsrld xmm9,xmm10,30 |
+ vpor xmm7,xmm7,xmm8 |
+ add eax,esi |
+ and edi,ecx |
+ xor ecx,edx |
+ add eax,ebx |
+ vpslld xmm10,xmm10,2 |
+ vpxor xmm7,xmm7,xmm9 |
+ shrd ebx,ebx,7 |
+ xor edi,edx |
+ mov esi,eax |
+ add ebp,DWORD[60+rsp] |
+ vpxor xmm7,xmm7,xmm10 |
+ xor ebx,ecx |
+ shld eax,eax,5 |
+ add ebp,edi |
+ and esi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ vpalignr xmm8,xmm7,xmm6,8 |
+ vpxor xmm0,xmm0,xmm4 |
+ shrd eax,eax,7 |
+ xor esi,ecx |
+ mov edi,ebp |
+ add edx,DWORD[rsp] |
+ vpxor xmm0,xmm0,xmm1 |
+ xor eax,ebx |
+ shld ebp,ebp,5 |
+ vpaddd xmm9,xmm11,xmm7 |
+ add edx,esi |
+ and edi,eax |
+ vpxor xmm0,xmm0,xmm8 |
+ xor eax,ebx |
+ add edx,ebp |
+ shrd ebp,ebp,7 |
+ xor edi,ebx |
+ vpsrld xmm8,xmm0,30 |
+ vmovdqa XMMWORD[48+rsp],xmm9 |
+ mov esi,edx |
+ add ecx,DWORD[4+rsp] |
+ xor ebp,eax |
+ shld edx,edx,5 |
+ vpslld xmm0,xmm0,2 |
+ add ecx,edi |
+ and esi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ shrd edx,edx,7 |
+ xor esi,eax |
+ mov edi,ecx |
+ add ebx,DWORD[8+rsp] |
+ vpor xmm0,xmm0,xmm8 |
+ xor edx,ebp |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ and edi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ add eax,DWORD[12+rsp] |
+ xor edi,ebp |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ vpalignr xmm8,xmm0,xmm7,8 |
+ vpxor xmm1,xmm1,xmm5 |
+ add ebp,DWORD[16+rsp] |
+ xor esi,ecx |
+ mov edi,eax |
+ shld eax,eax,5 |
+ vpxor xmm1,xmm1,xmm2 |
+ add ebp,esi |
+ xor edi,ecx |
+ vpaddd xmm9,xmm11,xmm0 |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ vpxor xmm1,xmm1,xmm8 |
+ add edx,DWORD[20+rsp] |
+ xor edi,ebx |
+ mov esi,ebp |
+ shld ebp,ebp,5 |
+ vpsrld xmm8,xmm1,30 |
+ vmovdqa XMMWORD[rsp],xmm9 |
+ add edx,edi |
+ xor esi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vpslld xmm1,xmm1,2 |
+ add ecx,DWORD[24+rsp] |
+ xor esi,eax |
+ mov edi,edx |
+ shld edx,edx,5 |
+ add ecx,esi |
+ xor edi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vpor xmm1,xmm1,xmm8 |
+ add ebx,DWORD[28+rsp] |
+ xor edi,ebp |
+ mov esi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ vpalignr xmm8,xmm1,xmm0,8 |
+ vpxor xmm2,xmm2,xmm6 |
+ add eax,DWORD[32+rsp] |
+ xor esi,edx |
+ mov edi,ebx |
+ shld ebx,ebx,5 |
+ vpxor xmm2,xmm2,xmm3 |
+ add eax,esi |
+ xor edi,edx |
+ vpaddd xmm9,xmm11,xmm1 |
+ vmovdqa xmm11,XMMWORD[r11] |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ vpxor xmm2,xmm2,xmm8 |
+ add ebp,DWORD[36+rsp] |
+ xor edi,ecx |
+ mov esi,eax |
+ shld eax,eax,5 |
+ vpsrld xmm8,xmm2,30 |
+ vmovdqa XMMWORD[16+rsp],xmm9 |
+ add ebp,edi |
+ xor esi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ vpslld xmm2,xmm2,2 |
+ add edx,DWORD[40+rsp] |
+ xor esi,ebx |
+ mov edi,ebp |
+ shld ebp,ebp,5 |
+ add edx,esi |
+ xor edi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vpor xmm2,xmm2,xmm8 |
+ add ecx,DWORD[44+rsp] |
+ xor edi,eax |
+ mov esi,edx |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vpalignr xmm8,xmm2,xmm1,8 |
+ vpxor xmm3,xmm3,xmm7 |
+ add ebx,DWORD[48+rsp] |
+ xor esi,ebp |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ vpxor xmm3,xmm3,xmm4 |
+ add ebx,esi |
+ xor edi,ebp |
+ vpaddd xmm9,xmm11,xmm2 |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ vpxor xmm3,xmm3,xmm8 |
+ add eax,DWORD[52+rsp] |
+ xor edi,edx |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ vpsrld xmm8,xmm3,30 |
+ vmovdqa XMMWORD[32+rsp],xmm9 |
+ add eax,edi |
+ xor esi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ vpslld xmm3,xmm3,2 |
+ add ebp,DWORD[56+rsp] |
+ xor esi,ecx |
+ mov edi,eax |
+ shld eax,eax,5 |
+ add ebp,esi |
+ xor edi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ vpor xmm3,xmm3,xmm8 |
+ add edx,DWORD[60+rsp] |
+ xor edi,ebx |
+ mov esi,ebp |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ xor esi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vpalignr xmm8,xmm3,xmm2,8 |
+ vpxor xmm4,xmm4,xmm0 |
+ add ecx,DWORD[rsp] |
+ xor esi,eax |
+ mov edi,edx |
+ shld edx,edx,5 |
+ vpxor xmm4,xmm4,xmm5 |
+ add ecx,esi |
+ xor edi,eax |
+ vpaddd xmm9,xmm11,xmm3 |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vpxor xmm4,xmm4,xmm8 |
+ add ebx,DWORD[4+rsp] |
+ xor edi,ebp |
+ mov esi,ecx |
+ shld ecx,ecx,5 |
+ vpsrld xmm8,xmm4,30 |
+ vmovdqa XMMWORD[48+rsp],xmm9 |
+ add ebx,edi |
+ xor esi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ vpslld xmm4,xmm4,2 |
+ add eax,DWORD[8+rsp] |
+ xor esi,edx |
+ mov edi,ebx |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ xor edi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ vpor xmm4,xmm4,xmm8 |
+ add ebp,DWORD[12+rsp] |
+ xor edi,ecx |
+ mov esi,eax |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ vpalignr xmm8,xmm4,xmm3,8 |
+ vpxor xmm5,xmm5,xmm1 |
+ add edx,DWORD[16+rsp] |
+ xor esi,ebx |
+ mov edi,ebp |
+ shld ebp,ebp,5 |
+ vpxor xmm5,xmm5,xmm6 |
+ add edx,esi |
+ xor edi,ebx |
+ vpaddd xmm9,xmm11,xmm4 |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vpxor xmm5,xmm5,xmm8 |
+ add ecx,DWORD[20+rsp] |
+ xor edi,eax |
+ mov esi,edx |
+ shld edx,edx,5 |
+ vpsrld xmm8,xmm5,30 |
+ vmovdqa XMMWORD[rsp],xmm9 |
+ add ecx,edi |
+ xor esi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vpslld xmm5,xmm5,2 |
+ add ebx,DWORD[24+rsp] |
+ xor esi,ebp |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ xor edi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ vpor xmm5,xmm5,xmm8 |
+ add eax,DWORD[28+rsp] |
+ shrd ecx,ecx,7 |
+ mov esi,ebx |
+ xor edi,edx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,ecx |
+ xor ecx,edx |
+ add eax,ebx |
+ vpalignr xmm8,xmm5,xmm4,8 |
+ vpxor xmm6,xmm6,xmm2 |
+ add ebp,DWORD[32+rsp] |
+ and esi,ecx |
+ xor ecx,edx |
+ shrd ebx,ebx,7 |
+ vpxor xmm6,xmm6,xmm7 |
+ mov edi,eax |
+ xor esi,ecx |
+ vpaddd xmm9,xmm11,xmm5 |
+ shld eax,eax,5 |
+ add ebp,esi |
+ vpxor xmm6,xmm6,xmm8 |
+ xor edi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ add edx,DWORD[36+rsp] |
+ vpsrld xmm8,xmm6,30 |
+ vmovdqa XMMWORD[16+rsp],xmm9 |
+ and edi,ebx |
+ xor ebx,ecx |
+ shrd eax,eax,7 |
+ mov esi,ebp |
+ vpslld xmm6,xmm6,2 |
+ xor edi,ebx |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ xor esi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ add ecx,DWORD[40+rsp] |
+ and esi,eax |
+ vpor xmm6,xmm6,xmm8 |
+ xor eax,ebx |
+ shrd ebp,ebp,7 |
+ mov edi,edx |
+ xor esi,eax |
+ shld edx,edx,5 |
+ add ecx,esi |
+ xor edi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ add ebx,DWORD[44+rsp] |
+ and edi,ebp |
+ xor ebp,eax |
+ shrd edx,edx,7 |
+ mov esi,ecx |
+ xor edi,ebp |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ vpalignr xmm8,xmm6,xmm5,8 |
+ vpxor xmm7,xmm7,xmm3 |
+ add eax,DWORD[48+rsp] |
+ and esi,edx |
+ xor edx,ebp |
+ shrd ecx,ecx,7 |
+ vpxor xmm7,xmm7,xmm0 |
+ mov edi,ebx |
+ xor esi,edx |
+ vpaddd xmm9,xmm11,xmm6 |
+ vmovdqa xmm11,XMMWORD[32+r11] |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ vpxor xmm7,xmm7,xmm8 |
+ xor edi,ecx |
+ xor ecx,edx |
+ add eax,ebx |
+ add ebp,DWORD[52+rsp] |
+ vpsrld xmm8,xmm7,30 |
+ vmovdqa XMMWORD[32+rsp],xmm9 |
+ and edi,ecx |
+ xor ecx,edx |
+ shrd ebx,ebx,7 |
+ mov esi,eax |
+ vpslld xmm7,xmm7,2 |
+ xor edi,ecx |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ add edx,DWORD[56+rsp] |
+ and esi,ebx |
+ vpor xmm7,xmm7,xmm8 |
+ xor ebx,ecx |
+ shrd eax,eax,7 |
+ mov edi,ebp |
+ xor esi,ebx |
+ shld ebp,ebp,5 |
+ add edx,esi |
+ xor edi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ add ecx,DWORD[60+rsp] |
+ and edi,eax |
+ xor eax,ebx |
+ shrd ebp,ebp,7 |
+ mov esi,edx |
+ xor edi,eax |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ vpalignr xmm8,xmm7,xmm6,8 |
+ vpxor xmm0,xmm0,xmm4 |
+ add ebx,DWORD[rsp] |
+ and esi,ebp |
+ xor ebp,eax |
+ shrd edx,edx,7 |
+ vpxor xmm0,xmm0,xmm1 |
+ mov edi,ecx |
+ xor esi,ebp |
+ vpaddd xmm9,xmm11,xmm7 |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ vpxor xmm0,xmm0,xmm8 |
+ xor edi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ add eax,DWORD[4+rsp] |
+ vpsrld xmm8,xmm0,30 |
+ vmovdqa XMMWORD[48+rsp],xmm9 |
+ and edi,edx |
+ xor edx,ebp |
+ shrd ecx,ecx,7 |
+ mov esi,ebx |
+ vpslld xmm0,xmm0,2 |
+ xor edi,edx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,ecx |
+ xor ecx,edx |
+ add eax,ebx |
+ add ebp,DWORD[8+rsp] |
+ and esi,ecx |
+ vpor xmm0,xmm0,xmm8 |
+ xor ecx,edx |
+ shrd ebx,ebx,7 |
+ mov edi,eax |
+ xor esi,ecx |
+ shld eax,eax,5 |
+ add ebp,esi |
+ xor edi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ add edx,DWORD[12+rsp] |
+ and edi,ebx |
+ xor ebx,ecx |
+ shrd eax,eax,7 |
+ mov esi,ebp |
+ xor edi,ebx |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ xor esi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ vpalignr xmm8,xmm0,xmm7,8 |
+ vpxor xmm1,xmm1,xmm5 |
+ add ecx,DWORD[16+rsp] |
+ and esi,eax |
+ xor eax,ebx |
+ shrd ebp,ebp,7 |
+ vpxor xmm1,xmm1,xmm2 |
+ mov edi,edx |
+ xor esi,eax |
+ vpaddd xmm9,xmm11,xmm0 |
+ shld edx,edx,5 |
+ add ecx,esi |
+ vpxor xmm1,xmm1,xmm8 |
+ xor edi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ add ebx,DWORD[20+rsp] |
+ vpsrld xmm8,xmm1,30 |
+ vmovdqa XMMWORD[rsp],xmm9 |
+ and edi,ebp |
+ xor ebp,eax |
+ shrd edx,edx,7 |
+ mov esi,ecx |
+ vpslld xmm1,xmm1,2 |
+ xor edi,ebp |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ add eax,DWORD[24+rsp] |
+ and esi,edx |
+ vpor xmm1,xmm1,xmm8 |
+ xor edx,ebp |
+ shrd ecx,ecx,7 |
+ mov edi,ebx |
+ xor esi,edx |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ xor edi,ecx |
+ xor ecx,edx |
+ add eax,ebx |
+ add ebp,DWORD[28+rsp] |
+ and edi,ecx |
+ xor ecx,edx |
+ shrd ebx,ebx,7 |
+ mov esi,eax |
+ xor edi,ecx |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ebx |
+ xor ebx,ecx |
+ add ebp,eax |
+ vpalignr xmm8,xmm1,xmm0,8 |
+ vpxor xmm2,xmm2,xmm6 |
+ add edx,DWORD[32+rsp] |
+ and esi,ebx |
+ xor ebx,ecx |
+ shrd eax,eax,7 |
+ vpxor xmm2,xmm2,xmm3 |
+ mov edi,ebp |
+ xor esi,ebx |
+ vpaddd xmm9,xmm11,xmm1 |
+ shld ebp,ebp,5 |
+ add edx,esi |
+ vpxor xmm2,xmm2,xmm8 |
+ xor edi,eax |
+ xor eax,ebx |
+ add edx,ebp |
+ add ecx,DWORD[36+rsp] |
+ vpsrld xmm8,xmm2,30 |
+ vmovdqa XMMWORD[16+rsp],xmm9 |
+ and edi,eax |
+ xor eax,ebx |
+ shrd ebp,ebp,7 |
+ mov esi,edx |
+ vpslld xmm2,xmm2,2 |
+ xor edi,eax |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,ebp |
+ xor ebp,eax |
+ add ecx,edx |
+ add ebx,DWORD[40+rsp] |
+ and esi,ebp |
+ vpor xmm2,xmm2,xmm8 |
+ xor ebp,eax |
+ shrd edx,edx,7 |
+ mov edi,ecx |
+ xor esi,ebp |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ xor edi,edx |
+ xor edx,ebp |
+ add ebx,ecx |
+ add eax,DWORD[44+rsp] |
+ and edi,edx |
+ xor edx,ebp |
+ shrd ecx,ecx,7 |
+ mov esi,ebx |
+ xor edi,edx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,edx |
+ add eax,ebx |
+ vpalignr xmm8,xmm2,xmm1,8 |
+ vpxor xmm3,xmm3,xmm7 |
+ add ebp,DWORD[48+rsp] |
+ xor esi,ecx |
+ mov edi,eax |
+ shld eax,eax,5 |
+ vpxor xmm3,xmm3,xmm4 |
+ add ebp,esi |
+ xor edi,ecx |
+ vpaddd xmm9,xmm11,xmm2 |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ vpxor xmm3,xmm3,xmm8 |
+ add edx,DWORD[52+rsp] |
+ xor edi,ebx |
+ mov esi,ebp |
+ shld ebp,ebp,5 |
+ vpsrld xmm8,xmm3,30 |
+ vmovdqa XMMWORD[32+rsp],xmm9 |
+ add edx,edi |
+ xor esi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vpslld xmm3,xmm3,2 |
+ add ecx,DWORD[56+rsp] |
+ xor esi,eax |
+ mov edi,edx |
+ shld edx,edx,5 |
+ add ecx,esi |
+ xor edi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vpor xmm3,xmm3,xmm8 |
+ add ebx,DWORD[60+rsp] |
+ xor edi,ebp |
+ mov esi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[rsp] |
+ vpaddd xmm9,xmm11,xmm3 |
+ xor esi,edx |
+ mov edi,ebx |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ vmovdqa XMMWORD[48+rsp],xmm9 |
+ xor edi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add ebp,DWORD[4+rsp] |
+ xor edi,ecx |
+ mov esi,eax |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ add edx,DWORD[8+rsp] |
+ xor esi,ebx |
+ mov edi,ebp |
+ shld ebp,ebp,5 |
+ add edx,esi |
+ xor edi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ add ecx,DWORD[12+rsp] |
+ xor edi,eax |
+ mov esi,edx |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ cmp r9,r10 |
+ je NEAR $L$done_avx |
+ vmovdqa xmm6,XMMWORD[64+r11] |
+ vmovdqa xmm11,XMMWORD[((-64))+r11] |
+ vmovdqu xmm0,XMMWORD[r9] |
+ vmovdqu xmm1,XMMWORD[16+r9] |
+ vmovdqu xmm2,XMMWORD[32+r9] |
+ vmovdqu xmm3,XMMWORD[48+r9] |
+ vpshufb xmm0,xmm0,xmm6 |
+ add r9,64 |
+ add ebx,DWORD[16+rsp] |
+ xor esi,ebp |
+ vpshufb xmm1,xmm1,xmm6 |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ vpaddd xmm4,xmm0,xmm11 |
+ add ebx,esi |
+ xor edi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ vmovdqa XMMWORD[rsp],xmm4 |
+ add eax,DWORD[20+rsp] |
+ xor edi,edx |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add ebp,DWORD[24+rsp] |
+ xor esi,ecx |
+ mov edi,eax |
+ shld eax,eax,5 |
+ add ebp,esi |
+ xor edi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ add edx,DWORD[28+rsp] |
+ xor edi,ebx |
+ mov esi,ebp |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ xor esi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ add ecx,DWORD[32+rsp] |
+ xor esi,eax |
+ vpshufb xmm2,xmm2,xmm6 |
+ mov edi,edx |
+ shld edx,edx,5 |
+ vpaddd xmm5,xmm1,xmm11 |
+ add ecx,esi |
+ xor edi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ vmovdqa XMMWORD[16+rsp],xmm5 |
+ add ebx,DWORD[36+rsp] |
+ xor edi,ebp |
+ mov esi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[40+rsp] |
+ xor esi,edx |
+ mov edi,ebx |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ xor edi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add ebp,DWORD[44+rsp] |
+ xor edi,ecx |
+ mov esi,eax |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ add edx,DWORD[48+rsp] |
+ xor esi,ebx |
+ vpshufb xmm3,xmm3,xmm6 |
+ mov edi,ebp |
+ shld ebp,ebp,5 |
+ vpaddd xmm6,xmm2,xmm11 |
+ add edx,esi |
+ xor edi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ vmovdqa XMMWORD[32+rsp],xmm6 |
+ add ecx,DWORD[52+rsp] |
+ xor edi,eax |
+ mov esi,edx |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ add ebx,DWORD[56+rsp] |
+ xor esi,ebp |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ xor edi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[60+rsp] |
+ xor edi,edx |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add eax,DWORD[r8] |
+ add esi,DWORD[4+r8] |
+ add ecx,DWORD[8+r8] |
+ add edx,DWORD[12+r8] |
+ mov DWORD[r8],eax |
+ add ebp,DWORD[16+r8] |
+ mov DWORD[4+r8],esi |
+ mov ebx,esi |
+ mov DWORD[8+r8],ecx |
+ mov edi,ecx |
+ mov DWORD[12+r8],edx |
+ xor edi,edx |
+ mov DWORD[16+r8],ebp |
+ and esi,edi |
+ jmp NEAR $L$oop_avx |
+ |
+ALIGN 16 |
+$L$done_avx: |
+ add ebx,DWORD[16+rsp] |
+ xor esi,ebp |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ xor edi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[20+rsp] |
+ xor edi,edx |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ xor esi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add ebp,DWORD[24+rsp] |
+ xor esi,ecx |
+ mov edi,eax |
+ shld eax,eax,5 |
+ add ebp,esi |
+ xor edi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ add edx,DWORD[28+rsp] |
+ xor edi,ebx |
+ mov esi,ebp |
+ shld ebp,ebp,5 |
+ add edx,edi |
+ xor esi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ add ecx,DWORD[32+rsp] |
+ xor esi,eax |
+ mov edi,edx |
+ shld edx,edx,5 |
+ add ecx,esi |
+ xor edi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ add ebx,DWORD[36+rsp] |
+ xor edi,ebp |
+ mov esi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,edi |
+ xor esi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[40+rsp] |
+ xor esi,edx |
+ mov edi,ebx |
+ shld ebx,ebx,5 |
+ add eax,esi |
+ xor edi,edx |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ add ebp,DWORD[44+rsp] |
+ xor edi,ecx |
+ mov esi,eax |
+ shld eax,eax,5 |
+ add ebp,edi |
+ xor esi,ecx |
+ shrd ebx,ebx,7 |
+ add ebp,eax |
+ add edx,DWORD[48+rsp] |
+ xor esi,ebx |
+ mov edi,ebp |
+ shld ebp,ebp,5 |
+ add edx,esi |
+ xor edi,ebx |
+ shrd eax,eax,7 |
+ add edx,ebp |
+ add ecx,DWORD[52+rsp] |
+ xor edi,eax |
+ mov esi,edx |
+ shld edx,edx,5 |
+ add ecx,edi |
+ xor esi,eax |
+ shrd ebp,ebp,7 |
+ add ecx,edx |
+ add ebx,DWORD[56+rsp] |
+ xor esi,ebp |
+ mov edi,ecx |
+ shld ecx,ecx,5 |
+ add ebx,esi |
+ xor edi,ebp |
+ shrd edx,edx,7 |
+ add ebx,ecx |
+ add eax,DWORD[60+rsp] |
+ xor edi,edx |
+ mov esi,ebx |
+ shld ebx,ebx,5 |
+ add eax,edi |
+ shrd ecx,ecx,7 |
+ add eax,ebx |
+ vzeroupper |
+ |
+ add eax,DWORD[r8] |
+ add esi,DWORD[4+r8] |
+ add ecx,DWORD[8+r8] |
+ mov DWORD[r8],eax |
+ add edx,DWORD[12+r8] |
+ mov DWORD[4+r8],esi |
+ add ebp,DWORD[16+r8] |
+ mov DWORD[8+r8],ecx |
+ mov DWORD[12+r8],edx |
+ mov DWORD[16+r8],ebp |
+ movaps xmm6,XMMWORD[((-40-96))+r14] |
+ movaps xmm7,XMMWORD[((-40-80))+r14] |
+ movaps xmm8,XMMWORD[((-40-64))+r14] |
+ movaps xmm9,XMMWORD[((-40-48))+r14] |
+ movaps xmm10,XMMWORD[((-40-32))+r14] |
+ movaps xmm11,XMMWORD[((-40-16))+r14] |
+ lea rsi,[r14] |
+ mov r14,QWORD[((-40))+rsi] |
+ mov r13,QWORD[((-32))+rsi] |
+ mov r12,QWORD[((-24))+rsi] |
+ mov rbp,QWORD[((-16))+rsi] |
+ mov rbx,QWORD[((-8))+rsi] |
+ lea rsp,[rsi] |
+$L$epilogue_avx: |
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
+ mov rsi,QWORD[16+rsp] |
+ DB 0F3h,0C3h ;repret |
+$L$SEH_end_sha1_block_data_order_avx: |
ALIGN 64 |
K_XX_XX: |
DD 0x5a827999,0x5a827999,0x5a827999,0x5a827999 |
@@ -2605,6 +3750,9 @@ ALIGN 4 |
DD $L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase |
DD $L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase |
DD $L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase |
+ DD $L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase |
+ DD $L$SEH_end_sha1_block_data_order_avx wrt ..imagebase |
+ DD $L$SEH_info_sha1_block_data_order_avx wrt ..imagebase |
section .xdata rdata align=8 |
ALIGN 8 |
$L$SEH_info_sha1_block_data_order: |
@@ -2614,3 +3762,7 @@ $L$SEH_info_sha1_block_data_order_ssse3: |
DB 9,0,0,0 |
DD ssse3_handler wrt ..imagebase |
DD $L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase |
+$L$SEH_info_sha1_block_data_order_avx: |
+DB 9,0,0,0 |
+ DD ssse3_handler wrt ..imagebase |
+ DD $L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase |