user: 请将以下的汇编代码转换成C语言代码：

```asm
<dqcheb>:
  endbr64
  sub    $0x78,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
L52:
  movsd  (%rsi,%rax,1),%xmm0
  mov    %rax,%r8
  neg    %r8
  movsd  0xc0(%rsi,%r8,1),%xmm1
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsp,%rax,1)
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rax,1)
  add    $0x8,%rax
  cmp    $0x60,%rax
  jne    L52
  movsd  (%rsp),%xmm13
  movsd  0x40(%rsp),%xmm11
  movapd %xmm13,%xmm1
  subsd  %xmm11,%xmm1
  movsd  0x10(%rsp),%xmm7
  movsd  0x30(%rsp),%xmm10
  movsd  0x50(%rsp),%xmm9
  movapd %xmm7,%xmm0
  subsd  %xmm10,%xmm0
  subsd  %xmm9,%xmm0
  mulsd  0x28(%rdi),%xmm0
  movapd %xmm1,%xmm14
  addsd  %xmm0,%xmm14
  movsd  %xmm14,0x18(%rdx)
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x48(%rdx)
  movsd  0x8(%rsp),%xmm0
  movsd  0x38(%rsp),%xmm4
  movsd  0x48(%rsp),%xmm3
  movapd %xmm0,%xmm1
  subsd  %xmm4,%xmm1
  subsd  %xmm3,%xmm1
  movsd  0x18(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm5
  movsd  0x58(%rsp),%xmm2
  movapd %xmm6,%xmm8
  subsd  %xmm5,%xmm8
  subsd  %xmm2,%xmm8
  movapd %xmm1,%xmm12
  mulsd  0x10(%rdi),%xmm12
  movapd %xmm8,%xmm15
  mulsd  0x40(%rdi),%xmm15
  addsd  %xmm15,%xmm12
  addsd  %xmm12,%xmm14
  movsd  %xmm14,0x18(%rcx)
  movsd  0x18(%rdx),%xmm14
  subsd  %xmm12,%xmm14
  movsd  %xmm14,0xa8(%rcx)
  mulsd  0x40(%rdi),%xmm1
  mulsd  0x10(%rdi),%xmm8
  subsd  %xmm8,%xmm1
  movapd %xmm1,%xmm8
  addsd  0x48(%rdx),%xmm8
  movsd  %xmm8,0x48(%rcx)
  movsd  0x48(%rdx),%xmm8
  subsd  %xmm1,%xmm8
  movsd  %xmm8,0x78(%rcx)
  movsd  0x18(%rdi),%xmm12
  mulsd  0x20(%rsp),%xmm12
  mulsd  0x38(%rdi),%xmm11
  mulsd  0x28(%rdi),%xmm10
  movapd %xmm13,%xmm1
  addsd  %xmm12,%xmm1
  addsd  %xmm11,%xmm1
  movapd %xmm7,%xmm8
  mulsd  0x8(%rdi),%xmm8
  addsd  %xmm10,%xmm8
  movapd %xmm9,%xmm14
  mulsd  0x48(%rdi),%xmm14
  addsd  %xmm14,%xmm8
  movapd %xmm1,%xmm14
  addsd  %xmm8,%xmm14
  movsd  %xmm14,0x8(%rdx)
  subsd  %xmm8,%xmm1
  movsd  %xmm1,0x58(%rdx)
  movapd %xmm0,%xmm1
  mulsd  (%rdi),%xmm1
  movapd %xmm6,%xmm8
  mulsd  0x10(%rdi),%xmm8
  addsd  %xmm8,%xmm1
  movapd %xmm5,%xmm8
  mulsd  0x20(%rdi),%xmm8
  addsd  %xmm8,%xmm1
  movapd %xmm4,%xmm8
  mulsd  0x30(%rdi),%xmm8
  addsd  %xmm8,%xmm1
  movapd %xmm3,%xmm8
  mulsd  0x40(%rdi),%xmm8
  addsd  %xmm8,%xmm1
  movapd %xmm2,%xmm8
  mulsd  0x50(%rdi),%xmm8
  addsd  %xmm8,%xmm1
  addsd  %xmm1,%xmm14
  movsd  %xmm14,0x8(%rcx)
  movsd  0x8(%rdx),%xmm8
  subsd  %xmm1,%xmm8
  movsd  %xmm8,0xb8(%rcx)
  movapd %xmm0,%xmm8
  mulsd  0x50(%rdi),%xmm8
  movapd %xmm6,%xmm1
  mulsd  0x40(%rdi),%xmm1
  subsd  %xmm1,%xmm8
  movapd %xmm5,%xmm1
  mulsd  0x30(%rdi),%xmm1
  addsd  %xmm1,%xmm8
  movapd %xmm4,%xmm1
  mulsd  0x20(%rdi),%xmm1
  subsd  %xmm1,%xmm8
  movapd %xmm3,%xmm1
  mulsd  0x10(%rdi),%xmm1
  addsd  %xmm8,%xmm1
  movapd %xmm2,%xmm14
  mulsd  (%rdi),%xmm14
  subsd  %xmm14,%xmm1
  movapd %xmm1,%xmm8
  addsd  0x58(%rdx),%xmm8
  movsd  %xmm8,0x58(%rcx)
  movsd  0x58(%rdx),%xmm8
  subsd  %xmm1,%xmm8
  movsd  %xmm8,0x68(%rcx)
  movapd %xmm13,%xmm1
  subsd  %xmm12,%xmm1
  addsd  %xmm11,%xmm1
  mulsd  0x48(%rdi),%xmm7
  subsd  %xmm10,%xmm7
  mulsd  0x8(%rdi),%xmm9
  addsd  %xmm9,%xmm7
  movapd %xmm1,%xmm8
  addsd  %xmm7,%xmm8
  movsd  %xmm8,0x28(%rdx)
  subsd  %xmm7,%xmm1
  movsd  %xmm1,0x38(%rdx)
  movapd %xmm0,%xmm1
  mulsd  0x20(%rdi),%xmm1
  movapd %xmm6,%xmm7
  mulsd  0x40(%rdi),%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm5,%xmm7
  mulsd  (%rdi),%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm4,%xmm7
  mulsd  0x50(%rdi),%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm3,%xmm7
  mulsd  0x10(%rdi),%xmm7
  addsd  %xmm7,%xmm1
  movapd %xmm2,%xmm7
  mulsd  0x30(%rdi),%xmm7
  addsd  %xmm7,%xmm1
  addsd  %xmm1,%xmm8
  movsd  %xmm8,0x28(%rcx)
  movsd  0x28(%rdx),%xmm7
  subsd  %xmm1,%xmm7
  movsd  %xmm7,0x98(%rcx)
  mulsd  0x30(%rdi),%xmm0
  mulsd  0x10(%rdi),%xmm6
  subsd  %xmm6,%xmm0
  mulsd  0x50(%rdi),%xmm5
  subsd  %xmm5,%xmm0
  mulsd  (%rdi),%xmm4
  addsd  %xmm4,%xmm0
  mulsd  0x40(%rdi),%xmm3
  subsd  %xmm3,%xmm0
  mulsd  0x20(%rdi),%xmm2
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm1
  addsd  0x38(%rdx),%xmm1
  movsd  %xmm1,0x38(%rcx)
  movsd  0x38(%rdx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x88(%rcx)
  mov    $0x0,%eax
L41:
  movsd  (%rsi,%rax,1),%xmm0
  mov    %rax,%r8
  neg    %r8
  movsd  0x60(%rsi,%r8,1),%xmm1
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsp,%rax,1)
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rax,1)
  add    $0x8,%rax
  cmp    $0x30,%rax
  jne    L41
  movsd  (%rsp),%xmm1
  movsd  0x20(%rsp),%xmm3
  movapd %xmm3,%xmm0
  mulsd  0x38(%rdi),%xmm0
  addsd  %xmm1,%xmm0
  movsd  0x18(%rdi),%xmm2
  mulsd  0x10(%rsp),%xmm2
  movapd %xmm0,%xmm4
  addsd  %xmm2,%xmm4
  movsd  %xmm4,0x10(%rdx)
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0x50(%rdx)
  subsd  %xmm3,%xmm1
  movsd  %xmm1,0x30(%rdx)
  movsd  0x8(%rsp),%xmm0
  movsd  0x18(%rsp),%xmm3
  movsd  0x28(%rsp),%xmm2
  movapd %xmm0,%xmm1
  mulsd  0x8(%rdi),%xmm1
  movapd %xmm3,%xmm5
  mulsd  0x28(%rdi),%xmm5
  addsd  %xmm5,%xmm1
  movapd %xmm2,%xmm5
  mulsd  0x48(%rdi),%xmm5
  addsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm4
  movsd  %xmm4,0x10(%rcx)
  movsd  0x10(%rdx),%xmm4
  subsd  %xmm1,%xmm4
  movsd  %xmm4,0xb0(%rcx)
  movapd %xmm0,%xmm1
  subsd  %xmm3,%xmm1
  subsd  %xmm2,%xmm1
  mulsd  0x28(%rdi),%xmm1
  movapd %xmm1,%xmm4
  addsd  0x30(%rdx),%xmm4
  movsd  %xmm4,0x30(%rcx)
  movsd  0x30(%rdx),%xmm4
  subsd  %xmm1,%xmm4
  movsd  %xmm4,0x90(%rcx)
  mulsd  0x48(%rdi),%xmm0
  mulsd  0x28(%rdi),%xmm3
  subsd  %xmm3,%xmm0
  mulsd  0x8(%rdi),%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm0,%xmm1
  addsd  0x50(%rdx),%xmm1
  movsd  %xmm1,0x50(%rcx)
  movsd  0x50(%rdx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x70(%rcx)
  mov    $0x0,%eax
L55:
  movsd  (%rsi,%rax,1),%xmm0
  mov    %rax,%r8
  neg    %r8
  movsd  0x30(%rsi,%r8,1),%xmm1
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,(%rsp,%rax,1)
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi,%rax,1)
  add    $0x8,%rax
  cmp    $0x18,%rax
  jne    L55
  movsd  (%rsp),%xmm1
  movsd  0x10(%rsp),%xmm3
  movapd %xmm3,%xmm0
  mulsd  0x38(%rdi),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x20(%rdx)
  movsd  0x38(%rdi),%xmm4
  mulsd  0x10(%rsi),%xmm4
  movsd  (%rsi),%xmm2
  subsd  %xmm4,%xmm2
  movsd  %xmm2,0x40(%rdx)
  movsd  0x18(%rdi),%xmm2
  mulsd  0x8(%rsp),%xmm2
  addsd  %xmm2,%xmm0
  movsd  %xmm0,0x20(%rcx)
  movsd  0x20(%rdx),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0xa0(%rcx)
  movsd  0x38(%rdi),%xmm0
  mulsd  0x8(%rsi),%xmm0
  subsd  0x18(%rsi),%xmm0
  movapd %xmm0,%xmm2
  addsd  0x40(%rdx),%xmm2
  movsd  %xmm2,0x40(%rcx)
  movsd  0x40(%rdx),%xmm2
  subsd  %xmm0,%xmm2
  movsd  %xmm2,0x80(%rcx)
  movsd  (%rsi),%xmm0
  addsd  0x10(%rsi),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  0x8(%rsi),%xmm2
  addsd  0x18(%rsi),%xmm2
  addsd  %xmm2,%xmm0
  movsd  %xmm0,(%rcx)
  movsd  (%rdx),%xmm0
  subsd  %xmm2,%xmm0
  movsd  %xmm0,0xc0(%rcx)
  subsd  %xmm3,%xmm1
  movsd  %xmm1,0x60(%rdx)
  movsd  %xmm1,0x60(%rcx)
  lea    0x8(%rdx),%rax
  lea    0x60(%rdx),%rsi
  movsd  D16(%rip),%xmm1
L56:
  movapd %xmm1,%xmm0
  mulsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
  add    $0x8,%rax
  cmp    %rsi,%rax
  jne    L56
  movsd  D12(%rip),%xmm0
  movapd %xmm0,%xmm1
  mulsd  (%rdx),%xmm1
  movsd  %xmm1,(%rdx)
  mulsd  0x60(%rdx),%xmm0
  movsd  %xmm0,0x60(%rdx)
  lea    0x8(%rcx),%rax
  lea    0xc0(%rcx),%rdx
  movsd  D12(%rip),%xmm1
L31:
  movapd %xmm1,%xmm0
  mulsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
  add    $0x8,%rax
  cmp    %rax,%rdx
  jne    L31
  movsd  D36(%rip),%xmm0
  movapd %xmm0,%xmm1
  mulsd  (%rcx),%xmm1
  movsd  %xmm1,(%rcx)
  mulsd  0xc0(%rcx),%xmm0
  movsd  %xmm0,0xc0(%rcx)
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  add    $0x78,%rsp
  ret
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D16
data_type: byte[8]
name: read_data
arguments: data_tag: D12
data_type: byte[8]
name: read_data
arguments: data_tag: D36
data_type: byte[8]

tool: {"D16": [0x55,0x55,0x55,0x55,0x55,0x55,0xc5,0x3f]}

tool: {"D12": [0x55,0x55,0x55,0x55,0x55,0x55,0xb5,0x3f]}

tool: {"D36": [0x55,0x55,0x55,0x55,0x55,0x55,0xa5,0x3f]}

assistant: ```c
void dqcheb(double x[], double fval[], double cheb12[], double cheb24[]) {
  double alam, alam1, alam2, part1, part2, part3;
  double v[12];
  int i, j;
  for (i = 0; i < 12; i++) {
    j = 24 - i;
    v[i] = fval[i] - fval[j];
    fval[i] += fval[j];
  }
  alam1 = v[0] - v[8];
  alam2 = x[5] * (v[2] - v[6] - v[10]);
  cheb12[3] = alam1 + alam2;
  cheb12[9] = alam1 - alam2;
  alam1 = v[1] - v[7] - v[9];
  alam2 = v[3] - v[5] - v[11];
  alam = x[2] * alam1 + x[8] * alam2;
  cheb24[3] = cheb12[3] + alam;
  cheb24[21] = cheb12[3] - alam;
  alam = x[8] * alam1 - x[2] * alam2;
  cheb24[9] = cheb12[9] + alam;
  cheb24[15] = cheb12[9] - alam;
  part1 = x[3] * v[4];
  part2 = x[7] * v[8];
  part3 = x[5] * v[6];
  alam1 = v[0] + part1 + part2;
  alam2 = x[1] * v[2] + part3 + x[9] * v[10];
  cheb12[1] = alam1 + alam2;
  cheb12[11] = alam1 - alam2;
  alam = x[0] * v[1] + x[2] * v[3] + x[4] * v[5] + x[6] * v[7] + x[8] * v[9] + x[10] * v[11];
  cheb24[1] = cheb12[1] + alam;
  cheb24[23] = cheb12[1] - alam;
  alam = x[10] * v[1] - x[8] * v[3] + x[6] * v[5] - x[4] * v[7] + x[2] * v[9] - x[0] * v[11];
  cheb24[11] = cheb12[11] + alam;
  cheb24[13] = cheb12[11] - alam;
  alam1 = v[0] - part1 + part2;
  alam2 = x[9] * v[2] - part3 + x[1] * v[10];
  cheb12[5] = alam1 + alam2;
  cheb12[7] = alam1 - alam2;
  alam = x[4] * v[1] - x[8] * v[3] - x[0] * v[5] - x[10] * v[7] + x[2] * v[9] + x[6] * v[11];
  cheb24[5] = cheb12[5] + alam;
  cheb24[19] = cheb12[5] - alam;
  alam = x[6] * v[1] - x[2] * v[3] - x[10] * v[5] + x[0] * v[7] - x[8] * v[9] - x[4] * v[11];
  cheb24[7] = cheb12[7] + alam;
  cheb24[17] = cheb12[7] - alam;
  for (i = 0; i < 6; i++) {
    j = 12 - i;
    v[i] = fval[i] - fval[j];
    fval[i] += fval[j];
  }
  alam1 = v[0] + x[7] * v[4];
  alam2 = x[3] * v[2];
  cheb12[2] = alam1 + alam2;
  cheb12[10] = alam1 - alam2;
  cheb12[6] = v[0] - v[4];
  alam = x[1] * v[1] + x[5] * v[3] + x[9] * v[5];
  cheb24[2] = cheb12[2] + alam;
  cheb24[22] = cheb12[2] - alam;
  alam = x[5] * (v[1] - v[3] - v[5]);
  cheb24[6] = cheb12[6] + alam;
  cheb24[18] = cheb12[6] - alam;
  alam = x[9] * v[1] - x[5] * v[3] + x[1] * v[5];
  cheb24[10] = cheb12[10] + alam;
  cheb24[14] = cheb12[10] - alam;
  for (i = 0; i < 3; i++) {
    j = 6 - i;
    v[i] = fval[i] - fval[j];
    fval[i] += fval[j];
  }
  cheb12[4] = v[0] + x[7] * v[2];
  cheb12[8] = fval[0] - x[7] * fval[2];
  alam = x[3] * v[1];
  cheb24[4] = cheb12[4] + alam;
  cheb24[20] = cheb12[4] - alam;
  alam = x[7] * fval[1] - fval[3];
  cheb24[8] = cheb12[8] + alam;
  cheb24[16] = cheb12[8] - alam;
  cheb12[0] = fval[0] + fval[2];
  alam = fval[1] + fval[3];
  cheb24[0] = cheb12[0] + alam;
  cheb24[24] = cheb12[0] - alam;
  cheb12[12] = v[0] - v[2];
  cheb24[12] = cheb12[12];
  alam = 1.0 / 6.0;
  for (i = 1; i < 12; i++)
    cheb12[i] *= alam;
  alam *= 0.5;
  cheb12[0] *= alam;
  cheb12[12] *= alam;
  for (i = 1; i < 24; i++)
    cheb24[i] *= alam;
  cheb24[0] *= (0.5 * alam);
  cheb24[24] *= (0.5 * alam);
}
```