Function at 0x51a3e0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xbc
call fcn.00480e50
mov eax, dword [0x5ea00c]
xor eax, esp
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xc0]
push ebx
mov ebx, dword [esp + 0xd4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xcc]
push ebp
mov dword [esp + 0x18], eax
xor ebp, ebp
mov eax, dword [esp + 0xdc]
push esi
mov esi, dword [esp + 0xd8]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], ebp
push edi
mov edi, dword [esp + 0xf0]
test eax, eax
jne 0x51a464
call fcn.004cbec0
mov dword [esp + 0x24], eax
test edi, edi
push eax
cmove edi, eax
mov dword [esp + 0x14], edi
call fcn.004de460
mov edi, eax
add esp, 4
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x44], edi
test eax, eax
jle 0x51a8f0
test esi, esi
jle 0x51a8f0
cmp ebx, esi
jl 0x51a8d5
lea eax, [edi*2 + 2]
cmp ebx, eax
jl 0x51a8d5
push 0x9e
sub ebx, edi
dec ebx
push str..crypto_rsa_rsa_oaep.c
push ebx
mov dword [esp + 0x20], ebx
call fcn.004c4d70
add esp, 0xc
mov dword [esp + 0x18], eax
test eax, eax
jne 0x51a4ec
push 0xa0
push str..crypto_rsa_rsa_oaep.c
push 0x41
push 0xa1
push 4
call fcn.004d27b0
add esp, 0x14
jmp 0x51a895
push 0xa4
push str..crypto_rsa_rsa_oaep.c
push dword [esp + 0x34]
call fcn.004c4d70
add esp, 0xc
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x51a511
push 0xa7
jmp 0x51a4d1
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
add edx, esi
add ebp, eax
mov dword [esp + 0x1c], ebp
test eax, eax
jle 0x51a55e
mov ebx, eax
nop dword [eax + eax]
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec ebp
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub esi, eax
mov al, byte [edx]
and al, cl
mov byte [ebp], al
sub ebx, 1
jne 0x51a530
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x1c], ebp
movzx eax, byte [ebp]
push dword [esp + 0x10]
push ebx
lea ebp, [eax - 1]
not eax
shr eax, 0x1f
shr ebp, 0x1f
and ebp, eax
mov eax, dword [esp + 0x24]
neg ebp
lea esi, [eax + 1]
inc eax
add eax, edi
push eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x54]
push edi
push eax
call fcn.00519e90
add esp, 0x14
test eax, eax
jne 0x51a895
xor edx, edx
test edi, edi
jle 0x51a630
cmp edi, 0x20
jb 0x51a614
lea eax, [esi - 1]
lea ebx, [esp + 0x48]
add eax, edi
cmp ebx, eax
lea ecx, [esp + edi + 0x47]
mov ebx, dword [esp + 0x14]
ja 0x51a5c3
cmp ecx, esi
jae 0x51a614
mov eax, edi
and eax, 0x8000001f
jns 0x51a5d1
dec eax
or eax, 0xffffffe0
inc eax
mov ecx, edi
mov ebx, esi
sub ecx, eax
lea eax, [esp + 0x48]
sub ebx, eax
nop dword [eax]
movups xmm0, xmmword [esp + edx + 0x48]
lea eax, [ebx + edx]
movups xmm1, xmmword [esp + eax + 0x48]
pxor xmm1, xmm0
movups xmmword [esp + edx + 0x48], xmm1
movups xmm1, xmmword [esi + edx + 0x10]
movups xmm0, xmmword [esp + edx + 0x58]
pxor xmm1, xmm0
movups xmmword [esp + edx + 0x58], xmm1
add edx, 0x20
cmp edx, ecx
jl 0x51a5e0
mov ebx, dword [esp + 0x14]
cmp edx, edi
jge 0x51a630
lea eax, [esp + 0x48]
sub esi, eax
nop
lea ecx, [esp + 0x48]
add ecx, edx
inc edx
mov al, byte [ecx + esi]
xor byte [ecx], al
cmp edx, edi
jl 0x51a620
push dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x4c]
push edi
push eax
push ebx
push esi
call fcn.00519e90
add esp, 0x14
test eax, eax
jne 0x51a895
xor edx, edx
test ebx, ebx
jle 0x51a70b
cmp ebx, 0x20
jb 0x51a6e2
mov ecx, dword [esp + 0x20]
lea eax, [ecx - 1]
add eax, ebx
cmp esi, eax
ja 0x51a679
lea eax, [esi - 1]
add eax, ebx
cmp eax, ecx
jae 0x51a6e2
mov eax, ebx
and eax, 0x8000001f
jns 0x51a687
dec eax
or eax, 0xffffffe0
inc eax
mov dword [esp + 0x10], ebx
mov ebx, ecx
sub dword [esp + 0x10], eax
sub ebx, esi
add ecx, 0x10
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x14]
mov eax, esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x40]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmm1, xmmword [esi + eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm1, xmmword [edi + edx]
add edx, 0x20
movups xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp edx, ecx
jl 0x51a6b0
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x18]
cmp edx, ebx
jge 0x51a70b
sub dword [esp + 0x20], esi
lea ecx, [edx + esi]
mov esi, ebx
mov ebx, dword [esp + 0x20]
sub esi, edx
mov al, byte [ecx + ebx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x51a6f5
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
push 0
push dword [esp + 0x28]
lea eax, [esp + 0x90]
push 0
push eax
push dword [esp + 0xf8]
push dword [esp + 0x48]
call fcn.004cb7e0
add esp, 0x18
test eax, eax
je 0x51a895
push edi
lea eax, [esp + 0x8c]
push eax
push esi
call fcn.004da090
add esp, 0xc
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
neg ecx
and ebp, ecx
xor ecx, ecx
mov dword [esp + 0x10], ecx
cmp edi, ebx
jge 0x51a7b5
movzx esi, byte [edi + esi]
not ecx
mov eax, esi
xor eax, 1
lea edx, [eax - 1]
not eax
shr eax, 0x1f
shr edx, 0x1f
and edx, eax
neg edx
and ecx, edx
mov eax, ecx
and ecx, edi
not eax
inc edi
and eax, dword [esp + 0x28]
or eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
or ecx, edx
lea eax, [esi - 1]
mov dword [esp + 0x10], ecx
shr eax, 0x1f
not esi
shr esi, 0x1f
and eax, esi
mov esi, dword [esp + 0x18]
neg eax
or eax, ecx
and ebp, eax
cmp edi, ebx
jl 0x51a763
mov edi, dword [esp + 0xd4]
mov eax, ebx
mov edx, dword [esp + 0x28]
mov ecx, edi
inc edx
sub eax, edx
sub ecx, eax
xor ecx, eax
xor eax, edi
or ecx, eax
mov eax, ebx
xor ecx, edi
xor eax, edi
shr ecx, 0x1f
dec ecx
and ecx, dword [esp + 0x10]
and ebp, ecx
mov ecx, ebx
sub ecx, edi
mov dword [esp + 0x34], ebp
xor ecx, edi
mov dword [esp + 0x24], ebp
or ecx, eax
and edx, ebp
xor ecx, ebx
mov eax, ebp
shr ecx, 0x1f
not eax
neg ecx
mov edi, ecx
and ecx, ebx
not edi
and edi, dword [esp + 0xd4]
or edi, ecx
mov ecx, ebx
sub ecx, edi
and ecx, eax
mov eax, ebx
or ecx, edx
xor edx, edx
sub eax, ecx
add esi, ecx
mov dword [esp + 0x30], eax
test edi, edi
jle 0x51a86f
mov ebp, eax
mov eax, edx
xor eax, ebp
lea ecx, [eax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and ecx, eax
neg ecx
mov eax, ecx
and eax, ebx
mov ebx, dword [esp + 0x38]
sub esi, eax
mov eax, dword [esp + 0x24]
xor ecx, eax
and eax, ecx
movzx ecx, al
mov dword [esp + 0x24], eax
mov al, byte [esi + edx]
and al, cl
not cl
and cl, byte [ebx + edx]
or al, cl
mov ecx, ebx
mov ebx, dword [esp + 0x14]
mov byte [ecx + edx], al
inc edx
cmp edx, edi
jl 0x51a825
mov ebp, dword [esp + 0x34]
push 0x108
push str..crypto_rsa_rsa_oaep.c
push 0x79
push 0xa1
push 4
call fcn.004d27b0
mov eax, ebp
and eax, 1
push eax
call fcn.004d2b70
add esp, 0x18
lea eax, [esp + 0x48]
push 0x40
push eax
call fcn.00401360
mov esi, dword [esp + 0x20]
push ebx
push esi
call fcn.00401360
push esi
call fcn.004c4ca0
push dword [esp + 0x40]
mov esi, dword [esp + 0x34]
push esi
call fcn.00401360
push esi
call fcn.004c4ca0
mov eax, ebp
add esp, 0x20
and eax, dword [esp + 0x30]
not ebp
or eax, ebp
jmp 0x51a8f3
push 0x99
push str..crypto_rsa_rsa_oaep.c
push 0x79
push 0xa1
push 4
call fcn.004d27b0
add esp, 0x14
or eax, 0xffffffff
mov ecx, dword [esp + 0xc8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00436912
add esp, 0xbc
ret