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

Disassembly:
sub esp, 0x370
fldz
xor eax, eax
fst dword [esp + 0x14]
push ebx
fldz
mov word [esp + 4], ax
xor ecx, ecx
mov word [esp + 0x2c], cx
push ebp
xor edx, edx
mov word [esp + 0x34], dx
xor ebp, ebp
mov dword [esp + 0x14], ebp
fstp qword [esp + 0x58]
mov dword [esp + 0x2c], ebp
fst dword [esp + 0x28]
push esi
mov esi, dword [esp + 0x38c]
fst dword [esp + 0x28]
mov ax, word [0x423544]
mov edx, dword [0x424e6c]
movsx ecx, ax
mov eax, 0x19c5dbf1
sub eax, ecx
add eax, edx
add dword [esp + 0x30], eax
lea ecx, [esp + 0x64]
push ecx
mov ebx, 1
lea eax, [esp + 0x58]
mov dword [esp + 0x14], ebp
push esi
fstp dword [esp + 0x5c]
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], eax
call fcn.00401830
add esp, 8
test eax, eax
jl 0x40752e
mov edx, dword [esi + 8]
test byte [edx], bl
je 0x40752e
push edi
lea eax, [esp + 0x28]
push esi
push eax
call fcn.00401230
push ebp
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004019d0
fld dword [esp + 0x44]
mov ax, word [0x42549c]
movsx ecx, ax
sub ecx, 0x190c7b64
mov dword [esp + 0x28], ecx
push 0x300
lea edx, [esp + 0x98]
fisub dword [esp + 0x2c]
push ebp
push edx
fstp dword [esp + 0x50]
add word [0x42549c], bx
call fcn.0040b4b0
mov eax, dword [esp + 0x3ac]
push eax
call fcn.004010c0
or ecx, 0xffffffff
add dword [esp + 0x34], ecx
fld dword [0x424e78]
mov dx, word [esp + 0x5c]
mov di, word [esp + 0x34]
movsx edx, dx
movsx edi, di
sub edx, edi
mov dword [esp + 0x38], edx
add esp, 0x24
fisub dword [esp + 0x14]
fstp dword [0x424e78]
add dword [esp + 0x38], ecx
cmp eax, 0x29f
jle 0x406dd8
mov dword [esp + 0x20], 6
jmp 0x406e08
cmp eax, 0xef
jle 0x406de9
mov dword [esp + 0x20], 5
jmp 0x406e08
cmp eax, 0x4f
jle 0x406df8
mov dword [esp + 0x20], 4
jmp 0x406e08
xor ecx, ecx
cmp eax, 0x17
setg cl
lea ecx, [ecx + ecx + 1]
mov dword [esp + 0x20], ecx
mov edi, dword [esi + 4]
add edi, ebx
mov ebx, dword [esp + 0x384]
push edi
push ebx
call fcn.00401f80
add esp, 8
mov dword [esp + 0x18], eax
cmp eax, ebp
jne 0x4074a4
lea edx, [esp + 0x8c]
push edi
push edx
call fcn.00401f80
add esp, 8
mov dword [esp + 0x18], eax
cmp eax, ebp
jne 0x4074a4
lea eax, [edi + edi]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00401f80
add esp, 8
mov dword [esp + 0x18], eax
cmp eax, ebp
jne 0x4074a4
mov ebp, dword [esp + 0x394]
test ebp, ebp
je 0x406e8c
cmp dword [ebp + 8], 0
je 0x406e8c
mov edx, dword [ebp]
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ecx
jmp 0x406efd
lea edx, [esp + 0x40]
push 1
push edx
call fcn.004020c0
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074ab
mov eax, dword [esi + 4]
shl eax, 6
push eax
lea ecx, [esp + 0x44]
push ecx
call fcn.004023b0
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074ab
lea edx, [esp + 0x40]
push esi
push edx
mov eax, edx
push eax
call fcn.00406ba0
add esp, 0xc
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074ab
test ebp, ebp
je 0x406efd
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
mov dword [ebp], ecx
mov dword [ebp + 4], edx
mov dword [ebp + 8], eax
mov edi, dword [esp + 0x388]
push esi
push edi
call fcn.00401830
add esp, 8
test eax, eax
jl 0x406f26
push esi
lea ecx, [esp + 0x90]
push edi
push ecx
call fcn.00406ba0
add esp, 0xc
jmp 0x406f37
lea edx, [esp + 0x8c]
push edi
push edx
call fcn.00402c10
add esp, 8
mov edi, dword [esp + 0x28]
lea eax, [esp + 0x4c]
push eax
push edi
push esi
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x9c]
push edx
call fcn.004035c0
lea eax, [esp + 0x54]
push eax
push ebx
call fcn.00402c10
add esp, 0x1c
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074ab
lea ecx, [esp + 0x4c]
push ecx
push edi
push esi
push ebx
call fcn.00404ad0
fld1
mov ebx, dword [esp + 0x30]
add esp, 0x10
cmp ebx, 1
jle 0x4070c6
mov edx, dword [esi + 4]
fstp st(0)
dec ebx
mov ecx, ebx
mov ebp, 1
shl ebp, cl
inc edx
push edx
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x84]
push edi
call fcn.00401f80
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074a4
lea eax, [esp + 0x8c]
push eax
push edi
call fcn.00402c10
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074a4
test ebx, ebx
jle 0x406ffa
nop
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x4c]
push ecx
push edx
push esi
push edi
push edi
call fcn.004035c0
add esp, 0x14
sub ebx, 1
jne 0x406fe0
mov ecx, dword [esp + 0x20]
mov ebx, 1
shl ebx, cl
inc ebp
cmp ebp, ebx
jge 0x4070ba
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x80]
lea esp, [esp]
mov eax, dword [esp + 0x1c]
mov cx, word [esp + 0x3c]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
movsx edx, cx
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fsub dword [esp + 0x24]
fsub qword [0x41f740]
fsubp st(1)
call fcn.0040aea0
mov dword [esp + 0x1c], eax
fld dword [esp + 0x24]
mov eax, dword [esi + 4]
fsub qword [0x41f348]
inc eax
push eax
push edi
fstp dword [esp + 0x2c]
call fcn.00401f80
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074a4
lea ecx, [edi - 0xc]
push ecx
push edi
call fcn.00402c10
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4074a4
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x4c]
push edx
push eax
push esi
lea ecx, [esp + 0x98]
push ecx
push edi
call fcn.004035c0
inc ebp
add esp, 0x14
add edi, 0xc
cmp ebp, ebx
jl 0x407020
fld dword [esp + 0x2c]
fstp dword [0x423200]
fld1
mov edx, dword [esp + 0x38c]
mov eax, dword [edx + 4]
inc word [0x4230d4]
fld dword [0x425118]
mov cx, word [0x4230d4]
movsx edx, cx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fsubp st(1)
fild dword [esp + 0x10]
fmulp st(1)
call fcn.0040aea0
mov dword [esp + 0x34], eax
fld dword [0x425118]
fadd st(1)
xor ebx, ebx
mov dword [esp + 0x24], ebx
fstp dword [0x425118]
fld dword [esp + 0x2c]
fmul qword [0x41f738]
fstp dword [esp + 0x2c]
xor edi, edi
xor ebp, ebp
add dword [0x4242a8], 0x2e1064b8
cmp dword [esp + 0x24], 0
jne 0x4071f4
mov ecx, dword [esp + 0x14]
mov edx, ecx
mov eax, 1
sub ecx, eax
mov dword [esp + 0x14], ecx
test edx, edx
je 0x4073ec
add dword [esp + 0x3c], eax
mov ax, word [0x42355c]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fld qword [esp + 0x60]
fsubr qword [0x41f730]
fld dword [esp + 0x2c]
mov dx, word [esp + 0x3c]
dec word [0x42355c]
faddp st(2)
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fsubp st(2)
fucompp
fnstsw ax
fld qword [esp + 0x60]
fadd st(1)
fstp qword [esp + 0x60]
test ah, 0x44
jp 0x4071cb
fld dword [0x4231d8]
mov ecx, dword [0x424fb4]
mov dword [esp + 0x10], ecx
fisub dword [esp + 0x10]
fstp dword [0x4231d8]
fld dword [esp + 0x30]
mov edx, dword [esp + 0x34]
fsubr qword [0x41f728]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
mov dword [esp + 0x24], 0x20
fmulp st(1)
call fcn.0040aea0
mov dword [esp + 0x34], eax
fld dword [0x4230fc]
mov eax, dword [esp + 0x34]
mov edx, 0x95bdaaa0
sub edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
mov ecx, 1
fld dword [esp + 0x2c]
sub dword [esp + 0x24], ecx
fsubp st(2)
fcompp
fnstsw ax
fld dword [esp + 0x2c]
fsub st(1)
fstp dword [esp + 0x2c]
fld dword [0x4230fc]
fsub st(1)
fstp dword [0x4230fc]
test cl, ah
jne 0x407262
mov ax, word [0x4231b8]
mov edx, dword [esp + 0x1c]
cwde
add edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fstp dword [0x425080]
dec dword [esp + 0x1c]
add word [0x4231b8], cx
mov eax, dword [esp + 0x38c]
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x14]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x24]
shr edx, cl
and edx, 1
jne 0x40732e
test ebx, ebx
je 0x407132
cmp ebx, 1
jne 0x40732e
mov ecx, dword [esp + 0x28]
fstp st(0)
lea eax, [esp + 0x4c]
push eax
mov eax, dword [esp + 0x388]
push ecx
push esi
push eax
push eax
call fcn.004035c0
fld dword [0x4250ac]
fsub qword [0x41f720]
add esp, 0x14
fadd qword [0x41f718]
fld dword [esp + 0x30]
fadd qword [0x41f710]
fcompp
fnstsw ax
fld dword [0x4250ac]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [0x4250ac]
test ah, 5
jp 0x407132
inc word [0x423130]
fld dword [esp + 0x30]
fadd st(1)
fstp dword [esp + 0x30]
fld dword [0x4231cc]
fld dword [esp + 0x30]
mov dx, word [0x423130]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
faddp st(1)
fsub qword [0x41f708]
fsubp st(1)
fstp dword [0x4231cc]
jmp 0x407132
inc dword [esp + 0x1c]
mov cx, word [0x4232d8]
movsx ecx, cx
mov eax, 0x9e11ff3e
sub eax, ecx
mov ecx, dword [esp + 0x1c]
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
inc edi
fild dword [esp + 0x10]
mov ecx, eax
sub ecx, edi
shl edx, cl
fadd qword [0x4231a0]
mov ebx, 2
fstp qword [0x4231a0]
or ebp, edx
mov edx, dword [0x423604]
add edx, dword [0x423104]
mov word [esp + 0x10], dx
inc dword [0x423104]
cmp edi, eax
jne 0x407132
mov edi, dword [esp + 0x28]
fstp st(0)
mov ebx, eax
test ebx, ebx
jle 0x4073bd
lea ebx, [ebx]
lea eax, [esp + 0x4c]
push eax
mov eax, dword [esp + 0x388]
push edi
push esi
push eax
push eax
call fcn.004035c0
add esp, 0x14
sub ebx, 1
jne 0x4073a0
lea ecx, [esp + 0x4c]
push ecx
mov ecx, dword [esp + 0x388]
push edi
lea edx, [ebp + ebp*2]
push esi
lea eax, [esp + edx*4 + 0x8c]
push eax
push ecx
call fcn.004035c0
fld1
add esp, 0x14
mov ebx, 1
jmp 0x40712e
movzx edx, word [esp + 0x38]
fstp st(0)
mov ecx, dword [esp + 0x20]
add edx, 0x62323bc5
mov ebx, eax
rol ebx, cl
mov word [esp + 0x38], dx
test edi, edi
jle 0x40745c
mov dword [esp + 0x14], edi
mov edi, edi
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x384]
lea eax, [esp + 0x4c]
push eax
push ecx
push esi
push edi
push edi
call fcn.004035c0
add ebp, ebp
add esp, 0x14
test ebp, ebx
je 0x40744e
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x4c]
push edx
push eax
push esi
lea ecx, [esp + 0x98]
push ecx
push edi
call fcn.004035c0
add esp, 0x14
sub dword [esp + 0x14], 1
jne 0x407410
mov eax, 1
jmp 0x407463
mov edi, dword [esp + 0x384]
xor edx, edx
mov word [esp + 0x1c], dx
xor ecx, ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
lea eax, [esp + 0x4c]
push eax
mov word [esp + 0x20], cx
mov ecx, dword [esp + 0x2c]
push ecx
lea edx, [esp + 0x64]
mov dword [esp + 0x84], edx
push esi
lea edx, [esp + 0x80]
push edx
push edi
call fcn.004035c0
add esp, 0x14
mov ebp, dword [esp + 0x394]
mov esi, dword [esp + 0x20]
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
mov edx, 1
mov ecx, esi
shl edx, cl
cmp eax, edx
jge 0x4074e7
lea esi, [eax + eax*2]
sub edx, eax
lea esi, [esp + esi*4 + 0x80]
mov edi, edx
push 0
push esi
call fcn.004026f0
add esp, 8
add esi, 0xc
sub edi, 1
jne 0x4074d4
pop edi
push 0
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x8c]
test ebp, ebp
je 0x407511
push eax
push ecx
call fcn.004026f0
mov eax, dword [esp + 0x20]
add esp, 0xc
pop esi
pop ebp
pop ebx
add esp, 0x370
ret
lea edx, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004026f0
mov eax, dword [esp + 0x24]
add esp, 0x10
pop esi
pop ebp
pop ebx
add esp, 0x370
ret
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x370
ret