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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x328
mov eax, dword [0x4e04c4]
xor eax, esp
mov dword [esp + 0x324], eax
mov eax, dword fs:[0x2c]
push esi
push edi
mov edi, ecx
mov edx, dword [eax]
mov eax, dword [0x4e4280]
mov dword [esp + 0x48], edi
cmp eax, dword [edx + 4]
jle 0x413b39
push 0x4e4280
call fcn.00496a7e
add esp, 4
cmp dword [0x4e4280], 0xffffffff
jne 0x413b39
xorps xmm0, xmm0
push 0x4c0f70
movups xmmword [0x4e4268], xmm0
movq qword [0x4e4278], xmm0
call fcn.00496d90
add esp, 4
push 0x4e4280
call fcn.00496a34
add esp, 4
cmp byte [0x4e4274], 0
jne 0x41528a
mov eax, dword [edi + 0x20]
xor ecx, ecx
mov edx, dword [edi + 0x1c]
sub eax, edx
sar eax, 2
test eax, eax
jle 0x413b92
mov eax, dword [edx + ecx*4]
mov edx, dword [eax + 0x24]
test edx, edx
je 0x413b82
inc dword [eax + 0x28]
mov esi, dword [edx + 0x18]
cmp esi, dword [eax + 0x28]
jg 0x413b82
cmp byte [edx + 0x1c], 0
je 0x413b7b
mov dword [eax + 0x28], 0
jmp 0x413b82
mov dword [eax + 0x28], esi
mov byte [eax + 0x34], 1
mov eax, dword [edi + 0x20]
inc ecx
mov edx, dword [edi + 0x1c]
sub eax, edx
sar eax, 2
cmp ecx, eax
jl 0x413b57
push dword [edi + 0x5c]
call fcn.00496ebf
add esp, 4
mov esi, eax
mov dword [esp + 0x60], esi
push dword [edi + 0x5c]
push 0
push esi
call fcn.00499720
mov ecx, dword [edi + 0x20]
add esp, 0xc
mov edx, dword [edi + 0x1c]
mov eax, ecx
sub eax, edx
mov dword [esp + 0x10], 0
sar eax, 2
test eax, eax
jle 0x413d9f
xor esi, esi
sub ecx, edx
sar ecx, 2
sub ecx, esi
mov eax, dword [edx + ecx*4 - 4]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x1b4], edx
mov dword [esp + 0x1b8], ecx
mov esi, dword [eax + 0x18]
mov dword [esp + 8], esi
mov esi, dword [eax + 0x1c]
mov dword [esp + 0x38], eax
cmp dword [esp + 8], esi
je 0x413cb2
sub esi, dword [esp + 8]
mov dword [esp + 0xc], esi
sar esi, 2
mov dword [esp + 0x14], esi
cmp esi, 0x3fffffff
ja 0x41529e
shl esi, 2
cmp esi, 0x1000
jb 0x413c59
lea eax, [esi + 0x23]
cmp eax, esi
jbe 0x41529e
push eax
call fcn.004968f8
add esp, 4
test eax, eax
je 0x4152a3
lea esi, [eax + 0x23]
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x413c6c
test esi, esi
je 0x413c6a
push esi
call fcn.004968f8
add esp, 4
mov esi, eax
jmp 0x413c6c
xor esi, esi
push dword [esp + 0xc]
mov eax, dword [esp + 0x18]
push dword [esp + 0xc]
mov dword [esp + 0x1b8], esi
push esi
lea eax, [esi + eax*4]
mov dword [esp + 0x1c0], esi
mov dword [esp + 0x1c4], eax
call fcn.00499880
mov eax, dword [esp + 0x20]
add esp, 0xc
mov ecx, dword [esp + 0x1b0]
lea edx, [esi + eax*4]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1b4], edx
mov eax, dword [eax + 0x24]
xor esi, esi
mov dword [esp + 0xc], eax
mov eax, edx
sub eax, ecx
sar eax, 2
test eax, eax
jle 0x413d1d
mov eax, dword [ecx + esi*4]
test eax, eax
js 0x413d11
cmp eax, dword [edi + 0x5c]
jge 0x413d11
mov edi, dword [esp + 0x60]
cmp byte [eax + edi], 0
mov edi, dword [esp + 0x48]
jne 0x413d11
mov ecx, dword [esp + 0x60]
lea edx, [eax + eax*2]
mov byte [eax + ecx], 1
mov eax, dword [edi + 0x60]
mov ecx, dword [esp + 0xc]
mov dword [eax + edx*4], ecx
mov ecx, dword [edi + 0x60]
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x28]
mov dword [ecx + edx*4 + 4], eax
mov edx, dword [esp + 0x1b4]
mov ecx, dword [esp + 0x1b0]
mov eax, edx
inc esi
sub eax, ecx
sar eax, 2
cmp esi, eax
jl 0x413cc6
test ecx, ecx
je 0x413d7d
mov eax, dword [esp + 0x1b8]
sub eax, ecx
sar eax, 2
lea edx, [eax*4]
mov eax, ecx
cmp edx, 0x1000
jb 0x413d52
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4152a3
push edx
push ecx
call fcn.004968ea
add esp, 8
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], 0
mov ecx, dword [edi + 0x20]
mov eax, ecx
mov esi, dword [esp + 0x10]
mov edx, dword [edi + 0x1c]
inc esi
sub eax, edx
mov dword [esp + 0x10], esi
sar eax, 2
cmp esi, eax
jl 0x413bd0
mov esi, dword [esp + 0x60]
mov eax, dword [edi + 0x5c]
xor ecx, ecx
test eax, eax
jle 0x413dd6
xor edx, edx
nop word [eax + eax]
cmp byte [ecx + esi], 0
jne 0x413dcb
mov eax, dword [edi + 0x60]
mov dword [eax + edx], 0
mov eax, dword [edi + 0x60]
mov dword [eax + edx + 4], 0
mov eax, dword [edi + 0x5c]
inc ecx
add edx, 0xc
cmp ecx, eax
jl 0x413db0
push eax
call fcn.00496ebf
add esp, 4
mov dword [esp + 0x4c], eax
push dword [edi + 0x5c]
push 0
push eax
call fcn.00499720
mov ecx, dword [edi + 0x5c]
add esp, 0xc
xor esi, esi
test ecx, ecx
jle 0x413ea6
xor edx, edx
mov ecx, dword [edi + 0x6c]
cmp dword [ecx + edx + 8], 0
lea eax, [ecx + edx]
mov dword [esp + 0x14], eax
jg 0x413e30
mov eax, dword [edi + 0x60]
mov edi, dword [esp + 0x14]
mov eax, dword [edx + eax]
cmp eax, dword [edi]
mov edi, dword [esp + 0x48]
je 0x413e30
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x58]
mov dword [ecx + 8], eax
mov ecx, dword [edi + 0x6c]
mov eax, dword [edx + ecx + 8]
test eax, eax
jle 0x413e97
dec eax
mov dword [edx + ecx + 8], eax
mov eax, dword [edi + 0x6c]
inc dword [eax + edx + 4]
mov ecx, dword [edi + 0x6c]
mov eax, dword [ecx + edx]
test eax, eax
je 0x413e6e
mov eax, dword [eax + 0x18]
cmp dword [ecx + edx + 4], eax
jle 0x413e6e
mov edi, dword [ecx + edx]
cmp byte [edi + 0x1c], 0
mov edi, 0
cmovne eax, edi
mov edi, dword [esp + 0x48]
mov dword [ecx + edx + 4], eax
mov eax, dword [esp + 0x4c]
mov byte [esi + eax], 1
mov ecx, dword [edi + 0x6c]
cmp dword [ecx + edx + 8], 0
jg 0x413e97
mov eax, dword [edi + 0x60]
mov eax, dword [edx + eax]
mov dword [ecx + edx], eax
mov eax, dword [edi + 0x60]
mov ecx, dword [edi + 0x6c]
mov eax, dword [edx + eax + 4]
mov dword [ecx + edx + 4], eax
mov ecx, dword [edi + 0x5c]
inc esi
add edx, 0xc
cmp esi, ecx
jl 0x413e00
movss xmm2, dword [0x4d4510]
xor esi, esi
movss xmm3, dword [0x4d4354]
mov dword [esp + 0x54], esi
test ecx, ecx
jle 0x415015
xor eax, eax
mov dword [esp + 0x70], 0x3f800000
mov dword [esp + 0x74], 0x3f800000
mov dword [esp + 0x78], 0x3f800000
mov dword [esp + 0x1b0], esi
mov dword [esp + 0x1b4], esi
mov dword [esp + 0x1b8], esi
mov dword [esp + 0x90], 0x3f800000
mov dword [esp + 0x94], 0x3f800000
mov dword [esp + 0x98], 0x3f800000
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1b8]
sub esp, 0xc
movq xmm0, qword [esp + 0x1bc]
mov dword [esp + 0x204], eax
lea eax, [esp + 0x2ec]
movq qword [esp + 0x1fc], xmm0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
movups xmm0, xmmword [esp + 0x2e0]
mov eax, dword [esp + 0x78]
sub esp, 0xc
mov dword [esp + 0x220], eax
mov eax, dword [esp + 0x94]
movups xmmword [esp + 0x208], xmm0
mov dword [esp + 8], 0
movq xmm0, qword [esp + 0x7c]
mov dword [esp + 0x27c], eax
lea eax, [esp + 0x30c]
mov dword [esp + 4], 0
movq qword [esp + 0x218], xmm0
movq xmm0, qword [esp + 0x8c]
mov dword [esp], 0
push eax
movq qword [esp + 0x278], xmm0
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
mov eax, dword [esp + 0x98]
movups xmm0, xmmword [esp + 0x300]
mov edx, dword [edi + 0x60]
mov dword [esp + 0x28c], eax
mov eax, dword [esp + 0x50]
movups xmmword [esp + 0x274], xmm0
movq xmm0, qword [esp + 0x90]
mov ecx, dword [eax + edx]
movq qword [esp + 0x284], xmm0
test ecx, ecx
je 0x414057
push dword [eax + edx + 4]
lea eax, [esp + 0x13c]
push esi
push eax
call fcn.00415f90
mov esi, eax
lea edi, [esp + 0x1f0]
mov eax, dword [esp + 0x50]
mov ecx, 0x1d
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov cl, byte [esi + ecx]
test cl, cl
je 0x414bc0
mov edx, dword [edi + 0x6c]
mov ecx, dword [edx + eax]
test ecx, ecx
je 0x4140a9
push dword [edx + eax + 4]
lea eax, [esp + 0x13c]
push esi
push eax
call fcn.00415f90
mov edx, dword [esp + 0x4c]
lea edi, [esp + 0x268]
mov esi, eax
mov ecx, 0x1d
mov eax, dword [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov cl, byte [eax + edx]
test cl, cl
je 0x414bc0
mov edi, dword [esp + 0x48]
sub esp, 0xc
lea eax, [esp + 0x328]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
mov eax, dword [edi + 0x6c]
mov esi, dword [esp + 0x50]
movss xmm7, dword [esp + 0x278]
movss dword [esp + 0x18], xmm7
mov ecx, dword [eax + esi + 8]
mov eax, dword [edi + 0x58]
movd xmm1, ecx
movd xmm0, eax
sub eax, ecx
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm1, xmm1
movd xmm2, eax
divss xmm1, xmm0
cvtdq2ps xmm2, xmm2
movaps xmm3, xmm1
movss dword [esp + 8], xmm1
divss xmm2, xmm0
mulss xmm3, dword [esp + 0x268]
movaps xmm5, xmm1
mulss xmm5, dword [esp + 0x26c]
movaps xmm4, xmm1
mulss xmm4, dword [esp + 0x270]
movaps xmm1, xmm2
mulss xmm1, dword [esp + 0x1f4]
movaps xmm0, xmm2
mulss xmm0, dword [esp + 0x1f0]
movss dword [esp + 0xc], xmm2
addss xmm5, xmm1
mulss xmm2, dword [esp + 0x1f8]
movss xmm1, dword [0x4d435c]
addss xmm3, xmm0
movss xmm0, dword [esp + 0x274]
addss xmm4, xmm2
movss dword [esp + 0x14], xmm5
movss xmm2, dword [esp + 0x27c]
movaps xmm5, xmm0
mulss xmm7, xmm1
movaps xmm6, xmm2
movss dword [esp + 0x24], xmm0
mulss xmm5, xmm1
movss dword [esp + 0x38], xmm4
movss xmm4, dword [esp + 0x280]
movaps xmm0, xmm4
mulss xmm6, xmm7
mulss xmm0, xmm5
movups xmmword [esp + 0x100], xmm3
movss xmm3, dword [0x4d4510]
subss xmm6, xmm0
movss dword [esp + 0x44], xmm7
movss dword [esp + 0x1c], xmm5
movss dword [esp + 0x10], xmm2
movss dword [esp + 0x58], xmm4
xorps xmm6, xmm3
movaps xmm0, xmm6
movss dword [esp + 0x28], xmm6
call fcn.004273f0
movss xmm5, dword [0x4d4350]
comiss xmm5, xmm0
movss xmm5, dword [esp + 0x1c]
seta al
test al, al
je 0x414298
movss xmm6, dword [esp + 0x18]
movaps xmm0, xmm4
mulss xmm0, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm6
mulss xmm0, xmm4
mulss xmm1, xmm7
movss dword [esp + 0x24], xmm0
mulss xmm6, xmm5
addss xmm1, xmm0
movss dword [esp + 0x5c], xmm2
movaps xmm0, xmm4
mulss xmm0, xmm2
subss xmm1, dword [0x4d4354]
addss xmm0, xmm6
call fcn.00417b60
movss xmm2, dword [esp + 0x58]
mulss xmm2, dword [esp + 0x44]
movss xmm6, dword [esp + 0x28]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 0x10]
movaps xmm1, xmm0
mulss xmm0, dword [esp + 0x5c]
mulss xmm1, dword [esp + 0x1c]
addss xmm0, dword [esp + 0x24]
addss xmm1, xmm2
movss dword [esp + 0x1c], xmm1
jmp 0x4142d2
xorps xmm0, xmm0
mulss xmm2, xmm5
movss dword [esp + 0x18], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm7
subss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x24]
mulss xmm1, xmm5
mulss xmm0, xmm4
xorps xmm2, xmm3
movss dword [esp + 0x1c], xmm2
addss xmm0, xmm1
subss xmm0, dword [0x4d4354]
movss dword [esp + 0x10], xmm0
movaps xmm0, xmm6
call fcn.004273d0
movss xmm1, dword [esp + 8]
mulss xmm1, xmm0
movss xmm0, dword [esp + 0x1c]
movss dword [esp + 0x30], xmm1
movss xmm1, dword [esp + 0x10]
call fcn.00417b60
movss xmm7, dword [esp + 0x200]
movaps xmm1, xmm0
movss xmm0, dword [esp + 8]
movss xmm2, dword [esp + 0x204]
movss xmm4, dword [esp + 0x208]
movaps xmm6, xmm2
mulss xmm1, xmm0
mulss xmm0, dword [esp + 0x18]
movss xmm3, dword [0x4d4510]
movss dword [esp + 0x20], xmm1
movss xmm1, dword [0x4d435c]
movss dword [esp + 8], xmm0
movss xmm0, dword [esp + 0x1fc]
movaps xmm5, xmm0
movss dword [esp + 0x28], xmm7
mulss xmm7, xmm1
movss dword [esp + 0x44], xmm0
movaps xmm0, xmm4
mulss xmm5, xmm1
mulss xmm6, xmm7
mulss xmm0, xmm5
movss dword [esp + 0x5c], xmm7
movss dword [esp + 0x18], xmm5
subss xmm6, xmm0
movss dword [esp + 0x10], xmm2
movss dword [esp + 0x24], xmm4
xorps xmm6, xmm3
movaps xmm0, xmm6
movss dword [esp + 0x2c], xmm6
call fcn.004273f0
movss xmm5, dword [0x4d4350]
comiss xmm5, xmm0
movss xmm5, dword [esp + 0x18]
seta al
test al, al
je 0x414451
movss xmm3, dword [esp + 0x28]
movaps xmm0, xmm4
mulss xmm0, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm3
mulss xmm0, xmm4
mulss xmm1, xmm7
movss dword [esp + 0x58], xmm0
mulss xmm3, xmm5
addss xmm1, xmm0
movss dword [esp + 0x44], xmm2
movaps xmm0, xmm4
mulss xmm0, xmm2
subss xmm1, dword [0x4d4354]
addss xmm0, xmm3
call fcn.00417b60
movss xmm2, dword [esp + 0x24]
mulss xmm2, dword [esp + 0x5c]
movss xmm6, dword [esp + 0x2c]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esp + 0x10]
movaps xmm1, xmm0
mulss xmm0, dword [esp + 0x44]
mulss xmm1, dword [esp + 0x18]
addss xmm0, dword [esp + 0x58]
addss xmm1, xmm2
movss dword [esp + 0x18], xmm1
jmp 0x41448b
xorps xmm0, xmm0
mulss xmm2, xmm5
movss dword [esp + 0x1c], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm7
subss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x44]
mulss xmm1, xmm5
mulss xmm0, xmm4
xorps xmm2, xmm3
movss dword [esp + 0x18], xmm2
addss xmm0, xmm1
subss xmm0, dword [0x4d4354]
movss dword [esp + 0x10], xmm0
movaps xmm0, xmm6
call fcn.004273d0
movss xmm1, dword [esp + 0xc]
mulss xmm1, xmm0
movss xmm0, dword [esp + 0x18]
movss dword [esp + 0x2c], xmm1
movss xmm1, dword [esp + 0x10]
call fcn.00417b60
movss xmm1, dword [esp + 0xc]
lea eax, [esp + 0x1d0]
movss xmm3, dword [esp + 0x20]
sub esp, 0xc
movss xmm2, dword [esp + 0x3c]
addss xmm2, dword [esp + 0x38]
mulss xmm0, xmm1
mulss xmm1, dword [esp + 0x28]
addss xmm3, xmm0
movss xmm0, dword [esp + 0x14]
addss xmm0, xmm1
movss dword [esp + 8], xmm0
movss dword [esp + 4], xmm2
movss dword [esp], xmm3
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
mov ecx, dword [edi + 0x58]
mov eax, dword [edi + 0x6c]
movss xmm2, dword [esp + 0x210]
movss xmm3, dword [esp + 0x214]
movd xmm1, ecx
mov eax, dword [eax + esi + 8]
sub ecx, eax
cvtdq2ps xmm1, xmm1
mov esi, dword [edi + 0x40]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov ecx, dword [esp + 0x3c]
movd xmm4, eax
divss xmm0, xmm1
mov eax, dword [ecx + esi + 8]
mov dword [esp + 0xa8], eax
cvtdq2ps xmm4, xmm4
movss xmm7, dword [ecx + esi + 0x10]
divss xmm4, xmm1
movss xmm1, dword [esp + 0x20c]
mulss xmm2, xmm0
movaps xmm5, xmm4
mulss xmm5, dword [esp + 0x288]
movaps xmm6, xmm4
mulss xmm4, dword [esp + 0x28c]
mulss xmm6, dword [esp + 0x284]
addss xmm5, xmm2
mulss xmm3, xmm0
mulss xmm1, xmm0
movq xmm0, qword [ecx + esi]
addss xmm4, xmm3
movq qword [esp + 0xa0], xmm0
movaps xmm3, xmm7
movups xmm0, xmmword [esp + 0x100]
addss xmm6, xmm1
movss dword [esp + 0x40], xmm5
addss xmm0, dword [esp + 0xa0]
movss xmm5, dword [ecx + esi + 0xc]
addss xmm3, xmm7
addss xmm5, xmm5
movss dword [esp + 0x34], xmm4
movss xmm4, dword [ecx + esi + 0x18]
movss dword [esp + 0x58], xmm6
movss xmm6, dword [ecx + esi + 0x14]
movups xmmword [esp + 0x100], xmm0
movss xmm0, dword [esp + 0x14]
movaps xmm2, xmm3
addss xmm0, dword [esp + 0xa4]
movss dword [esp + 0x20], xmm3
movss dword [esp + 0x30], xmm5
mulss xmm2, xmm6
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0x38]
addss xmm0, dword [esp + 0xa8]
movss dword [esp + 0x38], xmm0
movss xmm1, dword [0x4d4510]
movaps xmm0, xmm5
mulss xmm0, xmm4
subss xmm2, xmm0
xorps xmm2, xmm1
movaps xmm0, xmm2
movss dword [esp + 0x24], xmm2
call fcn.004273f0
movss xmm2, dword [0x4d4350]
comiss xmm2, xmm0
seta al
test al, al
je 0x4146f8
movaps xmm0, xmm4
movaps xmm2, xmm6
addss xmm0, xmm4
movaps xmm1, xmm3
addss xmm2, xmm6
mulss xmm1, xmm7
mulss xmm0, xmm4
movss dword [esp + 0x2c], xmm2
addss xmm1, xmm0
movss dword [esp + 0x28], xmm0
movaps xmm0, xmm2
movaps xmm2, xmm5
mulss xmm0, xmm4
mulss xmm2, xmm7
subss xmm1, dword [0x4d4354]
addss xmm0, xmm2
call fcn.00417b60
mov eax, dword [esp + 0x3c]
movss xmm2, dword [esp + 0x20]
movss xmm1, dword [esp + 0x30]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esp + 0x2c]
mulss xmm2, dword [eax + esi + 0x18]
mulss xmm1, dword [eax + esi + 0x14]
mulss xmm0, dword [eax + esi + 0x14]
addss xmm2, xmm1
addss xmm0, dword [esp + 0x28]
jmp 0x414728
xorps xmm0, xmm0
mulss xmm3, xmm4
movss dword [esp + 0x1c], xmm0
movaps xmm2, xmm5
mulss xmm5, dword [ecx + esi + 0xc]
movaps xmm0, xmm4
mulss xmm2, xmm6
addss xmm0, xmm4
subss xmm2, xmm3
mulss xmm0, xmm4
xorps xmm2, xmm1
addss xmm0, xmm5
subss xmm0, dword [0x4d4354]
movaps xmm1, xmm0
movaps xmm0, xmm2
call fcn.00417b60
movss dword [esp + 0x44], xmm0
movss xmm0, dword [esp + 0x24]
call fcn.004273d0
movss xmm7, dword [esp + 0x1d4]
movss xmm1, dword [0x4d435c]
movss xmm2, dword [esp + 0x1d8]
movss xmm4, dword [esp + 0x1dc]
movaps xmm6, xmm2
movss xmm3, dword [0x4d4510]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x1d0]
movaps xmm5, xmm0
movss dword [esp + 0x20], xmm7
mulss xmm7, xmm1
movss dword [esp + 0x28], xmm0
movaps xmm0, xmm4
mulss xmm5, xmm1
mulss xmm6, xmm7
mulss xmm0, xmm5
movss dword [esp + 0x2c], xmm7
movss dword [esp + 0xc], xmm5
subss xmm6, xmm0
movss dword [esp + 8], xmm2
movss dword [esp + 0x30], xmm4
xorps xmm6, xmm3
movaps xmm0, xmm6
movss dword [esp + 0x5c], xmm6
call fcn.004273f0
movss xmm5, dword [0x4d4350]
comiss xmm5, xmm0
movss xmm5, dword [esp + 0xc]
seta al
test al, al
je 0x41487b
movss xmm3, dword [esp + 0x20]
movaps xmm0, xmm4
mulss xmm0, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm3
mulss xmm0, xmm4
mulss xmm1, xmm7
movss dword [esp + 0x24], xmm0
mulss xmm3, xmm5
addss xmm1, xmm0
movss dword [esp + 0x28], xmm2
movaps xmm0, xmm4
mulss xmm0, xmm2
subss xmm1, dword [0x4d4354]
addss xmm0, xmm3
call fcn.00417b60
movss xmm2, dword [esp + 0x30]
mulss xmm2, dword [esp + 0x2c]
movss xmm6, dword [esp + 0x5c]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 8]
movaps xmm1, xmm0
mulss xmm0, dword [esp + 0x28]
mulss xmm1, dword [esp + 0xc]
addss xmm0, dword [esp + 0x24]
addss xmm1, xmm2
movss dword [esp + 0xc], xmm1
jmp 0x4148b5
xorps xmm0, xmm0
mulss xmm2, xmm5
movss dword [esp + 0x18], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm7
subss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x28]
mulss xmm1, xmm5
mulss xmm0, xmm4
xorps xmm2, xmm3
movss dword [esp + 0xc], xmm2
addss xmm0, xmm1
subss xmm0, dword [0x4d4354]
movss dword [esp + 8], xmm0
movaps xmm0, xmm6
call fcn.004273d0
movss xmm1, dword [esp + 0x10]
addss xmm1, xmm0
movss xmm0, dword [esp + 0xc]
movss dword [esp + 0x10], xmm1
movss xmm1, dword [esp + 8]
call fcn.00417b60
movss xmm1, dword [esp + 0x18]
lea eax, [esp + 0x1c0]
addss xmm1, dword [esp + 0x1c]
addss xmm0, dword [esp + 0x44]
sub esp, 0xc
movss dword [esp + 8], xmm1
movss xmm1, dword [esp + 0x1c]
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
mov ecx, dword [edi + 0x40]
mov edx, dword [esp + 0x3c]
movss xmm7, dword [esp + 0x1c4]
movss xmm3, dword [esp + 0x1c0]
movaps xmm4, xmm7
movss xmm1, dword [esp + 0x14]
movq xmm0, qword [edx + ecx + 0x1c]
movq qword [esp + 0xd0], xmm0
movq xmm0, xmm0
mov eax, dword [edx + ecx + 0x24]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [edx + ecx + 0x1c]
movq qword [esp + 0xb8], xmm0
movss xmm0, dword [esp + 0xb8]
mulss xmm0, dword [esp + 0x58]
mov ecx, dword [edi + 0x4c]
mulss xmm4, dword [0x4d435c]
add ecx, edx
mov dword [esp + 0xd8], eax
movss dword [esp + 0xac], xmm0
movss xmm0, dword [esp + 0x40]
mulss xmm0, dword [esp + 0xc8]
movaps xmm2, xmm4
mulss xmm3, dword [0x4d435c]
movss xmm6, dword [esp + 0x1c8]
movss xmm5, dword [esp + 0x1cc]
movss dword [esp + 0xb0], xmm0
movss xmm0, dword [esp + 0x34]
mulss xmm0, dword [esp + 0xd8]
mulss xmm2, xmm6
movss dword [esp + 0xb4], xmm0
movss xmm0, dword [esp + 0x38]
movss dword [esp + 0x11c], xmm0
movups xmm0, xmmword [esp + 0x100]
mov eax, dword [esp + 0x11c]
movss dword [esp + 0x40], xmm4
unpcklps xmm0, xmm1
movq qword [ecx], xmm0
movaps xmm0, xmm3
mulss xmm0, xmm5
mov dword [ecx + 8], eax
movss dword [esp + 0x34], xmm3
subss xmm2, xmm0
movss dword [esp + 0x14], xmm2
movss xmm0, dword [esp + 0x14]
movss xmm2, dword [0x4d4510]
xorps xmm0, xmm2
movss dword [esp + 0x14], xmm0
call fcn.004273f0
movss xmm1, dword [0x4d4350]
comiss xmm1, xmm0
movss xmm1, dword [0x4d435c]
seta al
test al, al
je 0x414afc
movaps xmm0, xmm5
movaps xmm2, xmm6
mulss xmm0, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm7
mulss xmm0, xmm5
mulss xmm1, xmm4
movss dword [esp + 0x20], xmm0
mulss xmm7, xmm3
addss xmm1, xmm0
movss dword [esp + 8], xmm2
movaps xmm0, xmm2
mulss xmm0, xmm5
subss xmm1, dword [0x4d4354]
addss xmm0, xmm7
call fcn.00417b60
movss xmm3, dword [esp + 0x1c8]
movss xmm1, dword [esp + 0x34]
movss xmm2, dword [esp + 0x40]
mulss xmm2, dword [esp + 0x1cc]
mulss xmm1, xmm3
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 8]
addss xmm1, xmm2
mulss xmm0, xmm3
addss xmm0, dword [esp + 0x20]
movss dword [esp + 0x18], xmm1
jmp 0x414b35
xorps xmm0, xmm0
mulss xmm4, xmm5
movss dword [esp + 0xc], xmm0
movaps xmm0, xmm3
mulss xmm3, dword [esp + 0x1c0]
mulss xmm0, xmm6
subss xmm0, xmm4
xorps xmm0, xmm2
movss dword [esp + 0x18], xmm0
movaps xmm0, xmm5
mulss xmm0, xmm1
mulss xmm0, xmm5
addss xmm0, xmm3
subss xmm0, dword [0x4d4354]
movss dword [esp + 8], xmm0
movss xmm0, dword [esp + 0x14]
call fcn.004273d0
movss xmm1, dword [esp + 0xc]
sub esp, 8
mov esi, dword [edi + 0x4c]
add esi, dword [esp + 0x44]
movss dword [esp + 4], xmm1
movss xmm1, dword [esp + 0x10]
movss dword [esp], xmm0
movss xmm0, dword [esp + 0x20]
call fcn.00417b60
push ecx
lea eax, [esp + 0x2fc]
movss dword [esp], xmm0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
movups xmm0, xmmword [esp + 0x2f0]
mov ecx, dword [esp + 0xb4]
movups xmmword [esi + 0xc], xmm0
mov eax, dword [edi + 0x4c]
mov esi, dword [esp + 0x3c]
movq xmm0, qword [esp + 0xac]
movq qword [esi + eax + 0x1c], xmm0
mov dword [esi + eax + 0x24], ecx
jmp 0x414fe6
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
movss xmm1, dword [esp + 0x1f4]
mov eax, dword [edi + 0x40]
mov ecx, dword [edi + 0x4c]
movq xmm0, qword [eax + edx]
mov eax, dword [eax + edx + 8]
movq qword [esp + 0x64], xmm0
movss xmm2, dword [esp + 0x64]
addss xmm2, dword [esp + 0x1f0]
movss xmm0, dword [esp + 0x1f8]
addss xmm1, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
addss xmm0, dword [esp + 0x6c]
unpcklps xmm2, xmm1
movq qword [ecx + edx], xmm2
movss dword [esp + 0x128], xmm0
mov eax, dword [esp + 0x128]
mov dword [ecx + edx + 8], eax
mov esi, dword [edi + 0x40]
movss xmm1, dword [0x4d4510]
add esi, edx
movss xmm7, dword [esi + 0x10]
movss xmm3, dword [esi + 0xc]
movaps xmm5, xmm7
movss xmm6, dword [esi + 0x14]
addss xmm5, xmm7
movss xmm4, dword [esi + 0x18]
addss xmm3, xmm3
movaps xmm2, xmm5
movss dword [esp + 0x40], xmm5
movaps xmm0, xmm3
mulss xmm2, xmm6
mulss xmm0, xmm4
movss dword [esp + 0x34], xmm3
subss xmm2, xmm0
xorps xmm2, xmm1
movaps xmm0, xmm2
movss dword [esp + 0x2c], xmm2
call fcn.004273f0
movss xmm2, dword [0x4d4350]
comiss xmm2, xmm0
seta al
test al, al
je 0x414d13
movaps xmm0, xmm4
movaps xmm1, xmm5
addss xmm0, xmm4
mulss xmm1, xmm7
movaps xmm2, xmm6
addss xmm2, xmm6
mulss xmm0, xmm4
movss dword [esp + 0x20], xmm2
addss xmm1, xmm0
movss dword [esp + 0x30], xmm0
movaps xmm0, xmm3
mulss xmm2, xmm4
mulss xmm0, xmm7
subss xmm1, dword [0x4d4354]
addss xmm0, xmm2
call fcn.00417b60
movss xmm1, dword [esp + 0x34]
movss xmm2, dword [esp + 0x40]
mulss xmm1, dword [esi + 0x14]
mulss xmm2, dword [esi + 0x18]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [esp + 0x20]
mulss xmm0, dword [esi + 0x14]
addss xmm2, xmm1
addss xmm0, dword [esp + 0x30]
jmp 0x414d42
xorps xmm0, xmm0
mulss xmm5, xmm4
movss dword [esp + 0x1c], xmm0
movaps xmm2, xmm3
mulss xmm3, dword [esi + 0xc]
movaps xmm0, xmm4
mulss xmm2, xmm6
addss xmm0, xmm4
subss xmm2, xmm5
mulss xmm0, xmm4
xorps xmm2, xmm1
addss xmm0, xmm3
subss xmm0, dword [0x4d4354]
movaps xmm1, xmm0
movaps xmm0, xmm2
call fcn.00417b60
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0x2c]
call fcn.004273d0
movss xmm7, dword [esp + 0x200]
movss xmm1, dword [0x4d435c]
movss xmm2, dword [esp + 0x204]
movss xmm4, dword [esp + 0x208]
movaps xmm5, xmm2
movss xmm3, dword [0x4d4510]
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0x1fc]
movaps xmm6, xmm0
movss dword [esp + 0x34], xmm7
mulss xmm7, xmm1
movss dword [esp + 0x30], xmm0
movaps xmm0, xmm4
mulss xmm6, xmm1
mulss xmm5, xmm7
mulss xmm0, xmm6
movss dword [esp + 0x20], xmm7
movss dword [esp + 0xc], xmm6
subss xmm5, xmm0
movss dword [esp + 8], xmm2
movss dword [esp + 0x40], xmm4
xorps xmm5, xmm3
movaps xmm0, xmm5
movss dword [esp + 0x28], xmm5
call fcn.004273f0
movss xmm6, dword [0x4d4350]
comiss xmm6, xmm0
movss xmm6, dword [esp + 0xc]
seta al
test al, al
je 0x414e95
movss xmm3, dword [esp + 0x34]
movaps xmm0, xmm4
mulss xmm0, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm3
mulss xmm0, xmm4
mulss xmm1, xmm7
movss dword [esp + 0x2c], xmm0
mulss xmm3, xmm6
addss xmm1, xmm0
movss dword [esp + 0x30], xmm2
movaps xmm0, xmm4
mulss xmm0, xmm2
subss xmm1, dword [0x4d4354]
addss xmm0, xmm3
call fcn.00417b60
movss xmm2, dword [esp + 0x40]
mulss xmm2, dword [esp + 0x20]
movss xmm5, dword [esp + 0x28]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 8]
movaps xmm1, xmm0
mulss xmm0, dword [esp + 0x30]
mulss xmm1, dword [esp + 0xc]
addss xmm0, dword [esp + 0x2c]
addss xmm1, xmm2
movss dword [esp + 0xc], xmm1
jmp 0x414ecf
xorps xmm0, xmm0
mulss xmm2, xmm6
movss dword [esp + 0x18], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm7
subss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x30]
mulss xmm1, xmm6
mulss xmm0, xmm4
xorps xmm2, xmm3
movss dword [esp + 0xc], xmm2
addss xmm0, xmm1
subss xmm0, dword [0x4d4354]
movss dword [esp + 8], xmm0
movaps xmm0, xmm5
call fcn.004273d0
movss xmm1, dword [esp + 0x14]
addss xmm1, xmm0
movss xmm0, dword [esp + 0xc]
movss dword [esp + 0x14], xmm1
movss xmm1, dword [esp + 8]
call fcn.00417b60
movss xmm1, dword [esp + 0x18]
lea eax, [esp + 0x1e0]
addss xmm1, dword [esp + 0x1c]
addss xmm0, dword [esp + 0x24]
mov esi, dword [edi + 0x4c]
sub esp, 0xc
add esi, dword [esp + 0x48]
movss dword [esp + 8], xmm1
movss xmm1, dword [esp + 0x20]
movss dword [esp + 4], xmm1
movss dword [esp], xmm0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
movups xmm0, xmmword [esp + 0x1e0]
movss xmm1, dword [esp + 0x210]
movups xmmword [esi + 0xc], xmm0
mov ecx, dword [edi + 0x40]
mov esi, dword [esp + 0x3c]
movq xmm0, qword [esi + ecx + 0x1c]
mov eax, dword [esi + ecx + 0x24]
movq qword [esp + 0xf4], xmm0
movq xmm0, xmm0
movq qword [esp + 0xe8], xmm0
movq xmm0, qword [esi + ecx + 0x1c]
mulss xmm1, dword [esp + 0xec]
mov ecx, dword [edi + 0x4c]
movq qword [esp + 0xdc], xmm0
movss xmm2, dword [esp + 0xdc]
movss xmm0, dword [esp + 0x214]
mulss xmm2, dword [esp + 0x20c]
mov dword [esp + 0xfc], eax
mulss xmm0, dword [esp + 0xfc]
unpcklps xmm2, xmm1
movq qword [esi + ecx + 0x1c], xmm2
movss dword [esp + 0x134], xmm0
mov eax, dword [esp + 0x134]
mov dword [esi + ecx + 0x24], eax
inc dword [esp + 0x54]
add esi, 0x74
add dword [esp + 0x50], 0xc
mov ecx, dword [edi + 0x5c]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x54]
cmp esi, ecx
jl 0x413f31
movss xmm3, dword [0x4d4354]
movss xmm2, dword [0x4d4510]
xor edx, edx
mov dword [esp + 0x14], edx
test ecx, ecx
jle 0x415239
xor esi, esi
mov dword [esp + 0x38], esi
nop dword [eax]
mov eax, dword [edi + 0x34]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x34], eax
test eax, eax
je 0x415212
mov eax, dword [edi + 0x4c]
movq xmm0, qword [eax + esi]
mov ecx, dword [eax + esi + 8]
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov esi, dword [edi + 0x4c]
add esi, dword [esp + 0x38]
movss xmm1, dword [esi + 0x10]
movss xmm4, dword [esi + 0xc]
addss xmm1, xmm1
movss xmm7, dword [esi + 0x14]
addss xmm4, xmm4
movss xmm5, dword [esi + 0x18]
movaps xmm6, xmm1
movss dword [esp + 0x10], xmm1
movaps xmm0, xmm4
mulss xmm6, xmm7
mulss xmm0, xmm5
movss dword [esp + 0x34], xmm4
subss xmm6, xmm0
xorps xmm6, xmm2
movaps xmm0, xmm6
movss dword [esp + 0x20], xmm6
call fcn.004273f0
movss xmm2, dword [0x4d4350]
comiss xmm2, xmm0
movss xmm2, dword [0x4d4510]
seta al
test al, al
je 0x415155
mulss xmm1, dword [esi + 0x10]
movaps xmm0, xmm5
addss xmm0, xmm5
movaps xmm2, xmm7
addss xmm2, xmm7
mulss xmm0, xmm5
movss dword [esp + 8], xmm2
addss xmm1, xmm0
movss dword [esp + 0x40], xmm0
movaps xmm0, xmm2
movaps xmm2, xmm4
mulss xmm2, dword [esi + 0x10]
mulss xmm0, xmm5
subss xmm1, xmm3
addss xmm0, xmm2
call fcn.00417b60
movss xmm1, dword [esp + 0x34]
mulss xmm1, dword [esi + 0x14]
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0x10]
mulss xmm0, dword [esi + 0x18]
movss xmm6, dword [esp + 0x20]
addss xmm0, xmm1
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 8]
mulss xmm0, dword [esi + 0x14]
addss xmm0, dword [esp + 0x40]
subss xmm0, dword [0x4d4354]
jmp 0x41518e
xorps xmm0, xmm0
mulss xmm1, xmm5
movss dword [esp + 0xc], xmm0
movaps xmm0, xmm4
mulss xmm4, dword [esi + 0xc]
mulss xmm0, xmm7
subss xmm0, xmm1
xorps xmm0, xmm2
movss dword [esp + 0x10], xmm0
movaps xmm0, xmm5
addss xmm0, xmm5
mulss xmm0, xmm5
addss xmm0, xmm4
subss xmm0, xmm3
movss dword [esp + 8], xmm0
movaps xmm0, xmm6
call fcn.004273d0
mov ecx, dword [esp + 0x14]
sub esp, 8
mov eax, dword [edi + 0x34]
movss xmm1, dword [esp + 0x14]
movss dword [esp + 4], xmm1
mov eax, dword [eax + ecx*4]
movss xmm1, dword [esp + 0x10]
movss dword [esp], xmm0
movss xmm0, dword [esp + 0x18]
mov esi, dword [eax]
call fcn.00417b60
push ecx
lea eax, [esp + 0x1ec]
movss dword [esp], xmm0
push eax
call dword [sym.imp.d3dx9_43.dll_D3DXQuaternionRotationYawPitchRoll]
movups xmm0, xmmword [esp + 0x1e0]
mov edx, dword [esp + 0x14]
movups xmmword [esi + 0xc], xmm0
mov eax, dword [edi + 0x4c]
mov esi, dword [esp + 0x38]
movq xmm0, qword [esi + eax + 0x1c]
mov ecx, dword [esi + eax + 0x24]
mov eax, dword [edi + 0x34]
mov eax, dword [eax + edx*4]
mov eax, dword [eax]
movq qword [eax + 0x1c], xmm0
mov dword [eax + 0x24], ecx
mov ecx, dword [edi + 0x5c]
inc edx
movss xmm3, dword [0x4d4354]
add esi, 0x74
movss xmm2, dword [0x4d4510]
mov dword [esp + 0x14], edx
mov dword [esp + 0x38], esi
cmp edx, ecx
jl 0x415030
xor esi, esi
test ecx, ecx
jle 0x415272
mov eax, dword [esp + 0x4c]
xor edx, edx
cmp byte [esi + eax], 0
jne 0x415269
mov eax, dword [edi + 0x60]
mov ecx, dword [edi + 0x6c]
mov eax, dword [edx + eax]
mov dword [edx + ecx], eax
mov eax, dword [edi + 0x60]
mov ecx, dword [edi + 0x6c]
mov eax, dword [edx + eax + 4]
mov dword [edx + ecx + 4], eax
mov eax, dword [esp + 0x4c]
inc esi
add edx, 0xc
cmp esi, dword [edi + 0x5c]
jl 0x415245
push dword [esp + 0x60]
call fcn.00496eba
add esp, 4
push dword [esp + 0x4c]
call fcn.00496eba
add esp, 4
mov ecx, dword [esp + 0x32c]
pop edi
pop esi
xor ecx, esp
call fcn.004968dc
mov esp, ebp
pop ebp
ret
call fcn.004048c0
call fcn.0049c5bf
int3