Function at 0x51f970
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x14
call fcn.00488be0
cmp dword [esp + 0x1c], 0
push esi
mov dword [esp + 4], 0
jle 0x51fc84
mov esi, dword [esp + 0x28]
test esi, esi
jle 0x51fc84
push edi
mov edi, dword [esp + 0x30]
cmp esi, edi
jg 0x51fc66
cmp edi, 0xb
jl 0x51fc66
push ebp
push 0x4e
push str.crypto_rsa_rsa_ssl.c
push edi
call fcn.004c88b0
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x51f9e6
push 0x50
push str.crypto_rsa_rsa_ssl.c
push 0x41
push 0x72
push 4
call fcn.004bdd70
add esp, 0x14
or eax, 0xffffffff
pop ebp
pop edi
pop esi
add esp, 0x14
ret
mov edx, dword [esp + 0x2c]
push ebx
add edx, esi
mov ebx, edi
add ebp, edi
mov eax, esi
mov dword [esp + 0x20], ebp
not eax
lea ecx, [esi - 1]
shr eax, 0x1f
dec ebp
shr ecx, 0x1f
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 0x51f9f1
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
movzx ebx, byte [eax]
movzx eax, byte [ebp]
xor ebx, 2
dec ebx
dec eax
shr ebx, 0x1f
neg ebx
shr eax, 0x1f
neg eax
and ebx, eax
or esi, 0xffffffff
mov dword [esp + 0x14], ebx
not ebx
mov dword [esp + 0x20], ebx
mov ebx, 2
nop dword [eax]
movzx edx, byte [ebx + ebp]
lea ecx, [edx - 1]
xor edx, 3
shr ecx, 0x1f
dec edx
neg ecx
shr edx, 0x1f
and esi, ecx
neg edx
mov eax, esi
and esi, ebx
not eax
inc ebx
and eax, dword [esp + 0x10]
or eax, esi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
or eax, ecx
mov esi, eax
mov dword [esp + 0x18], eax
or edx, eax
not esi
mov eax, esi
and eax, 1
add eax, dword [esp + 0x1c]
and edx, eax
mov dword [esp + 0x1c], edx
cmp ebx, edi
jl 0x51fa60
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
lea eax, [ecx - 0xa]
or eax, ecx
xor eax, ecx
shr eax, 0x1f
dec eax
and ebx, eax
mov eax, ebx
mov ecx, ebx
or eax, dword [esp + 0x20]
not ecx
mov dword [esp + 0x18], eax
lea eax, [edx - 8]
or eax, edx
xor eax, edx
shr eax, 0x1f
dec eax
and ebx, eax
mov eax, edi
sub eax, dword [esp + 0x10]
mov esi, ebx
or esi, ecx
dec eax
mov ecx, dword [esp + 0x2c]
mov edx, ebx
sub ecx, eax
mov dword [esp + 0x10], eax
xor ecx, eax
not edx
xor eax, dword [esp + 0x2c]
or ecx, eax
xor ecx, dword [esp + 0x2c]
shr ecx, 0x1f
dec ecx
and ebx, ecx
mov ecx, dword [esp + 0x20]
and ecx, 0x6b
mov dword [esp + 0x14], ebx
mov eax, ebx
or eax, edx
mov edx, dword [esp + 0x18]
not edx
and edx, 0x71
or edx, ecx
and edx, esi
not esi
and esi, 0x73
or edx, esi
lea esi, [edi - 0xb]
and edx, eax
mov dword [esp + 0x20], esi
not eax
mov ecx, esi
and eax, 0x6d
or edx, eax
mov eax, esi
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x2c]
sub ecx, edx
xor ecx, edx
xor eax, edx
or ecx, eax
mov eax, esi
xor ecx, esi
mov esi, 1
shr ecx, 0x1f
neg ecx
mov edx, ecx
and eax, ecx
not edx
and edx, dword [esp + 0x2c]
or edx, eax
lea eax, [edi - 0xb]
mov dword [esp + 0x2c], edx
cmp eax, esi
jle 0x51fbcc
mov eax, edi
sub eax, dword [esp + 0x10]
add eax, 0xfffffff5
mov dword [esp + 0x1c], eax
nop
and eax, esi
sub edi, esi
lea ebx, [eax - 1]
not eax
shr ebx, 0x1f
shr eax, 0x1f
and ebx, eax
dec ebx
cmp edi, 0xb
jle 0x51fbb8
mov ch, bl
lea eax, [ebp + 0xb]
not ch
add edi, 0xfffffff5
mov dl, byte [eax + esi]
lea eax, [eax + 1]
mov cl, ch
and dl, bl
and cl, byte [eax - 1]
or dl, cl
mov byte [eax - 1], dl
sub edi, 1
jne 0x51fba1
mov edi, dword [esp + 0x38]
add esi, esi
mov eax, dword [esp + 0x1c]
cmp esi, dword [esp + 0x20]
jl 0x51fb80
mov ebx, dword [esp + 0x14]
xor edx, edx
cmp dword [esp + 0x2c], edx
jle 0x51fc1d
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
shr eax, 0x1f
neg esi
mov dword [esp + 0x20], eax
nop dword [eax]
mov ecx, esi
inc esi
shr ecx, 0x1f
xor cl, al
or cl, al
mov al, byte [edx + ebp + 0xb]
neg cl
and cl, bl
and al, cl
not cl
and cl, byte [edx + edi]
or al, cl
mov byte [edx + edi], al
inc edx
mov eax, dword [esp + 0x20]
cmp edx, dword [esp + 0x2c]
jl 0x51fbf0
mov edi, dword [esp + 0x38]
push 0xa5
push str.crypto_rsa_rsa_ssl.c
push edi
push ebp
call fcn.004c89c0
mov eax, dword [esp + 0x28]
push 0xa6
push str.crypto_rsa_rsa_ssl.c
push eax
push 0x72
push 4
call fcn.004bdd70
mov eax, ebx
and eax, 1
push eax
call fcn.004bdfc0
add esp, 0x28
mov eax, ebx
and eax, dword [esp + 0x10]
not ebx
or eax, ebx
pop ebx
pop ebp
pop edi
pop esi
add esp, 0x14
ret
push 0x4a
push str.crypto_rsa_rsa_ssl.c
push 0x6f
push 0x72
push 4
call fcn.004bdd70
add esp, 0x14
or eax, 0xffffffff
pop edi
pop esi
add esp, 0x14
ret
or eax, 0xffffffff
pop esi
add esp, 0x14
ret