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

Disassembly:
sub esp, 0x4f4
push ebx
push ebp
push esi
mov esi, eax
cmp dword [esi + 0x278], 0xffffffff
push edi
je 0x431d1d
mov ecx, dword [esi]
add ecx, 0x80918
call fcn.0046f4f8
mov ecx, eax
call fcn.004741a6
fstp dword [esp + 0x2c]
fldz
sub esp, 0xc
fstp dword [esp + 8]
lea eax, [esp + 0x8c]
fld dword [esp + 0x38]
fst dword [esp + 4]
fstp dword [esp]
push eax
call fcn.00480011
fldz
mov eax, dword [esi]
fst dword [esp + 0x8c]
mov ecx, dword [eax + 0x138d4]
fst dword [esp + 0x88]
mov edx, dword [eax + 0x138d8]
fst dword [esp + 0x84]
fst dword [esp + 0x80]
mov dword [esp + 0x20], ecx
mov ecx, dword [esi + 0x278]
fst dword [esp + 0x7c]
fst dword [esp + 0x78]
mov dword [esp + 0x24], edx
fst dword [esp + 0x74]
add esp, 0x10
sub ecx, 1
fst dword [esp + 0x60]
fst dword [esp + 0x5c]
fst dword [esp + 0x58]
fst dword [esp + 0x54]
fst dword [esp + 0x50]
fst dword [esp + 0x4c]
fst dword [esp + 0x48]
fst dword [esp + 0x44]
fst dword [esp + 0x40]
fst dword [esp + 0x18]
fstp dword [esp + 0x1c]
fild dword [esp + 0x10]
fstp dword [esp + 0x20]
fild dword [esp + 0x14]
fstp dword [esp + 0x24]
je 0x431aad
sub ecx, 1
je 0x4319c9
sub ecx, 1
jne 0x431d1d
mov eax, dword [esi + 0x280]
mov edx, dword [eax + 4]
lea edi, [esi + 0x280]
mov ecx, edi
call edx
mov ecx, eax
imul ecx, ecx, 0x96
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
shl eax, 0x18
push eax
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x38]
add ecx, 0x80918
mov dword [eax + 0xc], edx
call fcn.0046f4f8
push eax
call fcn.004f15be
mov eax, dword [edi]
mov edx, dword [eax + 4]
add esp, 0x18
mov ecx, edi
call edx
mov ebx, eax
mov eax, dword [edi]
mov edx, dword [eax + 4]
shl ebx, 0x18
mov ecx, edi
or ebx, 0xffffff
call edx
mov ecx, 0xff
sub ecx, eax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
lea ecx, [esp + 0xc0]
fmul qword [0x6cff78]
fdiv qword [0x6cfe68]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld qword [0x6cfda0]
fld st(0)
fsubrp st(2)
fdivp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x2c]
fld qword [0x6cff10]
fmul st(1)
fstp dword [esp + 0x18]
mov eax, dword [esp + 0x18]
fmul qword [0x6cfc60]
fstp dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
fld1
push edx
push eax
sub esp, 0xc
fst dword [esp + 8]
fld dword [esp + 0x24]
fstp dword [esp + 4]
fstp dword [esp]
push ecx
call fcn.00480176
fldz
fstp dword [esp + 0x14]
add esp, 0xc
fld dword [esp + 0x38]
fld qword [0x6cff70]
fmul st(1)
fstp dword [esp + 0x1c]
lea edx, [esp + 0x38c]
fld dword [esp + 0x1c]
fstp dword [esp + 4]
fmul qword [0x6cfbb8]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
push edx
call fcn.0047ffaa
add esp, 0x10
push eax
lea ecx, [esp + 0x44]
call fcn.0040a520
fldz
mov ebp, dword [esi + 4]
push ebx
sub esp, 8
fst dword [esp + 4]
lea eax, [esp + 0xcc]
fstp dword [esp]
push eax
lea ecx, [esp + 0x190]
push ecx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x418]
lea edi, [esi + 4]
push eax
lea ecx, [esp + 0x9c]
call fcn.0040f290
mov ecx, eax
call fcn.0040f290
mov edx, dword [ebp + 0x5c]
push eax
mov ecx, edi
call edx
fld dword [0x6cff68]
fstp dword [esp + 0x18]
mov eax, dword [esp + 0x18]
fld dword [0x6cff64]
mov dword [esp + 0x30], eax
fst dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
fld dword [0x6cff60]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x250]
fstp dword [esp + 0x18]
sub ecx, dword [esi + 0x24c]
mov edx, dword [esp + 0x18]
fstp dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edx
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
xor edi, edi
test ecx, ecx
jle 0x431d1d
fldz
sub esp, 0xc
fstp dword [esp + 8]
lea edx, [esp + 0x20c]
fld dword [esp + edi*8 + 0x40]
fld dword [esp + 0x38]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp + 4]
fmul dword [esp + edi*8 + 0x3c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
push edx
call fcn.0047ffaa
add esp, 0x10
push eax
lea ecx, [esp + 0x44]
call fcn.0040a520
fldz
push ebx
sub esp, 8
fst dword [esp + 4]
fstp dword [esp]
cmp dword [esi + 0x2a8], edi
jne 0x431956
lea eax, [esp + 0xcc]
push eax
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x298]
mov ebp, 3
push eax
jmp 0x431975
lea ecx, [esp + 0xcc]
push ecx
lea edx, [esp + 0x490]
push edx
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x318]
xor ebp, ebp
push ecx
lea ecx, [esp + 0x9c]
call fcn.0040f290
mov ecx, eax
call fcn.0040f290
push eax
push ebp
push edi
lea ecx, [esi + 0x268]
call fcn.004c3f68
mov ecx, dword [esi + 0x250]
sub ecx, dword [esi + 0x24c]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
cmp edi, eax
jl 0x4318d1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4f4
ret
mov edx, dword [esp + 0x18]
push 0x96000000
sub esp, 0x10
lea ecx, [eax + 0x80918]
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 0xc], edx
call fcn.0046f4f8
push eax
call fcn.004f15be
fldz
fstp dword [esp + 0x14]
add esp, 0xc
fld dword [esp + 0x38]
lea eax, [esp + 0x14c]
fld qword [0x6cff70]
fmul st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp + 4]
fmul qword [0x6cfbb8]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
push eax
call fcn.0047ffaa
add esp, 0x10
push eax
lea ecx, [esp + 0x44]
call fcn.0040a520
fldz
mov ebx, dword [esi + 4]
push 0xffffffffffffffff
sub esp, 8
fst dword [esp + 4]
lea ecx, [esp + 0x4c]
fstp dword [esp]
push ecx
lea edx, [esp + 0x1d0]
lea edi, [esi + 4]
push edx
lea ecx, [esp + 0x94]
call fcn.0040f290
push eax
mov eax, dword [ebx + 0x5c]
mov ecx, edi
call eax
lea ecx, [esp + 0x80]
push ecx
add esi, 0x234
push esi
call fcn.0044f5d0
lea edx, [esp + 0x80]
push edx
push esi
call fcn.0044f8a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4f4
ret
mov eax, dword [esi + 0x280]
mov edx, dword [eax + 4]
lea edi, [esi + 0x280]
mov ecx, edi
call edx
mov ecx, eax
imul ecx, ecx, 0x96
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
shl eax, 0x18
push eax
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x38]
add ecx, 0x80918
mov dword [eax + 0xc], edx
call fcn.0046f4f8
push eax
call fcn.004f15be
mov eax, dword [edi]
mov edx, dword [eax + 4]
add esp, 0x18
mov ecx, edi
call edx
mov ebx, eax
mov eax, dword [edi]
mov edx, dword [eax + 4]
shl ebx, 0x18
mov ecx, edi
or ebx, 0xffffff
call edx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fld qword [0x6cfda0]
lea edx, [esp + 0xc0]
fmul st(1), st(0)
fxch st(1)
fdiv qword [0x6cfe68]
fstp dword [esp + 0x10]
fdivr dword [esp + 0x10]
fstp dword [esp + 0x10]
fld dword [esp + 0x2c]
fld qword [0x6cff10]
fmul st(1)
fstp dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
fmul qword [0x6cfc60]
fstp dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
fld1
push eax
push ecx
sub esp, 0xc
fst dword [esp + 8]
fld dword [esp + 0x24]
fstp dword [esp + 4]
fstp dword [esp]
push edx
call fcn.00480176
fldz
fstp dword [esp + 0x14]
add esp, 0xc
fld dword [esp + 0x38]
fld qword [0x6cff70]
fmul st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp + 4]
fmul qword [0x6cfbb8]
fstp dword [esp + 0x1c]
lea eax, [esp + 0x24c]
fld dword [esp + 0x1c]
fstp dword [esp]
push eax
call fcn.0047ffaa
add esp, 0x10
push eax
lea ecx, [esp + 0x44]
call fcn.0040a520
fldz
mov ebp, dword [esi + 4]
push ebx
sub esp, 8
fst dword [esp + 4]
lea ecx, [esp + 0xcc]
fstp dword [esp]
push ecx
lea edx, [esp + 0x2d0]
push edx
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x358]
push ecx
lea edi, [esi + 4]
lea ecx, [esp + 0x9c]
call fcn.0040f290
mov ecx, eax
call fcn.0040f290
mov edx, dword [ebp + 0x5c]
push eax
mov ecx, edi
call edx
fld dword [0x6cff68]
fstp dword [esp + 0x18]
mov eax, dword [esp + 0x18]
fld dword [0x6cff64]
mov dword [esp + 0x30], eax
fst dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
fld dword [0x6cff60]
xor edi, edi
fstp dword [esp + 0x18]
mov edx, dword [esp + 0x18]
xor ebp, ebp
fstp dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
add esi, 0x268
mov edi, edi
fldz
sub esp, 0xc
fstp dword [esp + 8]
lea ecx, [esp + 0x3cc]
fld dword [esp + edi*8 + 0x40]
fld dword [esp + 0x38]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp + 4]
fmul dword [esp + edi*8 + 0x3c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
push ecx
call fcn.0047ffaa
add esp, 0x10
push eax
lea ecx, [esp + 0x44]
call fcn.0040a520
fldz
push ebx
sub esp, 8
fst dword [esp + 4]
lea edx, [esp + 0xcc]
fstp dword [esp]
push edx
lea eax, [esp + 0x450]
push eax
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x4d8]
push edx
lea ecx, [esp + 0x9c]
call fcn.0040f290
mov ecx, eax
call fcn.0040f290
push eax
push ebp
push edi
mov ecx, esi
call fcn.004c3f68
inc edi
cmp edi, 2
jl 0x431c80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x4f4
ret