Function at 0x50b450
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x18
call fcn.004347b0
push esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x10], 0
cmp esi, 0xa
jge 0x50b489
push 0x78
push str..crypto_rsa_rsa_ssl.c
push 0x6f
push 0x72
push 4
call fcn.004c3260
add esp, 0x14
or eax, 0xffffffff
pop esi
add esp, 0x18
ret
push ebx
mov ebx, dword [esp + 0x34]
push 0x7c
push str..crypto_rsa_rsa_ssl.c
push ebx
call fcn.004b5840
mov edx, eax
add esp, 0xc
test edx, edx
jne 0x50b4c2
push 0x7e
push str..crypto_rsa_rsa_ssl.c
push 0x41
push 0x72
push 4
call fcn.004c3260
add esp, 0x14
or eax, 0xffffffff
pop ebx
pop esi
add esp, 0x18
ret
push ebp
push edi
mov edi, dword [esp + 0x34]
add edx, ebx
add edi, esi
mov dword [esp + 0x10], edx
test ebx, ebx
jle 0x50b4fd
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec edx
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edi, eax
sub esi, eax
mov al, byte [edi]
and al, cl
mov byte [edx], al
sub ebx, 1
jne 0x50b4d4
mov dword [esp + 0x10], edx
movzx eax, byte [edx + 1]
xor esi, esi
movzx ecx, byte [edx]
xor eax, 2
mov edi, 2
mov dword [esp + 0x18], esi
xor ebp, ebp
lea ebx, [eax - 1]
not eax
shr eax, 0x1f
shr ebx, 0x1f
and ebx, eax
lea eax, [ecx - 1]
shr eax, 0x1f
not ecx
shr ecx, 0x1f
neg ebx
and eax, ecx
neg eax
and ebx, eax
mov eax, ebx
mov dword [esp + 0x38], ebx
not eax
mov dword [esp + 0x14], eax
cmp dword [esp + 0x3c], edi
jle 0x50b5ad
or eax, 0xffffffff
xor ebx, ebx
nop dword [eax + eax]
movzx esi, byte [edi + edx]
mov ecx, esi
not ecx
shr ecx, 0x1f
lea edx, [esi - 1]
xor esi, 3
shr edx, 0x1f
and edx, ecx
neg edx
and eax, edx
or ebp, edx
mov ecx, eax
lea edx, [esi - 1]
not ecx
shr edx, 0x1f
and ebx, ecx
and eax, edi
not esi
or ebx, eax
shr esi, 0x1f
mov eax, ebp
and esi, edx
not eax
mov edx, dword [esp + 0x10]
neg esi
mov ecx, eax
or esi, ebp
and ecx, 1
inc edi
add ecx, dword [esp + 0x18]
and esi, ecx
mov dword [esp + 0x18], esi
cmp edi, dword [esp + 0x3c]
jl 0x50b550
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x1c]
lea eax, [ebp - 0xa]
or eax, ebp
xor eax, ebp
inc ebp
shr eax, 0x1f
dec eax
and ebx, eax
lea eax, [esi - 8]
or eax, esi
mov edi, ebx
xor eax, esi
or edi, dword [esp + 0x14]
shr eax, 0x1f
mov ecx, ebx
not ecx
neg eax
and ebx, eax
mov eax, dword [esp + 0x3c]
sub eax, ebp
mov dword [esp + 0x38], ebx
mov esi, ebx
mov edx, ebx
mov ebx, dword [esp + 0x30]
or esi, ecx
mov ecx, ebx
not edx
sub ecx, eax
xor ecx, eax
xor eax, ebx
or ecx, eax
mov eax, dword [esp + 0x38]
xor ecx, ebx
shr ecx, 0x1f
dec ecx
and eax, ecx
mov ecx, dword [esp + 0x14]
and ecx, edi
mov dword [esp + 0x38], eax
and ecx, 0x6b
or eax, edx
not edi
and edi, 0x71
or ecx, edi
mov edi, dword [esp + 0x3c]
and ecx, esi
not esi
and esi, 0x73
or ecx, esi
and ecx, eax
not eax
and eax, 0x6d
or ecx, eax
mov eax, ebx
mov dword [esp + 0x14], ecx
xor eax, edi
mov ecx, edi
sub ecx, ebx
xor ecx, ebx
or ecx, eax
mov eax, edi
xor ecx, edi
shr ecx, 0x1f
neg ecx
mov edx, ecx
and ecx, edi
not edx
and edx, ebx
mov ebx, dword [esp + 0x38]
or edx, ecx
and ebp, ebx
mov ecx, ebx
mov dword [esp + 0x18], edx
not ecx
sub eax, edx
and eax, ecx
mov dword [esp + 0x24], ecx
or eax, ebp
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x1c], ecx
mov esi, dword [esp + 0x10]
xor edx, edx
mov dword [esp + 0x20], ebx
lea ebp, [eax + esi]
cmp dword [esp + 0x18], edx
jle 0x50b6da
mov esi, dword [esp + 0x18]
nop dword [eax]
mov eax, edx
xor eax, ecx
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
neg ecx
mov eax, ecx
xor ecx, ebx
and eax, esi
and ebx, ecx
mov esi, dword [esp + 0x2c]
sub ebp, eax
movzx ecx, bl
mov al, byte [edx + ebp]
and al, cl
not cl
and cl, byte [edx + esi]
or al, cl
mov ecx, esi
mov esi, dword [esp + 0x18]
mov byte [edx + ecx], al
inc edx
mov ecx, dword [esp + 0x1c]
cmp edx, esi
jl 0x50b690
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x38]
push edi
push esi
call fcn.00401360
push esi
call fcn.004b5770
push 0xd5
push str..crypto_rsa_rsa_ssl.c
push dword [esp + 0x28]
push 0x72
push 4
call fcn.004c3260
mov ecx, ebx
and ecx, 1
push ecx
call fcn.004c3620
and ebx, dword [esp + 0x40]
add esp, 0x24
or ebx, dword [esp + 0x24]
mov eax, ebx
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x18
ret