// File: /workspace/github_c_makefile_star2_O1/halcy[P]quasi_crystals_bot/Vector/Matrix.c
// Function: mat3x3inverselookat
mat3x3_t mat3x3inverselookat(vec3_t eye,vec3_t center,vec3_t up)
{
	vec3_t backward=vec3norm(vec3sub(eye,center));
	vec3_t right=vec3norm(vec3cross(up,backward));
	vec3_t actualup=vec3norm(vec3cross(backward,right));

	return mat3x3cols(right,actualup,backward);
}

// Assembly:
pushq %rbx
leaq -0x30(%rsp), %rsp
subps %xmm2, %xmm0
subss %xmm3, %xmm1
movaps %xmm0, %xmm6
movaps %xmm1, %xmm10
mulss %xmm0, %xmm6
mulss %xmm1, %xmm10
movshdup %xmm0, %xmm9            # xmm9 = xmm0[1,1,3,3]
movaps %xmm9, %xmm7
addss %xmm6, %xmm10
mulss %xmm9, %xmm7
addss %xmm7, %xmm10
xorps %xmm6, %xmm6
rsqrtss %xmm10, %xmm6
movaps %xmm10, %xmm7
mulss %xmm6, %xmm7
movss 0x4bf0(%rip), %xmm8     # 0xe010
mulss %xmm7, %xmm8
mulss %xmm6, %xmm7
addss 0x4be3(%rip), %xmm7     # 0xe014
andps 0x4bf7(%rip), %xmm10    # 0xe030
cmpltss 0x4bd5(%rip), %xmm10    # 0xe018
mulss %xmm8, %xmm7
andnps %xmm7, %xmm10
xorps %xmm2, %xmm2
ucomiss %xmm2, %xmm10
movq %rdi, %rbx
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
je 0x9485
movss 0x4ba2(%rip), %xmm6     # 0xe008
divss %xmm10, %xmm6
mulss %xmm6, %xmm0
mulss %xmm6, %xmm9
mulss %xmm6, %xmm1
insertps $0x10, %xmm9, %xmm0     # xmm0 = xmm0[0],xmm9[0],xmm0[2,3]
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm2, 0x10(%rsp)
movss %xmm3, 0x8(%rsp)
movaps %xmm4, %xmm0
movaps %xmm5, %xmm1
callq 0xdeb0
movaps %xmm0, %xmm4
movaps %xmm1, %xmm7
mulss %xmm0, %xmm4
mulss %xmm1, %xmm7
movshdup %xmm0, %xmm8            # xmm8 = xmm0[1,1,3,3]
movaps %xmm8, %xmm5
addss %xmm4, %xmm7
mulss %xmm8, %xmm5
addss %xmm5, %xmm7
xorps %xmm4, %xmm4
rsqrtss %xmm7, %xmm4
movaps %xmm7, %xmm5
mulss %xmm4, %xmm5
movss 0x4b3b(%rip), %xmm6     # 0xe010
mulss %xmm5, %xmm6
mulss %xmm4, %xmm5
addss 0x4b2f(%rip), %xmm5     # 0xe014
andps 0x4b44(%rip), %xmm7     # 0xe030
cmpltss 0x4b23(%rip), %xmm7     # 0xe018
mulss %xmm6, %xmm5
andnps %xmm5, %xmm7
ucomiss 0x4b19(%rip), %xmm7     # 0xe01c
xorps %xmm3, %xmm3
xorps %xmm2, %xmm2
je 0x9531
movss 0x4af5(%rip), %xmm4     # 0xe008
divss %xmm7, %xmm4
mulss %xmm4, %xmm0
mulss %xmm4, %xmm8
mulss %xmm4, %xmm1
insertps $0x10, %xmm8, %xmm0     # xmm0 = xmm0[0],xmm8[0],xmm0[2,3]
movaps %xmm0, %xmm2
movaps %xmm1, %xmm3
movaps %xmm2, 0x20(%rsp)
movss %xmm3, 0xc(%rsp)
movaps 0x10(%rsp), %xmm0
movss 0x8(%rsp), %xmm1
callq 0xdeb0
movaps %xmm0, %xmm4
movaps %xmm1, %xmm3
mulss %xmm0, %xmm4
mulss %xmm1, %xmm3
movshdup %xmm0, %xmm2            # xmm2 = xmm0[1,1,3,3]
movaps %xmm2, %xmm5
addss %xmm4, %xmm3
mulss %xmm2, %xmm5
addss %xmm5, %xmm3
xorps %xmm4, %xmm4
rsqrtss %xmm3, %xmm4
movaps %xmm3, %xmm5
mulss %xmm4, %xmm5
movss 0x4a8d(%rip), %xmm6     # 0xe010
mulss %xmm5, %xmm6
mulss %xmm4, %xmm5
addss 0x4a81(%rip), %xmm5     # 0xe014
andps 0x4a96(%rip), %xmm3     # 0xe030
cmpltss 0x4a75(%rip), %xmm3     # 0xe018
mulss %xmm6, %xmm5
andnps %xmm5, %xmm3
xorps %xmm4, %xmm4
ucomiss %xmm4, %xmm3
xorps %xmm5, %xmm5
je 0x95d9
movss 0x4a4b(%rip), %xmm4     # 0xe008
divss %xmm3, %xmm4
mulss %xmm4, %xmm0
mulss %xmm4, %xmm2
mulss %xmm4, %xmm1
insertps $0x10, %xmm2, %xmm0     # xmm0 = xmm0[0],xmm2[0],xmm0[2,3]
movaps %xmm0, %xmm5
movaps %xmm1, %xmm4
movaps 0x20(%rsp), %xmm0
movss %xmm0, (%rbx)
extractps $0x1, %xmm0, 0x4(%rbx)
movss 0xc(%rsp), %xmm0
movss %xmm0, 0x8(%rbx)
movss %xmm5, 0xc(%rbx)
extractps $0x1, %xmm5, 0x10(%rbx)
movss %xmm4, 0x14(%rbx)
movaps 0x10(%rsp), %xmm0
movss %xmm0, 0x18(%rbx)
movq %rbx, %rax
extractps $0x1, %xmm0, 0x1c(%rbx)
movss 0x8(%rsp), %xmm0
movss %xmm0, 0x20(%rbx)
leaq 0x30(%rsp), %rsp
popq %rbx
retq