user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<matrix_ft_self_atimes>:
  endbr64
  movapd %xmm0,%xmm8
  movapd %xmm0,%xmm13
  movapd %xmm1,%xmm15
  mulsd  %xmm0,%xmm13
  movapd %xmm8,%xmm10
  movapd %xmm2,%xmm0
  movapd %xmm8,%xmm11
  movapd %xmm1,%xmm9
  subsd  %xmm4,%xmm3
  mulsd  %xmm1,%xmm15
  movapd %xmm5,%xmm12
  subsd  %xmm7,%xmm6
  mulsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm10
  mulsd  %xmm2,%xmm11
  movsd  %xmm13,-0x18(%rsp)
  mulsd  %xmm5,%xmm1
  movapd %xmm15,%xmm14
  movsd  %xmm15,-0x10(%rsp)
  movsd  %xmm0,-0x20(%rsp)
  mulsd  %xmm3,%xmm14
  mulsd  %xmm2,%xmm12
  mulsd  %xmm2,%xmm9
  movapd %xmm11,%xmm0
  movsd  -0x20(%rsp),%xmm2
  mulsd  %xmm5,%xmm8
  movapd %xmm1,%xmm11
  movapd %xmm13,%xmm1
  movsd  %xmm0,-0x8(%rsp)
  mulsd  %xmm3,%xmm1
  movapd %xmm11,%xmm13
  mulsd  %xmm3,%xmm2
  addsd  %xmm4,%xmm14
  addsd  %xmm4,%xmm1
  mulsd  (%rdi),%xmm1
  addsd  (%rsi),%xmm1
  addsd  %xmm4,%xmm2
  movapd %xmm3,%xmm4
  mulsd  %xmm10,%xmm4
  mulsd  %xmm6,%xmm10
  movsd  %xmm1,(%rsi)
  mulsd  0x8(%rdi),%xmm14
  addsd  0x8(%rsi),%xmm14
  movsd  %xmm14,0x8(%rsi)
  mulsd  0x10(%rdi),%xmm2
  addsd  0x10(%rsi),%xmm2
  movsd  %xmm2,0x10(%rsi)
  movsd  0x8(%rdi),%xmm5
  mulsd  %xmm4,%xmm5
  addsd  %xmm5,%xmm1
  movapd %xmm3,%xmm5
  mulsd  %xmm9,%xmm5
  mulsd  %xmm0,%xmm3
  movsd  %xmm1,(%rsi)
  mulsd  (%rdi),%xmm4
  mulsd  %xmm6,%xmm9
  addsd  %xmm14,%xmm4
  movsd  %xmm4,0x8(%rsi)
  movsd  0x10(%rdi),%xmm15
  mulsd  %xmm5,%xmm15
  addsd  %xmm4,%xmm15
  movsd  %xmm15,0x8(%rsi)
  mulsd  0x8(%rdi),%xmm5
  addsd  %xmm5,%xmm2
  movsd  %xmm2,0x10(%rsi)
  movsd  (%rdi),%xmm4
  mulsd  %xmm3,%xmm4
  movapd %xmm4,%xmm5
  addsd  %xmm2,%xmm5
  movq   D8(%rip),%xmm2
  xorpd  %xmm2,%xmm13
  movsd  %xmm5,0x10(%rsi)
  mulsd  0x10(%rdi),%xmm3
  addsd  %xmm1,%xmm3
  movsd  %xmm3,(%rsi)
  movsd  0x8(%rdi),%xmm4
  mulsd  %xmm12,%xmm4
  addsd  0x18(%rsi),%xmm4
  movsd  %xmm4,0x18(%rsi)
  movsd  0x10(%rdi),%xmm1
  mulsd  %xmm13,%xmm1
  addsd  %xmm4,%xmm1
  movapd %xmm12,%xmm4
  xorpd  %xmm2,%xmm4
  xorpd  %xmm8,%xmm2
  movq   %xmm4,%rcx
  movsd  %xmm1,0x18(%rsi)
  mulsd  (%rdi),%xmm4
  addsd  0x20(%rsi),%xmm4
  movsd  %xmm4,0x20(%rsi)
  movsd  0x10(%rdi),%xmm14
  mulsd  %xmm8,%xmm14
  addsd  %xmm4,%xmm14
  movsd  %xmm14,0x20(%rsi)
  movsd  (%rdi),%xmm4
  mulsd  %xmm11,%xmm4
  addsd  0x28(%rsi),%xmm4
  movsd  %xmm4,0x28(%rsi)
  movsd  0x8(%rdi),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm4
  movsd  %xmm4,0x28(%rsi)
  mulsd  0x18(%rdi),%xmm12
  addsd  %xmm12,%xmm15
  movsd  %xmm15,0x8(%rsi)
  movsd  0x18(%rdi),%xmm0
  mulsd  %xmm13,%xmm0
  addsd  %xmm0,%xmm5
  movq   %rcx,%xmm0
  movsd  %xmm5,0x10(%rsi)
  mulsd  0x20(%rdi),%xmm0
  addsd  %xmm0,%xmm3
  movsd  -0x20(%rsp),%xmm0
  mulsd  %xmm6,%xmm0
  movsd  %xmm3,(%rsi)
  mulsd  0x20(%rdi),%xmm8
  addsd  %xmm5,%xmm8
  movsd  %xmm8,0x10(%rsi)
  mulsd  0x28(%rdi),%xmm11
  movapd %xmm11,%xmm5
  addsd  %xmm3,%xmm5
  movsd  %xmm5,(%rsi)
  mulsd  0x28(%rdi),%xmm2
  addsd  %xmm15,%xmm2
  movsd  %xmm2,0x8(%rsi)
  movsd  -0x18(%rsp),%xmm2
  mulsd  %xmm6,%xmm2
  addsd  %xmm7,%xmm2
  mulsd  0x18(%rdi),%xmm2
  addsd  %xmm1,%xmm2
  movsd  -0x10(%rsp),%xmm1
  mulsd  %xmm6,%xmm1
  movsd  %xmm2,0x18(%rsi)
  addsd  %xmm7,%xmm1
  mulsd  0x20(%rdi),%xmm1
  addsd  %xmm0,%xmm7
  addsd  %xmm14,%xmm1
  movsd  %xmm1,0x20(%rsi)
  mulsd  0x28(%rdi),%xmm7
  addsd  %xmm4,%xmm7
  movsd  %xmm7,0x28(%rsi)
  movsd  0x20(%rdi),%xmm0
  mulsd  %xmm10,%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm0,0x18(%rsi)
  mulsd  0x18(%rdi),%xmm10
  mulsd  -0x8(%rsp),%xmm6
  addsd  %xmm1,%xmm10
  movsd  %xmm10,0x20(%rsi)
  movsd  0x28(%rdi),%xmm1
  mulsd  %xmm9,%xmm1
  addsd  %xmm10,%xmm1
  movsd  %xmm1,0x20(%rsi)
  mulsd  0x20(%rdi),%xmm9
  addsd  %xmm7,%xmm9
  movsd  %xmm9,0x28(%rsi)
  movsd  0x18(%rdi),%xmm1
  mulsd  %xmm6,%xmm1
  addsd  %xmm9,%xmm1
  movsd  %xmm1,0x28(%rsi)
  mulsd  0x28(%rdi),%xmm6
  addsd  %xmm0,%xmm6
  movsd  %xmm6,0x18(%rsi)
  ret
```

tool_calls: name: parse_data
arguments: data_label: D8
type: byte[8]

tool: {"D8": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void matrix_ft_self_atimes(const double *x, double *y, double ex, double ey, double ez, double xa, double ya, double yb, double xc, double yc) {
  double a1, a2;
  double b1;
  double c1, c2;
  double b1x, b1y, b1z;
  double exx, eyy, ezz, exy, eyz, exz;
  a1 = ya;
  a2 = xa - ya;
  b1 = yb;
  c1 = yc;
  c2 = xc - yc;
  exx = ex * ex;
  eyy = ey * ey;
  ezz = ez * ez;
  exy = ex * ey;
  eyz = ey * ez;
  exz = ez * ex;
  b1x = b1 * ex;
  b1y = b1 * ey;
  b1z = b1 * ez;
  y[0] += x[0] * (a1 + a2 * exx);
  y[1] += x[1] * (a1 + a2 * eyy);
  y[2] += x[2] * (a1 + a2 * ezz);
  y[0] += x[1] * (a2 * exy);
  y[1] += x[0] * (a2 * exy);
  y[1] += x[2] * (a2 * eyz);
  y[2] += x[1] * (a2 * eyz);
  y[2] += x[0] * (a2 * exz);
  y[0] += x[2] * (a2 * exz);
  y[3] += x[1] * (+b1z);
  y[3] += x[2] * (-b1y);
  y[4] += x[0] * (-b1z);
  y[4] += x[2] * (+b1x);
  y[5] += x[0] * (+b1y);
  y[5] += x[1] * (-b1x);
  y[1] += x[3] * (+b1z);
  y[2] += x[3] * (-b1y);
  y[0] += x[4] * (-b1z);
  y[2] += x[4] * (+b1x);
  y[0] += x[5] * (+b1y);
  y[1] += x[5] * (-b1x);
  y[3] += x[3] * (c1 + c2 * exx);
  y[4] += x[4] * (c1 + c2 * eyy);
  y[5] += x[5] * (c1 + c2 * ezz);
  y[3] += x[4] * (c2 * exy);
  y[4] += x[3] * (c2 * exy);
  y[4] += x[5] * (c2 * eyz);
  y[5] += x[4] * (c2 * eyz);
  y[5] += x[3] * (c2 * exz);
  y[3] += x[5] * (c2 * exz);
}
```