Function at 0x515fe0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x14
call fcn.00536770
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x64]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
xor ebx, ebx
push eax
push ebx
xor esi, esi
call fcn.004fdc60
add esp, 0xc
test eax, eax
je 0x516204
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
shl eax, 0xa
test ebp, eax
lea eax, [esi + 1]
cmove eax, esi
inc ebx
mov esi, eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push ebx
call fcn.004fdc60
add esp, 0xc
test eax, eax
jne 0x516015
test esi, esi
je 0x516204
mov eax, dword [esp + 0x58]
cdq
idiv esi
mov ebp, dword [esp + 0x5c]
cmp esi, 1
push edi
mov esi, 0
mov dword [esp + 0x20], eax
cmovne esi, dword [esp + 0x5c]
push 0
push ebp
mov dword [esp + 0x24], esi
call fcn.005385c0
lea eax, [esp + 0x20]
mov dword [esp + 0x2c], 0
push eax
lea eax, [esp + 0x20]
push eax
push 0
call fcn.004fdc60
add esp, 0x18
test eax, eax
je 0x5161e6
mov ebx, dword [esp + 0x60]
nop word [eax + eax]
mov eax, dword [esp + 0x10]
shl eax, 0xa
test dword [esp + 0x28], eax
je 0x5161c2
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x5161f3
push edi
push ebx
push dword [esp + 0x58]
and esi, 1
push dword [esp + 0x58]
add esi, dword [esp + 0x2c]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push esi
mov esi, dword [esp + 0x88]
push esi
push ecx
call fcn.00516230
add esp, 0x3c
test eax, eax
je 0x51621f
add esi, dword [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x54], esi
test edi, edi
jle 0x5161be
cmp edi, 0x40
jb 0x51619d
lea eax, [edi - 1]
lea edx, [ebp - 1]
add eax, ebx
add edx, edi
cmp ebp, eax
ja 0x516131
cmp edx, ebx
jae 0x51619d
mov eax, edi
and eax, 0x8000003f
jns 0x51613f
dec eax
or eax, 0xffffffc0
inc eax
mov edx, edi
mov esi, ebx
sub edx, eax
mov eax, ebp
sub esi, ebp
nop dword [eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ebx + ecx + 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [ebx + ecx + 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm0, xmmword [eax - 0x10]
movups xmm1, xmmword [ebx + ecx + 0x30]
add ecx, 0x40
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp ecx, edx
jl 0x516150
cmp ecx, edi
jge 0x5161be
mov esi, ebx
lea eax, [ecx + ebp]
mov edx, edi
sub esi, ebp
sub edx, ecx
nop dword [eax]
mov cl, byte [eax + esi]
lea eax, [eax + 1]
xor byte [eax - 1], cl
sub edx, 1
jne 0x5161b0
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x14]
inc eax
push ecx
push eax
mov dword [esp + 0x2c], eax
call fcn.004fdc60
add esp, 0xc
test eax, eax
jne 0x5160a0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret
push 0x114
push str.._ssl_t1_enc.c
push 0x146
jmp 0x516210
push 0x109
push str.._ssl_t1_enc.c
push 0x44
push 0x11c
push 0x14
call fcn.00466ec0
add esp, 0x14
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret