// File: /workspace/github_c_makefile_star2_O1/QwazyWabbitWOS[P]lmctf60/q_shared.c
// Function: R_ConcatTransforms
void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4])
{
	out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] +
				in1[0][2] * in2[2][0];
	out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] +
				in1[0][2] * in2[2][1];
	out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] +
				in1[0][2] * in2[2][2];
	out[0][3] = in1[0][0] * in2[0][3] + in1[0][1] * in2[1][3] +
				in1[0][2] * in2[2][3] + in1[0][3];
	out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] +
				in1[1][2] * in2[2][0];
	out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] +
				in1[1][2] * in2[2][1];
	out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] +
				in1[1][2] * in2[2][2];
	out[1][3] = in1[1][0] * in2[0][3] + in1[1][1] * in2[1][3] +
				in1[1][2] * in2[2][3] + in1[1][3];
	out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] +
				in1[2][2] * in2[2][0];
	out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] +
				in1[2][2] * in2[2][1];
	out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] +
				in1[2][2] * in2[2][2];
	out[2][3] = in1[2][0] * in2[0][3] + in1[2][1] * in2[1][3] +
				in1[2][2] * in2[2][3] + in1[2][3];
}

// Assembly:
movss (%rdi), %xmm0
movss 0x4(%rdi), %xmm1
mulss 0x10(%rsi), %xmm1
mulss (%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x8(%rdi), %xmm1
mulss 0x20(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, (%rdx)
movss (%rdi), %xmm0
movss 0x4(%rdi), %xmm1
mulss 0x14(%rsi), %xmm1
mulss 0x4(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x8(%rdi), %xmm1
mulss 0x24(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x4(%rdx)
movss (%rdi), %xmm0
movss 0x4(%rdi), %xmm1
mulss 0x18(%rsi), %xmm1
mulss 0x8(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x8(%rdi), %xmm1
mulss 0x28(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x8(%rdx)
movss (%rdi), %xmm0
movss 0x4(%rdi), %xmm1
mulss 0x1c(%rsi), %xmm1
mulss 0xc(%rsi), %xmm0
movss 0x8(%rdi), %xmm2
mulss 0x2c(%rsi), %xmm2
addss %xmm1, %xmm0
addss %xmm0, %xmm2
addss 0xc(%rdi), %xmm2
movss %xmm2, 0xc(%rdx)
movss 0x10(%rdi), %xmm0
movss 0x14(%rdi), %xmm1
mulss 0x10(%rsi), %xmm1
mulss (%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x18(%rdi), %xmm1
mulss 0x20(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x10(%rdx)
movss 0x10(%rdi), %xmm0
movss 0x14(%rdi), %xmm1
mulss 0x14(%rsi), %xmm1
mulss 0x4(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x18(%rdi), %xmm1
mulss 0x24(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x14(%rdx)
movss 0x10(%rdi), %xmm0
movss 0x14(%rdi), %xmm1
mulss 0x18(%rsi), %xmm1
mulss 0x8(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x18(%rdi), %xmm1
mulss 0x28(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x18(%rdx)
movss 0x10(%rdi), %xmm0
movss 0x14(%rdi), %xmm1
mulss 0x1c(%rsi), %xmm1
mulss 0xc(%rsi), %xmm0
movss 0x18(%rdi), %xmm2
mulss 0x2c(%rsi), %xmm2
addss %xmm1, %xmm0
addss %xmm0, %xmm2
addss 0x1c(%rdi), %xmm2
movss %xmm2, 0x1c(%rdx)
movss 0x20(%rdi), %xmm0
movss 0x24(%rdi), %xmm1
mulss 0x10(%rsi), %xmm1
mulss (%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x28(%rdi), %xmm1
mulss 0x20(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x20(%rdx)
movss 0x20(%rdi), %xmm0
movss 0x24(%rdi), %xmm1
mulss 0x14(%rsi), %xmm1
mulss 0x4(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x28(%rdi), %xmm1
mulss 0x24(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x24(%rdx)
movss 0x20(%rdi), %xmm0
movss 0x24(%rdi), %xmm1
mulss 0x18(%rsi), %xmm1
mulss 0x8(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x28(%rdi), %xmm1
mulss 0x28(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x28(%rdx)
movss 0x20(%rdi), %xmm0
movss 0x24(%rdi), %xmm1
mulss 0x1c(%rsi), %xmm1
mulss 0xc(%rsi), %xmm0
addss %xmm1, %xmm0
movss 0x28(%rdi), %xmm1
mulss 0x2c(%rsi), %xmm1
addss %xmm0, %xmm1
addss 0x2c(%rdi), %xmm1
movss %xmm1, 0x2c(%rdx)
retq