Function at 0x5051a0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x124
call fcn.00581be0
mov eax, dword [0x635f14]
xor eax, esp
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x12c]
push ebx
mov ebx, dword [esp + 0x13c]
push ebp
push esi
mov dword [esp + 0x20], eax
or esi, 0xffffffff
mov eax, dword [esp + 0x14c]
push edi
mov edi, dword [esp + 0x138]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0
cmp dword [esp + 0x14c], ebx
jne 0x5054c1
mov ebp, dword [esp + 0x140]
test ebp, ebp
jle 0x5054c1
test ebx, ebx
jle 0x5054c1
push 0x1aa
push str.crypto_rsa_rsa_pk1.c
push ebx
call fcn.00465f40
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x2c], ecx
test ecx, ecx
jne 0x505255
call fcn.0046b260
push str.ossl_rsa_padding_check_PKCS1_type_2
push 0x1ac
push str.crypto_rsa_rsa_pk1.c
call fcn.0046b2b0
push 0
push 0xc0100
jmp 0x5054e1
lea eax, [ebx*8]
push eax
push dword [esp + 0x14]
push 7
push str.message
push ebx
push ecx
push edi
call fcn.00505730
add esp, 0x1c
test eax, eax
js 0x50547d
push 0x800
push dword [esp + 0x14]
lea eax, [esp + 0x38]
push 6
push str.length
push 0x100
push eax
push edi
call fcn.00505730
add esp, 0x1c
test eax, eax
js 0x50547d
lea eax, [ebx - 0xa]
mov dword [esp + 0x10], 0
movzx ecx, ax
mov ax, cx
mov ebx, ecx
shr ax, 1
or ax, cx
movzx eax, ax
mov si, ax
mov dword [esp + 0x18], eax
shr ax, 2
or si, ax
mov ax, si
shr ax, 4
or si, ax
mov ax, si
shr ax, 8
or si, ax
xor edi, edi
nop word [eax + eax]
movzx ecx, byte [esp + edi + 0x30]
movzx eax, byte [esp + edi + 0x31]
add edi, 2
shl cx, 8
or cx, ax
and cx, si
movzx edx, cx
mov eax, edx
sub eax, ebx
xor eax, edx
xor eax, ebx
shr eax, 0x1f
neg eax
mov dword [esp + 0x18], eax
not eax
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
and ecx, edx
and eax, dword [esp + 0x10]
or eax, ecx
mov dword [esp + 0x10], eax
cmp edi, 0x100
jl 0x5052f0
mov edi, dword [esp + 0x144]
mov esi, 2
mov ebx, dword [esp + 0x14]
mov ecx, ebx
sub ecx, eax
mov dword [esp + 0x28], ecx
movzx eax, byte [edi + 1]
movzx ecx, byte [edi]
xor eax, 2
lea edx, [eax - 1]
not eax
shr eax, 0x1f
shr edx, 0x1f
and edx, eax
lea eax, [ecx - 1]
not ecx
shr eax, 0x1f
shr ecx, 0x1f
neg edx
and eax, ecx
xor ecx, ecx
neg eax
mov dword [esp + 0x18], ecx
and edx, eax
mov dword [esp + 0x10], edx
cmp ebx, esi
jle 0x5053d6
nop dword [eax]
movzx eax, byte [esi + edi]
not ecx
lea edx, [eax - 1]
not eax
shr eax, 0x1f
shr edx, 0x1f
and edx, eax
neg edx
and ecx, edx
mov dword [esp + 0x14], ecx
not ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
and ecx, esi
and eax, dword [esp + 0x20]
inc esi
or eax, ecx
mov ecx, dword [esp + 0x18]
or ecx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], ecx
cmp esi, ebx
jl 0x505390
jmp 0x5053d8
xor eax, eax
mov esi, dword [esp + 0x14c]
lea edx, [eax + 1]
sub esi, edx
add eax, 0xfffffff6
or eax, dword [esp + 0x20]
mov ecx, ebp
xor eax, dword [esp + 0x20]
sub ecx, esi
xor ecx, esi
shr eax, 0x1f
xor esi, ebp
dec eax
or ecx, esi
xor esi, esi
xor ecx, ebp
shr ecx, 0x1f
dec ecx
and ecx, eax
and dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov eax, ecx
not eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
and eax, edx
mov edx, dword [esp + 0x1c]
and edx, dword [esp + 0x28]
or edx, eax
cmp edx, ebx
jge 0x505479
mov ebp, dword [esp + 0x2c]
add edi, edx
sub ebp, dword [esp + 0x144]
sub dword [esp + 0x24], edx
cmp esi, dword [esp + 0x140]
jge 0x505479
movzx eax, cl
inc esi
mov dword [esp + 0x14], eax
not eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov cl, byte [edi + ebp]
and cl, al
mov eax, dword [esp + 0x14]
and al, byte [edi]
inc edi
or al, cl
mov ecx, dword [esp + 0x24]
mov byte [ecx + edx], al
inc edx
mov ecx, dword [esp + 0x10]
cmp edx, ebx
jl 0x505440
test esi, esi
jns 0x5054a7
call fcn.0046b260
push str.ossl_rsa_padding_check_PKCS1_type_2
push 0x209
push str.crypto_rsa_rsa_pk1.c
call fcn.0046b2b0
push 0
push 0xc0103
push 4
call fcn.0046b2e0
add esp, 0x18
push 0x20a
push str.crypto_rsa_rsa_pk1.c
push dword [esp + 0x34]
call fcn.00465fc0
add esp, 0xc
mov eax, esi
jmp 0x5054ee
call fcn.0046b260
push str.ossl_rsa_padding_check_PKCS1_type_2
push 0x1a5
push str.crypto_rsa_rsa_pk1.c
call fcn.0046b2b0
push 0
push 0xc0103
push 4
call fcn.0046b2e0
add esp, 0x18
or eax, 0xffffffff
mov ecx, dword [esp + 0x130]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00581392
add esp, 0x124
ret