user: Please show me the C implementation that matches the assembly code listed below:

```asm
<matvec4_c>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x18(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void matvec4_c(float m[16], float v[4], float d[4]) {
  d[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12] * v[3];
  d[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13] * v[3];
  d[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14] * v[3];
  d[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];
}
```