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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x168
mov eax, dword [0x766480]
xor eax, esp
mov dword [esp + 0x164], eax
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x28], edi
cmp dword [esi + 0x1138], 0
je 0x6052b1
mov eax, dword [edi]
lea ecx, [esp + 0xc0]
push ecx
push 0x100
push edi
call dword [eax + 0x98]
mov eax, dword [edi]
lea ecx, [esp + 0x128]
push ecx
push 2
push edi
call dword [eax + 0x98]
mov eax, dword [edi]
push 3
push 0x16
push edi
call dword [eax + 0xc8]
mov eax, dword [edi]
push 1
push 0
push edi
call dword [eax + 0xb8]
mov eax, dword [edi]
push 0xf8f0b4
push 0
push edi
call dword [eax + 0xb0]
cmp dword [0x747940], 0
je 0x604c25
mov eax, dword [edi]
push 1
push 0x97
push edi
call dword [eax + 0xc8]
movss xmm0, dword [0x70196c]
movaps xmmword [esp + 0x110], xmm0
movss xmm0, dword [esi + 0xac]
cvtps2pd xmm0, xmm0
mov dword [esp + 0x10c], 0x3f800000
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
movaps xmm1, xmmword [esp + 0x110]
sub esp, 0x10
mov eax, dword [esp + 0x11c]
mov ecx, esp
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x711e48]
movss dword [esp + 0xc], xmm0
xorps xmm0, xmm0
unpcklps xmm1, xmm0
movq qword [ecx], xmm1
mov dword [ecx + 8], eax
lea ecx, [esp + 0x50]
call fcn.0065ec40
movss xmm1, dword [0x7110e4]
xor ecx, ecx
mov dword [esi + 0x1140], 0
mov dword [esp + 0x10], ecx
nop dword [eax]
mov dword [esp + 0x18], 0
lea edx, [ecx*4]
mov edi, dword [esp + 0x18]
mov eax, ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], edx
nop dword [eax]
mov cl, byte [esi + eax + 0xb0]
cmp cl, 0xff
je 0x604ef3
movd xmm0, dword [esp + 0x10]
and cl, 0x3f
mov eax, dword [esi + 0x1134]
cvtdq2ps xmm0, xmm0
mov byte [esp + 0xb], cl
lea ecx, [esp + 0x80]
mulss xmm0, xmm1
addss xmm0, dword [esp + 0xf0]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [edx + eax]
lea eax, [esp + 0x1c]
movss dword [esp + 0x20], xmm0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
push eax
mulss xmm0, xmm1
addss xmm0, dword [esp + 0xfc]
movss dword [esp + 0x28], xmm0
call fcn.0065ee30
movups xmm0, xmmword [esp + 0x80]
movzx ecx, byte [esp + 0xb]
movups xmmword [esi + 0x1c], xmm0
movups xmm0, xmmword [esp + 0x90]
movups xmmword [esi + 0x2c], xmm0
movups xmm0, xmmword [esp + 0xa0]
movups xmmword [esi + 0x3c], xmm0
movups xmm0, xmmword [esp + 0xb0]
movups xmmword [esi + 0x4c], xmm0
movss xmm1, dword [esi + 0x50]
subss xmm1, dword [0x7012b4]
movss xmm0, dword [esi + 0x4c]
movss dword [esp + 0x70], xmm0
movss xmm0, dword [esi + 0x54]
movss dword [esp + 0x78], xmm0
movss dword [esi + 0x50], xmm1
mov eax, dword [ecx*4 + 0x130f320]
movss dword [esp + 0x74], xmm1
movq xmm0, qword [eax + 0x22c]
movq qword [esi + 0x10], xmm0
mov eax, dword [eax + 0x234]
mov dword [esi + 0x18], eax
mov eax, dword [ecx*4 + 0x130f320]
movq xmm0, qword [eax + 0x220]
movq qword [esi + 4], xmm0
mov eax, dword [eax + 0x228]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0xc]
mov cl, byte [esi + eax + 0xb0]
test cl, cl
jns 0x604dc8
mov ecx, esi
call fcn.005f4440
test al, al
je 0x604ee7
movss xmm0, dword [esp + 0x1c]
lea eax, [esp + 0x128]
movss dword [esp + 0x110], xmm0
movss xmm0, dword [esp + 0x20]
movss dword [esp + 0x114], xmm0
movss xmm0, dword [esp + 0x24]
push eax
movss dword [esp + 0x11c], xmm0
lea eax, [esp + 0x114]
jmp 0x604e1c
test cl, 0x40
je 0x604eeb
mov ecx, esi
call fcn.005f4440
test al, al
je 0x604ee7
movss xmm0, dword [esp + 0x1c]
lea eax, [esp + 0x128]
movss dword [esp + 0x104], xmm0
movss xmm0, dword [esp + 0x20]
movss dword [esp + 0x108], xmm0
movss xmm0, dword [esp + 0x24]
push eax
movss dword [esp + 0x110], xmm0
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00402d1a
imul ecx, dword [esi + 0x1140], 0x8c
mov eax, dword [esi + 0x113c]
movss xmm0, dword [esp + 0x38]
mov dl, byte [esp + 0xb]
movss dword [ecx + eax + 4], xmm0
imul ecx, dword [esi + 0x1140], 0x8c
mov eax, dword [esi + 0x113c]
movups xmm0, xmmword [esp + 0x40]
movups xmmword [ecx + eax + 8], xmm0
movups xmm0, xmmword [esp + 0x50]
movups xmmword [ecx + eax + 0x18], xmm0
movups xmm0, xmmword [esp + 0x60]
movups xmmword [ecx + eax + 0x28], xmm0
movups xmm0, xmmword [esp + 0x70]
movups xmmword [ecx + eax + 0x38], xmm0
mov eax, dword [esi + 0x113c]
imul ecx, dword [esi + 0x1140], 0x8c
movups xmm0, xmmword [esi + 0x1c]
movups xmmword [ecx + eax + 0x48], xmm0
movups xmm0, xmmword [esi + 0x2c]
movups xmmword [ecx + eax + 0x58], xmm0
movups xmm0, xmmword [esi + 0x3c]
movups xmmword [ecx + eax + 0x68], xmm0
movups xmm0, xmmword [esi + 0x4c]
movups xmmword [ecx + eax + 0x78], xmm0
mov eax, dword [esi + 0x113c]
imul ecx, dword [esi + 0x1140], 0x8c
mov byte [ecx + eax + 0x88], dl
imul ecx, dword [esi + 0x1140], 0x8c
mov eax, dword [esi + 0x113c]
mov edx, dword [esp + 0xc]
mov dword [ecx + eax], edx
inc dword [esi + 0x1140]
mov eax, dword [esp + 0xc]
movss xmm1, dword [0x7110e4]
add dword [esp + 0x14], 0x104
inc edi
mov edx, dword [esp + 0x14]
add eax, 0x41
mov dword [esp + 0xc], eax
cmp edi, 0x41
jl 0x604c60
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, 0x41
jl 0x604c40
push 0x5da050
push 0x8c
push dword [esi + 0x1140]
push dword [esi + 0x113c]
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_qsort]
movss xmm0, dword [0xf8f0a0]
add esp, 0x10
cmp dword [esi + 0x1140], 0
addss xmm0, dword [0x706bb0]
movss xmm1, dword [0x711da8]
mov ecx, dword [0xf89720]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
minss xmm1, xmm0
mov dword [esp + 0x14], 0
movss dword [esp + 0x18], xmm1
jle 0x60526c
mov dword [esp + 0xc], 0
nop
movss xmm1, dword [ecx + 4]
movss xmm2, dword [ecx + 8]
subss xmm2, dword [esi + 0x50]
subss xmm1, dword [esi + 0x4c]
movss xmm0, dword [ecx + 0xc]
subss xmm0, dword [esi + 0x54]
mov eax, dword [esi + 0x113c]
mulss xmm2, xmm2
mov dword [esp + 0x10], eax
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x604fde
sqrtsd xmm0, xmm0
jmp 0x604fe3
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
comiss xmm0, dword [esp + 0x18]
ja 0x60526c
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + ecx]
mov al, byte [esi + eax + 0xb0]
test al, al
jns 0x605155
cmp byte [0x743ce9], 0
mov byte [esp + 0xb], 0
je 0x6050be
movss xmm1, dword [0xf897c8]
movss xmm0, dword [0xf897c4]
subss xmm0, dword [esi + 0x4c]
subss xmm1, dword [esi + 0x50]
movss xmm2, dword [0xf897cc]
subss xmm2, dword [esi + 0x54]
mov dword [esp + 0x10], ecx
mulss xmm0, xmm0
mulss xmm1, xmm1
mulss xmm2, xmm2
addss xmm0, xmm1
xorps xmm1, xmm1
addss xmm0, xmm2
cvtps2pd xmm0, xmm0
ucomisd xmm1, xmm0
ja 0x60506f
sqrtsd xmm0, xmm0
jmp 0x605074
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [0xf897dc]
addss xmm0, dword [0x700e28]
comiss xmm0, xmm1
jb 0x6050ba
mov eax, dword [edi]
push 0xf89790
push 1
push edi
call dword [eax + 0xb0]
mov eax, dword [edi]
push 1
push 1
push edi
call dword [eax + 0xb8]
mov ecx, dword [esi + 0x113c]
mov byte [esp + 0xb], 1
jmp 0x6050be
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
add eax, 0x48
add ecx, eax
cmp dword [0x747940], 0
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0x94]
je 0x605101
push 0x101
push edi
call eax
mov edx, dword [esp + 0xc]
mov eax, dword [esi + 0x113c]
add edx, 8
mov ecx, dword [edi]
add eax, edx
push eax
push 0x100
push edi
call dword [ecx + 0x94]
jmp 0x605109
push 0x100
push edi
call eax
mov eax, dword [edi]
push 0xaa
push 0x18
push edi
call dword [eax + 0xc8]
mov eax, dword [esi + 0x113c]
mov ecx, dword [esp + 0xc]
push edi
movzx ecx, byte [eax + ecx + 0x88]
mov ecx, dword [ecx*4 + 0x130f320]
call fcn.005e8000
cmp byte [esp + 0xb], 1
jne 0x60524b
mov eax, dword [edi]
push 0
push 1
push edi
call dword [eax + 0xb8]
jmp 0x60524b
test al, 0x40
je 0x60524b
mov eax, dword [esp + 0xc]
add eax, 0x48
add ecx, eax
cmp dword [0x747940], 0
mov eax, dword [edi]
push ecx
mov eax, dword [eax + 0x94]
je 0x6051a0
push 0x101
push edi
call eax
mov edx, dword [esp + 0xc]
mov eax, dword [esi + 0x113c]
add edx, 8
mov ecx, dword [edi]
add eax, edx
push eax
push 0x100
push edi
call dword [ecx + 0x94]
jmp 0x6051a8
push 0x100
push edi
call eax
mov eax, dword [edi]
push 0x50
push 0x18
push edi
call dword [eax + 0xc8]
mov eax, dword [edi]
push 0
push 0xe
push edi
call dword [eax + 0xc8]
mov ecx, dword [esp + 0xc]
mov eax, dword [esi + 0x113c]
movzx eax, byte [eax + ecx + 0x88]
mov ecx, dword [eax*4 + 0x130f398]
test ecx, ecx
je 0x6051e5
push edi
call fcn.005e8000
cmp dword [0x131f0f0], 0
je 0x60523e
mov eax, dword [edi]
push 1
push 0xe
push edi
call dword [eax + 0xc8]
mov eax, dword [edi]
push 0
push 0xa8
push edi
call dword [eax + 0xc8]
mov ecx, dword [esp + 0xc]
mov eax, dword [esi + 0x113c]
movzx eax, byte [eax + ecx + 0x88]
mov ecx, dword [eax*4 + 0x130f398]
test ecx, ecx
je 0x60522e
push edi
call fcn.005e8000
mov eax, dword [edi]
push 7
push 0xa8
push edi
call dword [eax + 0xc8]
mov eax, dword [edi]
push 1
push 0xe
push edi
call dword [eax + 0xc8]
mov eax, dword [esp + 0x14]
add dword [esp + 0xc], 0x8c
inc eax
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
cmp eax, dword [esi + 0x1140]
jl 0x604f90
mov eax, dword [edi]
push 0xee
push 0x18
push edi
call dword [eax + 0xc8]
mov eax, dword [edi]
push 2
push 0x11
push 0
push edi
call dword [eax + 0xfc]
mov eax, dword [edi]
lea ecx, [esp + 0xc0]
push ecx
push 0x100
push edi
call dword [eax + 0x94]
mov eax, dword [edi]
push 0
push 0x97
push edi
call dword [eax + 0xc8]
mov ecx, dword [esp + 0x16c]
pop edi
pop esi
xor ecx, esp
call fcn.006dfb52
mov esp, ebp
pop ebp
ret 4