Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(625)

Unified Diff: third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm

Issue 693893006: Roll BoringSSL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nasm
Patch Set: roll further Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
diff --git a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
index c183caca47d74fdd003267b071bca53a0802e899..18ef62dfc5ad1e389e104afa657cb322141c41c1 100644
--- a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
+++ b/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm
@@ -1,15 +1,19 @@
-OPTION DOTNAME
-.text$ SEGMENT ALIGN(256) 'CODE'
-EXTERN OPENSSL_ia32cap_P:NEAR
+default rel
+%define XMMWORD
+%define YMMWORD
+%define ZMMWORD
+section .text code align=64
-PUBLIC asm_RC4
+EXTERN OPENSSL_ia32cap_P
+
+global asm_RC4
ALIGN 16
-asm_RC4 PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
+asm_RC4:
+ mov QWORD[8+rsp],rdi ;WIN64 prologue
+ mov QWORD[16+rsp],rsi
mov rax,rsp
-$L$SEH_begin_asm_RC4::
+$L$SEH_begin_asm_RC4:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
@@ -17,538 +21,537 @@ $L$SEH_begin_asm_RC4::
or rsi,rsi
- jne $L$entry
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
+ jne NEAR $L$entry
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
-$L$entry::
+$L$entry:
push rbx
push r12
push r13
-$L$prologue::
+$L$prologue:
mov r11,rsi
mov r12,rdx
mov r13,rcx
xor r10,r10
xor rcx,rcx
- lea rdi,QWORD PTR[8+rdi]
- mov r10b,BYTE PTR[((-8))+rdi]
- mov cl,BYTE PTR[((-4))+rdi]
- cmp DWORD PTR[256+rdi],-1
- je $L$RC4_CHAR
- mov r8d,DWORD PTR[OPENSSL_ia32cap_P]
+ lea rdi,[8+rdi]
+ mov r10b,BYTE[((-8))+rdi]
+ mov cl,BYTE[((-4))+rdi]
+ cmp DWORD[256+rdi],-1
+ je NEAR $L$RC4_CHAR
+ mov r8d,DWORD[OPENSSL_ia32cap_P]
xor rbx,rbx
inc r10b
sub rbx,r10
sub r13,r12
- mov eax,DWORD PTR[r10*4+rdi]
+ mov eax,DWORD[r10*4+rdi]
test r11,-16
- jz $L$loop1
+ jz NEAR $L$loop1
bt r8d,30
- jc $L$intel
+ jc NEAR $L$intel
and rbx,7
- lea rsi,QWORD PTR[1+r10]
- jz $L$oop8
+ lea rsi,[1+r10]
+ jz NEAR $L$oop8
sub r11,rbx
-$L$oop8_warmup::
+$L$oop8_warmup:
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov DWORD PTR[r10*4+rdi],edx
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov DWORD[r10*4+rdi],edx
add al,dl
inc r10b
- mov edx,DWORD PTR[rax*4+rdi]
- mov eax,DWORD PTR[r10*4+rdi]
- xor dl,BYTE PTR[r12]
- mov BYTE PTR[r13*1+r12],dl
- lea r12,QWORD PTR[1+r12]
+ mov edx,DWORD[rax*4+rdi]
+ mov eax,DWORD[r10*4+rdi]
+ xor dl,BYTE[r12]
+ mov BYTE[r13*1+r12],dl
+ lea r12,[1+r12]
dec rbx
- jnz $L$oop8_warmup
+ jnz NEAR $L$oop8_warmup
- lea rsi,QWORD PTR[1+r10]
- jmp $L$oop8
+ lea rsi,[1+r10]
+ jmp NEAR $L$oop8
ALIGN 16
-$L$oop8::
+$L$oop8:
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov ebx,DWORD PTR[rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov ebx,DWORD[rsi*4+rdi]
ror r8,8
- mov DWORD PTR[r10*4+rdi],edx
+ mov DWORD[r10*4+rdi],edx
add dl,al
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,bl
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
- mov eax,DWORD PTR[4+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
+ mov eax,DWORD[4+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[4+r10*4+rdi],edx
+ mov DWORD[4+r10*4+rdi],edx
add dl,bl
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov ebx,DWORD PTR[8+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov ebx,DWORD[8+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[8+r10*4+rdi],edx
+ mov DWORD[8+r10*4+rdi],edx
add dl,al
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,bl
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
- mov eax,DWORD PTR[12+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
+ mov eax,DWORD[12+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[12+r10*4+rdi],edx
+ mov DWORD[12+r10*4+rdi],edx
add dl,bl
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov ebx,DWORD PTR[16+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov ebx,DWORD[16+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[16+r10*4+rdi],edx
+ mov DWORD[16+r10*4+rdi],edx
add dl,al
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,bl
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
- mov eax,DWORD PTR[20+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
+ mov eax,DWORD[20+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[20+r10*4+rdi],edx
+ mov DWORD[20+r10*4+rdi],edx
add dl,bl
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov ebx,DWORD PTR[24+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov ebx,DWORD[24+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[24+r10*4+rdi],edx
+ mov DWORD[24+r10*4+rdi],edx
add dl,al
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add sil,8
add cl,bl
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
- mov eax,DWORD PTR[((-4))+rsi*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
+ mov eax,DWORD[((-4))+rsi*4+rdi]
ror r8,8
- mov DWORD PTR[28+r10*4+rdi],edx
+ mov DWORD[28+r10*4+rdi],edx
add dl,bl
- mov r8b,BYTE PTR[rdx*4+rdi]
+ mov r8b,BYTE[rdx*4+rdi]
add r10b,8
ror r8,8
sub r11,8
- xor r8,QWORD PTR[r12]
- mov QWORD PTR[r13*1+r12],r8
- lea r12,QWORD PTR[8+r12]
+ xor r8,QWORD[r12]
+ mov QWORD[r13*1+r12],r8
+ lea r12,[8+r12]
test r11,-8
- jnz $L$oop8
+ jnz NEAR $L$oop8
cmp r11,0
- jne $L$loop1
- jmp $L$exit
+ jne NEAR $L$loop1
+ jmp NEAR $L$exit
ALIGN 16
-$L$intel::
+$L$intel:
test r11,-32
- jz $L$loop1
+ jz NEAR $L$loop1
and rbx,15
- jz $L$oop16_is_hot
+ jz NEAR $L$oop16_is_hot
sub r11,rbx
-$L$oop16_warmup::
+$L$oop16_warmup:
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov DWORD PTR[r10*4+rdi],edx
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov DWORD[r10*4+rdi],edx
add al,dl
inc r10b
- mov edx,DWORD PTR[rax*4+rdi]
- mov eax,DWORD PTR[r10*4+rdi]
- xor dl,BYTE PTR[r12]
- mov BYTE PTR[r13*1+r12],dl
- lea r12,QWORD PTR[1+r12]
+ mov edx,DWORD[rax*4+rdi]
+ mov eax,DWORD[r10*4+rdi]
+ xor dl,BYTE[r12]
+ mov BYTE[r13*1+r12],dl
+ lea r12,[1+r12]
dec rbx
- jnz $L$oop16_warmup
+ jnz NEAR $L$oop16_warmup
mov rbx,rcx
xor rcx,rcx
mov cl,bl
-$L$oop16_is_hot::
- lea rsi,QWORD PTR[r10*4+rdi]
+$L$oop16_is_hot:
+ lea rsi,[r10*4+rdi]
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
pxor xmm0,xmm0
- mov DWORD PTR[rcx*4+rdi],eax
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[4+rsi]
+ mov ebx,DWORD[4+rsi]
movzx eax,al
- mov DWORD PTR[rsi],edx
+ mov DWORD[rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],0
- jmp $L$oop16_enter
+ pinsrw xmm0,WORD[rax*4+rdi],0
+ jmp NEAR $L$oop16_enter
ALIGN 16
-$L$oop16::
+$L$oop16:
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
+ mov edx,DWORD[rcx*4+rdi]
pxor xmm2,xmm0
psllq xmm1,8
pxor xmm0,xmm0
- mov DWORD PTR[rcx*4+rdi],eax
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[4+rsi]
+ mov ebx,DWORD[4+rsi]
movzx eax,al
- mov DWORD PTR[rsi],edx
+ mov DWORD[rsi],edx
pxor xmm2,xmm1
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],0
- movdqu XMMWORD PTR[r13*1+r12],xmm2
- lea r12,QWORD PTR[16+r12]
-$L$oop16_enter::
- mov edx,DWORD PTR[rcx*4+rdi]
+ pinsrw xmm0,WORD[rax*4+rdi],0
+ movdqu XMMWORD[r13*1+r12],xmm2
+ lea r12,[16+r12]
+$L$oop16_enter:
+ mov edx,DWORD[rcx*4+rdi]
pxor xmm1,xmm1
- mov DWORD PTR[rcx*4+rdi],ebx
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[8+rsi]
+ mov eax,DWORD[8+rsi]
movzx ebx,bl
- mov DWORD PTR[4+rsi],edx
+ mov DWORD[4+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],0
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],0
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[12+rsi]
+ mov ebx,DWORD[12+rsi]
movzx eax,al
- mov DWORD PTR[8+rsi],edx
+ mov DWORD[8+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],1
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],1
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[16+rsi]
+ mov eax,DWORD[16+rsi]
movzx ebx,bl
- mov DWORD PTR[12+rsi],edx
+ mov DWORD[12+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],1
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],1
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[20+rsi]
+ mov ebx,DWORD[20+rsi]
movzx eax,al
- mov DWORD PTR[16+rsi],edx
+ mov DWORD[16+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],2
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],2
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[24+rsi]
+ mov eax,DWORD[24+rsi]
movzx ebx,bl
- mov DWORD PTR[20+rsi],edx
+ mov DWORD[20+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],2
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],2
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[28+rsi]
+ mov ebx,DWORD[28+rsi]
movzx eax,al
- mov DWORD PTR[24+rsi],edx
+ mov DWORD[24+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],3
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],3
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[32+rsi]
+ mov eax,DWORD[32+rsi]
movzx ebx,bl
- mov DWORD PTR[28+rsi],edx
+ mov DWORD[28+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],3
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],3
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[36+rsi]
+ mov ebx,DWORD[36+rsi]
movzx eax,al
- mov DWORD PTR[32+rsi],edx
+ mov DWORD[32+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],4
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],4
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[40+rsi]
+ mov eax,DWORD[40+rsi]
movzx ebx,bl
- mov DWORD PTR[36+rsi],edx
+ mov DWORD[36+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],4
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],4
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[44+rsi]
+ mov ebx,DWORD[44+rsi]
movzx eax,al
- mov DWORD PTR[40+rsi],edx
+ mov DWORD[40+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],5
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],5
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[48+rsi]
+ mov eax,DWORD[48+rsi]
movzx ebx,bl
- mov DWORD PTR[44+rsi],edx
+ mov DWORD[44+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],5
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],5
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[52+rsi]
+ mov ebx,DWORD[52+rsi]
movzx eax,al
- mov DWORD PTR[48+rsi],edx
+ mov DWORD[48+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],6
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ pinsrw xmm0,WORD[rax*4+rdi],6
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
- mov eax,DWORD PTR[56+rsi]
+ mov eax,DWORD[56+rsi]
movzx ebx,bl
- mov DWORD PTR[52+rsi],edx
+ mov DWORD[52+rsi],edx
add cl,al
- pinsrw xmm1,WORD PTR[rbx*4+rdi],6
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
+ pinsrw xmm1,WORD[rbx*4+rdi],6
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
add al,dl
- mov ebx,DWORD PTR[60+rsi]
+ mov ebx,DWORD[60+rsi]
movzx eax,al
- mov DWORD PTR[56+rsi],edx
+ mov DWORD[56+rsi],edx
add cl,bl
- pinsrw xmm0,WORD PTR[rax*4+rdi],7
+ pinsrw xmm0,WORD[rax*4+rdi],7
add r10b,16
- movdqu xmm2,XMMWORD PTR[r12]
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],ebx
+ movdqu xmm2,XMMWORD[r12]
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],ebx
add bl,dl
movzx ebx,bl
- mov DWORD PTR[60+rsi],edx
- lea rsi,QWORD PTR[r10*4+rdi]
- pinsrw xmm1,WORD PTR[rbx*4+rdi],7
- mov eax,DWORD PTR[rsi]
+ mov DWORD[60+rsi],edx
+ lea rsi,[r10*4+rdi]
+ pinsrw xmm1,WORD[rbx*4+rdi],7
+ mov eax,DWORD[rsi]
mov rbx,rcx
xor rcx,rcx
sub r11,16
mov cl,bl
test r11,-16
- jnz $L$oop16
+ jnz NEAR $L$oop16
psllq xmm1,8
pxor xmm2,xmm0
pxor xmm2,xmm1
- movdqu XMMWORD PTR[r13*1+r12],xmm2
- lea r12,QWORD PTR[16+r12]
+ movdqu XMMWORD[r13*1+r12],xmm2
+ lea r12,[16+r12]
cmp r11,0
- jne $L$loop1
- jmp $L$exit
+ jne NEAR $L$loop1
+ jmp NEAR $L$exit
ALIGN 16
-$L$loop1::
+$L$loop1:
add cl,al
- mov edx,DWORD PTR[rcx*4+rdi]
- mov DWORD PTR[rcx*4+rdi],eax
- mov DWORD PTR[r10*4+rdi],edx
+ mov edx,DWORD[rcx*4+rdi]
+ mov DWORD[rcx*4+rdi],eax
+ mov DWORD[r10*4+rdi],edx
add al,dl
inc r10b
- mov edx,DWORD PTR[rax*4+rdi]
- mov eax,DWORD PTR[r10*4+rdi]
- xor dl,BYTE PTR[r12]
- mov BYTE PTR[r13*1+r12],dl
- lea r12,QWORD PTR[1+r12]
+ mov edx,DWORD[rax*4+rdi]
+ mov eax,DWORD[r10*4+rdi]
+ xor dl,BYTE[r12]
+ mov BYTE[r13*1+r12],dl
+ lea r12,[1+r12]
dec r11
- jnz $L$loop1
- jmp $L$exit
+ jnz NEAR $L$loop1
+ jmp NEAR $L$exit
ALIGN 16
-$L$RC4_CHAR::
+$L$RC4_CHAR:
add r10b,1
- movzx eax,BYTE PTR[r10*1+rdi]
+ movzx eax,BYTE[r10*1+rdi]
test r11,-8
- jz $L$cloop1
- jmp $L$cloop8
+ jz NEAR $L$cloop1
+ jmp NEAR $L$cloop8
ALIGN 16
-$L$cloop8::
- mov r8d,DWORD PTR[r12]
- mov r9d,DWORD PTR[4+r12]
+$L$cloop8:
+ mov r8d,DWORD[r12]
+ mov r9d,DWORD[4+r12]
add cl,al
- lea rsi,QWORD PTR[1+r10]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea rsi,[1+r10]
+ movzx edx,BYTE[rcx*1+rdi]
movzx esi,sil
- movzx ebx,BYTE PTR[rsi*1+rdi]
- mov BYTE PTR[rcx*1+rdi],al
+ movzx ebx,BYTE[rsi*1+rdi]
+ mov BYTE[rcx*1+rdi],al
cmp rcx,rsi
- mov BYTE PTR[r10*1+rdi],dl
- jne $L$cmov0
+ mov BYTE[r10*1+rdi],dl
+ jne NEAR $L$cmov0
mov rbx,rax
-$L$cmov0::
+$L$cmov0:
add dl,al
- xor r8b,BYTE PTR[rdx*1+rdi]
+ xor r8b,BYTE[rdx*1+rdi]
ror r8d,8
add cl,bl
- lea r10,QWORD PTR[1+rsi]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea r10,[1+rsi]
+ movzx edx,BYTE[rcx*1+rdi]
movzx r10d,r10b
- movzx eax,BYTE PTR[r10*1+rdi]
- mov BYTE PTR[rcx*1+rdi],bl
+ movzx eax,BYTE[r10*1+rdi]
+ mov BYTE[rcx*1+rdi],bl
cmp rcx,r10
- mov BYTE PTR[rsi*1+rdi],dl
- jne $L$cmov1
+ mov BYTE[rsi*1+rdi],dl
+ jne NEAR $L$cmov1
mov rax,rbx
-$L$cmov1::
+$L$cmov1:
add dl,bl
- xor r8b,BYTE PTR[rdx*1+rdi]
+ xor r8b,BYTE[rdx*1+rdi]
ror r8d,8
add cl,al
- lea rsi,QWORD PTR[1+r10]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea rsi,[1+r10]
+ movzx edx,BYTE[rcx*1+rdi]
movzx esi,sil
- movzx ebx,BYTE PTR[rsi*1+rdi]
- mov BYTE PTR[rcx*1+rdi],al
+ movzx ebx,BYTE[rsi*1+rdi]
+ mov BYTE[rcx*1+rdi],al
cmp rcx,rsi
- mov BYTE PTR[r10*1+rdi],dl
- jne $L$cmov2
+ mov BYTE[r10*1+rdi],dl
+ jne NEAR $L$cmov2
mov rbx,rax
-$L$cmov2::
+$L$cmov2:
add dl,al
- xor r8b,BYTE PTR[rdx*1+rdi]
+ xor r8b,BYTE[rdx*1+rdi]
ror r8d,8
add cl,bl
- lea r10,QWORD PTR[1+rsi]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea r10,[1+rsi]
+ movzx edx,BYTE[rcx*1+rdi]
movzx r10d,r10b
- movzx eax,BYTE PTR[r10*1+rdi]
- mov BYTE PTR[rcx*1+rdi],bl
+ movzx eax,BYTE[r10*1+rdi]
+ mov BYTE[rcx*1+rdi],bl
cmp rcx,r10
- mov BYTE PTR[rsi*1+rdi],dl
- jne $L$cmov3
+ mov BYTE[rsi*1+rdi],dl
+ jne NEAR $L$cmov3
mov rax,rbx
-$L$cmov3::
+$L$cmov3:
add dl,bl
- xor r8b,BYTE PTR[rdx*1+rdi]
+ xor r8b,BYTE[rdx*1+rdi]
ror r8d,8
add cl,al
- lea rsi,QWORD PTR[1+r10]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea rsi,[1+r10]
+ movzx edx,BYTE[rcx*1+rdi]
movzx esi,sil
- movzx ebx,BYTE PTR[rsi*1+rdi]
- mov BYTE PTR[rcx*1+rdi],al
+ movzx ebx,BYTE[rsi*1+rdi]
+ mov BYTE[rcx*1+rdi],al
cmp rcx,rsi
- mov BYTE PTR[r10*1+rdi],dl
- jne $L$cmov4
+ mov BYTE[r10*1+rdi],dl
+ jne NEAR $L$cmov4
mov rbx,rax
-$L$cmov4::
+$L$cmov4:
add dl,al
- xor r9b,BYTE PTR[rdx*1+rdi]
+ xor r9b,BYTE[rdx*1+rdi]
ror r9d,8
add cl,bl
- lea r10,QWORD PTR[1+rsi]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea r10,[1+rsi]
+ movzx edx,BYTE[rcx*1+rdi]
movzx r10d,r10b
- movzx eax,BYTE PTR[r10*1+rdi]
- mov BYTE PTR[rcx*1+rdi],bl
+ movzx eax,BYTE[r10*1+rdi]
+ mov BYTE[rcx*1+rdi],bl
cmp rcx,r10
- mov BYTE PTR[rsi*1+rdi],dl
- jne $L$cmov5
+ mov BYTE[rsi*1+rdi],dl
+ jne NEAR $L$cmov5
mov rax,rbx
-$L$cmov5::
+$L$cmov5:
add dl,bl
- xor r9b,BYTE PTR[rdx*1+rdi]
+ xor r9b,BYTE[rdx*1+rdi]
ror r9d,8
add cl,al
- lea rsi,QWORD PTR[1+r10]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea rsi,[1+r10]
+ movzx edx,BYTE[rcx*1+rdi]
movzx esi,sil
- movzx ebx,BYTE PTR[rsi*1+rdi]
- mov BYTE PTR[rcx*1+rdi],al
+ movzx ebx,BYTE[rsi*1+rdi]
+ mov BYTE[rcx*1+rdi],al
cmp rcx,rsi
- mov BYTE PTR[r10*1+rdi],dl
- jne $L$cmov6
+ mov BYTE[r10*1+rdi],dl
+ jne NEAR $L$cmov6
mov rbx,rax
-$L$cmov6::
+$L$cmov6:
add dl,al
- xor r9b,BYTE PTR[rdx*1+rdi]
+ xor r9b,BYTE[rdx*1+rdi]
ror r9d,8
add cl,bl
- lea r10,QWORD PTR[1+rsi]
- movzx edx,BYTE PTR[rcx*1+rdi]
+ lea r10,[1+rsi]
+ movzx edx,BYTE[rcx*1+rdi]
movzx r10d,r10b
- movzx eax,BYTE PTR[r10*1+rdi]
- mov BYTE PTR[rcx*1+rdi],bl
+ movzx eax,BYTE[r10*1+rdi]
+ mov BYTE[rcx*1+rdi],bl
cmp rcx,r10
- mov BYTE PTR[rsi*1+rdi],dl
- jne $L$cmov7
+ mov BYTE[rsi*1+rdi],dl
+ jne NEAR $L$cmov7
mov rax,rbx
-$L$cmov7::
+$L$cmov7:
add dl,bl
- xor r9b,BYTE PTR[rdx*1+rdi]
+ xor r9b,BYTE[rdx*1+rdi]
ror r9d,8
- lea r11,QWORD PTR[((-8))+r11]
- mov DWORD PTR[r13],r8d
- lea r12,QWORD PTR[8+r12]
- mov DWORD PTR[4+r13],r9d
- lea r13,QWORD PTR[8+r13]
+ lea r11,[((-8))+r11]
+ mov DWORD[r13],r8d
+ lea r12,[8+r12]
+ mov DWORD[4+r13],r9d
+ lea r13,[8+r13]
test r11,-8
- jnz $L$cloop8
+ jnz NEAR $L$cloop8
cmp r11,0
- jne $L$cloop1
- jmp $L$exit
+ jne NEAR $L$cloop1
+ jmp NEAR $L$exit
ALIGN 16
-$L$cloop1::
+$L$cloop1:
add cl,al
movzx ecx,cl
- movzx edx,BYTE PTR[rcx*1+rdi]
- mov BYTE PTR[rcx*1+rdi],al
- mov BYTE PTR[r10*1+rdi],dl
+ movzx edx,BYTE[rcx*1+rdi]
+ mov BYTE[rcx*1+rdi],al
+ mov BYTE[r10*1+rdi],dl
add dl,al
add r10b,1
movzx edx,dl
movzx r10d,r10b
- movzx edx,BYTE PTR[rdx*1+rdi]
- movzx eax,BYTE PTR[r10*1+rdi]
- xor dl,BYTE PTR[r12]
- lea r12,QWORD PTR[1+r12]
- mov BYTE PTR[r13],dl
- lea r13,QWORD PTR[1+r13]
+ movzx edx,BYTE[rdx*1+rdi]
+ movzx eax,BYTE[r10*1+rdi]
+ xor dl,BYTE[r12]
+ lea r12,[1+r12]
+ mov BYTE[r13],dl
+ lea r13,[1+r13]
sub r11,1
- jnz $L$cloop1
- jmp $L$exit
+ jnz NEAR $L$cloop1
+ jmp NEAR $L$exit
ALIGN 16
-$L$exit::
+$L$exit:
sub r10b,1
- mov DWORD PTR[((-8))+rdi],r10d
- mov DWORD PTR[((-4))+rdi],ecx
+ mov DWORD[((-8))+rdi],r10d
+ mov DWORD[((-4))+rdi],ecx
- mov r13,QWORD PTR[rsp]
- mov r12,QWORD PTR[8+rsp]
- mov rbx,QWORD PTR[16+rsp]
+ mov r13,QWORD[rsp]
+ mov r12,QWORD[8+rsp]
+ mov rbx,QWORD[16+rsp]
add rsp,24
-$L$epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
+$L$epilogue:
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
-$L$SEH_end_asm_RC4::
-asm_RC4 ENDP
-PUBLIC asm_RC4_set_key
+$L$SEH_end_asm_RC4:
+global asm_RC4_set_key
ALIGN 16
-asm_RC4_set_key PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
+asm_RC4_set_key:
+ mov QWORD[8+rsp],rdi ;WIN64 prologue
+ mov QWORD[16+rsp],rsi
mov rax,rsp
-$L$SEH_begin_asm_RC4_set_key::
+$L$SEH_begin_asm_RC4_set_key:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
- lea rdi,QWORD PTR[8+rdi]
- lea rdx,QWORD PTR[rsi*1+rdx]
+ lea rdi,[8+rdi]
+ lea rdx,[rsi*1+rdx]
neg rsi
mov rcx,rsi
xor eax,eax
@@ -556,87 +559,86 @@ $L$SEH_begin_asm_RC4_set_key::
xor r10,r10
xor r11,r11
- mov r8d,DWORD PTR[OPENSSL_ia32cap_P]
+ mov r8d,DWORD[OPENSSL_ia32cap_P]
bt r8d,20
- jc $L$c1stloop
- jmp $L$w1stloop
+ jc NEAR $L$c1stloop
+ jmp NEAR $L$w1stloop
ALIGN 16
-$L$w1stloop::
- mov DWORD PTR[rax*4+rdi],eax
+$L$w1stloop:
+ mov DWORD[rax*4+rdi],eax
add al,1
- jnc $L$w1stloop
+ jnc NEAR $L$w1stloop
xor r9,r9
xor r8,r8
ALIGN 16
-$L$w2ndloop::
- mov r10d,DWORD PTR[r9*4+rdi]
- add r8b,BYTE PTR[rsi*1+rdx]
+$L$w2ndloop:
+ mov r10d,DWORD[r9*4+rdi]
+ add r8b,BYTE[rsi*1+rdx]
add r8b,r10b
add rsi,1
- mov r11d,DWORD PTR[r8*4+rdi]
+ mov r11d,DWORD[r8*4+rdi]
cmovz rsi,rcx
- mov DWORD PTR[r8*4+rdi],r10d
- mov DWORD PTR[r9*4+rdi],r11d
+ mov DWORD[r8*4+rdi],r10d
+ mov DWORD[r9*4+rdi],r11d
add r9b,1
- jnc $L$w2ndloop
- jmp $L$exit_key
+ jnc NEAR $L$w2ndloop
+ jmp NEAR $L$exit_key
ALIGN 16
-$L$c1stloop::
- mov BYTE PTR[rax*1+rdi],al
+$L$c1stloop:
+ mov BYTE[rax*1+rdi],al
add al,1
- jnc $L$c1stloop
+ jnc NEAR $L$c1stloop
xor r9,r9
xor r8,r8
ALIGN 16
-$L$c2ndloop::
- mov r10b,BYTE PTR[r9*1+rdi]
- add r8b,BYTE PTR[rsi*1+rdx]
+$L$c2ndloop:
+ mov r10b,BYTE[r9*1+rdi]
+ add r8b,BYTE[rsi*1+rdx]
add r8b,r10b
add rsi,1
- mov r11b,BYTE PTR[r8*1+rdi]
- jnz $L$cnowrap
+ mov r11b,BYTE[r8*1+rdi]
+ jnz NEAR $L$cnowrap
mov rsi,rcx
-$L$cnowrap::
- mov BYTE PTR[r8*1+rdi],r10b
- mov BYTE PTR[r9*1+rdi],r11b
+$L$cnowrap:
+ mov BYTE[r8*1+rdi],r10b
+ mov BYTE[r9*1+rdi],r11b
add r9b,1
- jnc $L$c2ndloop
- mov DWORD PTR[256+rdi],-1
+ jnc NEAR $L$c2ndloop
+ mov DWORD[256+rdi],-1
ALIGN 16
-$L$exit_key::
+$L$exit_key:
xor eax,eax
- mov DWORD PTR[((-8))+rdi],eax
- mov DWORD PTR[((-4))+rdi],eax
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
+ mov DWORD[((-8))+rdi],eax
+ mov DWORD[((-4))+rdi],eax
+ mov rdi,QWORD[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
-$L$SEH_end_asm_RC4_set_key::
-asm_RC4_set_key ENDP
+$L$SEH_end_asm_RC4_set_key:
-PUBLIC RC4_options
+global RC4_options
ALIGN 16
-RC4_options PROC PUBLIC
- lea rax,QWORD PTR[$L$opts]
- mov rdx,QWORD PTR[OPENSSL_ia32cap_P]
- mov edx,DWORD PTR[rdx]
+RC4_options:
+ lea rax,[$L$opts]
+ mov rdx,QWORD[OPENSSL_ia32cap_P]
+ mov edx,DWORD[rdx]
bt edx,20
- jc $L$8xchar
+ jc NEAR $L$8xchar
bt edx,30
- jnc $L$done
+ jnc NEAR $L$done
add rax,25
DB 0F3h,0C3h ;repret
-$L$8xchar::
+$L$8xchar:
add rax,12
-$L$done::
+$L$done:
DB 0F3h,0C3h ;repret
ALIGN 64
-$L$opts::
+$L$opts:
DB 114,99,52,40,56,120,44,105,110,116,41,0
DB 114,99,52,40,56,120,44,99,104,97,114,41,0
DB 114,99,52,40,49,54,120,44,105,110,116,41,0
@@ -645,11 +647,11 @@ 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 64
-RC4_options ENDP
-EXTERN __imp_RtlVirtualUnwind:NEAR
+
+EXTERN __imp_RtlVirtualUnwind
ALIGN 16
-stream_se_handler PROC PRIVATE
+stream_se_handler:
push rsi
push rdi
push rbx
@@ -661,41 +663,41 @@ stream_se_handler PROC PRIVATE
pushfq
sub rsp,64
- mov rax,QWORD PTR[120+r8]
- mov rbx,QWORD PTR[248+r8]
+ mov rax,QWORD[120+r8]
+ mov rbx,QWORD[248+r8]
- lea r10,QWORD PTR[$L$prologue]
+ lea r10,[$L$prologue]
cmp rbx,r10
- jb $L$in_prologue
+ jb NEAR $L$in_prologue
- mov rax,QWORD PTR[152+r8]
+ mov rax,QWORD[152+r8]
- lea r10,QWORD PTR[$L$epilogue]
+ lea r10,[$L$epilogue]
cmp rbx,r10
- jae $L$in_prologue
+ jae NEAR $L$in_prologue
+
+ lea rax,[24+rax]
- lea rax,QWORD PTR[24+rax]
+ mov rbx,QWORD[((-8))+rax]
+ mov r12,QWORD[((-16))+rax]
+ mov r13,QWORD[((-24))+rax]
+ mov QWORD[144+r8],rbx
+ mov QWORD[216+r8],r12
+ mov QWORD[224+r8],r13
- mov rbx,QWORD PTR[((-8))+rax]
- mov r12,QWORD PTR[((-16))+rax]
- mov r13,QWORD PTR[((-24))+rax]
- mov QWORD PTR[144+r8],rbx
- mov QWORD PTR[216+r8],r12
- mov QWORD PTR[224+r8],r13
+$L$in_prologue:
+ mov rdi,QWORD[8+rax]
+ mov rsi,QWORD[16+rax]
+ mov QWORD[152+r8],rax
+ mov QWORD[168+r8],rsi
+ mov QWORD[176+r8],rdi
-$L$in_prologue::
- mov rdi,QWORD PTR[8+rax]
- mov rsi,QWORD PTR[16+rax]
- mov QWORD PTR[152+r8],rax
- mov QWORD PTR[168+r8],rsi
- mov QWORD PTR[176+r8],rdi
+ jmp NEAR $L$common_seh_exit
- jmp $L$common_seh_exit
-stream_se_handler ENDP
ALIGN 16
-key_se_handler PROC PRIVATE
+key_se_handler:
push rsi
push rdi
push rbx
@@ -707,32 +709,32 @@ key_se_handler PROC PRIVATE
pushfq
sub rsp,64
- mov rax,QWORD PTR[152+r8]
- mov rdi,QWORD PTR[8+rax]
- mov rsi,QWORD PTR[16+rax]
- mov QWORD PTR[168+r8],rsi
- mov QWORD PTR[176+r8],rdi
+ mov rax,QWORD[152+r8]
+ mov rdi,QWORD[8+rax]
+ mov rsi,QWORD[16+rax]
+ mov QWORD[168+r8],rsi
+ mov QWORD[176+r8],rdi
-$L$common_seh_exit::
+$L$common_seh_exit:
- mov rdi,QWORD PTR[40+r9]
+ mov rdi,QWORD[40+r9]
mov rsi,r8
mov ecx,154
- DD 0a548f3fch
+ DD 0xa548f3fc
mov rsi,r9
xor rcx,rcx
- mov rdx,QWORD PTR[8+rsi]
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[16+rsi]
- mov r10,QWORD PTR[40+rsi]
- lea r11,QWORD PTR[56+rsi]
- lea r12,QWORD PTR[24+rsi]
- mov QWORD PTR[32+rsp],r10
- mov QWORD PTR[40+rsp],r11
- mov QWORD PTR[48+rsp],r12
- mov QWORD PTR[56+rsp],rcx
- call QWORD PTR[__imp_RtlVirtualUnwind]
+ mov rdx,QWORD[8+rsi]
+ mov r8,QWORD[rsi]
+ mov r9,QWORD[16+rsi]
+ mov r10,QWORD[40+rsi]
+ lea r11,[56+rsi]
+ lea r12,[24+rsi]
+ mov QWORD[32+rsp],r10
+ mov QWORD[40+rsp],r11
+ mov QWORD[48+rsp],r12
+ mov QWORD[56+rsp],rcx
+ call QWORD[__imp_RtlVirtualUnwind]
mov eax,1
add rsp,64
@@ -746,28 +748,23 @@ $L$common_seh_exit::
pop rdi
pop rsi
DB 0F3h,0C3h ;repret
-key_se_handler ENDP
-.text$ ENDS
-.pdata SEGMENT READONLY ALIGN(4)
+
+section .pdata rdata align=4
ALIGN 4
- DD imagerel $L$SEH_begin_asm_RC4
- DD imagerel $L$SEH_end_asm_RC4
- DD imagerel $L$SEH_info_asm_RC4
+ DD $L$SEH_begin_asm_RC4 wrt ..imagebase
+ DD $L$SEH_end_asm_RC4 wrt ..imagebase
+ DD $L$SEH_info_asm_RC4 wrt ..imagebase
- DD imagerel $L$SEH_begin_asm_RC4_set_key
- DD imagerel $L$SEH_end_asm_RC4_set_key
- DD imagerel $L$SEH_info_asm_RC4_set_key
+ DD $L$SEH_begin_asm_RC4_set_key wrt ..imagebase
+ DD $L$SEH_end_asm_RC4_set_key wrt ..imagebase
+ DD $L$SEH_info_asm_RC4_set_key wrt ..imagebase
-.pdata ENDS
-.xdata SEGMENT READONLY ALIGN(8)
+section .xdata rdata align=8
ALIGN 8
-$L$SEH_info_asm_RC4::
+$L$SEH_info_asm_RC4:
DB 9,0,0,0
- DD imagerel stream_se_handler
-$L$SEH_info_asm_RC4_set_key::
+ DD stream_se_handler wrt ..imagebase
+$L$SEH_info_asm_RC4_set_key:
DB 9,0,0,0
- DD imagerel key_se_handler
-
-.xdata ENDS
-END
+ DD key_se_handler wrt ..imagebase

Powered by Google App Engine
This is Rietveld 408576698