Function at 0x4aa010
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x138
push ebx
push ebp
mov ebp, dword [esp + 0x144]
push esi
push edi
push ebp
call fcn.004a7410
add esp, 4
test eax, eax
je 0x4aa8e7
mov edi, dword [esp + 0x150]
push edi
call fcn.004a7410
add esp, 4
test eax, eax
je 0x4aa8e7
push ebp
call fcn.004a7360
add esp, 4
test eax, eax
jne 0x4aa8e7
push edi
call fcn.004a7360
add esp, 4
test eax, eax
jne 0x4aa8e7
mov eax, dword [0x11919f8]
mov ecx, dword [0x1188660]
lea ebp, [ebp + ebp*2]
lea edi, [edi + edi*2]
mov eax, dword [eax + 0xd4]
mov esi, ecx
shl ebp, 4
shl edi, 4
add ebp, eax
add edi, eax
push esi
mov dword [esp + 0x64], ebp
mov dword [esp + 0x74], edi
mov dword [esp + 0x3c], ecx
call fcn.004a7330
fadd st(0), st(0)
push esi
fstp dword [esp + 0x60]
call fcn.004a7310
fstp dword [esp + 0x58]
mov ebx, edi
add esp, 8
xor edx, edx
lea esi, [edi + 0xc]
lea ecx, [ebp + 0x18]
sub ebx, ebp
fld dword [esp + 0x58]
fadd dword [ebx + ecx]
fcomp dword [ecx - 0xc]
fnstsw ax
test ah, 1
jne 0x4aa8e7
fld dword [esi]
fsub dword [esp + 0x58]
fcomp dword [ecx]
fnstsw ax
test ah, 0x41
je 0x4aa8e7
inc edx
add ecx, 4
add esi, 4
cmp edx, 2
jl 0x4aa0c1
fld dword [esp + 0x50]
fadd dword [ebp + 0x20]
fcomp dword [edi + 0x14]
fnstsw ax
test ah, 1
jne 0x4aa8e7
mov eax, dword [ebp + 4]
xor esi, esi
test eax, eax
mov dword [esp + 0x4c], 0x497423f0
mov dword [esp + 0x48], esi
jle 0x4aa2e5
mov ecx, dword [0x11919f8]
mov edx, dword [ebp + 8]
mov eax, dword [ecx + 0xcc]
add edx, esi
mov eax, dword [eax + edx*4]
cdq
xor eax, edx
sub eax, edx
lea edx, [eax + eax*2]
mov eax, dword [ecx + 0xc4]
lea ebx, [eax + edx*8]
mov dword [esp + 0x54], ebx
test byte [ebx + 4], 4
je 0x4aa2d5
mov eax, dword [edi + 4]
mov dword [esp + 0x5c], 0
test eax, eax
jle 0x4aa2d5
mov edx, dword [edi + 8]
mov eax, dword [esp + 0x5c]
add edx, eax
mov eax, dword [ecx + 0xcc]
mov eax, dword [eax + edx*4]
cdq
xor eax, edx
sub eax, edx
lea edx, [eax + eax*2]
mov eax, dword [ecx + 0xc4]
lea esi, [eax + edx*8]
mov al, byte [eax + edx*8 + 4]
test al, 4
je 0x4aa2bd
mov eax, dword [ebx + 8]
xor ebp, ebp
test eax, eax
mov dword [esp + 0x50], ebp
jle 0x4aa2b9
jmp 0x4aa1af
mov ebx, dword [esp + 0x54]
mov edx, dword [ebx + 0xc]
mov eax, dword [ecx + 0xbc]
add edx, ebp
xor edi, edi
mov eax, dword [eax + edx*4]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ecx + 0xb4]
lea ebx, [edx + eax*8]
mov eax, dword [esi + 8]
test eax, eax
jle 0x4aa2a1
mov eax, dword [esi + 0xc]
mov edx, dword [ecx + 0xbc]
add eax, edi
mov ebp, dword [ebx]
mov eax, dword [edx + eax*4]
lea ebp, [ebp + ebp*2]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ecx + 0xb4]
lea edx, [edx + eax*8]
mov eax, dword [ecx + 0xa4]
mov ecx, dword [ecx + 0xac]
lea ebp, [eax + ebp*4]
mov dword [esp + 0x78], ebp
mov ebp, dword [ebx + 4]
lea ebp, [ebp + ebp*2]
lea ebp, [eax + ebp*4]
mov dword [esp + 0x74], ebp
mov ebp, dword [edx]
mov edx, dword [edx + 4]
lea ebp, [ebp + ebp*2]
lea edx, [edx + edx*2]
lea ebp, [eax + ebp*4]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x54]
mov eax, dword [eax]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov dword [esp + 0x7c], eax
mov eax, dword [esi]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x4c]
push ecx
lea ecx, [esp + 0xcc]
push ecx
lea ecx, [esp + 0xc4]
push ecx
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x88]
push eax
mov eax, dword [esp + 0x94]
push eax
push edx
mov edx, dword [esp + 0x98]
push ebp
push ecx
push edx
call fcn.004a94e0
mov eax, dword [esi + 8]
mov ecx, dword [0x11919f8]
fstp dword [esp + 0x78]
add esp, 0x2c
inc edi
cmp edi, eax
jl 0x4aa1d8
mov ebp, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
inc ebp
mov dword [esp + 0x50], ebp
cmp ebp, dword [eax + 8]
jl 0x4aa1ab
mov edi, dword [esp + 0x70]
mov ebx, eax
mov ebp, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
mov edx, dword [edi + 4]
inc eax
cmp eax, edx
mov dword [esp + 0x5c], eax
jl 0x4aa169
mov esi, dword [esp + 0x48]
mov eax, dword [ebp + 4]
inc esi
cmp esi, eax
mov dword [esp + 0x48], esi
jl 0x4aa129
lea ecx, [esp + 0x1c]
lea edx, [esp + 0xbc]
push ecx
lea eax, [esp + 0x20]
push edx
push eax
call fcn.004a9490
lea ecx, [esp + 0x34]
lea edx, [esp + 0xd4]
push ecx
lea eax, [esp + 0x38]
push edx
push eax
call fcn.004a9490
fld dword [esp + 0x64]
fcomp dword [0x4d7450]
add esp, 0x18
fnstsw ax
test ah, 0x41
jne 0x4aa8e7
fld dword [esp + 0x4c]
fcomp dword [esp + 0x58]
fnstsw ax
test ah, 1
je 0x4aa8e7
lea ecx, [esp + 0x34]
lea edx, [esp + 0x28]
push ecx
lea eax, [esp + 0x20]
push edx
push eax
push 0
call fcn.004a69d0
add esp, 0x10
test eax, eax
je 0x4aa373
fld dword [esp + 0x34]
fmul qword [0x4d8440]
mov ebx, 7
fstp dword [esp + 0x34]
jmp 0x4aa411
fld dword [esp + 0x4c]
fcomp dword [0x4d8344]
fnstsw ax
test ah, 0x41
je 0x4aa3aa
fld dword [esp + 0x24]
fsub dword [esp + 0x30]
fabs
fcomp qword [0x4d7ff8]
fnstsw ax
test ah, 1
je 0x4aa3aa
mov dword [esp + 0x34], 0x43c80000
mov ebx, 7
jmp 0x4aa411
lea ecx, [esp + 0x34]
lea edx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x3c]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
call fcn.004a69d0
add esp, 0x10
test eax, eax
je 0x4aa8e7
fld dword [esp + 0x28]
fsub dword [esp + 0x1c]
lea edx, [esp + 0x10]
mov ebx, 5
push edx
mov dword [esp + 0x1c], 0
fstp dword [esp + 0x14]
fld dword [esp + 0x30]
fsub dword [esp + 0x24]
fstp dword [esp + 0x18]
call fcn.00428950
fcomp dword [0x4d83a8]
add esp, 4
fnstsw ax
test ah, 1
jne 0x4aa8e7
fld dword [esp + 0x28]
fsub dword [esp + 0x1c]
lea eax, [esp + 0x10]
push eax
fstp dword [esp + 0x14]
fld dword [esp + 0x30]
fsub dword [esp + 0x24]
fstp dword [esp + 0x18]
fld dword [esp + 0x34]
fsub dword [esp + 0x28]
fstp dword [esp + 0x1c]
call fcn.004286f0
fstp st(0)
fld dword [esp + 0x14]
fadd dword [esp + 0x20]
push 0xffffffffffffffff
lea edx, [esp + 0x6c]
push 2
lea eax, [esp + 0x48]
push edx
push eax
fst dword [esp + 0x50]
fld dword [esp + 0x28]
fadd dword [esp + 0x34]
fstp dword [esp + 0x54]
fld dword [esp + 0x2c]
fadd dword [esp + 0x38]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x7c], ecx
lea ecx, [esp + 0x138]
push ecx
fstp dword [esp + 0x5c]
fstp dword [esp + 0x7c]
fld dword [esp + 0x5c]
fsub dword [0x4d77bc]
fstp dword [esp + 0x84]
call fcn.004b0470
mov ecx, 9
mov esi, eax
lea edi, [esp + 0xb0]
xor ebp, ebp
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0xb0]
add esp, 0x18
cmp eax, ebp
jne 0x4aa8e7
fld dword [esp + 0x9c]
fcomp dword [0x4d7390]
fnstsw ax
test ah, 1
je 0x4aa52e
mov eax, dword [esp + 0xb8]
lea edx, [eax + eax*4]
mov eax, dword [0x11919f8]
mov ecx, dword [eax + 0xac]
fld dword [ecx + edx*4 + 8]
lea eax, [ecx + edx*4]
fcomp qword [0x4d7f50]
fnstsw ax
test ah, 1
jne 0x4aa52e
lea edx, [esp + 0xa0]
push edx
call fcn.004af680
add esp, 4
test al, 8
jne 0x4aa52e
fld dword [esp + 0x44]
fsub dword [esp + 0xa8]
fcomp dword [0x118865c]
fnstsw ax
test ah, 0x41
jne 0x4aa8e7
fld dword [esp + 0x28]
fsub dword [esp + 0x10]
push 0xffffffffffffffff
lea ecx, [esp + 0x68]
push 2
lea edx, [esp + 0x44]
push ecx
push edx
fst dword [esp + 0x4c]
fld dword [esp + 0x3c]
fsub dword [esp + 0x24]
fstp dword [esp + 0x50]
fld dword [esp + 0x40]
fsub dword [esp + 0x28]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x134]
push eax
fstp dword [esp + 0x58]
fstp dword [esp + 0x78]
fld dword [esp + 0x58]
fsub dword [0x4d77bc]
fstp dword [esp + 0x80]
call fcn.004b0470
mov ecx, 9
mov esi, eax
lea edi, [esp + 0xac]
add esp, 0x14
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 0x98], ebp
jne 0x4aa8e7
fld dword [esp + 0x9c]
fcomp dword [0x4d7390]
fnstsw ax
test ah, 1
je 0x4aa618
mov eax, dword [esp + 0xb8]
mov edx, dword [0x11919f8]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0xac]
fld dword [eax + ecx*4 + 8]
lea eax, [eax + ecx*4]
fcomp qword [0x4d7f50]
fnstsw ax
test ah, 1
jne 0x4aa618
lea ecx, [esp + 0xa0]
push ecx
call fcn.004af680
add esp, 4
test al, 0x18
jne 0x4aa618
fld dword [esp + 0x44]
fsub dword [esp + 0xa8]
fcomp dword [0x118865c]
fnstsw ax
test ah, 0x41
jne 0x4aa8e7
fld dword [esp + 0x28]
fsub dword [esp + 0x1c]
lea edx, [esp + 0x10]
mov dword [esp + 0x18], 0
push edx
fstp dword [esp + 0x14]
fld dword [esp + 0x30]
fsub dword [esp + 0x24]
fstp dword [esp + 0x18]
call fcn.004286f0
fstp st(0)
fld dword [esp + 0x14]
fmul dword [esp + 0x38]
add esp, 4
cmp ebx, 5
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
fstp dword [esp + 0x8c]
fld dword [esp + 0x14]
fmul dword [esp + 0x34]
fstp dword [esp + 0x90]
fld dword [esp + 0x18]
fmul dword [esp + 0x34]
fstp dword [esp + 0x94]
jne 0x4aa69d
mov eax, dword [0x1188660]
mov dword [esp + 0x88], eax
jmp 0x4aa6a8
mov dword [esp + 0x88], 0
push ebp
push ebp
push 0x3d
push 0x3dcccccd
push 0x1e
lea ecx, [esp + 0x94]
push 3
lea edx, [esp + 0xa4]
push ecx
push edx
push 1
lea eax, [esp + 0x40]
push 2
push eax
lea ecx, [esp + 0x100]
push 0xffffffffffffffff
push ecx
call fcn.004a59b0
mov eax, dword [esp + 0x154]
add esp, 0x34
cmp eax, 0x1e
jge 0x4aa8e7
test byte [esp + 0x114], 0x10
jne 0x4aa8e7
xor esi, esi
mov dword [esp + 0x48], esi
fild dword [esp + 0x48]
lea edx, [esp + 0x3c]
push edx
fld st(0)
fmul dword [esp + 0x14]
fsubr dword [esp + 0xd8]
fstp dword [esp + 0x40]
fld st(0)
fmul dword [esp + 0x18]
fsubr dword [esp + 0xdc]
fstp dword [esp + 0x44]
fmul dword [esp + 0x1c]
fsubr dword [esp + 0xe0]
fadd qword [0x4d7460]
fstp dword [esp + 0x48]
call fcn.004b0230
mov edi, dword [esp + 0x154]
add esp, 4
cmp eax, edi
je 0x4aa770
add esi, 8
cmp esi, 0x20
mov dword [esp + 0x48], esi
jle 0x4aa704
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x138
ret
cmp esi, 0x20
jg 0x4aa8e7
call fcn.004a6de0
mov esi, eax
cmp esi, ebp
je 0x4aa8e7
mov dword [esi], edi
mov dword [esi + 4], ebp
mov dword [esi + 8], ebp
mov eax, dword [esp + 0x1c]
mov dword [esi + 0xc], eax
mov ecx, dword [esp + 0x20]
mov dword [esi + 0x10], ecx
mov edx, dword [esp + 0x24]
mov dword [esi + 0x14], edx
mov eax, dword [esp + 0x28]
mov dword [esi + 0x18], eax
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x1c], ecx
mov edx, dword [esp + 0x30]
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], ebx
fld dword [esp + 0x28]
fsub dword [esp + 0x1c]
cmp ebx, 7
mov dword [esp + 0x18], 0
fstp dword [esp + 0x10]
fld dword [esp + 0x2c]
fsub dword [esp + 0x20]
fstp dword [esp + 0x14]
fld dword [esp + 0x30]
fsub dword [esp + 0x24]
fstp dword [esp + 0x38]
jne 0x4aa81e
lea eax, [esp + 0x10]
push eax
call fcn.00428950
fcomp dword [esp + 0x3c]
add esp, 4
fnstsw ax
test ah, 1
je 0x4aa81e
fld dword [esp + 0x38]
fmul dword [0x4d8350]
fdiv dword [0x1188628]
fadd dword [0x4d83b4]
jmp 0x4aa842
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x28]
push ecx
push edx
call fcn.00428fe0
fmul dword [0x4d843c]
add esp, 8
fdiv dword [0x1188638]
fadd dword [0x4d83f4]
call fcn.004c2c10
push edi
mov word [esi + 0x28], ax
call fcn.004a7450
add esp, 4
test eax, eax
jne 0x4aa8a8
fld dword [esp + 0x24]
fsub dword [esp + 0x30]
push ecx
fstp dword [esp]
call fcn.004a72e0
fcomp dword [0x4d8420]
add esp, 4
fnstsw ax
test ah, 0x41
jne 0x4aa881
add word [esi + 0x28], 0x190
jmp 0x4aa8a8
fld dword [esp + 0x24]
fsub dword [esp + 0x30]
push ecx
fstp dword [esp]
call fcn.004a72e0
fcomp dword [0x4d8364]
add esp, 4
fnstsw ax
test ah, 0x41
jne 0x4aa8a8
add word [esi + 0x28], 0x384
mov ecx, dword [0x11885b4]
mov eax, dword [esp + 0x14c]
cmp ebx, 5
mov edx, dword [ecx + eax*4]
mov dword [esi + 0x2c], edx
mov ecx, dword [0x11885b4]
mov dword [ecx + eax*4], esi
jne 0x4aa8e1
mov eax, dword [0x11885d0]
pop edi
inc eax
pop esi
mov dword [0x11885d0], eax
pop ebp
xor eax, eax
pop ebx
add esp, 0x138
ret
inc dword [0x1188604]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x138
ret