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

Disassembly:
sub esp, 0x36c
fldz
push ebx
fst dword [esp + 0x24]
xor ebx, ebx
mov dword [esp + 0x34], ebx
fstp dword [esp + 4]
fldz
xor eax, eax
fst qword [esp + 0x54]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x38], ebx
mov word [esp + 0x1c], ax
fstp qword [esp + 0x4c]
mov word [esp + 0x5c], cx
mov word [esp + 0x10], dx
fld qword [esp + 0x4c]
fadd qword [0x41f818]
push ebp
push esi
fsub qword [0x41f810]
fmul dword [esp + 0x2c]
fstp dword [esp + 0x2c]
fld qword [esp + 0x54]
fsub qword [0x41f340]
fstp qword [esp + 0x54]
mov word [esp + 0x10], ax
mov dword [esp + 0x20], ebx
fld qword [0x424c98]
fsubr qword [0x41f428]
call fcn.0040b420
mov esi, dword [esp + 0x388]
lea edx, [esp + 0x6c]
push edx
mov ebp, 1
lea ecx, [esp + 0x6c]
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebp
mov dword [esp + 0x78], ebp
mov dword [esp + 0x7c], ecx
call fcn.00401890
add esp, 8
test eax, eax
jl 0x407971
mov eax, dword [esi + 8]
test byte [eax], 1
je 0x407971
lea ecx, [esp + 0x1c]
push esi
push ecx
call fcn.00402070
push ebx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x40]
push eax
call fcn.00402670
push 0x300
lea ecx, [esp + 0x90]
push ebx
push ecx
call fcn.0040b840
mov edx, dword [esp + 0x3a4]
push edx
call fcn.004027c0
movzx ecx, word [esp + 0x3c]
sub ecx, 0x497feaa
add esp, 0x24
cmp eax, 0x29f
mov word [esp + 0x18], cx
jle 0x407241
mov dword [esp + 0x14], 6
jmp 0x407271
cmp eax, 0xef
jle 0x407252
mov dword [esp + 0x14], 5
jmp 0x407271
cmp eax, 0x4f
jle 0x407261
mov dword [esp + 0x14], 4
jmp 0x407271
xor edx, edx
cmp eax, 0x17
setg dl
lea edx, [edx + edx + 1]
mov dword [esp + 0x14], edx
fld dword [esp + 0xc]
mov ax, word [0x423780]
fadd qword [0x41f808]
movsx ecx, ax
mov dword [esp + 0xc], ecx
push edi
mov edi, dword [esi + 4]
fild dword [esp + 0x10]
add edi, ebp
mov ebp, dword [esp + 0x380]
push edi
fsubp st(1)
push ebp
fstp dword [esp + 0x18]
call fcn.004016f0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, ebx
jne 0x4078da
lea edx, [esp + 0x88]
push edi
push edx
call fcn.004016f0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, ebx
jne 0x4078da
lea eax, [edi + edi]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.004016f0
add esp, 8
mov dword [esp + 0x14], eax
cmp eax, ebx
jne 0x4078da
fld dword [0x424bd8]
mov ebx, dword [esp + 0x390]
fmul qword [0x41f800]
fstp dword [0x424bd8]
test ebx, ebx
je 0x40732b
cmp dword [ebx + 8], 0
je 0x40732b
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
jmp 0x4073dc
lea eax, [esp + 0x34]
xor edx, edx
push 1
mov dword [esp + 0x30], 0
push eax
mov word [esp + 0x1c], dx
call fcn.004016f0
mov edi, eax
add esp, 8
test edi, edi
jne 0x40737b
mov ecx, dword [esp + 0x38]
lea edx, [ecx*4]
push edx
push eax
mov eax, dword [esp + 0x44]
push eax
call fcn.0040b840
mov ecx, dword [esp + 0x48]
mov dword [ecx], 1
add esp, 0xc
mov dword [esp + 0x34], 1
mov dword [esp + 0x14], edi
test edi, edi
jne 0x4078e1
mov edx, dword [esi + 4]
shl edx, 6
push edx
lea eax, [esp + 0x38]
push eax
call fcn.004042d0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078e1
lea ecx, [esp + 0x34]
push esi
push ecx
mov edx, ecx
push edx
call fcn.00407020
add esp, 0xc
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078e1
test ebx, ebx
je 0x4073dc
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
mov dword [ebx + 8], edx
mov edi, dword [esp + 0x384]
push esi
push edi
call fcn.00401890
add esp, 8
test eax, eax
jl 0x407405
push esi
lea eax, [esp + 0x8c]
push edi
push eax
call fcn.00407020
add esp, 0xc
jmp 0x407416
lea ecx, [esp + 0x88]
push edi
push ecx
call fcn.00402880
add esp, 8
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x4c]
push edx
push eax
push esi
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x98]
push edx
call fcn.004029c0
fld dword [0x423270]
mov ecx, dword [0x4230d0]
fsubr qword [0x41f7f8]
mov edx, dword [0x425d88]
mov eax, 0x87cfe854
sub eax, ecx
add edx, eax
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
add esp, 0x14
fucompp
fnstsw ax
fld dword [0x423270]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [0x423270]
test ah, 0x44
jnp 0x40749a
fadd qword [0x423180]
fstp qword [0x423180]
fld qword [0x423180]
fsub qword [0x41f7f0]
fstp dword [0x423370]
jmp 0x40749c
fstp st(0)
lea eax, [esp + 0x34]
push eax
push ebp
call fcn.00402880
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078e1
mov ebx, dword [esp + 0x20]
lea ecx, [esp + 0x4c]
push ecx
push ebx
push esi
push ebp
call fcn.00403bc0
mov ecx, dword [esp + 0x28]
add esp, 0x10
cmp ecx, 1
jle 0x4076b0
mov edx, dword [esi + 4]
dec ecx
mov ebp, 1
shl ebp, cl
inc edx
push edx
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x80]
push edi
call fcn.004016f0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078da
lea eax, [esp + 0x88]
push eax
push edi
call fcn.00402880
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078da
mov eax, dword [esp + 0x18]
dec eax
test eax, eax
jle 0x407548
mov dword [esp + 0x10], eax
mov edi, edi
lea ecx, [esp + 0x4c]
push ecx
push ebx
push esi
push edi
push edi
call fcn.004029c0
add esp, 0x14
sub dword [esp + 0x10], 1
jne 0x407530
mov ecx, dword [esp + 0x18]
mov eax, 1
shl eax, cl
inc ebp
cmp ebp, eax
mov dword [esp + 0x24], eax
jge 0x4076b0
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x7c]
jmp 0x407570
fld qword [esp + 0x60]
or ecx, 0xffffffff
fld1
fadd st(1), st(0)
fxch st(1)
fstp qword [esp + 0x60]
add word [0x424bd4], cx
mov dx, word [0x424bd4]
movsx eax, dx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fld qword [esp + 0x60]
fld qword [esp + 0x60]
mov edx, dword [esp + 0x44]
faddp st(2)
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fsubp st(2)
fcompp
fnstsw ax
fld qword [esp + 0x60]
fadd st(1)
fstp qword [esp + 0x60]
test ah, 0x41
jne 0x4075ee
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fadd qword [0x4231f8]
call fcn.0040b420
mov dword [esp + 0x40], eax
fsubr qword [0x4231f8]
fstp qword [0x4231f8]
jmp 0x407653
add word [0x4233dc], cx
fstp st(0)
movzx edx, word [0x4233dc]
movsx eax, dx
movzx edx, word [esp + 0x28]
movsx edx, dx
add edx, eax
add edx, dword [esp + 0x40]
cmp edx, 0xdb5edc02
jge 0x407624
mov eax, 0xffffb5c5
mov word [0x4231b4], ax
jmp 0x407653
movzx edx, word [0x423298]
movsx eax, dx
movzx edx, word [esp + 0x1c]
movsx edx, dx
add edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmul dword [0x4244d0]
fstp dword [0x4244d0]
add word [0x423298], cx
mov eax, dword [esi + 4]
inc eax
push eax
push edi
call fcn.004016f0
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078da
lea ecx, [edi - 0xc]
push ecx
push edi
call fcn.00402880
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4078da
mov ebx, dword [esp + 0x20]
lea edx, [esp + 0x4c]
push edx
push ebx
push esi
lea eax, [esp + 0x94]
push eax
push edi
call fcn.004029c0
inc ebp
add esp, 0x14
add edi, 0xc
cmp ebp, dword [esp + 0x24]
jl 0x407570
mov ecx, dword [esp + 0x388]
mov edx, dword [ecx + 4]
xor ebp, ebp
xor edi, edi
mov dword [esp + 0x24], edx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x10], edi
lea ebx, [ebx]
cmp dword [esp + 0x48], 0
jne 0x40772d
mov eax, dword [esp + 0x24]
mov ecx, eax
dec eax
mov dword [esp + 0x24], eax
test ecx, ecx
je 0x407820
fld dword [0x423220]
mov dword [esp + 0x48], 0x20
fsubr qword [0x41f7e8]
fld qword [esp + 0x60]
fsub qword [esp + 0x58]
fsub qword [0x41f7e0]
fld qword [esp + 0x58]
faddp st(2)
fcompp
fnstsw ax
test ah, 5
jp 0x407729
fld dword [esp + 0x30]
fsub qword [0x41f7d8]
fstp dword [esp + 0x30]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x388]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x24]
mov eax, dword [eax + edx*4]
dec ecx
shr eax, cl
mov dword [esp + 0x48], ecx
and eax, 1
jne 0x40777c
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x4076d0
cmp ecx, 1
jne 0x40777c
lea eax, [esp + 0x4c]
push eax
mov eax, dword [esp + 0x384]
push ebx
push esi
push eax
push eax
call fcn.004029c0
add esp, 0x14
jmp 0x4076d0
mov edx, dword [esp + 0x18]
inc edi
mov ecx, edx
sub ecx, edi
shl eax, cl
mov dword [esp + 0x10], 2
or ebp, eax
cmp edi, edx
jne 0x4076d0
mov edi, edx
test edi, edi
jle 0x4077bd
nop
mov eax, dword [esp + 0x380]
lea ecx, [esp + 0x4c]
push ecx
push ebx
push esi
push eax
push eax
call fcn.004029c0
add esp, 0x14
sub edi, 1
jne 0x4077a0
lea edx, [esp + 0x4c]
push edx
mov edx, dword [esp + 0x384]
push ebx
lea eax, [ebp + ebp*2]
push esi
lea ecx, [esp + eax*4 + 0x88]
push ecx
push edx
call fcn.004029c0
fld qword [esp + 0x6c]
mov cx, word [esp + 0x7c]
movsx edx, cx
mov ecx, dword [esp + 0x58]
sub edx, ecx
mov dword [esp + 0x40], edx
mov eax, 1
add esp, 0x14
fild dword [esp + 0x2c]
xor edi, edi
mov dword [esp + 0x10], eax
fsub qword [0x423168]
fsubp st(1)
fstp qword [esp + 0x58]
add dword [esp + 0x44], eax
mov ebx, dword [esp + 0x20]
xor ebp, ebp
jmp 0x4076d0
movzx edx, word [esp + 0x28]
movzx eax, word [esp + 0x28]
movzx ecx, word [esp + 0x1c]
sub edx, eax
lea edx, [edx + ecx - 0x76591558]
mov ecx, dword [esp + 0x18]
mov word [esp + 0x28], dx
inc dword [esp + 0x28]
mov ebx, 1
rol ebx, cl
test edi, edi
jle 0x4078bf
mov dword [esp + 0x10], edi
jmp 0x407860
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x380]
lea eax, [esp + 0x4c]
push eax
push ecx
push esi
push edi
push edi
call fcn.004029c0
mov edx, dword [esp + 0x54]
mov dword [esp + 0x40], edx
fild dword [esp + 0x40]
add ebp, ebp
add esp, 0x14
fadd dword [0x425d8c]
fstp dword [0x425d8c]
test ebp, ebx
je 0x4078b6
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
push ecx
push esi
lea edx, [esp + 0x94]
push edx
push edi
call fcn.004029c0
add esp, 0x14
sub dword [esp + 0x10], 1
jne 0x407860
jmp 0x4078c6
mov edi, dword [esp + 0x380]
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
push ecx
push esi
push edi
call fcn.00403bc0
add esp, 0x10
mov ebx, dword [esp + 0x390]
mov esi, dword [esp + 0x18]
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
mov edx, 1
mov ecx, esi
shl edx, cl
cmp eax, edx
jge 0x40791a
lea esi, [eax + eax*2]
sub edx, eax
lea esi, [esp + esi*4 + 0x7c]
mov edi, edx
push 0
push esi
call fcn.004022f0
add esp, 8
add esi, 0xc
sub edi, 1
jne 0x407907
pop edi
push 0
lea edx, [esp + 0x4c]
lea eax, [esp + 0x88]
test ebx, ebx
je 0x407938
push edx
push eax
call fcn.004022f0
add esp, 0xc
jmp 0x407947
lea ecx, [esp + 0x34]
push ecx
push edx
push eax
call fcn.004022f0
add esp, 0x10
fld dword [esp + 0x2c]
mov ecx, dword [0x423104]
mov eax, dword [esp + 0x10]
add ecx, 0x24955b9f
mov dword [esp + 0x28], ecx
fisub dword [esp + 0x28]
pop esi
pop ebp
pop ebx
fstp dword [esp + 0x20]
add esp, 0x36c
ret
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x36c
ret