user: 请将以下的汇编代码转换成C语言代码：

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

assistant: ```c
void m_multiply(const float *m1, const float *m2, float *out) {
  out[0] = m1[0] * m2[0] + m1[4] * m2[1] + m1[8] * m2[2] + m1[12] * m2[3];
  out[1] = m1[1] * m2[0] + m1[5] * m2[1] + m1[9] * m2[2] + m1[13] * m2[3];
  out[2] = m1[2] * m2[0] + m1[6] * m2[1] + m1[10] * m2[2] + m1[14] * m2[3];
  out[3] = m1[3] * m2[0] + m1[7] * m2[1] + m1[11] * m2[2] + m1[15] * m2[3];
  out[4] = m1[0] * m2[4] + m1[4] * m2[5] + m1[8] * m2[6] + m1[12] * m2[7];
  out[5] = m1[1] * m2[4] + m1[5] * m2[5] + m1[9] * m2[6] + m1[13] * m2[7];
  out[6] = m1[2] * m2[4] + m1[6] * m2[5] + m1[10] * m2[6] + m1[14] * m2[7];
  out[7] = m1[3] * m2[4] + m1[7] * m2[5] + m1[11] * m2[6] + m1[15] * m2[7];
  out[8] = m1[0] * m2[8] + m1[4] * m2[9] + m1[8] * m2[10] + m1[12] * m2[11];
  out[9] = m1[1] * m2[8] + m1[5] * m2[9] + m1[9] * m2[10] + m1[13] * m2[11];
  out[10] = m1[2] * m2[8] + m1[6] * m2[9] + m1[10] * m2[10] + m1[14] * m2[11];
  out[11] = m1[3] * m2[8] + m1[7] * m2[9] + m1[11] * m2[10] + m1[15] * m2[11];
  out[12] = m1[0] * m2[12] + m1[4] * m2[13] + m1[8] * m2[14] + m1[12] * m2[15];
  out[13] = m1[1] * m2[12] + m1[5] * m2[13] + m1[9] * m2[14] + m1[13] * m2[15];
  out[14] = m1[2] * m2[12] + m1[6] * m2[13] + m1[10] * m2[14] + m1[14] * m2[15];
  out[15] = m1[3] * m2[12] + m1[7] * m2[13] + m1[11] * m2[14] + m1[15] * m2[15];
}
```