summaryrefslogtreecommitdiff
path: root/deps/openssl/asm/x86-win32-masm/rc4/rc4-586.asm
diff options
context:
space:
mode:
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.asm225
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