Function at 0x40a530
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 8]
cmp eax, dword [ecx + 8]
jbe 0x40ab21
sub esp, 0x88
mov eax, dword [esp + 0x8c]
mov ebp, dword [eax]
mov dword [esp + 0x44], ebp
mov ebp, dword [eax + 4]
mov dword [esp + 0x2c], ebp
mov dword [esp], ebp
call fcn.00447fe0
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x44]
mov edi, dword [ebx + 0x28]
mov dword [esp + 0x18], edi
movzx edi, word [ebp + 4]
mov dword [esp + 0x28], ebp
mov ecx, dword [ebp + 8]
add ebp, ecx
mov dword [esp + 0x14], edi
cmp edi, 0x10000
ja 0x40ab1a
cmp ebp, 0
je 0x40ab12
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x20], 0
xor ecx, ecx
mov ebp, dword [esp + 0x18]
cmp ecx, ebp
jge 0x40a888
mov ebx, dword [esp + 0x44]
cmp ebx, 0
je 0x40ab0b
mov dword [esp + 0x1c], ecx
mov ebp, ecx
mov esi, dword [ebx + 0x28]
cmp ecx, esi
jae 0x40ab04
mov esi, dword [ebx + 0x24]
shl ebp, 3
add esi, ebp
mov ebx, dword [esp + 0x44]
mov dword [esp], ebx
cmp dword [esp], 0
je 0x40aaf9
mov dword [esp + 0x48], esi
mov ebp, dword [esi + 4]
mov dword [esp + 4], ebp
call fcn.004484b0
mov ebx, dword [esp + 8]
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x44]
mov dword [esp], ebx
cmp dword [esp], 0
je 0x40aaee
mov ebx, dword [esp + 0x48]
mov ebp, dword [ebx]
mov dword [esp + 4], ebp
call fcn.00448460
mov eax, dword [esp + 8]
mov dword [esp + 0x38], eax
mov dword [esp], eax
call fcn.00448bf0
mov ebx, dword [esp + 4]
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 8]
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 0x38]
mov dword [esp], ebx
call fcn.00448dd0
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 4]
mov dword [esp + 0x5c], ebx
mov ecx, dword [esp + 8]
mov dword [esp + 0x60], ecx
cmp ecx, 0
jne 0x40a6ac
mov eax, dword [esp + 0x44]
cmp eax, 0
je 0x40aae7
add eax, 0x20
cld
mov ecx, dword [eax]
mov dword [esp], ecx
call fcn.00448bf0
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 4]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 8]
mov dword [esp + 0x60], ebx
mov ebp, dword [esp + 0x14]
cmp esi, ebp
jge 0x40a994
mov dword [esp + 0x20], esi
mov ebx, esi
mov ebp, dword [esp + 0x80]
cmp esi, ebp
jae 0x40aae0
mov ebp, dword [esp + 0x7c]
shl ebx, 4
add ebp, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp], ebx
mov dword [esp + 0x34], ebp
mov ebp, dword [ebp]
mov dword [esp + 4], ebp
call fcn.00448460
mov ebx, dword [esp + 8]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x34]
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
call fcn.004484b0
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x40]
cmp ebx, ebp
jne 0x40aadb
mov ebx, dword [esp + 0x30]
mov dword [esp], ebx
call fcn.00448bf0
mov edi, dword [esp + 4]
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x68]
cmp esi, ebx
jne 0x40aadb
mov dword [esp + 0x74], edi
mov dword [esp], edi
mov dword [esp + 0x78], esi
mov dword [esp + 4], esi
mov ebp, dword [esp + 0x64]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x68]
mov dword [esp + 0xc], ebp
call fcn.00451c80
movzx ebx, byte [esp + 0x10]
cmp bl, 0
je 0x40aadb
mov ebx, dword [esp + 0x30]
mov dword [esp], ebx
call fcn.00448dd0
mov edi, dword [esp + 4]
mov dword [esp + 0x54], edi
mov esi, dword [esp + 8]
mov dword [esp + 0x58], esi
cmp esi, 0
jne 0x40a7c5
mov ebx, dword [esp + 0x2c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x28]
mov ebp, dword [ebx]
mov dword [esp + 4], ebp
call fcn.00448460
mov eax, dword [esp + 8]
mov dword [esp + 0x50], eax
mov dword [esp], eax
call fcn.00448bf0
mov edi, dword [esp + 4]
mov dword [esp + 0x54], edi
mov esi, dword [esp + 8]
mov dword [esp + 0x58], esi
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], ecx
movzx ebp, byte [ecx]
mov ebx, ebp
and ebx, 1
cmp bl, 0
jne 0x40aad1
xor ecx, ecx
cmp cl, 0
jne 0x40a81b
mov ebx, dword [esp + 0x60]
cmp esi, ebx
jne 0x40a983
mov dword [esp], edi
mov dword [esp + 4], esi
mov ebp, dword [esp + 0x5c]
mov dword [esp + 8], ebp
mov ebp, dword [esp + 0x60]
mov dword [esp + 0xc], ebp
call fcn.00451c80
movzx ebx, byte [esp + 0x10]
cmp bl, 0
je 0x40a983
mov ebx, dword [esp + 0x8c]
xor ebp, ebp
cmp ebx, ebp
je 0x40a877
mov ebx, dword [esp + 0x2c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x34]
mov ebp, dword [ebx + 8]
mov dword [esp + 4], ebp
call fcn.00448820
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0x8c]
cmp ebx, 0
je 0x40a97c
lea ebx, [ebx + 0x14]
mov ecx, dword [esp + 0x1c]
shl ecx, 2
add ebx, ecx
cmp ebx, 0
je 0x40a975
cmp byte [0x6cfdd8], 0
jne 0x40a964
mov dword [ebx], ebp
mov ecx, dword [esp + 0x1c]
inc ecx
mov ebp, dword [esp + 0x18]
cmp ecx, ebp
jl 0x40a5c9
cmp byte [esp + 0x90], 0
jne 0x40a8a7
mov ebx, 0x5f2a74
mov dword [esp], ebx
mov dword [esp + 4], 0x14
call fcn.00429650
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x2c]
mov edi, dword [ecx + 8]
mov ecx, dword [esi + 8]
imul ecx, ecx, 0x11
add ecx, edi
mov eax, 0x3ce4585
mul ecx
mov eax, edx
xor edx, edx
xor ebx, ebx
add eax, ecx
adc edx, ebx
shrd eax, edx, 0xa
shr edx, 0xa
mov ebx, eax
imul ebx, ebx, 0x3f1
sub ecx, ebx
mov dword [esp + 0x24], ecx
mov ebx, ecx
mov ebp, 0x6c0aa0
cmp ecx, 0x3f1
jae 0x40a95d
shl ebx, 2
add ebp, ebx
mov eax, dword [ebp]
mov ebx, dword [esp + 0x8c]
cmp ebx, 0
je 0x40a959
cmp byte [0x6cfdd8], 0
jne 0x40a944
mov dword [ebx + 8], eax
mov ebx, ecx
mov ebp, 0x6c0aa0
cmp ecx, 0x3f1
jae 0x40a93d
shl ebx, 2
add ebp, ebx
mov dword [esp], ebp
mov ebx, dword [esp + 0x8c]
mov dword [esp + 4], ebx
call fcn.004026f0
add esp, 0x88
ret
call fcn.00427990
ud2
lea esi, [ebx + 8]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0040e4e0
mov ecx, dword [esp + 0x24]
jmp 0x40a90f
mov dword [ebx], eax
jmp 0x40a903
call fcn.00427990
ud2
mov dword [esp], ebx
mov dword [esp + 4], ebp
call fcn.0040e4e0
jmp 0x40a877
mov dword [ebx], eax
jmp 0x40a868
mov dword [ebx], eax
jmp 0x40a853
mov esi, dword [esp + 0x20]
inc esi
mov ebp, dword [esp + 0x14]
cmp esi, ebp
jl 0x40a6b8
cmp byte [esp + 0x91], 0
jne 0x40aabd
cmp byte [esp + 0x90], 0
je 0x40a9b9
mov ebx, 0x6cfcb8
mov dword [esp], ebx
call fcn.0040bea0
mov ebx, dword [esp + 0x2c]
mov dword [esp], ebx
call fcn.00447f40
mov ebx, dword [esp + 4]
mov dword [esp + 0x74], ebx
mov ebx, dword [esp + 8]
mov dword [esp + 0x78], ebx
mov ebx, dword [esp + 0x44]
mov dword [esp], ebx
cmp dword [esp], 0
je 0x40aab2
call fcn.00447f40
mov ebx, dword [esp + 4]
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 8]
mov dword [esp + 0x70], ebx
mov dword [esp], 0x5d3fe0
call fcn.0040db10
mov eax, dword [esp + 4]
xor ebp, ebp
mov dword [eax], ebp
mov dword [eax + 4], ebp
mov dword [esp + 0x4c], eax
mov ebp, dword [esp + 0x78]
mov dword [eax + 0xc], ebp
mov ebp, dword [esp + 0x74]
cmp byte [0x6cfdd8], 0
jne 0x40aa9a
mov dword [eax + 8], ebp
mov ebp, dword [esp + 0x70]
mov dword [eax + 0x14], ebp
mov ebp, dword [esp + 0x6c]
cmp byte [0x6cfdd8], 0
jne 0x40aa85
mov dword [eax + 0x10], ebp
mov ebp, dword [esp + 0x68]
mov dword [eax + 0x1c], ebp
mov ebp, dword [esp + 0x64]
cmp byte [0x6cfdd8], 0
jne 0x40aa70
mov dword [eax + 0x18], ebp
mov ecx, eax
mov eax, 0x5c7ae0
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00428f70
ud2
lea esi, [eax + 0x18]
mov dword [esp], esi
mov dword [esp + 4], ebp
call fcn.0040e4e0
mov eax, dword [esp + 0x4c]
jmp 0x40aa5b
lea esi, [eax + 0x10]
mov dword [esp], esi
mov dword [esp + 4], ebp
call fcn.0040e4e0
mov eax, dword [esp + 0x4c]
jmp 0x40aa44
lea esi, [eax + 8]
mov dword [esp], esi
mov dword [esp + 4], ebp
call fcn.0040e4e0
mov eax, dword [esp + 0x4c]
jmp 0x40aa2d
mov dword [0], eax
jmp 0x40a9e6
mov ecx, 1
mov ebx, dword [esp + 0x8c]
mov dword [ebx + 0xc], ecx
jmp 0x40a888
mov ecx, 1
jmp 0x40a7e0
jmp 0x40a983
call fcn.00427990
ud2
mov dword [eax], eax
jmp 0x40a68a
mov dword [0], eax
jmp 0x40a629
mov dword [0], eax
jmp 0x40a600
call fcn.00427990
ud2
mov dword [ebx], eax
jmp 0x40a5d6
mov dword [ebp], eax
jmp 0x40a5a1
call fcn.00427a00
ud2
call fcn.0044ff60
jmp fcn.0040a530