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

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0xa8
mov ebx, ecx
mov dword [esp + 0x78], 0
lea eax, [ebx + 8]
mov dword [esp], eax
lea edx, [ebx + 0x20]
mov dword [esp + 4], edx
push 0x7fffffff
mov edx, dword [ebx]
lea ecx, [esp + 0x24]
call fcn.0040b69c
lea ecx, [esp + 0x24]
call fcn.0040f4f4
test al, al
je 0x40a57f
mov dword [ebx + 0x30], 0
lea ecx, [esp + 0x24]
call fcn.0040f678
jmp 0x40aaf3
cmp dword [ebx + 4], 0
jle 0x40a68a
xor eax, eax
xor ebp, ebp
lea edx, [ebp*4]
mov dword [esp + 0x64], edx
push edx
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov edi, eax
mov edx, dword [esp + 0x20]
mov dword [esp + 0x7c], edx
test edx, edx
jle 0x40a5dc
xor eax, eax
xor esi, esi
lea edx, [esi*4]
push edx
lea ecx, [esp + 0x28]
call fcn.0040f4e0
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40a5d5
cmp esi, 0xffffffff
je 0x40a5dc
jmp 0x40a680
inc esi
cmp esi, dword [esp + 0x7c]
jl 0x40a5b4
mov ecx, dword [esp]
call fcn.0040f4f0
cmp eax, dword [esp + 0x64]
jle 0x40a619
mov ecx, dword [esp]
lea esi, [ebp*4 + 4]
call fcn.0040f4f0
cmp eax, esi
jg 0x40abb5
mov ecx, dword [esp]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 4]
call fcn.0040f84c
dec dword [ebx + 4]
push 0x77fa1d17
push 0xfe338407
call fcn.0041303c
mov esi, eax
test esi, esi
je 0x40a63f
push dword [esp + 0x64]
mov ecx, dword [esp + 8]
call fcn.0040f4e0
push dword [eax]
call esi
mov ecx, dword [esp + 4]
call fcn.0040f4f0
cmp eax, dword [esp + 0x64]
jle 0x40a67f
mov ecx, dword [esp + 4]
lea esi, [ebp*4 + 4]
call fcn.0040f4f0
cmp eax, esi
jg 0x40ab69
mov ecx, dword [esp + 4]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 8]
call fcn.0040f84c
dec dword [ebx + 0x1c]
dec ebp
inc ebp
cmp ebp, dword [ebx + 4]
jl 0x40a58d
cmp dword [esp + 0x20], 0
jle 0x40a7a0
xor eax, eax
xor ebp, ebp
lea edx, [ebp*4]
mov dword [esp + 0x70], edx
push edx
lea ecx, [esp + 0x28]
call fcn.0040f4e0
mov edi, eax
mov edx, dword [ebx + 4]
mov dword [esp + 0x80], edx
test edx, edx
jle 0x40a6ed
xor eax, eax
xor esi, esi
lea edx, [esi*4]
push edx
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40a6e3
cmp esi, 0xffffffff
je 0x40a6ed
jmp 0x40a795
inc esi
cmp esi, dword [esp + 0x80]
jl 0x40a6c2
push 0xc2a75cb8
push 0x10154545
call fcn.0041303c
mov esi, eax
test esi, esi
je 0x40a795
push dword [esp + 0x70]
lea ecx, [esp + 0x28]
call fcn.0040f4e0
push dword [eax]
push 0
push 0x1fffff
call esi
mov esi, eax
test esi, esi
je 0x40a795
mov ecx, dword [esp + 4]
call fcn.0040f4f0
add eax, 4
push eax
mov ecx, dword [esp + 8]
call fcn.0040f84c
mov ecx, dword [esp + 4]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 8]
call fcn.0040f4e0
push dword [esp + 0x70]
mov dword [eax], esi
lea ecx, [esp + 0x28]
inc dword [ebx + 0x1c]
call fcn.0040f4e0
mov esi, eax
mov ecx, dword [esp]
call fcn.0040f4f0
add eax, 4
push eax
mov ecx, dword [esp + 4]
call fcn.0040f84c
mov ecx, dword [esp]
mov esi, dword [esi]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov dword [eax], esi
inc dword [ebx + 4]
inc ebp
cmp ebp, dword [esp + 0x20]
jl 0x40a699
lea ecx, [esp + 0x24]
call fcn.0040f678
cmp dword [ebx + 0x30], 0
je 0x40a8d7
mov edi, dword [ebx + 4]
test edi, edi
jle 0x40a8d7
xor eax, eax
xor esi, esi
lea ebp, [esi*4]
push ebp
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov edx, dword [eax]
cmp edx, dword [ebx + 0x34]
jne 0x40a8ce
cmp esi, 0xffffffff
je 0x40a8d7
mov ecx, dword [esp + 4]
call fcn.0040f4f0
cmp eax, ebp
jle 0x40a82b
mov ecx, dword [esp + 4]
lea edx, [esi*4 + 4]
mov dword [esp + 0x6c], edx
call fcn.0040f4f0
cmp eax, dword [esp + 0x6c]
jg 0x40ac3d
mov ecx, dword [esp + 4]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 8]
call fcn.0040f84c
dec dword [ebx + 0x1c]
mov ecx, dword [esp]
call fcn.0040f4f0
cmp eax, ebp
jle 0x40a866
mov ecx, dword [esp]
lea esi, [esi*4 + 4]
call fcn.0040f4f0
cmp eax, esi
jg 0x40ac00
mov ecx, dword [esp]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 4]
call fcn.0040f84c
dec dword [ebx + 4]
mov ecx, dword [esp + 4]
call fcn.0040f4f0
add eax, 4
push eax
mov ecx, dword [esp + 8]
call fcn.0040f84c
mov ecx, dword [esp + 4]
mov ebp, dword [ebx + 0x30]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov dword [eax], ebp
mov ecx, dword [esp]
inc dword [ebx + 0x1c]
call fcn.0040f4f0
add eax, 4
push eax
mov ecx, dword [esp + 4]
call fcn.0040f84c
mov ecx, dword [esp]
mov ebp, dword [ebx + 0x34]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov dword [eax], ebp
inc dword [ebx + 4]
jmp 0x40a8d7
inc esi
cmp esi, edi
jl 0x40a7c2
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
push eax
lea ecx, [esp + 0x14]
call fcn.0040f5a8
mov ebp, dword [ebx]
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ebp
push eax
lea ecx, [esp + 0x40]
call fcn.0040f5a8
push 0x40
pop eax
cmp dword [ebx + 0x1c], 0x40
cmovl eax, dword [ebx + 0x1c]
mov dword [esp + 0x74], eax
test eax, eax
jle 0x40aa7c
xor eax, eax
xor ebp, ebp
lea ecx, [esp + 0x4c]
call fcn.0040cad0
xor edx, edx
lea ecx, [esp + 0x4c]
mov byte [ecx + 4], dl
mov dword [ecx + 0x1c], edx
call fcn.0040c2c4
test al, al
jne 0x40a9ab
mov esi, dword [esp + 0x4c]
lea ecx, [esp + 0x10]
call fcn.0040f4f0
add eax, 4
push eax
lea ecx, [esp + 0x14]
call fcn.0040f84c
lea ecx, [esp + 0x10]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
lea ecx, [esp + 0x14]
call fcn.0040f4e0
mov dword [eax], esi
inc dword [esp + 0xc]
push 0xa8c8a645
push 0xfe338407
call fcn.0041303c
mov esi, eax
test esi, esi
je 0x40a99e
xor eax, eax
lea edx, [esp + 0x68]
push 2
push eax
push eax
push edx
push dword [ebx]
push dword [esp + 0x60]
push 0xffffffffffffffff
call esi
test eax, eax
jne 0x40a9ab
mov edx, dword [esp + 0x68]
test edx, edx
je 0x40a9ab
cmp edx, 0xffffffff
jne 0x40a9b9
lea ecx, [esp + 0x4c]
call fcn.0040cd68
jmp 0x40aae1
lea ecx, [esp + 0x3c]
call fcn.0040f4f0
add eax, 4
push eax
lea ecx, [esp + 0x40]
call fcn.0040f84c
mov esi, dword [esp + 0x68]
lea ecx, [esp + 0x3c]
call fcn.0040f4f0
add eax, 0xfffffffc
push eax
lea ecx, [esp + 0x40]
call fcn.0040f4e0
mov dword [eax], esi
lea ecx, [esp + 0x4c]
inc dword [ecx - 0x14]
call fcn.0040cd68
inc ebp
cmp ebp, dword [esp + 0x74]
jl 0x40a91c
xor eax, eax
xor esi, esi
lea edi, [esi*4]
push edi
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov ebp, eax
push edi
lea ecx, [esp + 0x40]
call fcn.0040f4e0
mov edi, eax
mov eax, dword [ebp]
add esp, 0xffffffd8
cdq
mov eax, dword [edi]
pxor xmm5, xmm5
movd xmm1, dword [ebp]
mov ecx, ebx
movd xmm4, dword [edi]
movd xmm0, edx
cdq
punpckldq xmm1, xmm0
movq xmm2, qword [ebx + 0x38]
movq qword [esp], xmm1
movd xmm3, edx
punpckldq xmm4, xmm3
movq qword [esp + 8], xmm2
movq qword [esp + 0x10], xmm4
movq qword [esp + 0x18], xmm5
movq qword [esp + 0x20], xmm5
call fcn.0040ac8c
inc esi
cmp esi, dword [esp + 0x74]
jl 0x40aa06
movq xmm0, qword [0x41b808]
movq qword [esp + 0x84], xmm0
push 0x8a79536f
push 0xfe338407
call fcn.0041303c
mov esi, eax
test esi, esi
je 0x40aad8
mov ebp, dword [esp + 0xc]
push 0
lea ecx, [esp + 0x14]
call fcn.0040f4e0
mov edx, eax
lea eax, [esp + 0x84]
push eax
push 0
push 1
push edx
push ebp
call esi
mov ebp, eax
lea eax, [ebp - 0x80]
cmp eax, 0x3f
cmovbe ebp, eax
cmp ebp, 0x102
je 0x40aae1
jmp 0x40aadc
xor eax, eax
xor ebp, ebp
cmp ebp, 0x3f
jbe 0x40aafa
lea ecx, [esp + 0x34]
call fcn.0040b608
lea ecx, [esp + 8]
call fcn.0040b608
xor edi, edi
dec edi
mov esi, edi
jmp 0x40ab35
shl ebp, 2
push ebp
mov ecx, dword [esp + 8]
call fcn.0040f4e0
push ebp
mov eax, dword [eax]
mov ecx, dword [esp + 4]
mov dword [ebx + 0x30], eax
call fcn.0040f4e0
mov esi, dword [ebx + 0x30]
lea ecx, [esp + 0x34]
mov ebp, dword [eax]
mov eax, esi
cdq
mov dword [ebx + 0x34], ebp
mov edi, edx
call fcn.0040b608
lea ecx, [esp + 8]
call fcn.0040b608
mov ebp, esi
or ebp, edi
jne 0x40ab47
cmp dword [esp + 0x78], 0x20
jne 0x40ab56
xor edi, edi
dec edi
mov esi, edi
mov eax, esi
mov edx, edi
add esp, 0xa8
pop ebp
pop ebx
pop edi
pop esi
ret
mov ecx, 0x5dc
call fcn.0041223c
inc dword [esp + 0x78]
jmp 0x40a54d
push dword [esp + 0x64]
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov dword [esp + 0xa4], eax
push esi
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 4]
call fcn.0040f4f0
sub eax, esi
push eax
push dword [esp + 0xa4]
push dword [esp + 0xac]
call fcn.004138c8
add esp, 0xc
jmp 0x40a666
push dword [esp + 0x64]
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov dword [esp + 0x9c], eax
push esi
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov dword [esp + 0x98], eax
mov ecx, dword [esp]
call fcn.0040f4f0
sub eax, esi
push eax
push dword [esp + 0x9c]
push dword [esp + 0xa4]
call fcn.004138c8
add esp, 0xc
jmp 0x40a601
push ebp
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov ebp, eax
push esi
mov ecx, dword [esp + 4]
call fcn.0040f4e0
mov dword [esp + 0x94], eax
mov ecx, dword [esp]
call fcn.0040f4f0
sub eax, esi
push eax
push dword [esp + 0x98]
push ebp
call fcn.004138c8
add esp, 0xc
jmp 0x40a84e
push ebp
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov dword [esp + 0x90], eax
push dword [esp + 0x6c]
mov ecx, dword [esp + 8]
call fcn.0040f4e0
mov dword [esp + 0x8c], eax
mov ecx, dword [esp + 4]
call fcn.0040f4f0
sub eax, dword [esp + 0x6c]
push eax
push dword [esp + 0x90]
push dword [esp + 0x98]
call fcn.004138c8
add esp, 0xc
jmp 0x40a812