user: 下面的汇编指令对应的C源代码是什么:

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

assistant: ```c
void mat3_multiply(float *dst, float *b) {
  float a00 = dst[0], a01 = dst[1], a02 = dst[2];
  float a10 = dst[3], a11 = dst[4], a12 = dst[5];
  float a20 = dst[6], a21 = dst[7], a22 = dst[8];
  float b00 = b[0], b01 = b[1], b02 = b[2];
  float b10 = b[3], b11 = b[4], b12 = b[5];
  float b20 = b[6], b21 = b[7], b22 = b[8];
  dst[0] = b00 * a00 + b01 * a10 + b02 * a20;
  dst[1] = b00 * a01 + b01 * a11 + b02 * a21;
  dst[2] = b00 * a02 + b01 * a12 + b02 * a22;
  dst[3] = b10 * a00 + b11 * a10 + b12 * a20;
  dst[4] = b10 * a01 + b11 * a11 + b12 * a21;
  dst[5] = b10 * a02 + b11 * a12 + b12 * a22;
  dst[6] = b20 * a00 + b21 * a10 + b22 * a20;
  dst[7] = b20 * a01 + b21 * a11 + b22 * a21;
  dst[8] = b20 * a02 + b21 * a12 + b22 * a22;
}
```