diff options
Diffstat (limited to 'win-x86/crypto/sha/sha256-586.asm')
-rw-r--r-- | win-x86/crypto/sha/sha256-586.asm | 236 |
1 files changed, 218 insertions, 18 deletions
diff --git a/win-x86/crypto/sha/sha256-586.asm b/win-x86/crypto/sha/sha256-586.asm index d03558c..fe36bc5 100644 --- a/win-x86/crypto/sha/sha256-586.asm +++ b/win-x86/crypto/sha/sha256-586.asm @@ -49,15 +49,17 @@ L$000pic_point: jz NEAR L$003no_xmm and ecx,1073741824 and ebx,268435968 + test edx,536870912 + jnz NEAR L$004shaext or ecx,ebx and ecx,1342177280 cmp ecx,1342177280 test ebx,512 - jnz NEAR L$004SSSE3 + jnz NEAR L$005SSSE3 L$003no_xmm: sub eax,edi cmp eax,256 - jae NEAR L$005unrolled + jae NEAR L$006unrolled jmp NEAR L$002loop align 16 L$002loop: @@ -129,7 +131,7 @@ L$002loop: mov DWORD [28+esp],ecx mov DWORD [32+esp],edi align 16 -L$00600_15: +L$00700_15: mov ecx,edx mov esi,DWORD [24+esp] ror ecx,14 @@ -167,11 +169,11 @@ L$00600_15: add ebp,4 add eax,ebx cmp esi,3248222580 - jne NEAR L$00600_15 + jne NEAR L$00700_15 mov ecx,DWORD [156+esp] - jmp NEAR L$00716_63 + jmp NEAR L$00816_63 align 16 -L$00716_63: +L$00816_63: mov ebx,ecx mov esi,DWORD [104+esp] ror ecx,11 @@ -226,7 +228,7 @@ L$00716_63: add ebp,4 add eax,ebx cmp esi,3329325298 - jne NEAR L$00716_63 + jne NEAR L$00816_63 mov esi,DWORD [356+esp] mov ebx,DWORD [8+esp] mov ecx,DWORD [16+esp] @@ -270,7 +272,7 @@ db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 db 62,0 align 16 -L$005unrolled: +L$006unrolled: lea esp,[esp-96] mov eax,DWORD [esi] mov ebp,DWORD [4+esi] @@ -287,9 +289,9 @@ L$005unrolled: mov DWORD [20+esp],ebx mov DWORD [24+esp],ecx mov DWORD [28+esp],esi - jmp NEAR L$008grand_loop + jmp NEAR L$009grand_loop align 16 -L$008grand_loop: +L$009grand_loop: mov ebx,DWORD [edi] mov ecx,DWORD [4+edi] bswap ebx @@ -3169,7 +3171,7 @@ L$008grand_loop: mov DWORD [24+esp],ebx mov DWORD [28+esp],ecx cmp edi,DWORD [104+esp] - jb NEAR L$008grand_loop + jb NEAR L$009grand_loop mov esp,DWORD [108+esp] pop edi pop esi @@ -3177,7 +3179,205 @@ L$008grand_loop: pop ebp ret align 32 -L$004SSSE3: +L$004shaext: + sub esp,32 + movdqu xmm1,[esi] + lea ebp,[128+ebp] + movdqu xmm2,[16+esi] + movdqa xmm7,[128+ebp] + pshufd xmm0,xmm1,27 + pshufd xmm1,xmm1,177 + pshufd xmm2,xmm2,27 +db 102,15,58,15,202,8 + punpcklqdq xmm2,xmm0 + jmp NEAR L$010loop_shaext +align 16 +L$010loop_shaext: + movdqu xmm3,[edi] + movdqu xmm4,[16+edi] + movdqu xmm5,[32+edi] +db 102,15,56,0,223 + movdqu xmm6,[48+edi] + movdqa [16+esp],xmm2 + movdqa xmm0,[ebp-128] + paddd xmm0,xmm3 +db 102,15,56,0,231 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + nop + movdqa [esp],xmm1 +db 15,56,203,202 + movdqa xmm0,[ebp-112] + paddd xmm0,xmm4 +db 102,15,56,0,239 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + lea edi,[64+edi] +db 15,56,204,220 +db 15,56,203,202 + movdqa xmm0,[ebp-96] + paddd xmm0,xmm5 +db 102,15,56,0,247 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +db 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +db 15,56,204,229 +db 15,56,203,202 + movdqa xmm0,[ebp-80] + paddd xmm0,xmm6 +db 15,56,205,222 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +db 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +db 15,56,204,238 +db 15,56,203,202 + movdqa xmm0,[ebp-64] + paddd xmm0,xmm3 +db 15,56,205,227 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +db 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +db 15,56,204,243 +db 15,56,203,202 + movdqa xmm0,[ebp-48] + paddd xmm0,xmm4 +db 15,56,205,236 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +db 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +db 15,56,204,220 +db 15,56,203,202 + movdqa xmm0,[ebp-32] + paddd xmm0,xmm5 +db 15,56,205,245 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +db 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +db 15,56,204,229 +db 15,56,203,202 + movdqa xmm0,[ebp-16] + paddd xmm0,xmm6 +db 15,56,205,222 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +db 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +db 15,56,204,238 +db 15,56,203,202 + movdqa xmm0,[ebp] + paddd xmm0,xmm3 +db 15,56,205,227 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +db 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +db 15,56,204,243 +db 15,56,203,202 + movdqa xmm0,[16+ebp] + paddd xmm0,xmm4 +db 15,56,205,236 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +db 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +db 15,56,204,220 +db 15,56,203,202 + movdqa xmm0,[32+ebp] + paddd xmm0,xmm5 +db 15,56,205,245 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +db 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +db 15,56,204,229 +db 15,56,203,202 + movdqa xmm0,[48+ebp] + paddd xmm0,xmm6 +db 15,56,205,222 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +db 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +db 15,56,204,238 +db 15,56,203,202 + movdqa xmm0,[64+ebp] + paddd xmm0,xmm3 +db 15,56,205,227 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +db 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +db 15,56,204,243 +db 15,56,203,202 + movdqa xmm0,[80+ebp] + paddd xmm0,xmm4 +db 15,56,205,236 +db 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +db 102,15,58,15,252,4 +db 15,56,203,202 + paddd xmm6,xmm7 + movdqa xmm0,[96+ebp] + paddd xmm0,xmm5 +db 15,56,203,209 + pshufd xmm0,xmm0,14 +db 15,56,205,245 + movdqa xmm7,[128+ebp] +db 15,56,203,202 + movdqa xmm0,[112+ebp] + paddd xmm0,xmm6 + nop +db 15,56,203,209 + pshufd xmm0,xmm0,14 + cmp eax,edi + nop +db 15,56,203,202 + paddd xmm2,[16+esp] + paddd xmm1,[esp] + jnz NEAR L$010loop_shaext + pshufd xmm2,xmm2,177 + pshufd xmm7,xmm1,27 + pshufd xmm1,xmm1,177 + punpckhqdq xmm1,xmm2 +db 102,15,58,15,215,8 + mov esp,DWORD [44+esp] + movdqu [esi],xmm1 + movdqu [16+esi],xmm2 + pop edi + pop esi + pop ebx + pop ebp + ret +align 32 +L$005SSSE3: lea esp,[esp-96] mov eax,DWORD [esi] mov ebx,DWORD [4+esi] @@ -3196,9 +3396,9 @@ L$004SSSE3: mov DWORD [24+esp],ecx mov DWORD [28+esp],esi movdqa xmm7,[256+ebp] - jmp NEAR L$009grand_ssse3 + jmp NEAR L$011grand_ssse3 align 16 -L$009grand_ssse3: +L$011grand_ssse3: movdqu xmm0,[edi] movdqu xmm1,[16+edi] movdqu xmm2,[32+edi] @@ -3221,9 +3421,9 @@ db 102,15,56,0,223 paddd xmm7,xmm3 movdqa [64+esp],xmm6 movdqa [80+esp],xmm7 - jmp NEAR L$010ssse3_00_47 + jmp NEAR L$012ssse3_00_47 align 16 -L$010ssse3_00_47: +L$012ssse3_00_47: add ebp,64 mov ecx,edx movdqa xmm4,xmm1 @@ -3866,7 +4066,7 @@ db 102,15,58,15,249,4 add eax,ecx movdqa [80+esp],xmm6 cmp DWORD [64+ebp],66051 - jne NEAR L$010ssse3_00_47 + jne NEAR L$012ssse3_00_47 mov ecx,edx ror edx,14 mov esi,DWORD [20+esp] @@ -4380,7 +4580,7 @@ db 102,15,58,15,249,4 movdqa xmm7,[64+ebp] sub ebp,192 cmp edi,DWORD [104+esp] - jb NEAR L$009grand_ssse3 + jb NEAR L$011grand_ssse3 mov esp,DWORD [108+esp] pop edi pop esi |