user: 这段汇编代码用C语言表示是什么样的：

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

assistant: ```c
void mat4_scale(float *dst, float *v) {
  float x = v[0], y = v[1], z = v[2];
  dst[0] = dst[0] * x;
  dst[1] = dst[1] * x;
  dst[2] = dst[2] * x;
  dst[3] = dst[3] * x;
  dst[4] = dst[4] * y;
  dst[5] = dst[5] * y;
  dst[6] = dst[6] * y;
  dst[7] = dst[7] * y;
  dst[8] = dst[8] * z;
  dst[9] = dst[9] * z;
  dst[10] = dst[10] * z;
  dst[11] = dst[11] * z;
  dst[12] = dst[12];
  dst[13] = dst[13];
  dst[14] = dst[14];
  dst[15] = dst[15];
}
```