user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<multiply44f44f44f>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  movss  0x10(%rax),%xmm6
  mov    -0x10(%rbp),%rax
  movss  0x20(%rax),%xmm7
  mov    -0x10(%rbp),%rax
  movss  0x30(%rax),%xmm3
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x18(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  movaps %xmm2,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movss  0x4(%rax),%xmm3
  mov    -0x10(%rbp),%rax
  movss  0x14(%rax),%xmm6
  mov    -0x10(%rbp),%rax
  movss  0x24(%rax),%xmm7
  mov    -0x10(%rbp),%rax
  movss  0x34(%rax),%xmm2
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm3,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%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    $0x10,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm3,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm3,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  movaps %xmm3,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x34,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movss  0x8(%rax),%xmm4
  mov    -0x10(%rbp),%rax
  movss  0x18(%rax),%xmm5
  mov    -0x10(%rbp),%rax
  movss  0x28(%rax),%xmm6
  mov    -0x10(%rbp),%rax
  movss  0x38(%rax),%xmm7
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm4,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm4,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm4,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x28,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm4
  movaps %xmm4,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm0
  mulss  %xmm5,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm0
  mulss  %xmm6,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm7,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  movss  0xc(%rax),%xmm5
  mov    -0x10(%rbp),%rax
  movss  0x1c(%rax),%xmm4
  mov    -0x10(%rbp),%rax
  movss  0x2c(%rax),%xmm2
  mov    -0x10(%rbp),%rax
  movss  0x3c(%rax),%xmm3
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm5,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm5,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  mulss  %xmm5,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm5
  movaps %xmm5,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x3c,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void multiply44f44f44f(float *left, float *right, float *product) {
  register float rA = right[0];
  register float rB = right[4];
  register float rC = right[8];
  register float rD = right[12];
  product[0] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[4] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[8] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[12] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[1];
  rB = right[5];
  rC = right[9];
  rD = right[13];
  product[1] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[5] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[9] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[13] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[2];
  rB = right[6];
  rC = right[10];
  rD = right[14];
  product[2] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[6] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[10] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[14] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
  rA = right[3];
  rB = right[7];
  rC = right[11];
  rD = right[15];
  product[3] = left[0] * rA + left[1] * rB + left[2] * rC + left[3] * rD;
  product[7] = left[4] * rA + left[5] * rB + left[6] * rC + left[7] * rD;
  product[11] = left[8] * rA + left[9] * rB + left[10] * rC + left[11] * rD;
  product[15] = left[12] * rA + left[13] * rB + left[14] * rC + left[15] * rD;
}
```