user: Converte this assembly snippet into its equivalent C code:

```asm
<multiply44f44f44f>:
  endbr64
  movss  (%rsi),%xmm0
  movss  0x10(%rsi),%xmm4
  movss  0x20(%rsi),%xmm3
  movss  0x30(%rsi),%xmm2
  movaps %xmm0,%xmm1
  mulss  (%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x4(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x8(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0xc(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x10(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x14(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x18(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x1c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x10(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x20(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x24(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x28(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x2c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x20(%rdx)
  mulss  0x30(%rdi),%xmm0
  mulss  0x34(%rdi),%xmm4
  addss  %xmm4,%xmm0
  mulss  0x38(%rdi),%xmm3
  addss  %xmm3,%xmm0
  mulss  0x3c(%rdi),%xmm2
  addss  %xmm2,%xmm0
  movss  %xmm0,0x30(%rdx)
  movss  0x4(%rsi),%xmm0
  movss  0x14(%rsi),%xmm4
  movss  0x24(%rsi),%xmm3
  movss  0x34(%rsi),%xmm2
  movaps %xmm0,%xmm1
  mulss  (%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x4(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x8(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0xc(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x4(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x10(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x14(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x18(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x1c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x14(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x20(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x24(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x28(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x2c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x24(%rdx)
  mulss  0x30(%rdi),%xmm0
  mulss  0x34(%rdi),%xmm4
  addss  %xmm4,%xmm0
  mulss  0x38(%rdi),%xmm3
  addss  %xmm3,%xmm0
  mulss  0x3c(%rdi),%xmm2
  addss  %xmm2,%xmm0
  movss  %xmm0,0x34(%rdx)
  movss  0x8(%rsi),%xmm0
  movss  0x18(%rsi),%xmm4
  movss  0x28(%rsi),%xmm3
  movss  0x38(%rsi),%xmm2
  movaps %xmm0,%xmm1
  mulss  (%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x4(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x8(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0xc(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x8(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x10(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x14(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x18(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x1c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x18(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x20(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x24(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x28(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x2c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x28(%rdx)
  mulss  0x30(%rdi),%xmm0
  mulss  0x34(%rdi),%xmm4
  addss  %xmm4,%xmm0
  mulss  0x38(%rdi),%xmm3
  addss  %xmm3,%xmm0
  mulss  0x3c(%rdi),%xmm2
  addss  %xmm2,%xmm0
  movss  %xmm0,0x38(%rdx)
  movss  0xc(%rsi),%xmm0
  movss  0x1c(%rsi),%xmm4
  movss  0x2c(%rsi),%xmm3
  movss  0x3c(%rsi),%xmm2
  movaps %xmm0,%xmm1
  mulss  (%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x4(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x8(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0xc(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0xc(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x10(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x14(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x18(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x1c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x1c(%rdx)
  movaps %xmm0,%xmm1
  mulss  0x20(%rdi),%xmm1
  movaps %xmm4,%xmm5
  mulss  0x24(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm3,%xmm5
  mulss  0x28(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movaps %xmm2,%xmm5
  mulss  0x2c(%rdi),%xmm5
  addss  %xmm5,%xmm1
  movss  %xmm1,0x2c(%rdx)
  mulss  0x30(%rdi),%xmm0
  mulss  0x34(%rdi),%xmm4
  addss  %xmm4,%xmm0
  mulss  0x38(%rdi),%xmm3
  addss  %xmm3,%xmm0
  mulss  0x3c(%rdi),%xmm2
  addss  %xmm2,%xmm0
  movss  %xmm0,0x3c(%rdx)
  ret
```

assistant: ```c
void multiply44f44f44f(float *left, float *right, float *product) {
  register float rA = right[0];
  register float rB = right[4];
  register float rC = right[8];
  register float rD = right[12];
  product[0] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[4] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[8] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[12] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[1];
  rB = right[5];
  rC = right[9];
  rD = right[13];
  product[1] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[5] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[9] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[13] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[2];
  rB = right[6];
  rC = right[10];
  rD = right[14];
  product[2] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[6] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[10] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[14] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[3];
  rB = right[7];
  rC = right[11];
  rD = right[15];
  product[3] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[7] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[11] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[15] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
}
```