Function at 0x516710
Capabilities:
Encode data using xor

Disassembly:
mov eax, 8
call fcn.004c47c0
push esi
mov esi, dword [esp + 0x10]
push esi
call fcn.004b48b0
add esp, 4
cmp eax, 0x72
jne 0x516918
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
push ebp
push edi
mov edi, dword [esp + 0x2c]
mov ebp, eax
push esi
push edi
push dword [esp + 0x30]
and eax, 1
shr ebp, 1
push dword [esp + 0x30]
add eax, ebp
push eax
push dword [esp + 0x30]
mov dword [esp + 0x24], eax
call fcn.00500f80
push eax
call fcn.005164b0
add esp, 0x1c
test eax, eax
je 0x51690f
push ebx
push 0x104
push str.cryptokdf_tls1_prf.c
push esi
call fcn.00508260
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x5167ad
push 0x105
push str.cryptokdf_tls1_prf.c
push 0x41
push 0x6f
push 0x34
call fcn.004fd720
add esp, 0x14
xor eax, eax
pop ebx
pop edi
pop ebp
pop esi
add esp, 8
ret
mov eax, dword [esp + 0x20]
push esi
push ebx
push dword [esp + 0x34]
add eax, ebp
push dword [esp + 0x34]
push dword [esp + 0x20]
push eax
call fcn.005228b0
push eax
call fcn.005164b0
add esp, 0x1c
test eax, eax
jne 0x5167f2
push 0x10a
push str.cryptokdf_tls1_prf.c
push esi
push ebx
call fcn.00508370
add esp, 0x10
xor eax, eax
pop ebx
pop edi
pop ebp
pop esi
add esp, 8
ret
xor edx, edx
test esi, esi
je 0x5168ee
cmp esi, 8
jb 0x5168d0
lea eax, [esi - 1]
lea ecx, [edi - 1]
add eax, ebx
add ecx, esi
cmp edi, eax
ja 0x51681b
cmp ecx, ebx
jae 0x5168d0
cmp esi, 0x40
jb 0x516898
mov ebp, esi
lea ecx, [ebx + 0x30]
mov eax, esi
and ebp, 0x3f
sub eax, ebp
mov esi, ebx
sub esi, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], esi
lea eax, [edi + 0x10]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x10]
movups xmm0, xmmword [eax - 0x10]
add edx, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [edi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [eax - 0x20]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x14]
jb 0x516843
mov edi, dword [esp + 0x30]
cmp ebp, 8
jb 0x5168cc
mov ecx, esi
lea eax, [edx + edi]
mov ebp, ebx
and ecx, 0xfffffff8
sub ebp, edi
nop dword [eax]
nop dword [eax + eax]
movq xmm1, qword [eax + ebp]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
xorps xmm1, xmm0
movq qword [eax - 8], xmm1
cmp edx, ecx
jb 0x5168b0
cmp edx, esi
jae 0x5168ee
mov ebp, ebx
lea ecx, [edx + edi]
sub ebp, edi
mov edi, esi
sub edi, edx
nop dword [eax + eax]
mov al, byte [ecx + ebp]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edi, 1
jne 0x5168e0
push 0x10f
push str.cryptokdf_tls1_prf.c
push esi
push ebx
call fcn.00508370
add esp, 0x10
mov eax, 1
pop ebx
pop edi
pop ebp
pop esi
add esp, 8
ret
pop edi
pop ebp
xor eax, eax
pop esi
add esp, 8
ret
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x28]
push dword [esp + 0x28]
push esi
call fcn.005164b0
add esp, 0x1c
neg eax
sbb eax, eax
neg eax
pop esi
add esp, 8
ret