diff options
Diffstat (limited to 'deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm')
-rw-r--r-- | deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm | 225 |
1 files changed, 38 insertions, 187 deletions
diff --git a/deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm b/deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm index d179090911..3eb66f7350 100644 --- a/deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm +++ b/deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm @@ -2,14 +2,7 @@ TITLE rc4-586.asm IF @Version LT 800 ECHO MASM version 8.00 or later is strongly recommended. ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - +.586 .MODEL FLAT OPTION DOTNAME IF @Version LT 800 @@ -17,7 +10,6 @@ IF @Version LT 800 ELSE .text$ SEGMENT ALIGN(64) 'CODE' ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR ALIGN 16 _RC4 PROC PUBLIC $L_RC4_begin:: @@ -45,146 +37,11 @@ $L_RC4_begin:: mov ecx,DWORD PTR [eax*4+edi] and edx,-4 jz $L002loop1 - test edx,-8 - mov DWORD PTR 32[esp],ebp - jz $L003go4loop4 - lea ebp,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [ebp],26 - jnc $L003go4loop4 - mov ebp,DWORD PTR 32[esp] - and edx,-8 - lea edx,DWORD PTR [edx*1+esi-8] - mov DWORD PTR [edi-4],edx - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - movq mm0,QWORD PTR [esi] - mov ecx,DWORD PTR [eax*4+edi] - movd mm2,DWORD PTR [edx*4+edi] - jmp $L004loop_mmx_enter -ALIGN 16 -$L005loop_mmx: - add bl,cl - psllq mm1,56 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - movq mm0,QWORD PTR [esi] - movq QWORD PTR [esi*1+ebp-8],mm2 - mov ecx,DWORD PTR [eax*4+edi] - movd mm2,DWORD PTR [edx*4+edi] -$L004loop_mmx_enter: - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm0 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,8 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,16 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,24 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,32 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,40 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,48 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - mov edx,ebx - xor ebx,ebx - mov bl,dl - cmp esi,DWORD PTR [edi-4] - lea esi,DWORD PTR 8[esi] - jb $L005loop_mmx - psllq mm1,56 - pxor mm2,mm1 - movq QWORD PTR [esi*1+ebp-8],mm2 - emms - cmp esi,DWORD PTR 24[esp] - je $L006done - jmp $L002loop1 -ALIGN 16 -$L003go4loop4: lea edx,DWORD PTR [edx*1+esi-4] mov DWORD PTR 28[esp],edx -$L007loop4: + mov DWORD PTR 32[esp],ebp +ALIGN 16 +$L003loop4: add bl,cl mov edx,DWORD PTR [ebx*4+edi] mov DWORD PTR [ebx*4+edi],ecx @@ -230,9 +87,9 @@ $L007loop4: mov DWORD PTR [esi*1+ecx],ebp lea esi,DWORD PTR 4[esi] mov ecx,DWORD PTR [eax*4+edi] - jb $L007loop4 + jb $L003loop4 cmp esi,DWORD PTR 24[esp] - je $L006done + je $L004done mov ebp,DWORD PTR 32[esp] ALIGN 16 $L002loop1: @@ -250,11 +107,11 @@ $L002loop1: cmp esi,DWORD PTR 24[esp] mov BYTE PTR [esi*1+ebp-1],dl jb $L002loop1 - jmp $L006done + jmp $L004done ALIGN 16 $L001RC4_CHAR: movzx ecx,BYTE PTR [eax*1+edi] -$L008cloop1: +$L005cloop1: add bl,cl movzx edx,BYTE PTR [ebx*1+edi] mov BYTE PTR [ebx*1+edi],cl @@ -267,10 +124,10 @@ $L008cloop1: movzx ecx,BYTE PTR [eax*1+edi] cmp esi,DWORD PTR 24[esp] mov BYTE PTR [esi*1+ebp-1],dl - jb $L008cloop1 -$L006done: + jb $L005cloop1 +$L004done: dec al - mov DWORD PTR [edi-4],ebx + mov BYTE PTR [edi-4],bl mov BYTE PTR [edi-8],al $L000abort: pop edi @@ -279,9 +136,10 @@ $L000abort: pop ebp ret _RC4 ENDP +;EXTERN _OPENSSL_ia32cap_P:NEAR ALIGN 16 -_private_RC4_set_key PROC PUBLIC -$L_private_RC4_set_key_begin:: +_RC4_set_key PROC PUBLIC +$L_RC4_set_key_begin:: push ebp push ebx push esi @@ -296,53 +154,53 @@ $L_private_RC4_set_key_begin:: xor eax,eax mov DWORD PTR [edi-4],ebp bt DWORD PTR [edx],20 - jc $L009c1stloop + jc $L006c1stloop ALIGN 16 -$L010w1stloop: +$L007w1stloop: mov DWORD PTR [eax*4+edi],eax add al,1 - jnc $L010w1stloop + jnc $L007w1stloop xor ecx,ecx xor edx,edx ALIGN 16 -$L011w2ndloop: +$L008w2ndloop: mov eax,DWORD PTR [ecx*4+edi] add dl,BYTE PTR [ebp*1+esi] add dl,al add ebp,1 mov ebx,DWORD PTR [edx*4+edi] - jnz $L012wnowrap + jnz $L009wnowrap mov ebp,DWORD PTR [edi-4] -$L012wnowrap: +$L009wnowrap: mov DWORD PTR [edx*4+edi],eax mov DWORD PTR [ecx*4+edi],ebx add cl,1 - jnc $L011w2ndloop - jmp $L013exit + jnc $L008w2ndloop + jmp $L010exit ALIGN 16 -$L009c1stloop: +$L006c1stloop: mov BYTE PTR [eax*1+edi],al add al,1 - jnc $L009c1stloop + jnc $L006c1stloop xor ecx,ecx xor edx,edx xor ebx,ebx ALIGN 16 -$L014c2ndloop: +$L011c2ndloop: mov al,BYTE PTR [ecx*1+edi] add dl,BYTE PTR [ebp*1+esi] add dl,al add ebp,1 mov bl,BYTE PTR [edx*1+edi] - jnz $L015cnowrap + jnz $L012cnowrap mov ebp,DWORD PTR [edi-4] -$L015cnowrap: +$L012cnowrap: mov BYTE PTR [edx*1+edi],al mov BYTE PTR [ecx*1+edi],bl add cl,1 - jnc $L014c2ndloop + jnc $L011c2ndloop mov DWORD PTR 256[edi],-1 -$L013exit: +$L010exit: xor eax,eax mov DWORD PTR [edi-8],eax mov DWORD PTR [edi-4],eax @@ -351,31 +209,24 @@ $L013exit: pop ebx pop ebp ret -_private_RC4_set_key ENDP +_RC4_set_key ENDP ALIGN 16 _RC4_options PROC PUBLIC $L_RC4_options_begin:: - call $L016pic_point -$L016pic_point: + call $L013pic_point +$L013pic_point: pop eax - lea eax,DWORD PTR ($L017opts-$L016pic_point)[eax] + lea eax,DWORD PTR ($L014opts-$L013pic_point)[eax] lea edx,DWORD PTR _OPENSSL_ia32cap_P - mov edx,DWORD PTR [edx] - bt edx,20 - jc $L0181xchar - bt edx,26 - jnc $L019ret - add eax,25 - ret -$L0181xchar: + bt DWORD PTR [edx],20 + jnc $L015skip add eax,12 -$L019ret: +$L015skip: ret ALIGN 64 -$L017opts: +$L014opts: DB 114,99,52,40,52,120,44,105,110,116,41,0 DB 114,99,52,40,49,120,44,99,104,97,114,41,0 -DB 114,99,52,40,56,120,44,109,109,120,41,0 DB 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 DB 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 DB 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 @@ -383,6 +234,6 @@ ALIGN 64 _RC4_options ENDP .text$ ENDS .bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:QWORD +COMM _OPENSSL_ia32cap_P:DWORD .bss ENDS END |