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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov esi, ecx
mov edi, dword [esp + 0x38]
vxorps xmm0, xmm0, xmm0
vucomiss xmm0, dword [esp + 0x3c]
mov eax, dword [ecx + 0x54]
jae 0x10037208
mov ebp, dword [esp + 0x48]
lea ebx, [eax + ebp]
inc ebx
cmp dword [esi + 0x58], ebx
jge 0x1003709c
lea eax, [ebx*8]
push eax
call fcn.1001ca90
add esp, 4
mov edi, eax
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x10037092
mov ecx, dword [esi + 0x54]
shl ecx, 3
push ecx
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push dword [esi + 0x5c]
call fcn.1001cac0
add esp, 4
mov dword [esi + 0x5c], edi
mov dword [esi + 0x58], ebx
mov edi, dword [esp + 0x38]
test ebp, ebp
js 0x10037280
vmovss xmm0, dword [esp + 0x44]
vcvtsi2ss xmm1, xmm1, ebp
vmovss dword [esp + 0xc], xmm1
vsubss xmm0, xmm0, dword [esp + 0x40]
vmovss dword [esp + 8], xmm0
inc ebp
mov dword [esp + 0x10], ebp
xor ebx, ebx
jmp 0x10037104
mov dword [esi + 0x5c], edi
mov dword [esi + 0x58], ebp
mov eax, dword [esi + 0x54]
mov edi, dword [esp + 0x38]
vmovss xmm0, dword [esp]
mov ecx, dword [esi + 0x5c]
vmovss dword [ecx + eax*8], xmm0
vmovss xmm0, dword [esp + 4]
vmovss dword [ecx + eax*8 + 4], xmm0
inc dword [esi + 0x54]
inc ebx
cmp dword [esp + 0x10], ebx
je 0x10037280
vcvtsi2ss xmm0, xmm2, ebx
vdivss xmm0, xmm0, dword [esp + 0xc]
vmovss xmm1, dword [esp + 8]
vfmadd213ss xmm0, xmm1, dword [esp + 0x40]
vmovss xmm1, dword [edi + 4]
vmovss dword [esp + 4], xmm1
vcvtss2sd xmm0, xmm0, xmm0
vmovsd qword [esp + 0x1c], xmm0
sub esp, 8
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sin
add esp, 8
fstp dword [esp + 0x18]
vmovss xmm0, dword [esp + 0x3c]
vmovss xmm1, dword [esp + 4]
vfmadd231ss xmm1, xmm0, dword [esp + 0x18]
vmovss dword [esp + 4], xmm1
vmovss xmm0, dword [edi]
vmovss dword [esp], xmm0
sub esp, 8
vmovsd xmm0, qword [esp + 0x24]
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_cos
vmovss xmm0, dword [esp + 8]
add esp, 8
fstp dword [esp + 0x14]
vmovss xmm1, dword [esp + 0x3c]
vfmadd231ss xmm0, xmm1, dword [esp + 0x14]
mov eax, dword [esi + 0x54]
cmp eax, dword [esi + 0x58]
jne 0x100370e2
lea ebp, [eax + 1]
test eax, eax
je 0x100371b3
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x100371b8
mov ecx, 8
cmp ecx, ebp
cmovg ebp, ecx
cmp eax, ebp
jge 0x100370e2
vmovss dword [esp], xmm0
lea eax, [ebp*8]
push eax
call fcn.1001ca90
add esp, 4
mov edi, eax
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x100370d0
mov ecx, dword [esi + 0x54]
shl ecx, 3
push ecx
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push dword [esi + 0x5c]
call fcn.1001cac0
add esp, 4
jmp 0x100370d0
cmp eax, dword [esi + 0x58]
jne 0x10037271
lea ebx, [eax + 1]
test eax, eax
je 0x10037221
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x10037226
mov ecx, 8
cmp ecx, ebx
cmovg ebx, ecx
cmp eax, ebx
jge 0x10037271
lea eax, [ebx*8]
push eax
call fcn.1001ca90
add esp, 4
mov edi, eax
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x10037264
mov ecx, dword [esi + 0x54]
shl ecx, 3
push ecx
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push dword [esi + 0x5c]
call fcn.1001cac0
add esp, 4
mov dword [esi + 0x5c], edi
mov dword [esi + 0x58], ebx
mov eax, dword [esi + 0x54]
mov edi, dword [esp + 0x38]
mov ecx, dword [esi + 0x5c]
vmovsd xmm0, qword [edi]
vmovsd qword [ecx + eax*8], xmm0
inc dword [esi + 0x54]
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret 0x14
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov esi, ecx
vmovss xmm4, dword [esp + 0x70]
mov ebx, dword [esp + 0x6c]
vxorps xmm0, xmm0, xmm0
vucomiss xmm0, xmm4
jae 0x10037392
cmp dword [esp + 0x7c], 0
jle 0x100373b2
mov ecx, esi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
jmp 0x10037030
mov eax, dword [esi + 0x54]
cmp eax, dword [esi + 0x58]
jne 0x10037456
lea ebp, [eax + 1]
test eax, eax
je 0x10037406
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x1003740b
vmovss xmm5, dword [esp + 0x78]
vmovss xmm6, dword [esp + 0x74]
mov eax, dword [esi + 0x2c]
vmovss xmm0, dword [eax + 0x1ac]
vucomiss xmm0, xmm4
jae 0x1003746f
vsubss xmm0, xmm5, xmm6
vbroadcastss xmm1, dword [0x1012978c]
vaddss xmm2, xmm4, dword [0x101307e0]
vandps xmm3, xmm0, xmm1
vcvttss2si ecx, xmm2
cmp ecx, 0x3f
jg 0x100374de
movzx ecx, byte [eax + ecx + 0x1b0]
jmp 0x10037575
mov ecx, 8
cmp ecx, ebp
cmovg ebp, ecx
cmp eax, ebp
jge 0x10037456
lea eax, [ebp*8]
mov dword [esp], eax
call fcn.1001ca90
mov edi, eax
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x1003744d
mov ecx, dword [esi + 0x54]
shl ecx, 3
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edi
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
call fcn.1001cac0
mov dword [esi + 0x5c], edi
mov dword [esi + 0x58], ebp
mov eax, dword [esi + 0x54]
mov ecx, dword [esi + 0x5c]
vmovsd xmm0, qword [ebx]
vmovsd qword [ecx + eax*8], xmm0
inc dword [esi + 0x54]
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 0x14
vucomiss xmm6, xmm5
vmovss xmm0, dword [0x101307c8]
vmulss xmm1, xmm6, xmm0
vmovss xmm3, dword [0x101307e8]
vdivss xmm2, xmm1, xmm3
vmulss xmm1, xmm5, xmm0
vdivss xmm1, xmm1, xmm3
vmovss dword [esp + 0x1c], xmm4
jbe 0x100375c8
vcvttss2si eax, xmm2
vcvttps2dq xmm3, xmm2
vcvtdq2ps xmm3, xmm3
vxorps xmm4, xmm4, xmm4
vcmpnleps xmm4, xmm4, xmm2
vcmpneqps xmm2, xmm2, xmm3
vandps xmm2, xmm4, xmm2
vmovd ecx, xmm2
add ecx, eax
vcvtsi2ss xmm2, xmm7, ecx
vcvttss2si ecx, xmm2
vroundss xmm1, xmm1, xmm1, 0xa
vcvttss2si edx, xmm1
mov ebp, ecx
sub ebp, edx
jmp 0x10037604
vmovss xmm0, dword [eax + 0x14]
vminss xmm0, xmm0, xmm4
vdivss xmm0, xmm0, xmm4
vmovss xmm1, dword [0x10129710]
vsubss xmm0, xmm1, xmm0
vcvtss2sd xmm0, xmm0, xmm0
vmovsd qword [esp], xmm0
vmovss dword [esp + 0x1c], xmm4
vmovss dword [esp + 0x14], xmm5
vmovss dword [esp + 0x18], xmm6
vmovups xmmword [esp + 0x2c], xmm3
call sub.api_ms_win_crt_math_l1_1_0.dll_acos
vmovups xmm3, xmmword [esp + 0x2c]
vmovss xmm6, dword [esp + 0x18]
vmovss xmm5, dword [esp + 0x14]
vmovss xmm4, dword [esp + 0x1c]
fstp dword [esp + 0x44]
vmovss xmm0, dword [0x101307c4]
vdivss xmm0, xmm0, dword [esp + 0x44]
vroundss xmm0, xmm0, xmm0, 0xa
vcvttss2si eax, xmm0
lea ecx, [eax + 1]
shr ecx, 0x1f
add eax, ecx
inc eax
and eax, 0xfffffffe
cmp eax, 0x200
mov edx, 0x200
cmovl edx, eax
cmp edx, 5
mov ecx, 4
cmovge ecx, edx
vmovss xmm0, dword [0x101307e8]
vdivss xmm1, xmm0, xmm3
vcvttss2si eax, xmm1
vcvtsi2ss xmm1, xmm7, ecx
vmulss xmm1, xmm3, xmm1
vdivss xmm0, xmm1, xmm0
vroundss xmm0, xmm0, xmm0, 0xa
vcvttss2si ecx, xmm0
cmp ecx, eax
cmovg eax, ecx
vmovss dword [esp + 0xc], xmm5
vmovss dword [esp + 8], xmm6
vmovss dword [esp + 4], xmm4
mov dword [esp], ebx
mov dword [esp + 0x10], eax
mov ecx, esi
call 0x10037030
add esp, 0x44
jmp 0x10037468
vroundss xmm2, xmm2, xmm2, 0xa
vcvttss2si edx, xmm2
vcvttss2si eax, xmm1
vcvttps2dq xmm2, xmm1
vcvtdq2ps xmm2, xmm2
vxorps xmm3, xmm3, xmm3
vcmpnleps xmm3, xmm3, xmm1
vcmpneqps xmm1, xmm1, xmm2
vandps xmm1, xmm3, xmm1
vmovd ecx, xmm1
add ecx, eax
vcvtsi2ss xmm1, xmm7, ecx
mov ecx, edx
vcvttss2si edx, xmm1
mov ebp, edx
sub ebp, ecx
mov eax, ebp
sar eax, 0x1f
andn edi, eax, ebp
mov dword [esp + 0x3c], ecx
vcvtsi2ss xmm1, xmm7, ecx
vmovss xmm2, dword [0x101307c4]
vmulss xmm1, xmm1, xmm2
vaddss xmm1, xmm1, xmm1
vdivss xmm1, xmm1, xmm0
vcvtsi2ss xmm3, xmm7, edx
vmulss xmm2, xmm3, xmm2
vaddss xmm2, xmm2, xmm2
vdivss xmm0, xmm2, xmm0
vsubss xmm2, xmm1, xmm6
vxorps xmm3, xmm3, xmm3
vcmpneqss xmm1, xmm2, xmm3
vmovd eax, xmm1
vsubss xmm0, xmm5, xmm0
vmovss dword [esp + 0x40], xmm0
vcmpneqss xmm0, xmm0, xmm3
vmovd ecx, xmm0
add edi, dword [esi + 0x54]
sub edi, ecx
sub edi, eax
inc edi
cmp dword [esi + 0x58], edi
vmovss dword [esp + 0x14], xmm5
mov dword [esp + 0x2c], edx
jge 0x100376e0
vmovss dword [esp + 0x20], xmm2
vmovss dword [esp + 0x18], xmm6
lea eax, [edi*8]
mov dword [esp], eax
call fcn.1001ca90
mov edx, dword [esi + 0x5c]
test edx, edx
je 0x100376c0
mov ecx, dword [esi + 0x54]
shl ecx, 3
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0x24], eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
call fcn.1001cac0
mov eax, dword [esp + 0x24]
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], edi
vmovss xmm5, dword [esp + 0x14]
vmovss xmm6, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
vmovss xmm2, dword [esp + 0x20]
vxorps xmm3, xmm3, xmm3
vucomiss xmm2, xmm3
jne 0x100376ec
jnp 0x1003780e
vmovss xmm0, dword [ebx + 4]
vmovss dword [esp + 0x18], xmm0
vcvtss2sd xmm0, xmm6, xmm6
vmovsd qword [esp + 0x24], xmm0
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sin
fstp dword [esp + 0x54]
vmovss xmm0, dword [esp + 0x18]
vmovss xmm1, dword [esp + 0x1c]
vfmadd231ss xmm0, xmm1, dword [esp + 0x54]
vmovss dword [esp + 0x18], xmm0
vmovss xmm0, dword [ebx]
vmovss dword [esp + 0x20], xmm0
vmovsd xmm0, qword [esp + 0x24]
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_cos
vmovss xmm1, dword [esp + 0x20]
vmovss xmm0, dword [esp + 0x1c]
fstp dword [esp + 0x50]
vfmadd231ss xmm1, xmm0, dword [esp + 0x50]
mov eax, dword [esi + 0x54]
cmp eax, dword [esi + 0x58]
jne 0x10037775
lea edi, [eax + 1]
test eax, eax
je 0x10037781
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x10037786
vmovss xmm5, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
jmp 0x100377f7
mov ecx, 8
vmovss xmm5, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
cmp ecx, edi
cmovg edi, ecx
cmp eax, edi
jge 0x100377f7
vmovss dword [esp + 0x20], xmm1
lea eax, [edi*8]
mov dword [esp], eax
call fcn.1001ca90
mov edx, dword [esi + 0x5c]
test edx, edx
je 0x100377de
mov ecx, dword [esi + 0x54]
shl ecx, 3
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0x24], eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
call fcn.1001cac0
mov eax, dword [esp + 0x24]
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], edi
mov eax, dword [esi + 0x54]
vmovss xmm5, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
vmovss xmm1, dword [esp + 0x20]
mov ecx, dword [esi + 0x5c]
vmovss dword [ecx + eax*8], xmm1
vmovss xmm0, dword [esp + 0x18]
vmovss dword [ecx + eax*8 + 4], xmm0
inc dword [esi + 0x54]
test ebp, ebp
jle 0x10037845
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], eax
vmovss xmm0, dword [esp + 0x1c]
vmovss dword [esp + 4], xmm0
mov dword [esp], ebx
mov dword [esp + 0x10], 0
mov ecx, esi
call fcn.10036c40
sub esp, 0x14
vmovss xmm5, dword [esp + 0x14]
vxorps xmm0, xmm0, xmm0
vmovss xmm1, dword [esp + 0x40]
vucomiss xmm1, xmm0
jne 0x1003785b
jnp 0x10037465
vmovss xmm0, dword [ebx + 4]
vmovss dword [esp + 0x18], xmm0
vcvtss2sd xmm0, xmm5, xmm5
vmovsd qword [esp + 0x2c], xmm0
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_sin
fstp dword [esp + 0x4c]
vmovss xmm1, dword [esp + 0x18]
vmovss xmm0, dword [esp + 0x1c]
vfmadd231ss xmm1, xmm0, dword [esp + 0x4c]
vmovss dword [esp + 0x18], xmm1
vmovss xmm0, dword [ebx]
vmovss dword [esp + 0x14], xmm0
vmovsd xmm0, qword [esp + 0x2c]
vmovsd qword [esp], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_cos
vmovss xmm0, dword [esp + 0x14]
fstp dword [esp + 0x48]
vmovss xmm1, dword [esp + 0x1c]
vfmadd231ss xmm0, xmm1, dword [esp + 0x48]
mov eax, dword [esi + 0x54]
cmp eax, dword [esi + 0x58]
jne 0x10037940
lea ebx, [eax + 1]
test eax, eax
je 0x100378e4
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, eax
jmp 0x100378e9
mov ecx, 8
cmp ecx, ebx
cmovg ebx, ecx
cmp eax, ebx
jge 0x10037940
vmovss dword [esp + 0x14], xmm0
lea eax, [ebx*8]
mov dword [esp], eax
call fcn.1001ca90
mov edi, eax
mov eax, dword [esi + 0x5c]
test eax, eax
je 0x10037931
mov ecx, dword [esi + 0x54]
shl ecx, 3
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edi
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
call fcn.1001cac0
mov dword [esi + 0x5c], edi
mov dword [esi + 0x58], ebx
mov eax, dword [esi + 0x54]
vmovss xmm0, dword [esp + 0x14]
mov ecx, dword [esi + 0x5c]
vmovss dword [ecx + eax*8], xmm0
vmovss xmm0, dword [esp + 0x18]
vmovss dword [ecx + eax*8 + 4], xmm0
jmp 0x10037462