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

```asm
<harmonicDiffuse>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D152(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm2
  mulss  %xmm3,%xmm2
  subss  %xmm2,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D63(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D99(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D151(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D15(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D127(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  mov    -0x8(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x44,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D152(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm2
  mulss  %xmm3,%xmm2
  subss  %xmm2,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x40,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D63(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x24,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D99(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x40,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D151(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x34,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x38,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x3c,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D15(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x28,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x2c,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x30,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D127(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x10(%rbp),%rax
  add    $0x68,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D152(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm2
  mulss  %xmm3,%xmm2
  subss  %xmm2,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x64,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D63(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x48,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D99(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x64,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D151(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x58,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x5c,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x60,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm3
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D15(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x4c,%rax
  movss  (%rax),%xmm2
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x50,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm0,%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x54,%rax
  movss  (%rax),%xmm3
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  mulss  %xmm3,%xmm0
  addss  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D127(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: label: D152
type_infered: f64
name: unpack_data
arguments: label: D63
type_infered: f64
name: unpack_data
arguments: label: D99
type_infered: f64
name: unpack_data
arguments: label: D151
type_infered: f64
name: unpack_data
arguments: label: D15
type_infered: byte[8]
name: unpack_data
arguments: label: D127
type_infered: byte[8]

tool: D152: 0.429043

tool: D63: 0.743125

tool: D99: 0.886227

tool: D151: 0.247708

tool: {"D15": [0x7f,0xf9,0x64,0xc5,0x70,0x75,0xeb,0x3f]}

tool: {"D127": [0x23,0x4c,0x51,0x2e,0x8d,0x5f,0xf0,0x3f]}

assistant: ```c
void harmonicDiffuse(float *C, const float *Y, const float *D) {
  C[0] = (float)(0.429043 * Y[0 * 9 + 8] * (D[0] * D[0] - D[1] * D[1]) + 0.743125 * Y[0 * 9 + 7] * D[2] * D[2] + 0.886227 * Y[0 * 9 + 0] - 0.247708 * Y[0 * 9 + 7] + 0.429043 * 2 * (Y[0 * 9 + 4] * D[0] * D[1] + Y[0 * 9 + 5] * D[1] * D[2] + Y[0 * 9 + 6] * D[2] * D[0]) + 0.511664 * 2 * (Y[0 * 9 + 1] * D[0] + Y[0 * 9 + 2] * D[1] + Y[0 * 9 + 3] * D[2]));
  C[1] = (float)(0.429043 * Y[1 * 9 + 8] * (D[0] * D[0] - D[1] * D[1]) + 0.743125 * Y[1 * 9 + 7] * D[2] * D[2] + 0.886227 * Y[1 * 9 + 0] - 0.247708 * Y[1 * 9 + 7] + 0.429043 * 2 * (Y[1 * 9 + 4] * D[0] * D[1] + Y[1 * 9 + 5] * D[1] * D[2] + Y[1 * 9 + 6] * D[2] * D[0]) + 0.511664 * 2 * (Y[1 * 9 + 1] * D[0] + Y[1 * 9 + 2] * D[1] + Y[1 * 9 + 3] * D[2]));
  C[2] = (float)(0.429043 * Y[2 * 9 + 8] * (D[0] * D[0] - D[1] * D[1]) + 0.743125 * Y[2 * 9 + 7] * D[2] * D[2] + 0.886227 * Y[2 * 9 + 0] - 0.247708 * Y[2 * 9 + 7] + 0.429043 * 2 * (Y[2 * 9 + 4] * D[0] * D[1] + Y[2 * 9 + 5] * D[1] * D[2] + Y[2 * 9 + 6] * D[2] * D[0]) + 0.511664 * 2 * (Y[2 * 9 + 1] * D[0] + Y[2 * 9 + 2] * D[1] + Y[2 * 9 + 3] * D[2]));
}
```