Function at 0x610c90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ebp, dword [esp + 0x78]
cmp ebp, 0x3b
setae al
cmp dword [esp + 0x70], 0x30
setae cl
test cl, al
jne 0x610cd5
call fcn.005b7120
push str.ossl_rsa_padding_check_PKCS1_type_2_TLS
push 0x232
push str.crypto_rsa_rsa_pk1.c
call fcn.005b7220
add esp, 0xc
push 0
push 0x9f
jmp 0x610eea
lea eax, [esp + 0x24]
push 0
push 0x30
push eax
push dword [esp + 0x74]
call fcn.006055e0
add esp, 0x10
test eax, eax
jle 0x610ec7
mov edx, dword [esp + 0x74]
movzx eax, byte [edx]
dec eax
movzx edi, byte [edx + 1]
xor edi, 2
dec edi
and edi, eax
sar edi, 0x1f
lea ebx, [ebp - 0x33]
mov eax, 2
cmp ebx, 8
jb 0x610dc2
mov ecx, ebp
mov ebp, ebx
and ebp, 0xfffffff8
lea eax, [ebp + 2]
movd xmm1, edi
movaps xmm0, xmmword [0xa21b90]
movss xmm0, xmm1
pcmpeqd xmm1, xmm1
xor edi, edi
pxor xmm3, xmm3
movdqa xmm4, xmmword [0xa21ba0]
pcmpeqd xmm2, xmm2
nop word [eax + eax]
movd xmm6, dword [edx + edi + 2]
movd xmm5, dword [edx + edi + 6]
punpcklbw xmm6, xmm6
punpcklwd xmm6, xmm6
pcmpeqb xmm6, xmm3
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
pcmpeqb xmm5, xmm3
movdqa xmm7, xmm6
pxor xmm7, xmm1
pand xmm6, xmm4
por xmm6, xmm7
andps xmm0, xmm6
movdqa xmm6, xmm5
pxor xmm6, xmm1
pand xmm5, xmm4
por xmm5, xmm6
pand xmm2, xmm5
add edi, 8
cmp ebp, edi
jne 0x610d50
pand xmm2, xmm0
pshufd xmm0, xmm2, 0xee
pand xmm0, xmm2
pshufd xmm1, xmm0, 0x55
pand xmm1, xmm0
movd edi, xmm1
cmp ebx, ebp
mov ebp, ecx
je 0x610de7
lea ecx, [ebp - 0x31]
xor ebx, ebx
nop word [eax + eax]
cmp bl, byte [edx + eax]
mov esi, 0
sbb esi, esi
or esi, 0xffffff00
and edi, esi
inc eax
cmp ecx, eax
jne 0x610dd0
movzx esi, byte [edx + ebp - 0x30]
mov ecx, dword [esp + 0x7c]
movzx ebx, ch
mov dword [esp + 0x14], esi
xor ebx, esi
dec ebx
movzx esi, byte [edx + ebp - 0x2f]
mov ecx, ebp
mov eax, dword [esp + 0x7c]
movzx ebp, al
xor ebp, esi
dec ebp
and ebp, ebx
lea ebx, [edx + ecx]
movzx ecx, byte [edx + ecx - 0x31]
mov byte [esp + 4], cl
mov ecx, dword [esp + 0x80]
test ecx, ecx
jle 0x610e3c
mov dword [esp], ebx
movzx ebx, ch
xor ebx, dword [esp + 0x14]
dec ebx
movzx ecx, cl
xor ecx, esi
dec ecx
and ecx, ebx
mov ebx, dword [esp]
or ebp, ecx
xor ecx, ecx
cmp byte [esp + 4], 0
mov esi, 0xff
cmovne esi, ecx
sar ebp, 0x1f
and ebp, esi
and ebp, edi
mov edi, ebp
not ebp
mov eax, dword [esp + 0x6c]
mov ecx, eax
sub ecx, ebx
add ecx, 0x30
cmp ecx, 0xf
ja 0x610efe
mov ecx, dword [esp + 0x78]
add ecx, edx
add ecx, 0xffffffd0
mov edx, 2
nop dword [eax + eax]
movzx esi, byte [ecx + edx - 2]
movzx ebx, byte [esp + edx + 0x22]
and esi, edi
and ebx, ebp
or ebx, esi
mov byte [eax + edx - 2], bl
movzx esi, byte [ecx + edx - 1]
movzx ebx, byte [esp + edx + 0x23]
and esi, edi
and ebx, ebp
or ebx, esi
mov byte [eax + edx - 1], bl
movzx esi, byte [ecx + edx]
movzx ebx, byte [esp + edx + 0x24]
and esi, edi
and ebx, ebp
or ebx, esi
mov byte [eax + edx], bl
add edx, 3
cmp edx, 0x32
jne 0x610e80
jmp 0x611135
call fcn.005b7120
push str.ossl_rsa_padding_check_PKCS1_type_2_TLS
push 0x23c
push str.crypto_rsa_rsa_pk1.c
call fcn.005b7220
add esp, 0xc
push 0
push 0xc0103
push 4
call fcn.005b7310
add esp, 0xc
mov eax, 0xffffffff
jmp 0x61113a
movd xmm0, ebp
pshufd xmm0, xmm0, 0
movdqu xmmword [esp + 4], xmm0
movd xmm0, edi
pshufd xmm1, xmm0, 0
movdqu xmm7, xmmword [ebx - 0x30]
movdqu xmm3, xmmword [esp + 0x24]
movdqa xmm2, xmm7
punpcklbw xmm2, xmm2
punpckhbw xmm7, xmm7
movdqa xmm6, xmm7
punpckhwd xmm7, xmm7
movdqa xmm4, xmm3
punpckhbw xmm3, xmm3
movdqa xmm5, xmm3
punpckhwd xmm3, xmm3
pand xmm7, xmm1
movdqu xmm0, xmmword [esp + 4]
pand xmm3, xmm0
por xmm3, xmm7
movdqa xmm7, xmm2
punpcklwd xmm7, xmm7
punpckhwd xmm2, xmm2
punpcklwd xmm6, xmm6
punpcklbw xmm4, xmm4
punpcklwd xmm5, xmm5
pand xmm6, xmm1
pand xmm5, xmm0
por xmm5, xmm6
movdqa xmm0, xmm4
punpcklwd xmm0, xmm0
punpckhwd xmm4, xmm4
movdqu xmmword [esp + 0x14], xmm1
pand xmm2, xmm1
pand xmm7, xmm1
movdqu xmm1, xmmword [esp + 4]
pand xmm4, xmm1
por xmm4, xmm2
pand xmm0, xmm1
movdqa xmm2, xmm1
por xmm0, xmm7
movdqa xmm1, xmmword [0xa21bb0]
pand xmm3, xmm1
pand xmm5, xmm1
packuswb xmm5, xmm3
pand xmm4, xmm1
pand xmm0, xmm1
packuswb xmm0, xmm4
packuswb xmm0, xmm5
movdqu xmmword [eax], xmm0
movdqu xmm7, xmmword [ebx - 0x20]
movdqu xmm3, xmmword [esp + 0x34]
movdqa xmm6, xmm7
punpckhbw xmm7, xmm7
movdqa xmm0, xmm7
punpckhwd xmm7, xmm7
movdqa xmm4, xmm3
punpckhbw xmm3, xmm3
movdqa xmm5, xmm3
punpckhwd xmm3, xmm3
movdqu xmm1, xmmword [esp + 0x14]
pand xmm7, xmm1
pand xmm3, xmm2
por xmm3, xmm7
punpcklbw xmm6, xmm6
punpcklwd xmm0, xmm0
punpcklwd xmm5, xmm5
pand xmm0, xmm1
pand xmm5, xmm2
por xmm5, xmm0
movdqa xmm7, xmm6
punpckhwd xmm6, xmm6
punpcklbw xmm4, xmm4
movdqa xmm0, xmm4
punpckhwd xmm4, xmm4
pand xmm6, xmm1
pand xmm4, xmm2
por xmm4, xmm6
punpcklwd xmm7, xmm7
punpcklwd xmm0, xmm0
pand xmm7, xmm1
pand xmm0, xmm2
por xmm0, xmm7
movdqa xmm6, xmmword [0xa21bb0]
pand xmm3, xmm6
pand xmm5, xmm6
packuswb xmm5, xmm3
pand xmm4, xmm6
pand xmm0, xmm6
packuswb xmm0, xmm4
packuswb xmm0, xmm5
movdqu xmmword [eax + 0x10], xmm0
movdqu xmm6, xmmword [ebx - 0x10]
movdqu xmm0, xmmword [esp + 0x44]
movdqa xmm5, xmm6
punpcklbw xmm5, xmm5
movdqa xmm4, xmm5
punpcklwd xmm4, xmm4
punpckhwd xmm5, xmm5
punpckhbw xmm6, xmm6
movdqa xmm7, xmm6
punpcklwd xmm7, xmm7
punpckhwd xmm6, xmm6
pand xmm6, xmm1
pand xmm7, xmm1
pand xmm5, xmm1
pand xmm4, xmm1
movdqa xmm1, xmm0
punpckhbw xmm0, xmm0
movdqa xmm3, xmm0
punpckhwd xmm0, xmm0
pand xmm0, xmm2
por xmm0, xmm6
punpcklbw xmm1, xmm1
punpcklwd xmm3, xmm3
pand xmm3, xmm2
por xmm3, xmm7
movdqa xmm6, xmm1
punpckhwd xmm1, xmm1
pand xmm1, xmm2
por xmm1, xmm5
punpcklwd xmm6, xmm6
pand xmm6, xmm2
por xmm6, xmm4
movdqa xmm2, xmmword [0xa21bb0]
pand xmm0, xmm2
pand xmm3, xmm2
packuswb xmm3, xmm0
pand xmm1, xmm2
pand xmm6, xmm2
packuswb xmm6, xmm1
packuswb xmm6, xmm3
movdqu xmmword [eax + 0x20], xmm6
mov eax, 0x30
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret