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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x178
push ebx
push ebp
push esi
push edi
mov ebx, ecx
call fcn.005c2ae0
test eax, eax
je 0x5c3aa9
mov edi, dword [ebx + 0x68]
xor ebp, ebp
mov ecx, edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebp
call fcn.005ba110
test eax, eax
jbe 0x5c3aa9
mov dword [esp + 0x34], ebp
nop
mov ecx, dword [ebx + 0x60]
sub ecx, dword [ebx + 0x5c]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x5c31a2
call fcn.006111cc
mov esi, dword [ebx + 0x5c]
add esi, dword [esp + 0x34]
lea ecx, [ebx + 0x2c]
mov dword [esp + 0x18], esi
call fcn.005ce9b0
movzx ecx, al
push ecx
mov ecx, esi
call fcn.005cea10
test eax, eax
je 0x5c3a90
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.005ba210
fldz
sub eax, 1
fst dword [esp + 0xa8]
fst dword [esp + 0xa4]
fst dword [esp + 0xa0]
fst dword [esp + 0x9c]
fst dword [esp + 0x94]
fst dword [esp + 0x90]
fst dword [esp + 0x8c]
fst dword [esp + 0x88]
fst dword [esp + 0x80]
fst dword [esp + 0x7c]
fst dword [esp + 0x78]
fst dword [esp + 0x74]
fld1
fst dword [esp + 0xac]
fst dword [esp + 0x98]
fst dword [esp + 0x84]
fst dword [esp + 0x70]
je 0x5c341b
sub eax, 1
je 0x5c3360
sub eax, 1
fstp st(1)
fstp st(0)
jne 0x5c3474
fld dword [ebx + 0xc]
lea edx, [esp + 0x38]
push edx
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp]
call fcn.005cbf40
fld dword [ebx + 0xc]
mov ecx, dword [0x70d110]
fstp qword [esp + 0x28]
lea eax, [esp + 0x108]
push eax
call fcn.00585130
fsubr qword [esp + 0x2c]
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp dword [esp]
call fcn.005cbf40
fld dword [esp + 0x38]
fsub dword [esp + 0x108]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fsub dword [esp + 0x10c]
fstp dword [esp + 0x3c]
fld dword [esp + 0x40]
fsub dword [esp + 0x110]
fstp dword [esp + 0x40]
fld dword [esp + 0x3c]
fld dword [esp + 0x38]
fld dword [esp + 0x40]
fld st(2)
fmulp st(3)
fld st(1)
fmulp st(2)
fxch st(2)
faddp st(1)
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
fcomp dword [0x688a1c]
fnstsw ax
test ah, 0x41
jne 0x5c3474
lea ecx, [esp + 0x38]
push ecx
mov edx, ecx
push edx
call fcn.005d7faf
fldz
fst dword [esp + 0xfc]
lea eax, [esp + 0x38]
fld dword [0x673380]
push eax
lea ecx, [esp + 0x100]
fstp dword [esp + 0x104]
push ecx
lea edx, [esp + 0x138]
push edx
fstp dword [esp + 0x110]
call fcn.0054b9c0
add esp, 0xc
lea eax, [esp + 0x130]
push eax
lea ecx, [esp + 0x74]
push ecx
call fcn.005d958f
jmp 0x5c3474
fxch st(1)
fst dword [esp + 0xf0]
fst dword [esp + 0xec]
fst dword [esp + 0xe8]
fst dword [esp + 0xe4]
fst dword [esp + 0xdc]
fst dword [esp + 0xd8]
fst dword [esp + 0xd4]
fst dword [esp + 0xd0]
fst dword [esp + 0xc8]
fst dword [esp + 0xc4]
fst dword [esp + 0xc0]
fstp dword [esp + 0xbc]
fst dword [esp + 0xf4]
fst dword [esp + 0xe0]
fst dword [esp + 0xcc]
fstp dword [esp + 0xb8]
call fcn.00558920
push eax
push 0
lea edx, [esp + 0xc0]
push edx
call fcn.005d8dd6
fld dword [esp + 0xb8]
fstp dword [esp + 0x70]
fld dword [esp + 0xbc]
fstp dword [esp + 0x74]
fld dword [esp + 0xc8]
fstp dword [esp + 0x80]
fld dword [esp + 0xcc]
fstp dword [esp + 0x84]
jmp 0x5c3474
fstp st(1)
push ecx
fstp st(0)
lea eax, [esp + 0xbc]
fld dword [0x678fd4]
fstp dword [esp]
push eax
call fcn.005d92a5
call fcn.00558920
push eax
push 0
lea ecx, [esp + 0x78]
push ecx
call fcn.005d8dd6
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0xbc]
push eax
lea ecx, [esp + 0x150]
push ecx
call fcn.005d88ca
mov ecx, 0x10
lea esi, [esp + 0x148]
lea edi, [esp + 0x70]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.005ba260
test eax, eax
jne 0x5c3486
push eax
push 0x1b
jmp 0x5c34be
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.005ba2b0
mov ecx, dword [ebx + 0x24]
push ebp
movzx esi, al
call fcn.005ba300
mov ecx, dword [0x70a5c0]
push 1
push 0x1b
movzx edi, al
call fcn.005532b0
mov ecx, dword [0x70a5c0]
push esi
push 0x13
call fcn.005532b0
push edi
push 0x14
mov ecx, dword [0x70a5c0]
call fcn.005532b0
fld dword [ebx + 0xc]
lea edx, [esp + 0x114]
push edx
push ecx
mov ecx, dword [ebx + 0x24]
fstp dword [esp]
call fcn.005cbf40
fld dword [esp + 0x114]
mov eax, dword [ebx + 4]
fstp dword [esp + 0xa0]
fld dword [esp + 0x118]
push eax
lea ecx, [esp + 0x74]
fstp dword [esp + 0xa8]
fld dword [esp + 0x120]
push ecx
lea edx, [esp + 0x150]
fstp dword [esp + 0xb0]
push edx
call fcn.005d88ca
lea eax, [esp + 0x70]
mov ecx, 0x10
lea esi, [esp + 0x148]
lea edi, [esp + 0x70]
push eax
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x70a5c0]
push 0x100
call fcn.00553ac0
lea ecx, [esp + 0x27]
fld1
push ecx
mov ecx, dword [ebx + 0x24]
fst dword [esp + 0x60]
fst dword [esp + 0x64]
push ebp
fst dword [esp + 0x6c]
fstp dword [esp + 0x70]
call fcn.005ba350
test eax, eax
je 0x5c3580
movzx edx, byte [esp + 0x27]
mov ecx, dword [0x70a5c0]
push edx
push 1
push 0
call fcn.00553330
mov ecx, dword [ebx + 0x24]
lea eax, [esp + 0x5c]
push eax
push ebp
call fcn.005ba3b0
fld1
lea ecx, [esp + 0x6c]
fstp dword [esp + 0x10]
push ecx
mov ecx, dword [ebx + 0x24]
push ebp
call fcn.005ba420
test eax, eax
je 0x5c37b4
mov esi, dword [esp + 0x6c]
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], ecx
sub ecx, eax
test ecx, 0xfffffff8
je 0x5c37b4
fld dword [ebx + 0xc]
fstp dword [esp + 0x10]
cmp eax, dword [esp + 0x28]
jbe 0x5c35d8
call fcn.006111cc
mov ebp, dword [esi + 0xc]
mov edx, dword [esi]
mov dword [esp + 0x120], edx
cmp ebp, dword [esi + 0x10]
jbe 0x5c35ee
call fcn.006111cc
mov edi, dword [esi]
mov dword [esp + 0xb0], edi
mov dword [esp + 0xb4], ebp
test edi, edi
jne 0x5c3619
call fcn.006111cc
xor eax, eax
add ebp, 8
cmp ebp, dword [eax + 0x10]
ja 0x5c3624
test edi, edi
je 0x5c361d
mov edi, dword [edi]
jmp 0x5c361f
mov eax, dword [edi]
jmp 0x5c3609
xor edi, edi
cmp ebp, dword [edi + 0xc]
jae 0x5c3629
call fcn.006111cc
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x5c363d
cmp eax, dword [esp + 0x120]
je 0x5c3642
call fcn.006111cc
mov edi, dword [esi + 0xc]
cmp ebp, dword [esp + 0x28]
jne 0x5c3676
cmp edi, dword [esi + 0x10]
jbe 0x5c3655
call fcn.006111cc
mov esi, dword [esi]
test esi, esi
jne 0x5c3672
call fcn.006111cc
cmp edi, dword [esi + 0x10]
jb 0x5c366a
call fcn.006111cc
fld dword [edi + 4]
jmp 0x5c37b0
mov esi, dword [esi]
jmp 0x5c3660
cmp edi, dword [esi + 0x10]
jbe 0x5c3680
call fcn.006111cc
mov eax, dword [esi]
test eax, eax
jne 0x5c36b5
call fcn.006111cc
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x5c3697
call fcn.006111cc
fld dword [esp + 0x10]
mov ecx, esi
fld dword [edi]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5c36b9
call fcn.005c0820
fld dword [eax + 4]
jmp 0x5c37b0
mov eax, dword [eax]
jmp 0x5c368d
call fcn.005c2e90
fld dword [esp + 0x10]
fld dword [eax]
mov ecx, esi
fcompp
fnstsw ax
test ah, 5
jp 0x5c36dc
call fcn.005c2e90
fld dword [eax + 4]
jmp 0x5c37b0
lea eax, [esp + 0x128]
push eax
call fcn.005ba7a0
lea ecx, [esp + 0x140]
push ecx
mov ecx, esi
mov edi, eax
call fcn.00514ea0
mov ecx, dword [edi + 4]
lea edx, [esp + 0x10]
push edx
mov edx, dword [edi]
push ecx
mov ecx, dword [eax + 4]
push edx
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x60]
push eax
call fcn.005c30b0
add esp, 0x18
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x50]
call fcn.005bff30
lea ecx, [esp + 0x4c]
test al, al
je 0x5c373a
call fcn.005cbd60
fld dword [eax + 4]
jmp 0x5c37b0
call fcn.005c2cb0
lea ecx, [esp + 0x54]
call fcn.005cbd60
fld dword [eax]
fsub dword [esp + 0x10]
lea ecx, [esp + 0x54]
fstp qword [esp + 0x10]
call fcn.005cbd60
fld dword [eax]
lea ecx, [esp + 0x4c]
fstp qword [esp + 0x28]
call fcn.005cbd60
fld dword [eax]
lea ecx, [esp + 0x4c]
fsubr qword [esp + 0x28]
fdivr qword [esp + 0x10]
fstp dword [esp + 0x28]
call fcn.005cbd60
fld dword [eax + 4]
lea ecx, [esp + 0x54]
fstp qword [esp + 0x10]
call fcn.005cbd60
fld dword [eax + 4]
fsubr qword [esp + 0x10]
lea ecx, [esp + 0x54]
fmul dword [esp + 0x28]
fstp qword [esp + 0x28]
call fcn.005cbd60
fld dword [eax + 4]
fadd qword [esp + 0x28]
fstp dword [esp + 0x10]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebp
call fcn.005ba120
lea ecx, [ebx + 0x2c]
mov edi, eax
call fcn.005ce9b0
mov ecx, dword [edi + 0xb0]
sub ecx, dword [edi + 0xac]
movzx esi, al
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jb 0x5c37f5
call fcn.006111cc
mov ecx, dword [esp + 0x18]
imul esi, esi, 0x2c
add esi, dword [edi + 0xac]
call fcn.005ce9b0
mov ecx, dword [ebx + 0x60]
sub ecx, dword [ebx + 0x5c]
movzx edi, al
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebp, ecx
jb 0x5c382c
call fcn.006111cc
mov edx, dword [ebx + 0x5c]
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + edx + 0x34]
sub ecx, dword [eax + edx + 0x30]
lea eax, [eax + edx + 0x24]
sar ecx, 2
cmp edi, ecx
jae 0x5c38aa
mov ecx, dword [ebx + 0x60]
sub ecx, edx
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x5c3867
call fcn.006111cc
mov ecx, dword [ebx + 0x5c]
mov edx, dword [esp + 0x34]
mov eax, dword [edx + ecx + 0x34]
sub eax, dword [edx + ecx + 0x30]
lea ebp, [edx + ecx + 0x24]
sar eax, 2
cmp edi, eax
jb 0x5c3886
call fcn.006111cc
mov ecx, dword [ebp + 0xc]
mov edi, dword [ecx + edi*4]
mov ebp, dword [0x70a5c0]
mov ecx, edi
call fcn.00562440
mov ecx, eax
call fcn.0052cea0
push eax
push 0
mov ecx, ebp
call fcn.005532f0
fld dword [esi + 4]
fmul dword [esp + 0x10]
fstp dword [esp + 0x68]
fld1
fld dword [esp + 0x5c]
fcom st(1)
fnstsw ax
test ah, 1
jne 0x5c38db
fstp st(0)
mov edi, 0xff
fld qword [0x673618]
fld qword [0x673620]
fldz
jmp 0x5c3932
fldz
fcom st(1)
fnstsw ax
test ah, 1
jne 0x5c38fc
fstp st(1)
xor edi, edi
fld qword [0x673618]
fld qword [0x673620]
fxch st(1)
fxch st(2)
jmp 0x5c3932
fld qword [0x673620]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2), st(0)
or eax, 0xc00
fld qword [0x673618]
mov dword [esp + 0x18], eax
fadd st(3), st(0)
fldcw word [esp + 0x18]
fxch st(3)
fistp qword [esp + 0x18]
mov edi, dword [esp + 0x18]
fldcw word [esp + 0x10]
fxch st(1)
fld dword [esp + 0x60]
fcom st(4)
fnstsw ax
test ah, 1
jne 0x5c3948
fstp st(0)
mov edx, 0xff
jmp 0x5c397d
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x5c3957
fstp st(0)
xor edx, edx
jmp 0x5c397d
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
fadd st(3)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov edx, dword [esp + 0x18]
fldcw word [esp + 0x10]
fld dword [esp + 0x64]
fcom st(4)
fnstsw ax
test ah, 1
jne 0x5c3993
fstp st(0)
mov ecx, 0xff
jmp 0x5c39c8
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x5c39a2
fstp st(0)
xor ecx, ecx
jmp 0x5c39c8
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmul st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
fadd st(3)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov ecx, dword [esp + 0x18]
fldcw word [esp + 0x10]
fld dword [esp + 0x68]
fcom st(4)
fnstsw ax
fstp st(4)
test ah, 1
jne 0x5c39e6
fstp st(3)
mov eax, 0xff
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x5c3a1f
fcomp st(3)
fnstsw ax
test ah, 1
jne 0x5c39f9
fstp st(2)
xor eax, eax
fstp st(1)
fstp st(0)
jmp 0x5c3a1f
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fmulp st(2)
or eax, 0xc00
mov dword [esp + 0x18], eax
faddp st(1)
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
fldcw word [esp + 0x10]
shl eax, 8
or eax, edi
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
mov ecx, dword [0x70a5c0]
push eax
push 0x3c
call fcn.005532b0
mov ecx, dword [0x70a5c0]
push 0x102
call fcn.00553380
mov ecx, dword [esi + 0x24]
sub ecx, dword [esi + 0x20]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x5c3a6a
call fcn.006111cc
mov ecx, dword [esi + 0x20]
mov eax, 0xaaaaaaab
mul dword [esi + 0x10]
push 0x14
push ecx
mov ecx, dword [0x70a5c0]
shr edx, 1
push edx
push 4
call fcn.00553590
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
add dword [esp + 0x34], 0x3c
inc ebp
mov ecx, edi
mov dword [esp + 0x44], ebp
call fcn.005ba110
cmp ebp, eax
jb 0x5c3180
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret