diff options
Diffstat (limited to 'win-x86/crypto')
-rw-r--r-- | win-x86/crypto/sha/sha1-586.asm | 182 | ||||
-rw-r--r-- | win-x86/crypto/sha/sha256-586.asm | 236 |
2 files changed, 24 insertions, 394 deletions
diff --git a/win-x86/crypto/sha/sha1-586.asm b/win-x86/crypto/sha/sha1-586.asm index e24449d..43bf964 100644 --- a/win-x86/crypto/sha/sha1-586.asm +++ b/win-x86/crypto/sha/sha1-586.asm @@ -35,8 +35,6 @@ L$000pic_point: mov ecx,DWORD [8+esi] test eax,16777216 jz NEAR L$001x86 - test ecx,536870912 - jnz NEAR L$shaext_shortcut jmp NEAR L$ssse3_shortcut align 16 L$001x86: @@ -1405,7 +1403,7 @@ L$002loop: pop ebp ret align 16 -__sha1_block_data_order_shaext: +__sha1_block_data_order_ssse3: push ebp push ebx push esi @@ -1414,174 +1412,6 @@ __sha1_block_data_order_shaext: L$003pic_point: pop ebp lea ebp,[(L$K_XX_XX-L$003pic_point)+ebp] -L$shaext_shortcut: - mov edi,DWORD [20+esp] - mov ebx,esp - mov esi,DWORD [24+esp] - mov ecx,DWORD [28+esp] - sub esp,32 - movdqu xmm0,[edi] - movd xmm1,DWORD [16+edi] - and esp,-32 - movdqa xmm3,[80+ebp] - movdqu xmm4,[esi] - pshufd xmm0,xmm0,27 - movdqu xmm5,[16+esi] - pshufd xmm1,xmm1,27 - movdqu xmm6,[32+esi] -db 102,15,56,0,227 - movdqu xmm7,[48+esi] -db 102,15,56,0,235 -db 102,15,56,0,243 -db 102,15,56,0,251 - jmp NEAR L$004loop_shaext -align 16 -L$004loop_shaext: - dec ecx - lea eax,[64+esi] - movdqa [esp],xmm1 - paddd xmm1,xmm4 - cmovne esi,eax - movdqa [16+esp],xmm0 -db 15,56,201,229 - movdqa xmm2,xmm0 -db 15,58,204,193,0 -db 15,56,200,213 - pxor xmm4,xmm6 -db 15,56,201,238 -db 15,56,202,231 - movdqa xmm1,xmm0 -db 15,58,204,194,0 -db 15,56,200,206 - pxor xmm5,xmm7 -db 15,56,202,236 -db 15,56,201,247 - movdqa xmm2,xmm0 -db 15,58,204,193,0 -db 15,56,200,215 - pxor xmm6,xmm4 -db 15,56,201,252 -db 15,56,202,245 - movdqa xmm1,xmm0 -db 15,58,204,194,0 -db 15,56,200,204 - pxor xmm7,xmm5 -db 15,56,202,254 -db 15,56,201,229 - movdqa xmm2,xmm0 -db 15,58,204,193,0 -db 15,56,200,213 - pxor xmm4,xmm6 -db 15,56,201,238 -db 15,56,202,231 - movdqa xmm1,xmm0 -db 15,58,204,194,1 -db 15,56,200,206 - pxor xmm5,xmm7 -db 15,56,202,236 -db 15,56,201,247 - movdqa xmm2,xmm0 -db 15,58,204,193,1 -db 15,56,200,215 - pxor xmm6,xmm4 -db 15,56,201,252 -db 15,56,202,245 - movdqa xmm1,xmm0 -db 15,58,204,194,1 -db 15,56,200,204 - pxor xmm7,xmm5 -db 15,56,202,254 -db 15,56,201,229 - movdqa xmm2,xmm0 -db 15,58,204,193,1 -db 15,56,200,213 - pxor xmm4,xmm6 -db 15,56,201,238 -db 15,56,202,231 - movdqa xmm1,xmm0 -db 15,58,204,194,1 -db 15,56,200,206 - pxor xmm5,xmm7 -db 15,56,202,236 -db 15,56,201,247 - movdqa xmm2,xmm0 -db 15,58,204,193,2 -db 15,56,200,215 - pxor xmm6,xmm4 -db 15,56,201,252 -db 15,56,202,245 - movdqa xmm1,xmm0 -db 15,58,204,194,2 -db 15,56,200,204 - pxor xmm7,xmm5 -db 15,56,202,254 -db 15,56,201,229 - movdqa xmm2,xmm0 -db 15,58,204,193,2 -db 15,56,200,213 - pxor xmm4,xmm6 -db 15,56,201,238 -db 15,56,202,231 - movdqa xmm1,xmm0 -db 15,58,204,194,2 -db 15,56,200,206 - pxor xmm5,xmm7 -db 15,56,202,236 -db 15,56,201,247 - movdqa xmm2,xmm0 -db 15,58,204,193,2 -db 15,56,200,215 - pxor xmm6,xmm4 -db 15,56,201,252 -db 15,56,202,245 - movdqa xmm1,xmm0 -db 15,58,204,194,3 -db 15,56,200,204 - pxor xmm7,xmm5 -db 15,56,202,254 - movdqu xmm4,[esi] - movdqa xmm2,xmm0 -db 15,58,204,193,3 -db 15,56,200,213 - movdqu xmm5,[16+esi] -db 102,15,56,0,227 - movdqa xmm1,xmm0 -db 15,58,204,194,3 -db 15,56,200,206 - movdqu xmm6,[32+esi] -db 102,15,56,0,235 - movdqa xmm2,xmm0 -db 15,58,204,193,3 -db 15,56,200,215 - movdqu xmm7,[48+esi] -db 102,15,56,0,243 - movdqa xmm1,xmm0 -db 15,58,204,194,3 - movdqa xmm2,[esp] -db 102,15,56,0,251 -db 15,56,200,202 - paddd xmm0,[16+esp] - jnz NEAR L$004loop_shaext - pshufd xmm0,xmm0,27 - pshufd xmm1,xmm1,27 - movdqu [edi],xmm0 - movd DWORD [16+edi],xmm1 - mov esp,ebx - pop edi - pop esi - pop ebx - pop ebp - ret -align 16 -__sha1_block_data_order_ssse3: - push ebp - push ebx - push esi - push edi - call L$005pic_point -L$005pic_point: - pop ebp - lea ebp,[(L$K_XX_XX-L$005pic_point)+ebp] L$ssse3_shortcut: movdqa xmm7,[ebp] movdqa xmm0,[16+ebp] @@ -1634,9 +1464,9 @@ db 102,15,56,0,222 xor ebp,edx pshufd xmm4,xmm0,238 and esi,ebp - jmp NEAR L$006loop + jmp NEAR L$004loop align 16 -L$006loop: +L$004loop: ror ebx,2 xor esi,edx mov ebp,eax @@ -2539,7 +2369,7 @@ L$006loop: add ecx,edx mov ebp,DWORD [196+esp] cmp ebp,DWORD [200+esp] - je NEAR L$007done + je NEAR L$005done movdqa xmm7,[160+esp] movdqa xmm6,[176+esp] movdqu xmm0,[ebp] @@ -2674,9 +2504,9 @@ db 102,15,56,0,222 pshufd xmm4,xmm0,238 and esi,ebx mov ebx,ebp - jmp NEAR L$006loop + jmp NEAR L$004loop align 16 -L$007done: +L$005done: add ebx,DWORD [16+esp] xor esi,edi mov ebp,ecx diff --git a/win-x86/crypto/sha/sha256-586.asm b/win-x86/crypto/sha/sha256-586.asm index fe36bc5..d03558c 100644 --- a/win-x86/crypto/sha/sha256-586.asm +++ b/win-x86/crypto/sha/sha256-586.asm @@ -49,17 +49,15 @@ 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$005SSSE3 + jnz NEAR L$004SSSE3 L$003no_xmm: sub eax,edi cmp eax,256 - jae NEAR L$006unrolled + jae NEAR L$005unrolled jmp NEAR L$002loop align 16 L$002loop: @@ -131,7 +129,7 @@ L$002loop: mov DWORD [28+esp],ecx mov DWORD [32+esp],edi align 16 -L$00700_15: +L$00600_15: mov ecx,edx mov esi,DWORD [24+esp] ror ecx,14 @@ -169,11 +167,11 @@ L$00700_15: add ebp,4 add eax,ebx cmp esi,3248222580 - jne NEAR L$00700_15 + jne NEAR L$00600_15 mov ecx,DWORD [156+esp] - jmp NEAR L$00816_63 + jmp NEAR L$00716_63 align 16 -L$00816_63: +L$00716_63: mov ebx,ecx mov esi,DWORD [104+esp] ror ecx,11 @@ -228,7 +226,7 @@ L$00816_63: add ebp,4 add eax,ebx cmp esi,3329325298 - jne NEAR L$00816_63 + jne NEAR L$00716_63 mov esi,DWORD [356+esp] mov ebx,DWORD [8+esp] mov ecx,DWORD [16+esp] @@ -272,7 +270,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$006unrolled: +L$005unrolled: lea esp,[esp-96] mov eax,DWORD [esi] mov ebp,DWORD [4+esi] @@ -289,9 +287,9 @@ L$006unrolled: mov DWORD [20+esp],ebx mov DWORD [24+esp],ecx mov DWORD [28+esp],esi - jmp NEAR L$009grand_loop + jmp NEAR L$008grand_loop align 16 -L$009grand_loop: +L$008grand_loop: mov ebx,DWORD [edi] mov ecx,DWORD [4+edi] bswap ebx @@ -3171,7 +3169,7 @@ L$009grand_loop: mov DWORD [24+esp],ebx mov DWORD [28+esp],ecx cmp edi,DWORD [104+esp] - jb NEAR L$009grand_loop + jb NEAR L$008grand_loop mov esp,DWORD [108+esp] pop edi pop esi @@ -3179,205 +3177,7 @@ L$009grand_loop: pop ebp ret align 32 -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: +L$004SSSE3: lea esp,[esp-96] mov eax,DWORD [esi] mov ebx,DWORD [4+esi] @@ -3396,9 +3196,9 @@ L$005SSSE3: mov DWORD [24+esp],ecx mov DWORD [28+esp],esi movdqa xmm7,[256+ebp] - jmp NEAR L$011grand_ssse3 + jmp NEAR L$009grand_ssse3 align 16 -L$011grand_ssse3: +L$009grand_ssse3: movdqu xmm0,[edi] movdqu xmm1,[16+edi] movdqu xmm2,[32+edi] @@ -3421,9 +3221,9 @@ db 102,15,56,0,223 paddd xmm7,xmm3 movdqa [64+esp],xmm6 movdqa [80+esp],xmm7 - jmp NEAR L$012ssse3_00_47 + jmp NEAR L$010ssse3_00_47 align 16 -L$012ssse3_00_47: +L$010ssse3_00_47: add ebp,64 mov ecx,edx movdqa xmm4,xmm1 @@ -4066,7 +3866,7 @@ db 102,15,58,15,249,4 add eax,ecx movdqa [80+esp],xmm6 cmp DWORD [64+ebp],66051 - jne NEAR L$012ssse3_00_47 + jne NEAR L$010ssse3_00_47 mov ecx,edx ror edx,14 mov esi,DWORD [20+esp] @@ -4580,7 +4380,7 @@ db 102,15,58,15,249,4 movdqa xmm7,[64+ebp] sub ebp,192 cmp edi,DWORD [104+esp] - jb NEAR L$011grand_ssse3 + jb NEAR L$009grand_ssse3 mov esp,DWORD [108+esp] pop edi pop esi |