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 |
deleted file mode 100644 |
index c7c3b7b6c0ffb28701b0dac4e5cd83a340bf3791..0000000000000000000000000000000000000000 |
--- a/third_party/boringssl/win-x86_64/crypto/rc4/rc4-x86_64.asm |
+++ /dev/null |
@@ -1,741 +0,0 @@ |
-default rel |
-%define XMMWORD |
-%define YMMWORD |
-%define ZMMWORD |
-section .text code align=64 |
- |
-EXTERN OPENSSL_ia32cap_P |
- |
-global asm_RC4 |
- |
-ALIGN 16 |
-asm_RC4: |
- mov QWORD[8+rsp],rdi ;WIN64 prologue |
- mov QWORD[16+rsp],rsi |
- mov rax,rsp |
-$L$SEH_begin_asm_RC4: |
- mov rdi,rcx |
- mov rsi,rdx |
- mov rdx,r8 |
- mov rcx,r9 |
- |
- |
- or rsi,rsi |
- jne NEAR $L$entry |
- mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
- mov rsi,QWORD[16+rsp] |
- DB 0F3h,0C3h ;repret |
-$L$entry: |
- push rbx |
- push r12 |
- push r13 |
-$L$prologue: |
- mov r11,rsi |
- mov r12,rdx |
- mov r13,rcx |
- xor r10,r10 |
- xor rcx,rcx |
- |
- 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[r10*4+rdi] |
- test r11,-16 |
- jz NEAR $L$loop1 |
- bt r8d,30 |
- jc NEAR $L$intel |
- and rbx,7 |
- lea rsi,[1+r10] |
- jz NEAR $L$oop8 |
- sub r11,rbx |
-$L$oop8_warmup: |
- add cl,al |
- 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[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 NEAR $L$oop8_warmup |
- |
- lea rsi,[1+r10] |
- jmp NEAR $L$oop8 |
-ALIGN 16 |
-$L$oop8: |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],eax |
- mov ebx,DWORD[rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[r10*4+rdi],edx |
- add dl,al |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,bl |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],ebx |
- mov eax,DWORD[4+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[4+r10*4+rdi],edx |
- add dl,bl |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],eax |
- mov ebx,DWORD[8+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[8+r10*4+rdi],edx |
- add dl,al |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,bl |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],ebx |
- mov eax,DWORD[12+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[12+r10*4+rdi],edx |
- add dl,bl |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],eax |
- mov ebx,DWORD[16+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[16+r10*4+rdi],edx |
- add dl,al |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,bl |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],ebx |
- mov eax,DWORD[20+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[20+r10*4+rdi],edx |
- add dl,bl |
- mov r8b,BYTE[rdx*4+rdi] |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],eax |
- mov ebx,DWORD[24+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[24+r10*4+rdi],edx |
- add dl,al |
- mov r8b,BYTE[rdx*4+rdi] |
- add sil,8 |
- add cl,bl |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],ebx |
- mov eax,DWORD[((-4))+rsi*4+rdi] |
- ror r8,8 |
- mov DWORD[28+r10*4+rdi],edx |
- add dl,bl |
- mov r8b,BYTE[rdx*4+rdi] |
- add r10b,8 |
- ror r8,8 |
- sub r11,8 |
- |
- xor r8,QWORD[r12] |
- mov QWORD[r13*1+r12],r8 |
- lea r12,[8+r12] |
- |
- test r11,-8 |
- jnz NEAR $L$oop8 |
- cmp r11,0 |
- jne NEAR $L$loop1 |
- jmp NEAR $L$exit |
- |
-ALIGN 16 |
-$L$intel: |
- test r11,-32 |
- jz NEAR $L$loop1 |
- and rbx,15 |
- jz NEAR $L$oop16_is_hot |
- sub r11,rbx |
-$L$oop16_warmup: |
- add cl,al |
- 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[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 NEAR $L$oop16_warmup |
- |
- mov rbx,rcx |
- xor rcx,rcx |
- mov cl,bl |
- |
-$L$oop16_is_hot: |
- lea rsi,[r10*4+rdi] |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- pxor xmm0,xmm0 |
- mov DWORD[rcx*4+rdi],eax |
- add al,dl |
- mov ebx,DWORD[4+rsi] |
- movzx eax,al |
- mov DWORD[rsi],edx |
- add cl,bl |
- pinsrw xmm0,WORD[rax*4+rdi],0 |
- jmp NEAR $L$oop16_enter |
-ALIGN 16 |
-$L$oop16: |
- add cl,al |
- mov edx,DWORD[rcx*4+rdi] |
- pxor xmm2,xmm0 |
- psllq xmm1,8 |
- pxor xmm0,xmm0 |
- mov DWORD[rcx*4+rdi],eax |
- add al,dl |
- mov ebx,DWORD[4+rsi] |
- movzx eax,al |
- mov DWORD[rsi],edx |
- pxor xmm2,xmm1 |
- add cl,bl |
- 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[rcx*4+rdi],ebx |
- add bl,dl |
- mov eax,DWORD[8+rsi] |
- movzx ebx,bl |
- mov DWORD[4+rsi],edx |
- add cl,al |
- 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[12+rsi] |
- movzx eax,al |
- mov DWORD[8+rsi],edx |
- add cl,bl |
- 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[16+rsi] |
- movzx ebx,bl |
- mov DWORD[12+rsi],edx |
- add cl,al |
- 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[20+rsi] |
- movzx eax,al |
- mov DWORD[16+rsi],edx |
- add cl,bl |
- 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[24+rsi] |
- movzx ebx,bl |
- mov DWORD[20+rsi],edx |
- add cl,al |
- 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[28+rsi] |
- movzx eax,al |
- mov DWORD[24+rsi],edx |
- add cl,bl |
- 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[32+rsi] |
- movzx ebx,bl |
- mov DWORD[28+rsi],edx |
- add cl,al |
- 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[36+rsi] |
- movzx eax,al |
- mov DWORD[32+rsi],edx |
- add cl,bl |
- 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[40+rsi] |
- movzx ebx,bl |
- mov DWORD[36+rsi],edx |
- add cl,al |
- 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[44+rsi] |
- movzx eax,al |
- mov DWORD[40+rsi],edx |
- add cl,bl |
- 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[48+rsi] |
- movzx ebx,bl |
- mov DWORD[44+rsi],edx |
- add cl,al |
- 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[52+rsi] |
- movzx eax,al |
- mov DWORD[48+rsi],edx |
- add cl,bl |
- 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[56+rsi] |
- movzx ebx,bl |
- mov DWORD[52+rsi],edx |
- add cl,al |
- 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[60+rsi] |
- movzx eax,al |
- mov DWORD[56+rsi],edx |
- add cl,bl |
- pinsrw xmm0,WORD[rax*4+rdi],7 |
- add r10b,16 |
- movdqu xmm2,XMMWORD[r12] |
- mov edx,DWORD[rcx*4+rdi] |
- mov DWORD[rcx*4+rdi],ebx |
- add bl,dl |
- movzx ebx,bl |
- 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 NEAR $L$oop16 |
- |
- psllq xmm1,8 |
- pxor xmm2,xmm0 |
- pxor xmm2,xmm1 |
- movdqu XMMWORD[r13*1+r12],xmm2 |
- lea r12,[16+r12] |
- |
- cmp r11,0 |
- jne NEAR $L$loop1 |
- jmp NEAR $L$exit |
- |
-ALIGN 16 |
-$L$loop1: |
- add cl,al |
- 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[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 NEAR $L$loop1 |
- jmp NEAR $L$exit |
- |
-ALIGN 16 |
-$L$RC4_CHAR: |
- add r10b,1 |
- movzx eax,BYTE[r10*1+rdi] |
- test r11,-8 |
- jz NEAR $L$cloop1 |
- jmp NEAR $L$cloop8 |
-ALIGN 16 |
-$L$cloop8: |
- mov r8d,DWORD[r12] |
- mov r9d,DWORD[4+r12] |
- add cl,al |
- lea rsi,[1+r10] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx esi,sil |
- movzx ebx,BYTE[rsi*1+rdi] |
- mov BYTE[rcx*1+rdi],al |
- cmp rcx,rsi |
- mov BYTE[r10*1+rdi],dl |
- jne NEAR $L$cmov0 |
- mov rbx,rax |
-$L$cmov0: |
- add dl,al |
- xor r8b,BYTE[rdx*1+rdi] |
- ror r8d,8 |
- add cl,bl |
- lea r10,[1+rsi] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx r10d,r10b |
- movzx eax,BYTE[r10*1+rdi] |
- mov BYTE[rcx*1+rdi],bl |
- cmp rcx,r10 |
- mov BYTE[rsi*1+rdi],dl |
- jne NEAR $L$cmov1 |
- mov rax,rbx |
-$L$cmov1: |
- add dl,bl |
- xor r8b,BYTE[rdx*1+rdi] |
- ror r8d,8 |
- add cl,al |
- lea rsi,[1+r10] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx esi,sil |
- movzx ebx,BYTE[rsi*1+rdi] |
- mov BYTE[rcx*1+rdi],al |
- cmp rcx,rsi |
- mov BYTE[r10*1+rdi],dl |
- jne NEAR $L$cmov2 |
- mov rbx,rax |
-$L$cmov2: |
- add dl,al |
- xor r8b,BYTE[rdx*1+rdi] |
- ror r8d,8 |
- add cl,bl |
- lea r10,[1+rsi] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx r10d,r10b |
- movzx eax,BYTE[r10*1+rdi] |
- mov BYTE[rcx*1+rdi],bl |
- cmp rcx,r10 |
- mov BYTE[rsi*1+rdi],dl |
- jne NEAR $L$cmov3 |
- mov rax,rbx |
-$L$cmov3: |
- add dl,bl |
- xor r8b,BYTE[rdx*1+rdi] |
- ror r8d,8 |
- add cl,al |
- lea rsi,[1+r10] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx esi,sil |
- movzx ebx,BYTE[rsi*1+rdi] |
- mov BYTE[rcx*1+rdi],al |
- cmp rcx,rsi |
- mov BYTE[r10*1+rdi],dl |
- jne NEAR $L$cmov4 |
- mov rbx,rax |
-$L$cmov4: |
- add dl,al |
- xor r9b,BYTE[rdx*1+rdi] |
- ror r9d,8 |
- add cl,bl |
- lea r10,[1+rsi] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx r10d,r10b |
- movzx eax,BYTE[r10*1+rdi] |
- mov BYTE[rcx*1+rdi],bl |
- cmp rcx,r10 |
- mov BYTE[rsi*1+rdi],dl |
- jne NEAR $L$cmov5 |
- mov rax,rbx |
-$L$cmov5: |
- add dl,bl |
- xor r9b,BYTE[rdx*1+rdi] |
- ror r9d,8 |
- add cl,al |
- lea rsi,[1+r10] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx esi,sil |
- movzx ebx,BYTE[rsi*1+rdi] |
- mov BYTE[rcx*1+rdi],al |
- cmp rcx,rsi |
- mov BYTE[r10*1+rdi],dl |
- jne NEAR $L$cmov6 |
- mov rbx,rax |
-$L$cmov6: |
- add dl,al |
- xor r9b,BYTE[rdx*1+rdi] |
- ror r9d,8 |
- add cl,bl |
- lea r10,[1+rsi] |
- movzx edx,BYTE[rcx*1+rdi] |
- movzx r10d,r10b |
- movzx eax,BYTE[r10*1+rdi] |
- mov BYTE[rcx*1+rdi],bl |
- cmp rcx,r10 |
- mov BYTE[rsi*1+rdi],dl |
- jne NEAR $L$cmov7 |
- mov rax,rbx |
-$L$cmov7: |
- add dl,bl |
- xor r9b,BYTE[rdx*1+rdi] |
- ror r9d,8 |
- 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 NEAR $L$cloop8 |
- cmp r11,0 |
- jne NEAR $L$cloop1 |
- jmp NEAR $L$exit |
-ALIGN 16 |
-$L$cloop1: |
- add cl,al |
- movzx ecx,cl |
- 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[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 NEAR $L$cloop1 |
- jmp NEAR $L$exit |
- |
-ALIGN 16 |
-$L$exit: |
- sub r10b,1 |
- mov DWORD[((-8))+rdi],r10d |
- mov DWORD[((-4))+rdi],ecx |
- |
- mov r13,QWORD[rsp] |
- mov r12,QWORD[8+rsp] |
- mov rbx,QWORD[16+rsp] |
- add rsp,24 |
-$L$epilogue: |
- mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
- mov rsi,QWORD[16+rsp] |
- DB 0F3h,0C3h ;repret |
-$L$SEH_end_asm_RC4: |
-global asm_RC4_set_key |
- |
-ALIGN 16 |
-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: |
- mov rdi,rcx |
- mov rsi,rdx |
- mov rdx,r8 |
- |
- |
- lea rdi,[8+rdi] |
- lea rdx,[rsi*1+rdx] |
- neg rsi |
- mov rcx,rsi |
- xor eax,eax |
- xor r9,r9 |
- xor r10,r10 |
- xor r11,r11 |
- |
- mov r8d,DWORD[OPENSSL_ia32cap_P] |
- bt r8d,20 |
- jc NEAR $L$c1stloop |
- jmp NEAR $L$w1stloop |
- |
-ALIGN 16 |
-$L$w1stloop: |
- mov DWORD[rax*4+rdi],eax |
- add al,1 |
- jnc NEAR $L$w1stloop |
- |
- xor r9,r9 |
- xor r8,r8 |
-ALIGN 16 |
-$L$w2ndloop: |
- mov r10d,DWORD[r9*4+rdi] |
- add r8b,BYTE[rsi*1+rdx] |
- add r8b,r10b |
- add rsi,1 |
- mov r11d,DWORD[r8*4+rdi] |
- cmovz rsi,rcx |
- mov DWORD[r8*4+rdi],r10d |
- mov DWORD[r9*4+rdi],r11d |
- add r9b,1 |
- jnc NEAR $L$w2ndloop |
- jmp NEAR $L$exit_key |
- |
-ALIGN 16 |
-$L$c1stloop: |
- mov BYTE[rax*1+rdi],al |
- add al,1 |
- jnc NEAR $L$c1stloop |
- |
- xor r9,r9 |
- xor r8,r8 |
-ALIGN 16 |
-$L$c2ndloop: |
- mov r10b,BYTE[r9*1+rdi] |
- add r8b,BYTE[rsi*1+rdx] |
- add r8b,r10b |
- add rsi,1 |
- mov r11b,BYTE[r8*1+rdi] |
- jnz NEAR $L$cnowrap |
- mov rsi,rcx |
-$L$cnowrap: |
- mov BYTE[r8*1+rdi],r10b |
- mov BYTE[r9*1+rdi],r11b |
- add r9b,1 |
- jnc NEAR $L$c2ndloop |
- mov DWORD[256+rdi],-1 |
- |
-ALIGN 16 |
-$L$exit_key: |
- xor eax,eax |
- 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: |
-EXTERN __imp_RtlVirtualUnwind |
- |
-ALIGN 16 |
-stream_se_handler: |
- push rsi |
- push rdi |
- push rbx |
- push rbp |
- push r12 |
- push r13 |
- push r14 |
- push r15 |
- pushfq |
- sub rsp,64 |
- |
- mov rax,QWORD[120+r8] |
- mov rbx,QWORD[248+r8] |
- |
- lea r10,[$L$prologue] |
- cmp rbx,r10 |
- jb NEAR $L$in_prologue |
- |
- mov rax,QWORD[152+r8] |
- |
- lea r10,[$L$epilogue] |
- cmp rbx,r10 |
- jae NEAR $L$in_prologue |
- |
- lea rax,[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 |
- |
-$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 |
- |
- jmp NEAR $L$common_seh_exit |
- |
- |
- |
-ALIGN 16 |
-key_se_handler: |
- push rsi |
- push rdi |
- push rbx |
- push rbp |
- push r12 |
- push r13 |
- push r14 |
- push r15 |
- pushfq |
- sub rsp,64 |
- |
- 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: |
- |
- mov rdi,QWORD[40+r9] |
- mov rsi,r8 |
- mov ecx,154 |
- DD 0xa548f3fc |
- |
- mov rsi,r9 |
- xor rcx,rcx |
- 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 |
- popfq |
- pop r15 |
- pop r14 |
- pop r13 |
- pop r12 |
- pop rbp |
- pop rbx |
- pop rdi |
- pop rsi |
- DB 0F3h,0C3h ;repret |
- |
- |
-section .pdata rdata align=4 |
-ALIGN 4 |
- 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 $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 |
- |
-section .xdata rdata align=8 |
-ALIGN 8 |
-$L$SEH_info_asm_RC4: |
-DB 9,0,0,0 |
- DD stream_se_handler wrt ..imagebase |
-$L$SEH_info_asm_RC4_set_key: |
-DB 9,0,0,0 |
- DD key_se_handler wrt ..imagebase |