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

Disassembly:
sub esp, 0x358
fldz
push ebp
push esi
xor esi, esi
mov dword [esp + 0x10], esi
fst dword [esp + 8]
xor eax, eax
mov word [esp + 0x30], ax
fstp dword [esp + 0x14]
fldz
xor ecx, ecx
mov word [esp + 0x18], cx
mov dword [esp + 0x20], esi
mov dword [esp + 0x34], esi
fst qword [esp + 0x24]
xor edx, edx
mov word [esp + 0x2c], dx
mov eax, dword [esp + 0x10]
mov ecx, 0x2836342e
sub ecx, eax
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
mov ebp, 1
push edi
mov dword [esp + 0x54], esi
fstp dword [0x425210]
mov word [esp + 0x10], dx
mov dword [esp + 0x58], ebp
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
fsub qword [0x41f3e0]
fadd dword [0x423610]
call fcn.0040b0f0
mov edi, dword [esp + 0x374]
mov word [esp + 0x10], ax
movzx ecx, word [0x423058]
lea edx, [esp + 0x58]
lea eax, [esp + 0x54]
push edx
add ecx, 0x39803b30
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], eax
push edi
mov word [0x423058], cx
call fcn.004017b0
add esp, 8
test eax, eax
jl 0x4079a7
mov eax, dword [edi + 8]
test byte [eax], 1
je 0x4079a7
fld qword [0x425938]
fsub qword [0x41f340]
fstp qword [0x425938]
fld qword [0x425938]
fsub qword [0x41f840]
fsub qword [0x41f838]
fcomp qword [0x41f830]
fnstsw ax
test ah, 1
jne 0x40729b
mov cx, word [esp + 0x34]
movsx edx, cx
sub edx, 0x430b80ce
cmp edx, 0x478e4661
jle 0x40729b
fld dword [esp + 0x18]
fstp st(0)
lea eax, [esp + 0x20]
push edi
push eax
call fcn.00401e00
push esi
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x58]
push edx
call fcn.00401230
fld dword [esp + 0x2c]
fadd qword [0x41f828]
add esp, 0x14
fadd qword [0x41f820]
fld qword [0x424e70]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fsubp st(1)
fadd qword [0x41f818]
fcompp
fnstsw ax
fld dword [esp + 0x18]
fsub qword [0x41f340]
fstp dword [esp + 0x18]
test ah, 1
jne 0x407306
mov cx, word [esp + 0x1c]
mov word [0x423068], cx
push 0x300
lea edx, [esp + 0x68]
push esi
push edx
call fcn.0040b1a0
mov eax, dword [esp + 0x37c]
push eax
call fcn.00402700
add esp, 0x10
cmp eax, 0x29f
jle 0x407337
mov dword [esp + 0x28], 6
jmp 0x407367
cmp eax, 0xef
jle 0x407348
mov dword [esp + 0x28], 5
jmp 0x407367
cmp eax, 0x4f
jle 0x407357
mov dword [esp + 0x28], 4
jmp 0x407367
xor ecx, ecx
cmp eax, 0x17
setg cl
lea ecx, [ecx + ecx + 1]
mov dword [esp + 0x28], ecx
push ebx
mov ebx, dword [edi + 4]
add ebx, ebp
mov ebp, dword [esp + 0x36c]
push ebx
push ebp
call fcn.004018b0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407922
mov edx, dword [0x425270]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
sub eax, edx
add ecx, eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
lea edx, [esp + 0x74]
push ebx
push edx
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
call fcn.004018b0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407922
fld qword [0x424d90]
mov eax, dword [0x4250c0]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
lea ecx, [ebx + ebx]
push ecx
lea edx, [esp + 0x44]
fsubp st(1)
push edx
fadd qword [0x41f810]
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
call fcn.004018b0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407922
mov ebx, dword [esp + 0x37c]
cmp ebx, esi
je 0x40742c
cmp dword [ebx + 8], esi
je 0x40742c
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 8]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], edx
jmp 0x4074ab
lea eax, [esp + 0x4c]
push 1
push eax
call fcn.00402810
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407929
mov ecx, dword [edi + 4]
shl ecx, 6
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.00402e30
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407929
movzx eax, word [esp + 0x34]
lea ecx, [esp + 0x4c]
push edi
push ecx
mov edx, ecx
sub eax, 0x53aab34e
push edx
mov word [esp + 0x40], ax
call fcn.00407010
add esp, 0xc
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x407929
cmp ebx, esi
je 0x4074ab
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
mov dword [ebx + 8], edx
mov esi, dword [esp + 0x370]
push edi
push esi
call fcn.004017b0
add esp, 8
test eax, eax
jl 0x4074d1
push edi
lea eax, [esp + 0x78]
push esi
push eax
call fcn.00407010
add esp, 0xc
jmp 0x4074df
lea ecx, [esp + 0x74]
push esi
push ecx
call fcn.00402c10
add esp, 8
mov edx, dword [0x423048]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fsub dword [esp + 0x1c]
fcomp qword [0x41f808]
fnstsw ax
test ah, 0x41
jne 0x407516
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul dword [0x424250]
fstp dword [0x424250]
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x40]
push ecx
push esi
push edi
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x84]
push eax
call fcn.004029a0
lea ecx, [esp + 0x60]
push ecx
push ebp
call fcn.00402c10
add esp, 0x1c
mov dword [esp + 0x14], eax
test eax, eax
jne 0x407929
lea edx, [esp + 0x40]
push edx
push esi
push edi
push ebp
call fcn.00403200
mov esi, dword [esp + 0x3c]
add esp, 0x10
cmp esi, 1
jle 0x4076be
mov eax, dword [edi + 4]
dec esi
mov ecx, esi
mov ebp, 1
shl ebp, cl
inc eax
push eax
lea ebx, [ebp + ebp*2]
lea ebx, [esp + ebx*4 + 0x6c]
push ebx
call fcn.004018b0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x407922
lea ecx, [esp + 0x74]
push ecx
push ebx
call fcn.00402c10
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x407922
test esi, esi
jle 0x4075ce
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
push edx
push eax
push edi
push ebx
push ebx
call fcn.004029a0
add esp, 0x14
sub esi, 1
jne 0x4075b4
mov ecx, dword [esp + 0x2c]
lea ebx, [ebp + 1]
mov ebp, 1
shl ebp, cl
cmp ebx, ebp
jge 0x4076b4
lea esi, [ebx + ebx*2]
lea esi, [esp + esi*4 + 0x68]
jmp 0x4075f0
mov ecx, dword [esp + 0x28]
add ecx, 0x1fbc102c
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
or ecx, 0xffffffff
fsub qword [0x425408]
add dword [esp + 0x28], ecx
fcomp qword [0x41f800]
fnstsw ax
test ah, 0x44
jp 0x407638
movzx edx, word [esp + 0x20]
movzx eax, word [esp + 0x38]
lea edx, [edx + eax - 0x1c089591]
mov word [esp + 0x38], dx
add dword [esp + 0x20], ecx
jmp 0x407659
fld dword [0x424db0]
call fcn.0040b0f0
mov dword [esp + 0x18], eax
fld dword [0x424db0]
fadd qword [0x41f340]
fstp dword [0x424db0]
mov eax, dword [edi + 4]
inc eax
push eax
push esi
call fcn.004018b0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x407922
lea ecx, [esi - 0xc]
push ecx
push esi
call fcn.00402c10
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x407922
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
push edx
push eax
push edi
lea ecx, [esp + 0x80]
push ecx
push esi
call fcn.004029a0
inc ebx
add esp, 0x14
add esi, 0xc
cmp ebx, ebp
jl 0x4075f0
mov dword [0x4253f8], 0xcbec7368
mov edx, dword [esp + 0x374]
mov eax, dword [edx + 4]
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x38], ebx
jmp 0x4076e0
cmp dword [esp + 0x20], 0
mov esi, 1
jne 0x407708
mov eax, dword [esp + 0x28]
mov ecx, eax
sub eax, esi
mov dword [esp + 0x28], eax
test ecx, ecx
je 0x4078ac
mov dword [esp + 0x20], 0x20
add dword [0x425358], esi
add dword [0x423048], esi
mov edx, dword [0x425358]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fld dword [esp + 0x1c]
mov eax, dword [0x423048]
fadd qword [0x41f7f8]
mov dword [esp + 0x10], eax
fisub dword [esp + 0x10]
fucompp
fnstsw ax
fld dword [esp + 0x1c]
fadd qword [0x41f340]
fstp dword [esp + 0x1c]
test ah, 0x44
jnp 0x407770
add dword [0x423574], esi
fld dword [0x424d7c]
mov ecx, dword [0x423574]
mov dword [esp + 0x10], ecx
fisub dword [esp + 0x10]
fstp dword [0x424d7c]
mov edx, dword [esp + 0x374]
mov ecx, dword [esp + 0x20]
mov eax, dword [edx + 8]
mov edx, dword [esp + 0x28]
sub ecx, esi
mov esi, dword [eax + edx*4]
shr esi, cl
mov dword [esp + 0x20], ecx
and esi, 1
jne 0x4077e1
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4076e0
cmp eax, 1
jne 0x4077e1
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
movzx ecx, word [0x424dc8]
sub eax, 0x68593316
imul eax, ecx
mov word [0x424dc8], ax
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
push edx
push eax
mov eax, dword [esp + 0x374]
push edi
push eax
push eax
call fcn.004029a0
add esp, 0x14
jmp 0x4076e0
fld dword [0x42360c]
fsub dword [0x4234b8]
mov cx, word [esp + 0x34]
mov ax, word [0x42303c]
movsx edx, cx
mov dword [esp + 0x10], edx
movsx ecx, ax
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fsubp st(1)
fild dword [esp + 0x10]
faddp st(1)
call fcn.0040b0f0
mov word [0x42303c], ax
mov eax, dword [esp + 0x2c]
inc ebp
mov ecx, eax
sub ecx, ebp
shl esi, cl
mov dword [esp + 0x38], 2
or ebx, esi
cmp ebp, eax
jne 0x40789f
mov esi, dword [esp + 0x24]
test eax, eax
jle 0x40785d
mov ebp, eax
mov eax, dword [esp + 0x36c]
lea edx, [esp + 0x40]
push edx
push esi
push edi
push eax
push eax
call fcn.004029a0
add esp, 0x14
sub ebp, 1
jne 0x407840
lea eax, [esp + 0x40]
push eax
mov eax, dword [esp + 0x370]
push esi
lea ecx, [ebx + ebx*2]
push edi
lea edx, [esp + ecx*4 + 0x74]
push edx
push eax
call fcn.004029a0
dec dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x2c]
lea eax, [edx + ecx - 0x5d1cda4d]
add esp, 0x14
xor ebp, ebp
mov dword [esp + 0x38], 1
mov dword [esp + 0x18], eax
xor ebx, ebx
add dword [esp + 0x18], 0x7751a035
jmp 0x4076e0
mov ecx, dword [esp + 0x2c]
rol esi, cl
test ebp, ebp
jle 0x407907
mov dword [esp + 0x10], ebp
lea ebx, [ebx]
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x36c]
lea ecx, [esp + 0x40]
push ecx
push edx
push edi
push ebp
push ebp
call fcn.004029a0
add ebx, ebx
add esp, 0x14
test ebx, esi
je 0x4078fe
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x40]
push eax
push ecx
push edi
lea edx, [esp + 0x80]
push edx
push ebp
call fcn.004029a0
add esp, 0x14
sub dword [esp + 0x10], 1
jne 0x4078c0
jmp 0x40790e
mov ebp, dword [esp + 0x36c]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x40]
push eax
push ecx
push edi
push ebp
call fcn.00403200
add esp, 0x10
mov ebx, dword [esp + 0x37c]
mov esi, dword [esp + 0x2c]
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
mov edx, 1
mov ecx, esi
shl edx, cl
cmp eax, edx
jge 0x407963
lea esi, [eax + eax*2]
sub edx, eax
lea esi, [esp + esi*4 + 0x68]
mov edi, edx
nop
push 0
push esi
call fcn.00401110
add esp, 8
add esi, 0xc
sub edi, 1
jne 0x407950
test ebx, ebx
pop ebx
push 0
lea edx, [esp + 0x40]
lea eax, [esp + 0x74]
je 0x40798a
push edx
push eax
call fcn.00401110
mov eax, dword [esp + 0x1c]
add esp, 0xc
pop edi
pop esi
pop ebp
add esp, 0x358
ret
lea ecx, [esp + 0x4c]
push ecx
push edx
push eax
call fcn.00401110
mov eax, dword [esp + 0x20]
add esp, 0x10
pop edi
pop esi
pop ebp
add esp, 0x358
ret
pop edi
pop esi
mov eax, 0xfffffffc
pop ebp
add esp, 0x358
ret