// File: /workspace/github_c_makefile_star2_O2/halcy[P]quasi_crystals_bot/Vector/Matrix.c
// Function: mat4x4affinemul
mat4x4_t mat4x4affinemul(mat4x4_t a,mat4x4_t b)
{
	return mat4x4(a.m[0]*b.m[0]+a.m[4]*b.m[1]+a.m[8]*b.m[2],
	              a.m[0]*b.m[4]+a.m[4]*b.m[5]+a.m[8]*b.m[6],
	              a.m[0]*b.m[8]+a.m[4]*b.m[9]+a.m[8]*b.m[10],
	              a.m[0]*b.m[12]+a.m[4]*b.m[13]+a.m[8]*b.m[14]+a.m[12],

	              a.m[1]*b.m[0]+a.m[5]*b.m[1]+a.m[9]*b.m[2],
	              a.m[1]*b.m[4]+a.m[5]*b.m[5]+a.m[9]*b.m[6],
	              a.m[1]*b.m[8]+a.m[5]*b.m[9]+a.m[9]*b.m[10],
	              a.m[1]*b.m[12]+a.m[5]*b.m[13]+a.m[9]*b.m[14]+a.m[13],

	              a.m[2]*b.m[0]+a.m[6]*b.m[1]+a.m[10]*b.m[2],
	              a.m[2]*b.m[4]+a.m[6]*b.m[5]+a.m[10]*b.m[6],
	              a.m[2]*b.m[8]+a.m[6]*b.m[9]+a.m[10]*b.m[10],
	              a.m[2]*b.m[12]+a.m[6]*b.m[13]+a.m[10]*b.m[14]+a.m[14],

	              0,0,0,1);
}

// Assembly:
movss 0x20(%rsp), %xmm15
movss 0x10(%rsp), %xmm9
movss 0x5c(%rsp), %xmm13
movss 0x48(%rsp), %xmm14
movss 0x4c(%rsp), %xmm10
movss 0x30(%rsp), %xmm3
movss 0x50(%rsp), %xmm4
movss 0x6c(%rsp), %xmm11
movss 0x68(%rsp), %xmm2
movss 0x58(%rsp), %xmm8
movq %rdi, %rax
movaps %xmm15, %xmm0
movaps %xmm9, %xmm1
movaps %xmm15, %xmm12
movaps %xmm3, %xmm5
movaps %xmm4, -0x18(%rsp)
movaps %xmm9, %xmm6
movaps %xmm2, -0x48(%rsp)
movaps %xmm11, -0x28(%rsp)
mulss %xmm13, %xmm0
mulss %xmm10, %xmm12
mulss %xmm14, %xmm1
mulss %xmm4, %xmm5
movaps %xmm9, %xmm4
mulss %xmm8, %xmm6
movsldup %xmm10, %xmm10          # xmm10 = xmm10[0,0,2,2]
movsldup %xmm8, %xmm8            # xmm8 = xmm8[0,0,2,2]
movsldup %xmm13, %xmm13          # xmm13 = xmm13[0,0,2,2]
mulss %xmm2, %xmm4
movaps %xmm0, %xmm7
movaps %xmm15, %xmm0
addss %xmm1, %xmm12
movsd 0x8(%rsp), %xmm1
mulss %xmm11, %xmm0
addss %xmm6, %xmm7
movss 0x78(%rsp), %xmm11
mulps %xmm1, %xmm8
movss 0x60(%rsp), %xmm6
mulss %xmm11, %xmm9
movaps %xmm0, %xmm2
movss 0x7c(%rsp), %xmm0
addss %xmm12, %xmm5
movsldup -0x28(%rsp), %xmm12     # xmm12 = mem[0,0,2,2]
mulss %xmm0, %xmm15
movaps %xmm0, -0x38(%rsp)
movsldup %xmm14, %xmm0           # xmm0 = xmm14[0,0,2,2]
movsd 0x18(%rsp), %xmm14
addss %xmm4, %xmm2
movsldup -0x48(%rsp), %xmm4      # xmm4 = mem[0,0,2,2]
movss %xmm7, -0x50(%rsp)
movaps %xmm3, %xmm7
mulps %xmm14, %xmm13
mulps %xmm1, %xmm0
mulps %xmm14, %xmm10
mulps %xmm1, %xmm4
mulps %xmm14, %xmm12
movss %xmm5, -0x4c(%rsp)
addss %xmm9, %xmm15
movaps %xmm3, %xmm9
movaps %xmm2, %xmm5
movsldup %xmm11, %xmm2           # xmm2 = xmm11[0,0,2,2]
movss 0x80(%rsp), %xmm11
mulss %xmm6, %xmm9
movsldup %xmm6, %xmm6            # xmm6 = xmm6[0,0,2,2]
mulss %xmm11, %xmm3
addps %xmm0, %xmm10
addps %xmm8, %xmm13
movsldup -0x38(%rsp), %xmm8      # xmm8 = mem[0,0,2,2]
movsd 0x28(%rsp), %xmm0
movsldup %xmm11, %xmm11          # xmm11 = xmm11[0,0,2,2]
mulps %xmm1, %xmm2
movss 0x70(%rsp), %xmm1
addps %xmm4, %xmm12
addss -0x50(%rsp), %xmm9
mulps %xmm14, %xmm8
mulps %xmm0, %xmm11
mulss %xmm1, %xmm7
movsldup -0x18(%rsp), %xmm14     # xmm14 = mem[0,0,2,2]
movsldup %xmm1, %xmm1            # xmm1 = xmm1[0,0,2,2]
mulps %xmm0, %xmm6
mulps %xmm0, %xmm14
mulps %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
addss %xmm15, %xmm3
addss %xmm5, %xmm7
addps %xmm0, %xmm11
addps %xmm2, %xmm8
addps %xmm13, %xmm6
addss 0x40(%rsp), %xmm3
movss -0x4c(%rsp), %xmm0
addps %xmm10, %xmm14
addps %xmm12, %xmm1
addps %xmm8, %xmm11
movlps %xmm14, (%rdi)
movss %xmm0, 0x8(%rdi)
andl $0x0, 0xc(%rdi)
movlps %xmm6, 0x10(%rdi)
movss %xmm9, 0x18(%rdi)
andl $0x0, 0x1c(%rdi)
movlps %xmm1, 0x20(%rdi)
movss %xmm7, 0x28(%rdi)
andl $0x0, 0x2c(%rdi)
movlps %xmm11, 0x30(%rdi)
movss %xmm3, 0x38(%rdi)
movl $0x3f800000, 0x3c(%rdi) # imm = 0x3F800000
retq