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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x150
push ebx
push esi
or esi, 0xffffffff
cmp dword [edi + 0x1bf0], esi
je 0x658d54
cmp dword [edi + 0x1bf4], 0
jne 0x6581a6
mov dword [edi + 0x1bf4], 1
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0x1bf4], 0
call fcn.00571f30
xor ebx, ebx
cmp dword [edi + 0x7d4], 0x954708
sete bl
cmp dword [0x725550], 0xa
mov dword [esp + 0x50], ebx
jne 0x6581da
mov ebx, 1
mov dword [esp + 0x50], ebx
cmp dword [edi + 0x1bec], esi
jne 0x65820a
test ebx, ebx
je 0x6581f0
mov dword [0x7267ec], 0x14
mov eax, dword [edi + 0x1bf0]
push eax
call fcn.005726e0
mov esi, eax
push esi
call fcn.00572600
mov dword [edi + 0x1bec], esi
test ebx, ebx
je 0x658380
cmp dword [0x7267ec], 0
jl 0x658222
sub dword [0x7267ec], 1
mov eax, dword [edi + 0x7d4]
mov eax, dword [eax + 0x2fc]
push eax
call fcn.005e0fe0
cmp dword [0x725550], 0xa
mov dword [esp + 0x24], eax
je 0x658380
mov eax, dword [0x785e98]
add eax, 0xffffffff
cmp eax, 0xc8
mov ebx, eax
jl 0x65825b
mov ebx, 0xc8
mov esi, dword [esp + 0x24]
mov ecx, dword [0x7267f0]
sub dword [0xacddf4], 1
mov eax, esi
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xc8
jge 0x658303
cmp dword [0xacddf4], 0
jge 0x658303
cmp ecx, esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], esi
jle 0x65829d
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], ecx
test ebx, ebx
jl 0x658303
mov esi, 0x785e9c
add ebx, 1
lea esp, [esp]
mov eax, dword [esi]
cmp dword [esp + 0x2c], eax
jge 0x6582fb
cmp dword [esp + 0x28], eax
jl 0x6582fb
mov eax, str.SFX_SWOOSH_PARENT
call fcn.00573900
fld dword [edi + 0x1b24]
fmul qword [0x6fa3c8]
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov dword [0x7267f4], eax
fstp dword [0xb32464]
mov dword [0xacddf4], 5
mov dword [0xb3245c], ecx
mov dword [0xb32460], edx
add esi, 0xc
sub ebx, 1
jne 0x6582b0
mov eax, dword [0x7267f4]
push 0
push eax
xor eax, eax
lea ecx, [edi + 0x84]
call fcn.00572280
mov esi, dword [0x7267f4]
push 0xa07570
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x24
call fcn.00571da0
add esp, 4
test eax, eax
je 0x658367
mov dword [eax], 0xf
mov dword [eax + 0x10], esi
mov dword [eax + 0x14], 8
mov ecx, dword [0xb3245c]
mov dword [eax + 0x18], ecx
mov edx, dword [0xb32460]
mov dword [eax + 0x1c], edx
mov ecx, dword [0xb32464]
mov dword [eax + 0x20], ecx
call fcn.00571e10
push 0xa07570
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x50]
mov dword [0x7267f0], edx
mov esi, dword [edi + 0x848]
mov ecx, esi
call fcn.0044b0e0
fstp qword [esp + 0x40]
mov ecx, esi
call fcn.0044b110
fdivr qword [esp + 0x40]
mov ecx, dword [edi + 0x848]
fstp dword [esp + 0x80]
fld dword [edi + 0x1b24]
fmul qword [0x6fa3c8]
fstp dword [esp + 0x84]
call fcn.0044b820
mov ecx, dword [edi + 0x848]
fstp dword [esp + 0x74]
call fcn.0044b830
fstp dword [esp + 0x88]
mov ecx, dword [edi + 0x848]
call fcn.0044b610
mov ecx, dword [edi + 0x848]
mov dword [esp + 0x78], eax
call fcn.0044b620
mov ecx, dword [edi + 0x848]
mov dword [esp + 0x7c], eax
call fcn.0044b1a0
fstp dword [esp + 0x94]
mov eax, dword [edi + 0x1bec]
push 4
push eax
lea esi, [esp + 0x7c]
call fcn.00571f70
mov ecx, dword [edi + 0x848]
mov edx, dword [ecx]
mov eax, dword [edx + 0x30]
call eax
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x44], edx
fld dword [esp + 0x44]
mov dword [esp + 0x40], ecx
fld dword [esp + 0x40]
mov dword [esp + 0x48], eax
fld dword [esp + 0x48]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
call fcn.004ad260
fstp dword [esp + 0x1c]
test ebx, ebx
fld dword [esp + 0x1c]
fmul qword [0x6f9be0]
mov eax, 1
mov dword [esp + 0x1c], eax
fstp dword [esp + 0x54]
je 0x65848b
mov eax, 4
mov dword [esp + 0x1c], eax
test eax, eax
mov dword [esp + 0x3c], 0
jle 0x658a5f
mov ecx, 1
mov edx, 2
xor eax, eax
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc8], edx
mov esi, 3
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], edx
lea ecx, [edi + 0x1bf8]
lea edx, [edi + 0x1b8c]
mov dword [esp + 0xc0], eax
mov dword [esp + 0xcc], esi
mov dword [esp + 0xa0], eax
mov dword [esp + 0xac], esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], edx
movss xmm0, dword [0x6cc5ec]
xor eax, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + eax*4 + 0xc0]
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0xa4]
push ecx
mov ecx, dword [edi + 0x848]
push esi
movss dword [esp + 0x38], xmm0
call fcn.0044b550
mov eax, dword [esp + 0x98]
test eax, eax
mov ebx, 6
mov dword [esp + 0x60], ebx
je 0x658564
mov edx, dword [eax*4 + 0xa95b5c]
mov eax, dword [edx]
mov dword [esp + 0x60], eax
jmp 0x65856c
mov dword [esp + 0x70], 1
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x658582
mov ecx, dword [eax*4 + 0xa95b5c]
mov ebx, dword [ecx]
jmp 0x65858a
mov dword [esp + 0x30], 1
mov ecx, dword [edi + 0x848]
push esi
call fcn.0044b2f0
fmul qword [0x6f9b88]
mov ecx, dword [edi + 0x848]
lea edx, [esp + 0xc]
push edx
fstp dword [esp + 0x6c]
lea eax, [esp + 0x3c]
push eax
push esi
call fcn.0044b400
mov ecx, dword [edi + 0x848]
push esi
call fcn.0044b430
fstp dword [esp + 0x20]
fld dword [esp + 0xc]
xorps xmm1, xmm1
movss xmm4, dword [0x6cc5ec]
fabs
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
fld qword [0x6f9c68]
fcompi st(1)
fstp st(0)
jbe 0x6585f8
movaps xmm0, xmm1
jmp 0x658614
movss xmm0, dword [0x6cc5e8]
comiss xmm0, dword [esp + 0xc]
jbe 0x658611
movss xmm0, dword [0x6d54d4]
jmp 0x658614
movaps xmm0, xmm4
movss dword [esp + 0xc], xmm0
fld dword [esp + 0xc]
fld st(0)
fldz
fsub st(1), st(0)
fxch st(1)
fstp dword [esp + 0x18]
fldz
fld dword [esp + 0x18]
fcompi st(1)
jb 0x658639
movaps xmm5, xmm0
jmp 0x65863c
movaps xmm5, xmm1
fld1
fld st(0)
fsubrp st(4)
fxch st(3)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcompi st(1)
jae 0x658653
movaps xmm5, xmm4
movss xmm0, dword [esp + 0x20]
comiss xmm1, xmm0
movss dword [esp + 0xc], xmm5
jbe 0x65867b
fld dword [esp + 0x38]
fld dword [esp + 0x20]
fcompi st(1)
fstp st(0)
jbe 0x65869c
comiss xmm0, dword [0x6f99f4]
jmp 0x65868c
fld dword [esp + 0x20]
fld dword [esp + 0x38]
fcompi st(1)
fstp st(0)
jbe 0x65869c
comiss xmm4, xmm0
movss dword [esp + 0x14], xmm0
jbe 0x6586a8
movss dword [esp + 0x14], xmm1
jmp 0x6586bb
movss xmm0, dword [esp + 0x38]
movss dword [esp + 0x14], xmm0
comiss xmm1, xmm0
jbe 0x6586bb
movss xmm0, dword [0x6f99f4]
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x14]
fabs
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld qword [0x6f9c48]
fcomi st(1)
fstp st(1)
jbe 0x6586e5
movss dword [esp + 0x14], xmm1
jmp 0x658710
movss xmm0, dword [0x6d54d4]
comiss xmm0, dword [esp + 0x14]
jbe 0x658704
fld dword [esp + 0x24]
fmul qword [0x6f9e08]
fstp dword [esp + 0x14]
jmp 0x658710
movss xmm0, dword [esp + 0x24]
movss dword [esp + 0x14], xmm0
fld dword [esp + 0x14]
fld qword [0x6f9a28]
fsubr st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcompi st(3)
jb 0x658730
movss xmm3, dword [esp + 0x14]
jmp 0x658738
movss xmm3, dword [0x6f99f4]
fsubr st(4)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcompi st(2)
jae 0x658749
movaps xmm3, xmm4
fld dword [esp + 0x68]
fld st(0)
fsubrp st(4)
fxch st(3)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcompi st(2)
jb 0x658767
movss xmm2, dword [esp + 0x68]
jmp 0x65876a
movaps xmm2, xmm1
fld st(3)
fsubrp st(3)
fxch st(2)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcompi st(1)
fstp st(0)
jae 0x658781
movaps xmm2, xmm4
fld dword [esp + 0x6c]
movss xmm0, dword [esp + 0x54]
mov eax, dword [esp + 0x60]
fsubp st(2)
xor edx, edx
fxch st(1)
cmp eax, ebx
movss dword [esp + 0x10c], xmm0
fstp dword [esp + 0xe4]
movss xmm0, dword [esp + 0x6c]
mov dword [esp + 0xd4], edx
mov dword [esp + 0xd8], eax
movss dword [esp + 0xdc], xmm0
mov dword [esp + 0xe0], ebx
movss dword [esp + 0xf8], xmm0
jne 0x6587e8
movss dword [esp + 0xdc], xmm4
movss dword [esp + 0xe4], xmm1
mov eax, dword [esp + 0x70]
cmp eax, edx
je 0x6587f9
movss dword [esp + 0xdc], xmm1
cmp dword [esp + 0x30], edx
je 0x658808
movss dword [esp + 0xe4], xmm1
cmp eax, edx
mov ecx, dword [esp + 0x3c]
mov ecx, dword [esp + ecx*4 + 0xa0]
mov dword [esp + 0xe8], 3
mov dword [esp + 0xf0], 4
movss dword [esp + 0xec], xmm1
movss dword [esp + 0xf4], xmm1
mov dword [esp + 0xd0], ecx
je 0x658851
movss dword [esp + 0x104], xmm1
jmp 0x65885a
movss dword [esp + 0x104], xmm2
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov ebx, dword [esp + 0x28]
sub eax, 3
cmovs eax, edx
add eax, dword [ebx + 8]
movss dword [esp + 0x100], xmm5
cmp eax, 0x1e
movss dword [esp + 0xfc], xmm3
mov dword [esp + 0x30], eax
jle 0x658891
mov eax, 0x1e
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
mov dword [ecx], eax
fdiv qword [0x6f9d28]
fstp dword [esp + 0x20]
fld dword [esp + 0xdc]
fld dword [esp + 0xe4]
fcomi st(1)
jbe 0x6588d7
fstp st(0)
fld dword [esp + 0x20]
fcompi st(1)
fstp st(0)
jbe 0x6588f9
movss xmm0, dword [esp + 0x20]
movss dword [esp + 0xdc], xmm0
mov dword [esp + 0xd8], edx
jmp 0x6588f9
fstp st(1)
fld dword [esp + 0x20]
fcompi st(1)
fstp st(0)
jbe 0x6588f9
movss xmm0, dword [esp + 0x20]
movss dword [esp + 0xe4], xmm0
mov dword [esp + 0xe0], edx
fld dword [ebx]
fcompi st(1)
fstp st(0)
jbe 0x658927
mov dword [esp + 0xd8], 8
movss dword [esp + 0xdc], xmm4
movss dword [esp + 0xe4], xmm1
movss dword [esp + 0x104], xmm2
cmp dword [0x7267ec], edx
jge 0x658a19
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x7c]
push ecx
mov ecx, dword [edi + 0x848]
lea edx, [esp + 0x64]
push edx
push esi
call fcn.0044b210
cmp dword [esp + 0x58], 0
je 0x6589e8
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x68]
push ecx
mov ecx, dword [edi + 0x848]
push esi
call fcn.0044b2a0
movss xmm0, dword [esp + 0x10]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x6589b5
movss xmm2, dword [esp + 0x64]
ucomiss xmm2, xmm1
lahf
test ah, 0x44
jnp 0x6589a3
fld dword [esp + 0x10]
fdiv dword [esp + 0x64]
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
movss xmm1, dword [0x6cc5ec]
comiss xmm0, xmm1
jbe 0x6589ff
movaps xmm0, xmm1
jmp 0x6589f9
movss xmm2, dword [esp + 0x5c]
ucomiss xmm2, xmm1
lahf
test ah, 0x44
jnp 0x6589d6
fld dword [esp + 0x10]
fdiv dword [esp + 0x5c]
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
movss xmm1, dword [0x6f99f4]
comiss xmm1, xmm0
jbe 0x6589ff
movaps xmm0, xmm1
jmp 0x6589f9
xorps xmm1, xmm1
movss xmm0, dword [0x6f99f4]
movss dword [esp + 0x34], xmm1
movss dword [esp + 0x10], xmm0
movss dword [esp + 0x110], xmm0
movss xmm0, dword [esp + 0x34]
movss dword [esp + 0x114], xmm0
jmp 0x658a2b
movss dword [esp + 0x110], xmm1
movss dword [esp + 0x114], xmm1
mov edx, dword [edi + 0x1bec]
push 3
push edx
lea esi, [esp + 0xd8]
call fcn.00571f70
mov eax, dword [esp + 0x3c]
add dword [esp + 0x28], 0x18
add dword [esp + 0x2c], 4
add eax, 1
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
jl 0x6584f8
xor ebx, ebx
cmp dword [0x7267ec], ebx
jge 0x658c80
mov eax, dword [edi + 0x848]
mov eax, dword [eax + 0xc]
xor esi, esi
cmp eax, ebx
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], esi
jle 0x658c80
jmp 0x658a90
mov ecx, dword [0x6c73ec]
mov eax, dword [0x6c73e8]
mov edx, dword [0x6c73f0]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb0], ecx
lea ecx, [esp + 0xd0]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa8], edx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xbc], ebx
call fcn.00405050
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0xdc]
push ecx
mov ecx, dword [edi + 0x848]
push esi
call fcn.0044a6b0
mov ecx, dword [esp + 0x10]
cmp ecx, ebx
je 0x658c6b
cmp dword [esp + 0xc], ebx
je 0x658c6b
mov edx, dword [ecx]
movss xmm0, dword [0x6cc5ec]
mov eax, dword [edx + 4]
xor esi, esi
movss dword [esp + 0x1c], xmm0
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x7c], ebx
call eax
cmp eax, 1
jne 0x658b78
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
cmp eax, 1
jne 0x658b78
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0xc]
jge 0x658b7c
movss xmm0, dword [0x6b8770]
mov dword [esp + 0x74], ebx
movss dword [esp + 0x1c], xmm0
mov esi, eax
jmp 0x658b7c
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
cmp eax, 3
je 0x658b98
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
cmp eax, 3
jne 0x658ba5
mov dword [esp + 0x74], 4
mov esi, 1
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
test eax, eax
je 0x658bc3
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
test eax, eax
jne 0x658bc8
mov esi, 1
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
cmp eax, 2
je 0x658be8
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
cmp eax, 2
jne 0x658bfc
mov esi, 1
mov dword [esp + 0x74], 4
mov dword [esp + 0x8c], esi
cmp esi, ebx
fld dword [esp + 0x148]
mov ecx, dword [esp + 0xd4]
fabs
mov edx, dword [esp + 0xd8]
fstp dword [esp + 0x58]
fld dword [esp + 0x58]
mov eax, dword [esp + 0xdc]
fmul qword [0x6f9d88]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], eax
fmul dword [esp + 0x1c]
fstp dword [esp + 0x78]
je 0x658c6b
fld qword [0x6f9c10]
fld dword [esp + 0x78]
fcompi st(1)
fstp st(0)
jbe 0x658c6b
mov ecx, dword [edi + 0x1bec]
push 5
push ecx
lea esi, [esp + 0x7c]
call fcn.00571f70
mov esi, dword [esp + 0x34]
add esi, 1
cmp esi, dword [esp + 0x54]
mov dword [esp + 0x34], esi
jl 0x658a90
mov edx, dword [edi + 0x1b14]
mov ecx, dword [edi + 0x1b1c]
mov eax, dword [edi + 0x1b18]
mov dword [esp + 0x40], edx
mov dword [esp + 0x48], ecx
mov ecx, dword [edi + 0x1bec]
lea edx, [esp + 0x40]
push edx
mov dword [esp + 0x48], eax
push ecx
lea eax, [edi + 0x12bc]
lea ecx, [edi + 0x84]
call fcn.00572280
cmp dword [esp + 0x50], ebx
je 0x658d54
mov esi, dword [edi + 0x7d4]
call fcn.005adf40
mov ebx, eax
cmp ebx, dword [0x954088]
je 0x658ce9
cmp ebx, dword [0x954084]
je 0x658ce9
mov esi, 1
jmp 0x658ceb
xor esi, esi
cmp dword [0x725550], 0xa
jne 0x658d01
call fcn.00635120
test eax, eax
je 0x658d01
test esi, esi
jne 0x658d54
test esi, esi
mov dword [esp + 0x40], esi
fild dword [esp + 0x40]
jge 0x658d13
fadd dword [0x6f9a18]
mov edx, dword [edi + 0x1bec]
push ecx
fstp dword [esp]
push 0
push edx
call fcn.005721c0
test byte [0xb2f28c], 1
jne 0x658d47
or dword [0xb2f28c], 1
call fcn.0064c8c0
push 0x681240
call fcn.004a9213
add esp, 4
push 0
push ebx
push 0xb2efdc
call fcn.00650910
pop esi
pop ebx
mov esp, ebp
pop ebp
ret