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

Disassembly:
sub esp, 0x384
fldz
push ebx
fst dword [esp + 0x50]
push esi
push edi
xor edi, edi
mov dword [esp + 0x14], edi
fst dword [esp + 0x18]
xor eax, eax
mov word [esp + 0x40], ax
fstp dword [esp + 0x10]
fldz
xor ecx, ecx
fst qword [esp + 0x50]
xor edx, edx
mov word [esp + 0x24], cx
mov word [esp + 0x28], dx
fstp qword [esp + 0x6c]
mov ax, word [esp + 0x28]
movsx ecx, ax
cmp ecx, 0x92b03a1a
jg 0x40765a
mov edx, dword [0x4252b8]
add edx, dword [esp + 0x14]
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0x3a0]
xor eax, eax
mov word [esp + 0x10], ax
xor ecx, ecx
mov word [esp + 0x20], cx
fld dword [0x425320]
fsub qword [0x420408]
mov dword [esp + 0x74], edi
lea ecx, [esp + 0x84]
mov ebx, 1
fstp dword [0x425320]
movzx edx, word [esp + 0x10]
push ecx
add edx, 0x26d94e0
lea eax, [esp + 0x78]
mov dword [esp + 0x88], ebx
push esi
mov word [0x425648], dx
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], eax
call fcn.00401b60
add esp, 8
test eax, eax
jl 0x408271
mov edx, dword [esi + 8]
test byte [edx], bl
je 0x408271
lea eax, [esp + 0x34]
push esi
push eax
call fcn.00401480
mov cx, word [0x427840]
mov edx, dword [esp + 0x1c]
movsx eax, cx
sub eax, edx
sub eax, 0x169f0da5
mov dword [esp + 0x14], eax
or eax, 0xffffffff
push edi
fild dword [esp + 0x18]
lea ecx, [esp + 0x50]
fstp dword [esp + 0x1c]
add dword [esp + 0x20], eax
add word [0x427840], ax
lea eax, [esp + 0x68]
push eax
push ecx
call fcn.00402ac0
push 0x300
lea edx, [esp + 0xa8]
push edi
push edx
call fcn.0040be10
mov eax, dword [esp + 0x3bc]
push eax
call fcn.004021a0
add esp, 0x24
cmp eax, 0x29f
jle 0x407757
mov dword [esp + 0x1c], 6
jmp 0x407787
cmp eax, 0xef
jle 0x407768
mov dword [esp + 0x1c], 5
jmp 0x407787
cmp eax, 0x4f
jle 0x407777
mov dword [esp + 0x1c], 4
jmp 0x407787
xor ecx, ecx
cmp eax, 0x17
setg cl
lea ecx, [ecx + ecx + 1]
mov dword [esp + 0x1c], ecx
mov edi, dword [esi + 4]
push ebp
mov ebp, dword [esp + 0x398]
add edi, ebx
push edi
push ebp
call fcn.00402970
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
lea edx, [esp + 0xa0]
push edi
push edx
call fcn.00402970
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
lea eax, [edi + edi]
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.00402970
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
mov eax, dword [esp + 0x3a8]
test eax, eax
je 0x407807
cmp dword [eax + 8], ebx
je 0x407807
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], edx
jmp 0x4079d6
fldz
lea ecx, [esp + 0x48]
xor eax, eax
fstp qword [esp + 0x30]
push 1
push ecx
mov word [esp + 0x2c], ax
call fcn.00402970
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
lea eax, [edx*4]
push eax
push ebx
push ecx
call fcn.0040be10
mov edx, dword [esp + 0x5c]
add esp, 0xc
mov dword [edx], 1
mov dword [esp + 0x48], 1
test ebx, ebx
jne 0x4081ec
mov eax, dword [esi + 4]
shl eax, 6
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.00402f80
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
fld dword [0x4254f8]
fsubr qword [0x420970]
fld dword [esp + 0x1c]
fsubr qword [0x420968]
fld dword [0x426f9c]
faddp st(2)
fcompp
fnstsw ax
fld dword [0x4254f8]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [0x4254f8]
test ah, 0x41
jp 0x407921
fld dword [0x4252e0]
fsub st(1)
fstp dword [0x4252e0]
fld dword [0x426390]
fsubr qword [0x420960]
fsub dword [0x4252e0]
mov edx, dword [0x425580]
inc dword [0x425580]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fcompp
fnstsw ax
fsubr dword [0x426390]
fstp dword [0x426390]
test ah, 0x41
jp 0x407923
movzx eax, word [esp + 0x28]
mov ecx, dword [0x427370]
sub eax, ecx
sub eax, 0x1b89fe7c
mov word [0x4277f0], ax
dec dword [0x427370]
jmp 0x407923
fstp st(0)
lea edx, [esp + 0x48]
push esi
push edx
mov eax, edx
push eax
call fcn.004074c0
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x4081ec
fld dword [esp + 0x5c]
mov ecx, dword [0x4262b4]
mov eax, dword [esp + 0x3a8]
mov dword [esp + 0x10], ecx
fisub dword [esp + 0x10]
fstp dword [esp + 0x5c]
test eax, eax
je 0x407973
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov dword [eax], edx
mov edx, dword [esp + 0x50]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
fld qword [0x426f80]
fld1
fsub st(1), st(0)
fxch st(1)
fstp qword [0x426f80]
fld qword [0x426f80]
fsubr qword [0x420958]
fld qword [0x426368]
mov ax, word [esp + 0x2c]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsubp st(1)
fadd qword [0x420950]
fcompp
fnstsw ax
fsubr qword [0x426368]
fstp qword [0x426368]
test ah, 1
jne 0x4079d6
fld qword [0x426318]
fsub qword [0x420948]
fstp qword [0x426318]
mov edi, dword [esp + 0x39c]
push esi
push edi
call fcn.00401b60
add esp, 8
test eax, eax
jl 0x4079ff
push esi
lea edx, [esp + 0xa4]
push edi
push edx
call fcn.004074c0
add esp, 0xc
jmp 0x407a10
lea eax, [esp + 0xa0]
push edi
push eax
call fcn.00404010
add esp, 8
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x60]
push ecx
push edx
push esi
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0xb0]
push ecx
call fcn.00403420
mov dx, word [esp + 0x40]
movsx eax, dx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fadd qword [0x425550]
mov cx, word [0x427d48]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fmulp st(1)
call fcn.0040bcd0
mov word [0x427d48], ax
fld qword [0x425550]
fadd qword [0x420378]
lea eax, [esp + 0x5c]
push eax
push ebp
fstp qword [0x425550]
inc dword [esp + 0x48]
call fcn.00404010
mov ebx, eax
add esp, 0x1c
mov dword [esp + 0x40], ebx
test ebx, ebx
jne 0x4081ec
fld qword [0x426eb8]
mov edx, dword [esp + 0x38]
fsub qword [0x420940]
lea ecx, [esp + 0x60]
push ecx
push edx
push esi
fstp qword [0x426eb8]
push ebp
call fcn.00403e50
mov eax, dword [0x42738c]
sub eax, 0x669898e1
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
add esp, 0x10
fsub qword [esp + 0x54]
mov cx, word [esp + 0x28]
movsx edx, cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fsub dword [esp + 0x5c]
dec dword [0x42738c]
fucompp
fnstsw ax
test ah, 0x44
jp 0x407b25
inc word [0x427d50]
fld dword [0x4262dc]
fld dword [esp + 0x1c]
mov ax, word [0x427d50]
fsub qword [0x420938]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsubp st(1)
fsubp st(1)
fstp dword [0x4262dc]
cmp dword [esp + 0x20], 1
jle 0x407d03
mov ecx, dword [esp + 0x20]
mov edx, dword [esi + 4]
dec ecx
mov ebp, 1
shl ebp, cl
inc edx
push edx
mov dword [esp + 0x14], ecx
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x98]
push edi
call fcn.00402970
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x4081ec
lea eax, [esp + 0xa0]
push eax
push edi
call fcn.00404010
mov ebx, eax
add esp, 8
mov dword [esp + 0x40], ebx
test ebx, ebx
jne 0x4081ec
mov ebx, dword [esp + 0x10]
fld dword [0x420930]
fstp dword [esp + 0x14]
test ebx, ebx
jle 0x407bae
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x60]
push ecx
push edx
push esi
push edi
push edi
call fcn.00403420
add esp, 0x14
sub ebx, 1
jne 0x407b94
mov ecx, dword [esp + 0x20]
mov ebx, 1
shl ebx, cl
inc ebp
cmp ebp, ebx
jge 0x407c7a
lea edi, [ebp + ebp*2]
lea edi, [esp + edi*4 + 0x94]
lea ecx, [ecx]
mov eax, dword [esi + 4]
inc eax
push eax
push edi
call fcn.00402970
add esp, 8
mov dword [esp + 0x40], eax
test eax, eax
jne 0x4081e8
lea ecx, [edi - 0xc]
push ecx
push edi
call fcn.00404010
add esp, 8
mov dword [esp + 0x40], eax
test eax, eax
jne 0x4081e8
fld dword [esp + 0x1c]
lea eax, [esp + 0x60]
fsub qword [0x420378]
push eax
fstp dword [esp + 0x20]
dec dword [0x425460]
mov edx, dword [0x425460]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
lea edx, [esp + 0xa4]
fadd dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
push ecx
push esi
push edx
fstp qword [0x4254e8]
push edi
call fcn.00403420
fld qword [0x426eb8]
mov eax, dword [esp + 0x2c]
fadd qword [0x420928]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
add esp, 0x14
fmulp st(1)
call fcn.0040bcd0
inc ebp
add edi, 0xc
cmp ebp, ebx
mov dword [esp + 0x18], eax
jl 0x407bd0
fld dword [esp + 0x14]
fadd qword [esp + 0x54]
fld dword [0x426ef8]
fsub qword [0x420920]
fucompp
fnstsw ax
fld dword [0x426ef8]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [0x426ef8]
fld dword [esp + 0x14]
fadd st(1)
fstp dword [esp + 0x14]
test ah, 0x44
jp 0x407cef
mov cx, word [0x425548]
movsx edx, cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fadd qword [esp + 0x70]
mov ax, word [0x4273d4]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fsub qword [0x420918]
fild dword [esp + 0x10]
fmulp st(1)
call fcn.0040bcd0
mov word [0x4273d4], ax
jmp 0x407d05
mov dx, word [esp + 0x28]
movsx eax, dx
sub dword [0x427d44], eax
inc dword [esp + 0x28]
jmp 0x407d05
fld1
mov ecx, dword [esp + 0x3a0]
mov edx, dword [ecx + 4]
mov ebx, dword [esp + 0x398]
xor edi, edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x24], edi
xor ebp, ebp
mov dword [esp + 0x3c], edi
cmp dword [esp + 0x24], 0
jne 0x407dbd
dec dword [0x4272c4]
mov eax, dword [0x4272c4]
add eax, 0x3fb07ecc
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fld qword [0x4255a8]
fsub qword [esp + 0x70]
fsub qword [0x420910]
fucompp
fnstsw ax
fld qword [esp + 0x70]
fsub st(1)
fstp qword [esp + 0x70]
test ah, 0x44
jp 0x407da2
fld dword [esp + 0x14]
mov cx, word [esp + 0x28]
fsubr qword [0x420908]
movsx edx, cx
mov dword [esp + 0x24], edx
fsub qword [0x420900]
fild dword [esp + 0x24]
fmulp st(1)
call fcn.0040bcd0
mov word [esp + 0x28], ax
fld dword [esp + 0x14]
fsub st(1)
fstp dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, eax
dec eax
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x408022
mov dword [esp + 0x24], 0x20
fld dword [esp + 0x1c]
dec dword [esp + 0x24]
fsub st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fsub qword [0x426e98]
mov edx, dword [0x42556c]
mov dword [esp + 0x30], edx
fadd qword [0x4208f8]
fild dword [esp + 0x30]
fmulp st(1)
call fcn.0040bcd0
mov edx, dword [esp + 0x10]
mov dword [0x42556c], eax
mov eax, dword [esp + 0x3a0]
mov ecx, dword [eax + 8]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x24]
shr edx, cl
and edx, 1
jne 0x407f2a
test ebp, ebp
je 0x407d26
cmp ebp, 1
jne 0x407f2a
fld dword [0x4252e0]
mov ax, word [esp + 0x28]
mov edx, dword [esp + 0x18]
movsx ecx, ax
mov dword [esp + 0x30], ecx
fild dword [esp + 0x30]
mov dword [esp + 0x30], edx
faddp st(1)
fsub qword [0x4208f0]
fild dword [esp + 0x30]
faddp st(1)
call fcn.0040bcd0
mov dword [esp + 0x18], eax
fsubr dword [0x4252e0]
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0x60]
push eax
fstp dword [0x4252e0]
push ecx
push esi
push ebx
push ebx
call fcn.00403420
mov dx, word [0x426e94]
movsx eax, dx
sub eax, 0x26e9f7ef
mov dword [esp + 0x44], eax
add esp, 0x14
fild dword [esp + 0x30]
fld dword [0x4273bc]
fcompp
fnstsw ax
fld dword [0x4273bc]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [0x4273bc]
test ah, 1
jne 0x407d26
mov cx, word [0x426ea4]
movsx edx, cx
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
fsub dword [0x4272e0]
fsub dword [0x426388]
fld qword [0x425630]
fsubr qword [0x4208e8]
fucompp
fnstsw ax
fld qword [0x425630]
fadd st(1)
fstp qword [0x425630]
fld dword [0x426388]
fsub st(1)
fstp dword [0x426388]
inc word [0x426ea4]
test ah, 0x44
jnp 0x407d26
mov ax, word [0x4272e4]
movzx ecx, word [esp + 0x2c]
cwde
add ecx, eax
mov word [esp + 0x2c], cx
jmp 0x407d26
fld qword [0x425550]
mov eax, dword [esp + 0x18]
fsub qword [0x4208e0]
sub eax, 0x213b5211
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
inc edi
mov ebp, 2
fadd qword [esp + 0x54]
fld qword [esp + 0x54]
fsubp st(2)
fucompp
fnstsw ax
fld qword [esp + 0x54]
fsub st(1)
fstp qword [esp + 0x54]
fld qword [esp + 0x54]
fsub st(1)
fstp qword [esp + 0x54]
inc dword [esp + 0x18]
test ah, 0x44
jnp 0x407f99
dec word [0x4256a8]
mov cx, word [0x4256a8]
movsx eax, cx
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
fadd dword [esp + 0x1c]
fstp dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ecx, eax
sub ecx, edi
shl edx, cl
or dword [esp + 0x3c], edx
cmp edi, eax
jne 0x407d26
mov edi, dword [esp + 0x38]
fstp st(0)
test eax, eax
jle 0x407fd6
mov ebp, eax
jmp 0x407fc0
lea ecx, [esp + 0x60]
push ecx
push edi
push esi
push ebx
push ebx
call fcn.00403420
add esp, 0x14
sub ebp, 1
jne 0x407fc0
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x60]
push edx
push edi
lea eax, [eax + eax*2]
push esi
lea ecx, [esp + eax*4 + 0xa0]
push ecx
push ebx
call fcn.00403420
mov dx, word [esp + 0x58]
movsx eax, dx
mov ebp, 1
add dword [esp + 0x58], ebp
add esp, 0x14
cmp eax, 0x3100de72
jl 0x408019
fld qword [0x4208d8]
fstp qword [0x426f80]
fld1
xor edi, edi
jmp 0x407d22
mov ecx, dword [esp + 0x20]
mov eax, 1
rol eax, cl
mov dword [esp + 0x1c], eax
test edi, edi
jle 0x40819e
mov dword [esp + 0x10], edi
mov edi, ebx
mov ebx, dword [esp + 0x3c]
jmp 0x408052
fld1
mov ecx, dword [0x427374]
sub ecx, 0x4835d71e
cmp ecx, 0xa5968180
jle 0x40811e
fld dword [0x4262f0]
mov ecx, 1
fsub qword [0x425308]
mov dx, word [0x426e94]
movsx eax, dx
mov dword [esp + 0x30], eax
fsub qword [0x4208d0]
fild dword [esp + 0x30]
fsub dword [esp + 0x14]
fcompp
fnstsw ax
fld dword [esp + 0x14]
fadd st(1)
fstp dword [esp + 0x14]
add word [0x426e94], cx
fld qword [0x425308]
fsub st(1)
fstp qword [0x425308]
fld dword [0x4262f0]
fsub st(1)
fstp dword [0x4262f0]
test ah, 5
jp 0x408100
fld dword [0x4272e0]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x30], ecx
fild dword [esp + 0x30]
fld dword [esp + 0x5c]
fsubp st(2)
fld dword [esp + 0x14]
fsubp st(2)
fsubrp st(1)
call fcn.0040bcd0
mov dword [esp + 0x18], eax
fsubr dword [esp + 0x14]
fstp dword [esp + 0x14]
jmp 0x40814e
movzx edx, word [esp + 0x2c]
fstp st(0)
movzx eax, word [esp + 0x44]
sub eax, edx
sub eax, 0x5ea41fbe
mov word [esp + 0x44], ax
add dword [esp + 0x2c], ecx
jmp 0x40814e
fadd qword [esp + 0x54]
fstp qword [esp + 0x54]
fld qword [esp + 0x54]
fsubr qword [0x4208c8]
fcomp qword [0x4208c0]
fnstsw ax
test ah, 0x41
jne 0x40814e
movzx ecx, word [esp + 0x28]
mov edx, 0x2d55a936
sub edx, ecx
mov word [esp + 0x28], dx
mov ebp, dword [esp + 0x38]
lea eax, [esp + 0x60]
push eax
push ebp
push esi
push edi
push edi
call fcn.00403420
add ebx, ebx
add esp, 0x14
test dword [esp + 0x1c], ebx
je 0x408183
lea ecx, [esp + 0x60]
push ecx
push ebp
push esi
lea edx, [esp + 0xac]
push edx
push edi
call fcn.00403420
add esp, 0x14
sub dword [esp + 0x10], 1
fld dword [0x4208b8]
fstp dword [0x425320]
jne 0x408050
mov ebx, edi
jmp 0x4081a4
mov ebp, dword [esp + 0x38]
fstp st(0)
xor eax, eax
lea ecx, [esp + 0x60]
push ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x70], eax
push ebp
mov eax, 1
push esi
lea edx, [esp + 0x88]
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
push edx
lea eax, [esp + 0x7c]
push ebx
mov dword [esp + 0x98], eax
call fcn.00403420
add esp, 0x14
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x20]
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
mov edx, 1
mov ecx, esi
shl edx, cl
pop ebp
cmp eax, edx
jge 0x408229
lea esi, [eax + eax*2]
sub edx, eax
lea esi, [esp + esi*4 + 0x90]
mov edi, edx
push 0
push esi
call fcn.00401520
add esp, 8
add esi, 0xc
sub edi, 1
jne 0x408216
cmp dword [esp + 0x3a4], 0
push 0
lea eax, [esp + 0x60]
lea ecx, [esp + 0xa0]
je 0x408256
push eax
push ecx
call fcn.00401520
add esp, 0xc
pop edi
pop esi
mov eax, ebx
pop ebx
add esp, 0x384
ret
lea edx, [esp + 0x48]
push edx
push eax
push ecx
call fcn.00401520
add esp, 0x10
pop edi
pop esi
mov eax, ebx
pop ebx
add esp, 0x384
ret
pop edi
pop esi
mov eax, 0xfffffffc
pop ebx
add esp, 0x384
ret