// File: /workspace/github_c_makefile_star2_O2/halcy[P]quasi_crystals_bot/Vector/Matrix.c
// Function: mat3x3mul
mat3x3_t mat3x3mul(mat3x3_t a,mat3x3_t b)
{
	return mat3x3(a.m[0]*b.m[0]+a.m[3]*b.m[1]+a.m[6]*b.m[2],
	              a.m[0]*b.m[3]+a.m[3]*b.m[4]+a.m[6]*b.m[5],
	              a.m[0]*b.m[6]+a.m[3]*b.m[7]+a.m[6]*b.m[8],

	              a.m[1]*b.m[0]+a.m[4]*b.m[1]+a.m[7]*b.m[2],
	              a.m[1]*b.m[3]+a.m[4]*b.m[4]+a.m[7]*b.m[5],
	              a.m[1]*b.m[6]+a.m[4]*b.m[7]+a.m[7]*b.m[8],

	              a.m[2]*b.m[0]+a.m[5]*b.m[1]+a.m[8]*b.m[2],
	              a.m[2]*b.m[3]+a.m[5]*b.m[4]+a.m[8]*b.m[5],
	              a.m[2]*b.m[6]+a.m[5]*b.m[7]+a.m[8]*b.m[8]);
}

// Assembly:
movsd 0x30(%rsp), %xmm11
movsd 0x8(%rsp), %xmm1
movsd 0x14(%rsp), %xmm2
movss 0x10(%rsp), %xmm7
movss 0x1c(%rsp), %xmm10
movss 0x40(%rsp), %xmm6
movss 0x3c(%rsp), %xmm12
movups 0x3c(%rsp), %xmm15
movss 0x48(%rsp), %xmm0
movss 0x4c(%rsp), %xmm3
movss 0x20(%rsp), %xmm14
movq %rdi, %rax
movaps %xmm11, %xmm13
movaps %xmm2, %xmm8
movaps %xmm1, %xmm4
movaps %xmm7, %xmm9
movaps %xmm10, %xmm5
shufps $0xc5, %xmm2, %xmm2     # xmm2 = xmm2[1,1,0,3]
shufps $0xc5, %xmm1, %xmm1     # xmm1 = xmm1[1,1,0,3]
shufps $0xc5, %xmm11, %xmm13   # xmm13 = xmm13[1,1],xmm11[0,3]
shufps $0xd4, %xmm11, %xmm11   # xmm11 = xmm11[0,1,1,3]
insertps $0x20, %xmm7, %xmm8     # xmm8 = xmm8[0,1],xmm7[0],xmm8[3]
insertps $0x20, %xmm10, %xmm4    # xmm4 = xmm4[0,1],xmm10[0],xmm4[3]
insertps $0x10, %xmm10, %xmm1    # xmm1 = xmm1[0],xmm10[0],xmm1[2,3]
insertps $0x10, %xmm7, %xmm2     # xmm2 = xmm2[0],xmm7[0],xmm2[2,3]
mulss %xmm0, %xmm9
mulss %xmm3, %xmm5
movss 0x50(%rsp), %xmm10
insertps $0x30, %xmm6, %xmm13    # xmm13 = xmm13[0,1,2],xmm6[0]
insertps $0x30, %xmm12, %xmm11   # xmm11 = xmm11[0,1,2],xmm12[0]
shufps $0x24, %xmm8, %xmm8     # xmm8 = xmm8[0,1,2,0]
shufps $0x24, %xmm4, %xmm4     # xmm4 = xmm4[0,1,2,0]
insertps $0x10, %xmm12, %xmm6    # xmm6 = xmm6[0],xmm12[0],xmm6[2,3]
shufps $0x24, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,0]
shufps $0x24, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,0]
shufps $0x4, %xmm0, %xmm15     # xmm15 = xmm15[0,1],xmm0[0,0]
shufps $0xe0, %xmm13, %xmm13   # xmm13 = xmm13[0,0,2,3]
shufps $0xe0, %xmm11, %xmm11   # xmm11 = xmm11[0,0,2,3]
shufps $0x4, %xmm3, %xmm6      # xmm6 = xmm6[0,1],xmm3[0,0]
mulps %xmm1, %xmm15
mulps %xmm13, %xmm8
mulps %xmm11, %xmm4
mulps %xmm2, %xmm6
movups 0x38(%rsp), %xmm13
movsd 0x24(%rsp), %xmm11
addss %xmm9, %xmm5
movaps %xmm14, %xmm9
movshdup %xmm11, %xmm7           # xmm7 = xmm11[1,1,3,3]
shufps $0x40, %xmm11, %xmm9    # xmm9 = xmm9[0,0],xmm11[0,1]
insertps $0x20, %xmm14, %xmm11   # xmm11 = xmm11[0,1],xmm14[0],xmm11[3]
mulss %xmm10, %xmm7
shufps $0x78, %xmm9, %xmm9     # xmm9 = xmm9[0,2,3,1]
shufps $0x24, %xmm11, %xmm11   # xmm11 = xmm11[0,1,2,0]
addps %xmm8, %xmm4
movss 0x44(%rsp), %xmm8
addps %xmm6, %xmm15
insertps $0x10, %xmm8, %xmm13    # xmm13 = xmm13[0],xmm8[0],xmm13[2,3]
shufps $0x0, %xmm10, %xmm8     # xmm8 = xmm8[0,0],xmm10[0,0]
addss %xmm5, %xmm7
shufps $0x40, %xmm13, %xmm13   # xmm13 = xmm13[0,0,0,1]
mulps %xmm11, %xmm8
mulps %xmm13, %xmm9
addps %xmm15, %xmm8
addps %xmm4, %xmm9
movups %xmm9, (%rdi)
movups %xmm8, 0x10(%rdi)
movss %xmm7, 0x20(%rdi)
retq