// File: /workspace/github_c_makefile_star2_O1/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 0x48(%rsp), %xmm0
movss 0x4c(%rsp), %xmm11
movss %xmm11, -0x34(%rsp)
movss 0x8(%rsp), %xmm1
movaps %xmm0, %xmm2
movss %xmm0, -0x30(%rsp)
movss 0x18(%rsp), %xmm4
mulss %xmm1, %xmm2
mulss %xmm4, %xmm11
movss 0x58(%rsp), %xmm7
movss %xmm7, -0x28(%rsp)
movss 0x5c(%rsp), %xmm10
movss %xmm10, -0x3c(%rsp)
mulss %xmm1, %xmm7
mulss %xmm4, %xmm10
movss 0x68(%rsp), %xmm5
movss %xmm5, -0x24(%rsp)
movss 0x6c(%rsp), %xmm9
movss %xmm9, -0x20(%rsp)
mulss %xmm1, %xmm5
mulss %xmm4, %xmm9
movss 0x78(%rsp), %xmm3
movss %xmm3, -0x2c(%rsp)
movss 0x7c(%rsp), %xmm6
movss %xmm6, -0x38(%rsp)
mulss %xmm3, %xmm1
mulss %xmm6, %xmm4
addss %xmm2, %xmm11
movss 0x28(%rsp), %xmm12
addss %xmm7, %xmm10
movss 0x50(%rsp), %xmm14
addss %xmm5, %xmm9
movaps %xmm14, %xmm6
addss %xmm1, %xmm4
movss 0x60(%rsp), %xmm5
movss %xmm5, -0x14(%rsp)
mulss %xmm12, %xmm6
mulss %xmm12, %xmm5
movss 0x70(%rsp), %xmm3
movss %xmm3, -0x4(%rsp)
movss 0x80(%rsp), %xmm2
movss %xmm2, -0xc(%rsp)
mulss %xmm12, %xmm3
mulss %xmm2, %xmm12
movss 0xc(%rsp), %xmm8
movss 0x1c(%rsp), %xmm15
movaps %xmm8, %xmm1
movaps %xmm15, %xmm2
mulss %xmm0, %xmm1
mulss -0x34(%rsp), %xmm2
movaps %xmm2, %xmm0
movaps %xmm8, %xmm2
movaps %xmm15, %xmm13
movss -0x28(%rsp), %xmm7
mulss %xmm7, %xmm2
mulss -0x3c(%rsp), %xmm13
movq %rdi, %rax
addss %xmm11, %xmm6
movss %xmm6, -0x18(%rsp)
addss %xmm10, %xmm5
movss %xmm5, -0x10(%rsp)
addss %xmm9, %xmm3
movss %xmm3, -0x8(%rsp)
addss %xmm4, %xmm12
addss %xmm1, %xmm0
movss %xmm0, -0x1c(%rsp)
addss %xmm2, %xmm13
movaps %xmm8, %xmm9
movaps %xmm15, %xmm3
movss -0x24(%rsp), %xmm6
mulss %xmm6, %xmm9
movss -0x20(%rsp), %xmm5
mulss %xmm5, %xmm3
movss -0x2c(%rsp), %xmm4
mulss %xmm4, %xmm8
mulss -0x38(%rsp), %xmm15
movss 0x10(%rsp), %xmm11
movss 0x20(%rsp), %xmm10
movss -0x30(%rsp), %xmm0
mulss %xmm11, %xmm0
movss -0x34(%rsp), %xmm1
mulss %xmm10, %xmm1
mulss %xmm11, %xmm7
movss -0x3c(%rsp), %xmm2
mulss %xmm10, %xmm2
mulss %xmm11, %xmm6
mulss %xmm10, %xmm5
mulss %xmm4, %xmm11
mulss -0x38(%rsp), %xmm10
addss %xmm9, %xmm3
addss %xmm8, %xmm15
addss %xmm0, %xmm1
movaps %xmm1, %xmm4
addss %xmm7, %xmm2
movss %xmm2, -0x3c(%rsp)
addss %xmm6, %xmm5
movaps %xmm5, %xmm6
movss 0x2c(%rsp), %xmm1
addss %xmm11, %xmm10
movaps %xmm1, %xmm2
mulss %xmm14, %xmm2
movaps %xmm1, %xmm5
movss -0x14(%rsp), %xmm7
mulss %xmm7, %xmm5
movss 0x30(%rsp), %xmm9
mulss %xmm9, %xmm14
movaps %xmm1, %xmm11
movss -0x4(%rsp), %xmm8
mulss %xmm8, %xmm11
movss -0xc(%rsp), %xmm0
mulss %xmm0, %xmm1
mulss %xmm9, %xmm7
mulss %xmm9, %xmm8
addss -0x1c(%rsp), %xmm2
mulss %xmm0, %xmm9
addss %xmm13, %xmm5
addss %xmm4, %xmm14
addss %xmm3, %xmm11
addss %xmm15, %xmm1
addss -0x3c(%rsp), %xmm7
addss %xmm6, %xmm8
addss %xmm10, %xmm9
movss -0x18(%rsp), %xmm0
movss %xmm0, (%rdi)
movss %xmm2, 0x4(%rdi)
xorl %ecx, %ecx
movss %xmm14, 0x8(%rdi)
movl %ecx, 0xc(%rdi)
movss -0x10(%rsp), %xmm0
movss %xmm0, 0x10(%rdi)
addss 0x38(%rsp), %xmm12
movss %xmm5, 0x14(%rdi)
addss 0x3c(%rsp), %xmm1
movss %xmm7, 0x18(%rdi)
addss 0x40(%rsp), %xmm9
movl %ecx, 0x1c(%rdi)
movss -0x8(%rsp), %xmm0
movss %xmm0, 0x20(%rdi)
movss %xmm11, 0x24(%rdi)
movss %xmm8, 0x28(%rdi)
movl %ecx, 0x2c(%rdi)
movss %xmm12, 0x30(%rdi)
movss %xmm1, 0x34(%rdi)
movss %xmm9, 0x38(%rdi)
movl $0x3f800000, 0x3c(%rdi) # imm = 0x3F800000
retq