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

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

assistant: ```c
void matrix_mult(float *r, float *a, float *b) {
  int i, j;
  for (i = 0; i < 16; i++)
    r[i] = 0.0f;
  for (i = 0; i < 4; i++) {
    for (j = 0; j < 4; j++) {
      r[i + 4 * j] = a[i] * b[4 * j] + a[i + 4] * b[4 * j + 1] + a[i + 8] * b[4 * j + 2] + a[i + 12] * b[4 * j + 3];
    }
  }
}
```