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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x168
mov eax, dword [0x1009f040]
xor eax, esp
mov dword [esp + 0x164], eax
mov dword [esp + 0xc], ecx
mov ecx, dword [0x101224c0]
push esi
push edi
mov dword [esp + 0x10], edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xec]
call eax
mov esi, eax
push 4
push esi
mov dword [esp + 0x20], esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10005550
test esi, esi
je 0x10005550
xor edi, edi
cmp dword [esi + 0x17c], edi
jle 0x10005550
mov eax, dword [esi + 0x174]
push 4
mov esi, dword [eax + edi*4]
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1000553f
test esi, esi
je 0x1000553f
mov eax, dword [esi + 0x10]
push 4
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1000553f
cmp dword [esp + 0xc], eax
je 0x1000553f
mov eax, dword [esi + 0x10]
lea edx, [esp + 0x4c]
mov ecx, dword [esp + 0x10]
push edx
push ecx
movq xmm0, qword [eax + 0x10]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x50], eax
mov eax, dword [ecx]
movq qword [esp + 0x48], xmm0
call dword [eax + 0xc0]
mov ecx, dword [0x79ac60]
lea eax, [ecx + 0x3f50]
push eax
lea eax, [ecx + 0x3f90]
push eax
lea eax, [ecx + 0x3fd0]
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXVec3Project]
movss xmm0, dword [0x1009b3d4]
xor eax, eax
comiss xmm0, dword [esp + 0x3c]
seta al
test eax, eax
je 0x1000553f
cvttss2si eax, dword [esp + 0x38]
sub eax, 0xf
cmp dword [esp + 0x14], 1
mov dword [esp + 0xc], eax
jne 0x1000553f
mov eax, dword [esi + 0x10]
movq xmm0, qword [eax + 0x10]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x30], eax
mov eax, dword [0x10122650]
movq qword [esp + 0x28], xmm0
mov eax, dword [eax + 0x13c]
movq xmm0, qword [eax + 0x10]
mov eax, dword [eax + 0x18]
movq qword [esp + 0x1c], xmm0
movss xmm1, dword [esp + 0x20]
movss xmm2, dword [esp + 0x1c]
subss xmm2, dword [esp + 0x28]
subss xmm1, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
movss xmm0, dword [esp + 0x24]
subss xmm0, dword [esp + 0x30]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x100054ba
sqrtsd xmm0, xmm0
jmp 0x100054bf
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
mov ecx, 0x41
xor edx, edx
divss xmm0, dword [0x1009b4d0]
cvtss2sd xmm0, xmm0
mov al, byte [edx + 0x1009a404]
xor al, cl
inc ecx
mov byte [esp + edx + 0x4c], al
and ecx, 0x800000ff
jns 0x100054f3
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 0x1a
jl 0x100054d6
sub esp, 8
mov byte [esp + 0x6e], 0
lea eax, [esp + 0x54]
movsd qword [esp], xmm0
push eax
lea eax, [esp + 0x74]
push eax
call fcn.100013c0
lea eax, [esp + 0x78]
push eax
cvttss2si eax, dword [esp + 0x48]
push 0x101
push 0xff800080
push dword [esp + 0x28]
push eax
push dword [0x10122644]
push 1
call fcn.100037d0
add esp, 0x2c
mov esi, dword [esp + 0x18]
inc edi
cmp edi, dword [esi + 0x17c]
jl 0x10005371
mov ecx, dword [esp + 0x16c]
pop edi
pop esi
xor ecx, esp
call fcn.1004d560
mov esp, ebp
pop ebp
ret