// File: /workspace/github_c_makefile_star2_O0/halcy[P]quasi_crystals_bot/Vector/MatrixDouble.c
// Function: dmat4x3affineinverse
dmat4x3_t dmat4x3affineinverse(dmat4x3_t m)
{
	dmat4x3_t res;
	double det=dmat4x3affinedet(m); // singular if det==0

	res.m[0]=(m.m[4]*m.m[8]-m.m[5]*m.m[7])/det;
	res.m[3]=-(m.m[3]*m.m[8]-m.m[5]*m.m[6])/det;
	res.m[6]=(m.m[3]*m.m[7]-m.m[4]*m.m[6])/det;

	res.m[1]=-(m.m[1]*m.m[8]-m.m[2]*m.m[7])/det;
	res.m[4]=(m.m[0]*m.m[8]-m.m[2]*m.m[6])/det;
	res.m[7]=-(m.m[0]*m.m[7]-m.m[1]*m.m[6])/det;

	res.m[2]=(m.m[1]*m.m[5]-m.m[2]*m.m[4])/det;
	res.m[5]=-(m.m[0]*m.m[5]-m.m[2]*m.m[3])/det;
	res.m[8]=(m.m[0]*m.m[4]-m.m[1]*m.m[3])/det;

	res.m[9]=-(m.m[9]*res.m[0]+m.m[10]*res.m[3]+m.m[11]*res.m[6]);
	res.m[10]=-(m.m[9]*res.m[1]+m.m[10]*res.m[4]+m.m[11]*res.m[7]);
	res.m[11]=-(m.m[9]*res.m[2]+m.m[10]*res.m[5]+m.m[11]*res.m[8]);


	return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq -0x80(%rsp), %rsp
movq %rdi, -0x18(%rbp)
movq %rdi, -0x10(%rbp)
leaq 0x10(%rbp), %rcx
movq %rcx, -0x20(%rbp)
movups 0x50(%rcx), %xmm0
movq %rsp, %rax
movups %xmm0, 0x50(%rax)
movups 0x40(%rcx), %xmm0
movups %xmm0, 0x40(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups 0x30(%rcx), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x133a0
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movsd %xmm0, -0x8(%rbp)
movsd 0x20(%rcx), %xmm0
mulsd 0x40(%rcx), %xmm0
movsd 0x28(%rcx), %xmm1
mulsd 0x38(%rcx), %xmm1
subsd %xmm1, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, (%rdi)
movsd 0x18(%rcx), %xmm0
mulsd 0x40(%rcx), %xmm0
movsd 0x28(%rcx), %xmm1
mulsd 0x30(%rcx), %xmm1
subsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x18(%rdi)
movsd 0x18(%rcx), %xmm0
mulsd 0x38(%rcx), %xmm0
movsd 0x20(%rcx), %xmm1
mulsd 0x30(%rcx), %xmm1
subsd %xmm1, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x30(%rdi)
movsd 0x8(%rcx), %xmm0
mulsd 0x40(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
mulsd 0x38(%rcx), %xmm1
subsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x8(%rdi)
movsd (%rcx), %xmm0
mulsd 0x40(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
mulsd 0x30(%rcx), %xmm1
subsd %xmm1, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x20(%rdi)
movsd (%rcx), %xmm0
mulsd 0x38(%rcx), %xmm0
movsd 0x8(%rcx), %xmm1
mulsd 0x30(%rcx), %xmm1
subsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x38(%rdi)
movsd 0x8(%rcx), %xmm0
mulsd 0x28(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
mulsd 0x20(%rcx), %xmm1
subsd %xmm1, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x10(%rdi)
movsd (%rcx), %xmm0
mulsd 0x28(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
mulsd 0x18(%rcx), %xmm1
subsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x28(%rdi)
movsd (%rcx), %xmm0
mulsd 0x20(%rcx), %xmm0
movsd 0x8(%rcx), %xmm1
mulsd 0x18(%rcx), %xmm1
subsd %xmm1, %xmm0
divsd -0x8(%rbp), %xmm0
movsd %xmm0, 0x40(%rdi)
movsd 0x48(%rcx), %xmm0
mulsd (%rdi), %xmm0
movsd 0x50(%rcx), %xmm1
mulsd 0x18(%rdi), %xmm1
addsd %xmm1, %xmm0
movsd 0x58(%rcx), %xmm1
mulsd 0x30(%rdi), %xmm1
addsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
movsd %xmm0, 0x48(%rdi)
movsd 0x48(%rcx), %xmm0
mulsd 0x8(%rdi), %xmm0
movsd 0x50(%rcx), %xmm1
mulsd 0x20(%rdi), %xmm1
addsd %xmm1, %xmm0
movsd 0x58(%rcx), %xmm1
mulsd 0x38(%rdi), %xmm1
addsd %xmm1, %xmm0
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
movsd %xmm0, 0x50(%rdi)
movsd 0x48(%rcx), %xmm0
mulsd 0x10(%rdi), %xmm0
movsd 0x50(%rcx), %xmm1
mulsd 0x28(%rdi), %xmm1
addsd %xmm1, %xmm0
movsd 0x58(%rcx), %xmm1
mulsd 0x40(%rdi), %xmm1
addsd %xmm1, %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
movsd %xmm0, 0x58(%rdi)
leaq 0x80(%rsp), %rsp
popq %rbp
retq
nopl (%rax,%rax)