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

Disassembly:
sub esp, 0x38
movzx eax, word [0x724530]
mov dword [esp + 0x14], eax
mov eax, dword [0x724538]
mov ecx, dword [0x724528]
push ebx
mov ebx, dword [esp + 0x58]
mov ax, word [eax + 0x3d38]
dec ebx
add ax, word [0x724570]
movzx eax, ax
mov dword [esp + 0x2c], eax
mov eax, dword [0x724550]
mov dword [esp + 0xc], eax
mov eax, dword [0x724524]
push ebp
mov ebp, dword [0x724574]
push esi
mov eax, dword [eax + ecx*4]
sub eax, ebx
movzx ecx, byte [esp + 0x54]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x54], ecx
mov edx, dword [esp + 0x5c]
push edi
movzx eax, byte [eax + ecx*4]
imul eax, dword [0x724508]
imul ecx, dword [0x724540], 0xc
mov dword [esp + 0x64], ebx
mov dword [esp + 0x28], 0x499
mov dword [esp + 0x44], eax
mov eax, dword [0x72456c]
mov esi, dword [ecx + eax]
mov eax, 0x1898
movzx ecx, ax
mov eax, dword [0x724544]
mov dword [esp + 0x3c], esi
movzx eax, word [eax + 0x12a8]
imul eax, ecx
movzx ecx, ax
mov eax, dword [0x724558]
add eax, 0x1ebc
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + 0x1986]
mov ecx, dword [0x72454c]
mov dword [esp + 0x1c], eax
dec ecx
imul eax, ebp, 6
or ebp, 0x711
mov dword [0x72454c], ecx
movzx eax, word [eax + edx]
xor eax, dword [0x72451c]
mov dword [esp + 0x34], eax
mov eax, dword [0x724568]
movzx eax, word [edx + eax*2]
xor edx, edx
mov dword [esp + 0x30], eax
mov eax, dword [0x724548]
mov edi, dword [eax + 0x1e78]
mov eax, dword [esi + 0x34d0]
div ecx
mov ecx, dword [0x8132]
lea eax, [ebx + 1]
mov ebx, dword [esp + 0x10]
mov esi, edx
mov edx, dword [esp + 0x58]
movzx eax, ax
mov dword [esp + 0x14], eax
movzx eax, ax
xor ecx, eax
mov eax, dword [esp + 0x60]
mov al, byte [eax + edx*2]
mov edx, dword [esp + 0x18]
sub al, bl
mov byte [esp + 0x2c], al
mov eax, dword [esp + 0x68]
mov eax, dword [eax]
mov eax, dword [edx + eax*4]
cdq
idiv dword [esp + 0x28]
push edx
push dword [esp + 0x30]
push ecx
push esi
push ebx
push edi
call fcn.0040826d
mov ecx, dword [0x724528]
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x64]
mov dword [ebx + ecx*4 + 8], eax
mov ecx, dword [0x724528]
lea eax, [ecx + 2]
imul eax, eax, 3
movzx eax, byte [eax + edx]
mov dword [esi + ecx*4], eax
mov eax, dword [0x724558]
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x2c]
movzx eax, byte [eax + ecx]
mov ecx, dword [esp + 0x70]
xor eax, dword [ebx + ecx*4]
mov ebp, dword [ebp + ecx*4]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x44], eax
movzx eax, si
add ebp, dword [0x724568]
movzx ebx, word [ecx + eax*8]
movzx eax, word [0x724530]
mov ecx, dword [esp + 0x30]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x28]
or edi, dword [esp + 0x48]
movzx esi, byte [edx + eax*4]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
movzx ecx, byte [edx + eax]
mov eax, dword [esp + 0x4c]
cdq
idiv ecx
push eax
movzx eax, word [0x724564]
push esi
push edi
push dword [0x724540]
push dword [0x72451c]
push ebx
push ebp
push dword [esp + 0x60]
push eax
call fcn.0040b4b5
mov ebx, dword [esp + 0x60]
add esp, 0x3c
mov dword [0x72450c], eax
movzx eax, byte [ebx]
cmp dword [0x724550], eax
jne 0x40a87c
movzx eax, byte [0x724512]
mov ebp, dword [esp + 0x14]
cmp ax, bp
je 0x40a87c
mov eax, dword [esp + 0x38]
movzx edi, ax
movzx eax, word [0x724530]
imul eax, eax, 3
mov ecx, dword [0x724528]
movzx eax, byte [eax + ebx]
imul eax, eax, 0x110d
sub eax, dword [0x72451c]
cdq
idiv edi
xor dword [0x724568], edx
dec ecx
mov edx, dword [esp + 0x54]
mov dword [0x724528], ecx
movzx eax, byte [ebx + 0xfd2]
mov ebx, dword [esp + 0x10]
mov ecx, dword [edx + ecx*4]
xor edx, edx
sub ecx, eax
mov eax, dword [esp + 0x4c]
dec ebx
mov dword [esp + 0x10], ebx
mov dword [eax + 0x14], ecx
mov eax, dword [esp + 0x1c]
mov esi, dword [0x724508]
movzx eax, byte [eax + ebx*4]
div esi
mov edx, dword [esp + 0x5c]
mov ecx, eax
mov dword [esp + 0x5c], 0x1c
movzx eax, byte [ebx + edx]
xor ecx, eax
xor ecx, 0x5eb
and dword [0x72450c], ecx
dec esi
mov ecx, dword [esp + 0x4c]
mov dword [0x724508], esi
movzx esi, bp
mov ebp, dword [esp + 0x64]
mov ebx, esi
sub ebx, dword [esp + 0x10]
add ebx, 0x176f
add byte [esi + edx], 0x1d
mov eax, dword [0x724574]
mov edx, dword [esp + 0x54]
push ebx
push esi
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x5fac]
xor eax, esi
mov dword [esp + 0x24], ebx
imul ecx, eax, 0xa6a
mov eax, dword [0x724560]
mov dword [eax*4], ecx
mov eax, dword [0x724574]
mov ecx, dword [esp + 0x44]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x70]
mov eax, dword [eax]
mov eax, dword [edx + eax*4 + 0x1c]
xor edx, edx
or eax, ebp
div dword [ecx]
xor edx, edx
mov dword [ecx], eax
mov eax, dword [esp + 0x48]
movzx ecx, ax
mov eax, dword [esp + 0x4c]
push ecx
push ebp
movzx ecx, word [eax + 8]
mov eax, dword [esp + 0x68]
div ecx
mov ecx, dword [esp + 0x78]
push eax
push 0x12f9
push ebp
push edi
push 0x1c
pop eax
cdq
idiv dword [ecx + ebx*4]
push edx
call fcn.0040b4b5
mov eax, dword [esp + 0x38]
add esp, 0x24
mov ecx, dword [esp + 0x18]
inc eax
movzx eax, ax
add eax, eax
mov ebp, dword [ecx + eax*8]
mov eax, dword [0x724558]
mov ecx, dword [esp + 0x50]
movzx eax, byte [eax + ecx]
cmp ebp, eax
jg 0x40a87c
imul esi, ebp, 0x91f
lea ebx, [ebp + 1]
shl ebx, 4
mov eax, 0x25f7
add ebx, dword [esp + 0x54]
mov dword [esp + 0x58], esi
mov ecx, dword [eax]
mov edx, ebp
mov al, byte [0x724558]
imul edx, dword [0x72453c]
xor al, 0xd8
inc dword [0x724558]
mov byte [esp + 0x54], al
mov eax, dword [ebx]
and eax, dword [esp + 0x1c]
push eax
push dword [esp + 0x58]
mov eax, dword [esp + 0x64]
push ecx
movzx eax, al
push eax
push edx
push esi
call fcn.0040826d
mov edi, dword [esp + 0x38]
lea ebx, [ebx + 0x10]
mov edx, dword [esp + 0x68]
add esp, 0x18
movzx ecx, byte [edi]
xor byte [ecx + edx + 4], al
inc edi
mov ecx, dword [0x724544]
inc eax
imul esi, eax, 3
mov dword [esp + 0x1c], eax
mov eax, 0xa3b
mov dword [esp + 0x20], edi
mov edx, dword [eax]
mov al, byte [ecx + edx*4]
xor edx, edx
mov ecx, dword [esp + 0x24]
add al, 0x1c
and byte [esi + ecx], al
imul eax, dword [0x724528], 6
mov ecx, dword [esp + 0x60]
movzx ecx, word [eax + ecx]
mov eax, dword [esp + 0x64]
div ecx
xor edx, edx
mov ecx, 0x1cbf
div ecx
xor edx, edx
add byte [esp + 0x5c], al
dec byte [edi]
mov esi, dword [0x724514]
movzx edi, byte [edi]
mov eax, dword [0x72454c]
movzx ecx, byte [esi + edi*4]
div ecx
mov ecx, dword [esp + 0x50]
inc ebp
mov byte [esi + edi*4], dl
mov eax, dword [0x724558]
mov esi, dword [esp + 0x58]
add esi, 0x91f
mov dword [esp + 0x58], esi
movzx eax, byte [eax + ecx]
cmp ebp, eax
mov eax, 0x25f7
jle 0x40a7a2
mov eax, dword [esp + 0x60]
xor edx, edx
movzx ecx, word [0x724530]
pop edi
pop esi
movzx eax, word [eax + 0xab6]
div ecx
pop ebp
mov eax, edx
pop ebx
add esp, 0x38
ret