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

```asm
<mat4_rotateY>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x38(%rbp)
  movss  %xmm0,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  movd   %eax,%xmm0
  call   <sinf@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x3c(%rbp),%eax
  movd   %eax,%xmm0
  call   <cosf@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x4(%rax),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x8(%rax),%xmm0
  movss  %xmm0,-0x18(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0xc(%rax),%xmm0
  movss  %xmm0,-0x14(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x20(%rax),%xmm0
  movss  %xmm0,-0x10(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x24(%rax),%xmm0
  movss  %xmm0,-0xc(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x28(%rax),%xmm0
  movss  %xmm0,-0x8(%rbp)
  mov    -0x38(%rbp),%rax
  movss  0x2c(%rax),%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x20(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  mulss  -0x28(%rbp),%xmm1
  subss  %xmm1,%xmm0
  mov    -0x38(%rbp),%rax
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  movss  -0xc(%rbp),%xmm1
  mulss  -0x28(%rbp),%xmm1
  mov    -0x38(%rbp),%rax
  add    $0x4,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  movss  -0x8(%rbp),%xmm1
  mulss  -0x28(%rbp),%xmm1
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x14(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  movss  -0x4(%rbp),%xmm1
  mulss  -0x28(%rbp),%xmm1
  mov    -0x38(%rbp),%rax
  add    $0xc,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x20(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x28(%rbp),%xmm1
  movss  -0x10(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  mov    -0x38(%rbp),%rax
  add    $0x20,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x28(%rbp),%xmm1
  movss  -0xc(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  mov    -0x38(%rbp),%rax
  add    $0x24,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x28(%rbp),%xmm1
  movss  -0x8(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  mov    -0x38(%rbp),%rax
  add    $0x28,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movss  -0x14(%rbp),%xmm0
  movaps %xmm0,%xmm1
  mulss  -0x28(%rbp),%xmm1
  movss  -0x4(%rbp),%xmm0
  mulss  -0x24(%rbp),%xmm0
  mov    -0x38(%rbp),%rax
  add    $0x2c,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  nop
  leave
  ret
```

assistant: ```c
void mat4_rotateY(float *dst, float rad) {
  float s = sinf(rad);
  float c = cosf(rad);
  float a00 = dst[0];
  float a01 = dst[1];
  float a02 = dst[2];
  float a03 = dst[3];
  float a20 = dst[8];
  float a21 = dst[9];
  float a22 = dst[10];
  float a23 = dst[11];
  dst[0] = a00 * c - a20 * s;
  dst[1] = a01 * c - a21 * s;
  dst[2] = a02 * c - a22 * s;
  dst[3] = a03 * c - a23 * s;
  dst[8] = a00 * s + a20 * c;
  dst[9] = a01 * s + a21 * c;
  dst[10] = a02 * s + a22 * c;
  dst[11] = a03 * s + a23 * c;
}
```