Function at 0x52a9e4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc0
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00405130
mov eax, dword [ebp - 8]
call fcn.00405130
xor eax, eax
push ebp
push 0x52ac0d
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 4], 0
je 0x52aa1d
cmp dword [ebp - 8], 0
jne 0x52aa27
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x52abf2
mov eax, dword [ebp - 8]
call fcn.00404f40
mov edi, eax
sub edi, 1
jno 0x52aa3b
call fcn.00403d8c
mov eax, 9
call fcn.00402838
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.00405140
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x10]
call fcn.0052a58c
mov eax, dword [ebp - 8]
call fcn.00405140
lea ecx, [ebp - 0x1c]
lea edx, [ebp - 0x18]
call fcn.0052a58c
mov dword [ebp - 0x28], 0x3fffffff
mov dword [ebp - 0x24], 0
push dword [ebp - 0x24]
push dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
xor eax, dword [ebp - 0x18]
cdq
call fcn.00405c9c
jno 0x52aa95
call fcn.00403d8c
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
push dword [ebp - 0x24]
push dword [ebp - 0x28]
mov eax, dword [ebp - 0x14]
xor eax, dword [ebp - 0x1c]
cdq
call fcn.00405c9c
jno 0x52aab4
call fcn.00403d8c
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
mov esi, edi
test esi, esi
jl 0x52ab73
inc esi
xor ebx, ebx
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push 0
push 3
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
call fcn.00405b80
jno 0x52aae3
call fcn.00403d8c
add eax, dword [ebp - 0x38]
adc edx, dword [ebp - 0x34]
jno 0x52aaf0
call fcn.00403d8c
call fcn.00405c9c
jno 0x52aafc
call fcn.00403d8c
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
push dword [ebp - 0x24]
push dword [ebp - 0x28]
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
add eax, dword [ebp - 0x38]
adc edx, dword [ebp - 0x34]
jno 0x52ab1b
call fcn.00403d8c
add eax, 0x21
adc edx, 0
jno 0x52ab28
call fcn.00403d8c
call fcn.00405c9c
jno 0x52ab34
call fcn.00403d8c
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
fild qword [ebp - 0x30]
fild qword [ebp - 0x28]
fdivp st(1)
fstp qword [ebp - 0x40]
wait
fld qword [ebp - 0x40]
fmul dword [0x52ac20]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0052a724
add eax, 0x40
jno 0x52ab65
call fcn.00403d8c
mov edx, dword [ebp - 0xc]
mov byte [edx + ebx], al
inc ebx
dec esi
jne 0x52aac7
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push 0
push 3
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
call fcn.00405b80
jno 0x52ab8f
call fcn.00403d8c
add eax, dword [ebp - 0x38]
adc edx, dword [ebp - 0x34]
jno 0x52ab9c
call fcn.00403d8c
call fcn.00405c9c
jno 0x52aba8
call fcn.00403d8c
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
fild qword [ebp - 0x30]
fild qword [ebp - 0x28]
fdivp st(1)
fstp qword [ebp - 0x40]
wait
fld qword [ebp - 0x40]
fmul dword [0x52ac20]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0052a724
mov esi, edi
test esi, esi
jl 0x52abea
inc esi
xor ebx, ebx
mov edx, dword [ebp - 0xc]
mov dl, byte [edx + ebx]
xor dl, al
mov ecx, dword [ebp - 0xc]
mov byte [ecx + ebx], dl
inc ebx
dec esi
jne 0x52abd8
mov eax, dword [ebp - 0xc]
mov byte [eax + edi + 1], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x52ac14
lea eax, [ebp - 8]
mov edx, 2
call fcn.00404ca4
ret