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

Disassembly:
sub esp, 0x370
fldz
push ebp
push esi
xor esi, esi
mov dword [esp + 0x1c], esi
fst dword [esp + 0x24]
xor eax, eax
mov word [esp + 0xc], ax
mov dword [esp + 0x20], esi
fst dword [esp + 8]
fldz
push edi
mov edi, dword [esp + 0x38c]
fst qword [esp + 0x54]
mov dword [esp + 0x38], esi
fxch st(1)
fst dword [esp + 0x14]
lea edx, [esp + 0x64]
fst dword [esp + 0x2c]
push edx
fstp dword [esp + 0x34]
mov ebp, 1
lea ecx, [esp + 0x60]
push edi
fstp qword [esp + 0x38]
mov dword [esp + 0x64], esi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], ecx
call fcn.004028f0
add esp, 8
test eax, eax
jl 0x407569
mov eax, dword [edi + 8]
test byte [eax], 1
je 0x407569
lea ecx, [esp + 0x1c]
push edi
push ecx
call fcn.004017a0
fld dword [0x41f7a8]
push esi
fstp dword [esp + 0x38]
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x58]
push eax
call fcn.004012a0
push 0x300
lea ecx, [esp + 0x94]
push esi
push ecx
call fcn.0040b5e0
mov edx, dword [esp + 0x3a8]
push edx
call fcn.004014e0
add esp, 0x24
cmp eax, 0x29f
jle 0x406e4b
mov dword [esp + 0x18], 6
jmp 0x406e7b
cmp eax, 0xef
jle 0x406e5c
mov dword [esp + 0x18], 5
jmp 0x406e7b
cmp eax, 0x4f
jle 0x406e6b
mov dword [esp + 0x18], 4
jmp 0x406e7b
xor ecx, ecx
cmp eax, 0x17
setg cl
lea ecx, [ecx + ecx + 1]
mov dword [esp + 0x18], ecx
push ebx
mov ebx, dword [edi + 4]
add ebx, ebp
mov ebp, dword [esp + 0x384]
push ebx
push ebp
mov dword [esp + 0x30], 0x9a308310
call fcn.004010c0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074c3
fld dword [esp + 0x30]
lea edx, [esp + 0x8c]
fsub qword [0x41f7a0]
push ebx
push edx
fstp dword [esp + 0x38]
call fcn.004010c0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074c3
lea eax, [ebx + ebx]
push eax
lea ecx, [esp + 0x44]
push ecx
call fcn.004010c0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074c3
mov ebx, dword [esp + 0x394]
cmp ebx, esi
je 0x406f17
cmp dword [ebx + 8], esi
je 0x406f17
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
jmp 0x406fe0
lea edx, [esp + 0x4c]
push 1
push edx
call fcn.00401440
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074ca
mov eax, dword [edi + 4]
shl eax, 6
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00402130
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074ca
mov edx, dword [esp + 0x28]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fld qword [esp + 0x58]
fld qword [esp + 0x58]
fadd qword [0x41f798]
fsubp st(1)
fsubp st(1)
call fcn.0040b1c0
mov dword [esp + 0x28], eax
fld qword [esp + 0x58]
fsub qword [0x41f358]
lea eax, [esp + 0x4c]
push edi
push eax
mov ecx, eax
fstp qword [esp + 0x60]
push ecx
call fcn.00406020
add esp, 0xc
mov dword [esp + 0x14], eax
cmp eax, esi
jne 0x4074ca
fld qword [0x423b28]
fld dword [esp + 0x18]
fsub dword [esp + 0x2c]
fsubp st(1)
fstp qword [0x423b28]
fld dword [esp + 0x18]
fadd qword [0x41f358]
fstp dword [esp + 0x18]
cmp ebx, esi
je 0x406fe0
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [ebx], edx
mov dword [ebx + 4], eax
mov dword [ebx + 8], ecx
mov esi, dword [esp + 0x388]
push edi
push esi
call fcn.004028f0
add esp, 8
test eax, eax
jl 0x407009
push edi
lea edx, [esp + 0x90]
push esi
push edx
call fcn.00406020
add esp, 0xc
jmp 0x40701a
lea eax, [esp + 0x8c]
push esi
push eax
call fcn.00402830
add esp, 8
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x40]
push ecx
push esi
push edi
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x9c]
push eax
call fcn.004037d0
lea ecx, [esp + 0x60]
push ecx
push ebp
call fcn.00402830
add esp, 0x1c
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4074ca
lea edx, [esp + 0x40]
push edx
push esi
push edi
push ebp
call fcn.00403920
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
add esp, 0x10
cmp ebp, 1
fadd dword [0x425df0]
fsub qword [0x41f790]
fadd qword [esp + 0x58]
fstp qword [esp + 0x58]
fld dword [0x425df0]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [0x425df0]
jle 0x4071fb
add dword [esp + 0x24], 0x76a65a65
dec ebp
mov ecx, ebp
mov esi, 1
shl esi, cl
or ecx, 0xffffffff
add dword [0x4246b8], ecx
mov dx, word [0x423ac0]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fadd qword [0x4249b0]
fadd dword [esp + 0x18]
mov edx, dword [0x4246b8]
add word [0x423ac0], cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fcompp
fnstsw ax
fadd qword [0x4249b0]
fstp qword [0x4249b0]
test ah, 0x41
jp 0x40711a
add dword [0x424718], ecx
mov ecx, dword [0x424718]
mov eax, 0xb4ebceac
sub eax, ecx
add dword [0x425ce4], eax
mov edx, dword [edi + 4]
inc edx
lea ebx, [esi + esi*2]
push edx
lea ebx, [esp + ebx*4 + 0x84]
push ebx
call fcn.004010c0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4074c3
lea eax, [esp + 0x8c]
push eax
push ebx
call fcn.00402830
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4074c3
test ebp, ebp
jle 0x40717a
nop
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x40]
push ecx
push edx
push edi
push ebx
push ebx
call fcn.004037d0
add esp, 0x14
sub ebp, 1
jne 0x407160
mov ecx, dword [esp + 0x1c]
mov ebp, 1
shl ebp, cl
lea ebx, [esi + 1]
cmp ebx, ebp
jge 0x4071fd
lea esi, [ebx + ebx*2]
lea esi, [esp + esi*4 + 0x80]
mov eax, dword [edi + 4]
inc eax
push eax
push esi
call fcn.004010c0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4074c3
fld dword [0x41f78c]
lea ecx, [esi - 0xc]
push ecx
fstp dword [0x42487c]
push esi
call fcn.00402830
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4074c3
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x40]
push edx
push eax
push edi
lea ecx, [esp + 0x98]
push ecx
push esi
call fcn.004037d0
inc ebx
add esp, 0x14
add esi, 0xc
cmp ebx, ebp
jl 0x407196
jmp 0x4071fd
fstp st(0)
mov edx, dword [esp + 0x38c]
fld dword [0x41f788]
mov eax, dword [edx + 4]
fstp dword [esp + 0x10]
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ebp
mov dword [esp + 0x2c], ebx
cmp dword [esp + 0x18], 0
jne 0x407257
mov eax, dword [esp + 0x24]
mov ecx, eax
dec eax
mov dword [esp + 0x24], eax
test ecx, ecx
je 0x4073c0
movzx edx, word [0x42471c]
add edx, 0x263e71b5
mov dword [esp + 0x18], 0x20
mov word [0x42471c], dx
fld dword [0x425c2c]
mov eax, dword [esp + 0x38c]
mov edx, dword [eax + 8]
fadd qword [0x41f358]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
mov esi, dword [edx + eax*4]
fstp dword [0x425c2c]
dec ecx
shr esi, cl
mov dword [esp + 0x18], ecx
mov cx, word [0x425be4]
movsx edx, cx
mov dword [esp + 0x34], edx
and esi, 1
fild dword [esp + 0x34]
fld dword [0x425c2c]
fadd qword [0x41f780]
fsubp st(1)
call fcn.0040b1c0
mov word [0x425be4], ax
test esi, esi
jne 0x4072c1
cmp dword [esp + 0x2c], esi
je 0x407221
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fld dword [0x4230e8]
fsubr qword [0x41f778]
fsub qword [0x41f770]
fsubp st(1)
call fcn.0040b1c0
mov dword [esp + 0x3c], eax
test esi, esi
jne 0x40733e
cmp dword [esp + 0x2c], 1
jne 0x40733e
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x384]
lea ecx, [esp + 0x40]
push ecx
push edx
push edi
push eax
push eax
call fcn.004037d0
mov ax, word [0x4246a8]
movsx ecx, ax
mov dword [esp + 0x48], ecx
add esp, 0x14
fild dword [esp + 0x34]
fld dword [esp + 0x10]
fadd qword [0x41f768]
fsubp st(1)
call fcn.0040b1c0
mov word [0x4246a8], ax
jmp 0x407221
mov eax, dword [esp + 0x1c]
inc ebp
mov ecx, eax
sub ecx, ebp
shl esi, cl
mov dword [esp + 0x2c], 2
or ebx, esi
cmp ebp, eax
jne 0x407221
mov esi, dword [esp + 0x20]
mov ebp, eax
test ebp, ebp
jle 0x40738d
jmp 0x407370
mov eax, dword [esp + 0x384]
lea edx, [esp + 0x40]
push edx
push esi
push edi
push eax
push eax
call fcn.004037d0
add esp, 0x14
sub ebp, 1
jne 0x407370
lea eax, [esp + 0x40]
push eax
mov eax, dword [esp + 0x388]
push esi
lea ecx, [ebx + ebx*2]
push edi
lea edx, [esp + ecx*4 + 0x8c]
push edx
push eax
call fcn.004037d0
add esp, 0x14
xor ebp, ebp
mov dword [esp + 0x2c], 1
xor ebx, ebx
jmp 0x407221
fld qword [0x425cf0]
call fcn.0040b1c0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
mov dword [0x425bf4], eax
mov eax, 1
rol eax, cl
mov dword [esp + 0x3c], eax
test ebp, ebp
jle 0x40747a
mov dword [esp + 0x10], ebp
nop
mov ebp, dword [esp + 0x384]
lea ecx, [esp + 0x40]
push ecx
push esi
push edi
push ebp
push ebp
call fcn.004037d0
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x48], edx
fild dword [esp + 0x48]
add esp, 0x14
fld qword [0x423ad0]
add ebx, ebx
fadd qword [0x425c50]
fsubp st(1)
call fcn.0040b1c0
mov dword [esp + 0x28], eax
fld qword [0x423ad0]
fld1
fadd st(1), st(0)
fxch st(1)
fstp qword [0x423ad0]
fadd qword [0x425c50]
mov esi, dword [esp + 0x20]
fstp qword [0x425c50]
test dword [esp + 0x3c], ebx
je 0x40746d
lea eax, [esp + 0x40]
push eax
push esi
push edi
lea ecx, [esp + 0x98]
push ecx
push ebp
call fcn.004037d0
add esp, 0x14
sub dword [esp + 0x10], 1
jne 0x4073f0
jmp 0x407481
mov ebp, dword [esp + 0x384]
fldz
mov eax, 1
mov dword [esp + 0x64], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
lea eax, [esp + 0x40]
push eax
push esi
push edi
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x74]
mov dword [esp + 0x44], 0
fstp qword [esp + 0x68]
push ebp
mov dword [esp + 0x90], edx
call fcn.004037d0
add esp, 0x14
mov ebx, dword [esp + 0x394]
mov esi, dword [esp + 0x1c]
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
mov edx, 1
mov ecx, esi
shl edx, cl
cmp eax, edx
jge 0x407506
lea esi, [eax + eax*2]
sub edx, eax
lea esi, [esp + esi*4 + 0x80]
mov edi, edx
push 0
push esi
call fcn.004031f0
add esp, 8
add esi, 0xc
sub edi, 1
jne 0x4074f3
test ebx, ebx
pop ebx
push 0
lea edx, [esp + 0x40]
lea eax, [esp + 0x8c]
je 0x40753e
push edx
push eax
call fcn.004031f0
fld dword [esp + 0x38]
fsub qword [0x41f760]
mov eax, dword [esp + 0x1c]
add esp, 0xc
pop edi
pop esi
fstp dword [esp + 0x24]
pop ebp
add esp, 0x370
ret
lea ecx, [esp + 0x4c]
push ecx
push edx
push eax
call fcn.004031f0
fld dword [esp + 0x3c]
fsub qword [0x41f760]
mov eax, dword [esp + 0x20]
add esp, 0x10
pop edi
pop esi
fstp dword [esp + 0x24]
pop ebp
add esp, 0x370
ret
pop edi
pop esi
mov eax, 0xfffffffc
pop ebp
add esp, 0x370
ret