Function at 0x4a8510
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x9c
lea esi, [esp + 0x38]
mov ebx, dword [esp + 0xbc]
mov dword [esp], esi
mov ebp, dword [esp + 0xb0]
call fcn.00462e60
mov eax, dword [esp + 0xb8]
test ebx, ebx
cmove ebx, dword [esp + 0xb8]
mov dword [esp], eax
call fcn.0043ec50
test eax, eax
mov edx, eax
js 0x4a860d
cmp dword [esp + 0xc4], 0xffffffff
je 0x4a86b1
cmp dword [esp + 0xc4], 0xfffffffe
je 0x4a8575
jl 0x4a8652
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x20], edx
mov dword [esp], eax
call fcn.0041e180
mov dword [esp], ebp
mov ebp, 0xff
lea edi, [eax - 1]
call fcn.0041ed20
mov edx, dword [esp + 0xc0]
and edi, 7
mov ecx, edi
shl ebp, cl
movzx ecx, byte [edx]
mov edx, dword [esp + 0x20]
test ebp, ecx
jne 0x4a8624
test edi, edi
jne 0x4a85bc
add dword [esp + 0xc0], 1
sub eax, 1
mov ecx, dword [esp + 0xc4]
lea ecx, [edx + ecx + 1]
cmp eax, ecx
jle 0x4a8680
mov ecx, dword [esp + 0xc0]
cmp byte [ecx + eax - 1], 0xbc
je 0x4a86c0
mov dword [esp + 0x10], 0x83
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x86
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
xor ebx, ebx
mov dword [esp], esi
call fcn.004632e0
add esp, 0x9c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], 0x74
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x85
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a860d
mov dword [esp + 0x10], 0x6c
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x88
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a860d
mov dword [esp + 0x10], 0x7e
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x6d
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a860d
mov dword [esp + 0xc4], eax
jmp 0x4a8575
sub eax, edx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x2c], eax
sub eax, 1
mov dword [esp + 8], 0x88
mov dword [esp + 4], str.external_openssl_crypto_rsa_rsa_pss.c
add edx, eax
mov dword [esp], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], eax
call fcn.00427550
mov edx, dword [esp + 0x24]
test eax, eax
mov ebp, eax
je 0x4a8974
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0xc], edx
mov dword [esp], ebp
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp + 0x24], edx
call fcn.0043fd90
test eax, eax
js 0x4a8830
xor eax, eax
test ebx, ebx
mov edx, dword [esp + 0x24]
jle 0x4a8763
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x24], edx
lea esi, [esi]
movzx edx, byte [ebx + eax]
xor byte [ebp + eax], dl
add eax, 1
cmp eax, ecx
jne 0x4a8750
mov edx, dword [esp + 0x24]
test edi, edi
jne 0x4a8810
movzx ebx, byte [ebp]
test bl, bl
jne 0x4a89a5
mov eax, dword [esp + 0x2c]
cmp eax, 2
jle 0x4a8834
sub eax, 2
xor ecx, ecx
jmp 0x4a8798
cmp ecx, eax
je 0x4a8834
add ecx, 1
movzx ebx, byte [ebp + ecx]
test bl, bl
je 0x4a8790
lea edi, [ecx + 1]
cmp bl, 1
jne 0x4a8834
mov eax, dword [esp + 0xc4]
test eax, eax
js 0x4a8864
mov eax, dword [esp + 0x20]
sub eax, edi
cmp eax, dword [esp + 0xc4]
je 0x4a8864
mov dword [esp + 0x10], 0x9c
xor ebx, ebx
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x88
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
mov dword [esp], ebp
call fcn.00427840
jmp 0x4a860f
mov ecx, 8
mov ebx, 0xff
sub ecx, edi
sar ebx, cl
and bl, byte [ebp]
mov byte [ebp], bl
jmp 0x4a876f
xor ebx, ebx
jmp 0x4a8800
mov dword [esp + 0x10], 0x97
xor ebx, ebx
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x87
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a8800
mov eax, dword [esp + 0xb8]
mov dword [esp + 8], 0
mov dword [esp], esi
mov dword [esp + 0x24], edx
mov dword [esp + 4], eax
call fcn.00462f40
test eax, eax
je 0x4a8830
mov dword [esp + 8], 8
mov dword [esp + 4], 0x4e916e
mov dword [esp], esi
call fcn.00463230
mov edx, dword [esp + 0x24]
test eax, eax
je 0x4a8830
mov eax, dword [esp + 0xb4]
mov dword [esp + 8], edx
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00463230
mov edx, dword [esp + 0x24]
test eax, eax
je 0x4a8830
cmp dword [esp + 0x20], edi
je 0x4a88f8
mov eax, dword [esp + 0x20]
mov dword [esp], esi
mov dword [esp + 0x24], edx
sub eax, edi
add edi, ebp
mov dword [esp + 8], eax
mov dword [esp + 4], edi
call fcn.00463230
mov edx, dword [esp + 0x24]
test eax, eax
je 0x4a8830
lea ebx, [esp + 0x50]
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 0x20], edx
call fcn.00463240
mov edx, dword [esp + 0x20]
test eax, eax
je 0x4a8830
mov eax, dword [esp + 0x28]
mov dword [esp], ebx
mov ebx, 1
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x4a8800
mov dword [esp + 0x10], 0xac
xor bl, bl
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x68
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a8800
mov dword [esp + 0x10], 0x8b
mov dword [esp + 0xc], str.external_openssl_crypto_rsa_rsa_pss.c
mov dword [esp + 8], 0x41
mov dword [esp + 4], 0x95
mov dword [esp], 4
call fcn.00429970
jmp 0x4a860d
mov edi, 1
jmp 0x4a87a7