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

```asm
<Daub97Synthesis1D>:
  endbr64
  mov    %edx,%r9d
  push   %rbx
  mov    %rsi,%rax
  mov    %edx,%ecx
  sar    %r9d
  test   %r9d,%r9d
  jle    L265
  movslq %r9d,%rsi
  mov    %rsi,%rdx
  lea    (%rdi,%rsi,8),%r8
  shl    $0x4,%rdx
  cmp    %r8,%rax
  lea    (%rax,%rdx,1),%r11
  setae  %r10b
  cmp    %r11,%rdi
  setae  %bl
  or     %ebx,%r10d
  lea    -0x1(%r9),%ebx
  cmp    $0x1,%ebx
  seta   %bl
  test   %bl,%r10b
  je     L251
  add    %rdi,%rdx
  cmp    %rdx,%rax
  setae  %dl
  cmp    %r8,%r11
  setbe  %r10b
  or     %r10b,%dl
  je     L251
  mov    %r9d,%r10d
  xor    %edx,%edx
  shr    %r10d
  shl    $0x4,%r10
  nopl   0x0(%rax,%rax,1)
L28:
  movupd (%rdi,%rdx,1),%xmm0
  movupd (%r8,%rdx,1),%xmm1
  movapd %xmm0,%xmm2
  unpckhpd %xmm1,%xmm0
  unpcklpd %xmm1,%xmm2
  movups %xmm0,0x10(%rax,%rdx,2)
  movups %xmm2,(%rax,%rdx,2)
  add    $0x10,%rdx
  cmp    %rdx,%r10
  jne    L28
  mov    %r9d,%edx
  and    $0xfffffffe,%edx
  and    $0x1,%r9d
  je     L359
  mov    %edx,%r8d
  add    %edx,%edx
  movsd  (%rdi,%r8,8),%xmm0
  movslq %edx,%rdx
  add    %r8,%rsi
  movsd  %xmm0,(%rax,%rdx,8)
  movsd  (%rdi,%rsi,8),%xmm0
  movsd  %xmm0,0x8(%rax,%rdx,8)
L359:
  lea    -0x2(%rcx),%edi
  mov    $0x1,%esi
  mov    %edi,%edx
  shr    %edx
  add    $0x1,%edx
  cmp    $0x1,%ecx
  cmovle %esi,%edx
  cmp    $0x5,%ecx
  jle    L148
  lea    -0x1(%rdx),%esi
  movapd D12(%rip),%xmm1
  lea    0x8(%rax),%rdx
  mov    %esi,%r8d
  shr    %r8d
  sub    $0x1,%r8d
  shl    $0x5,%r8
  lea    0x28(%rax,%r8,1),%r8
  xchg   %ax,%ax
L298:
  movupd (%rdx),%xmm0
  add    $0x20,%rdx
  movhpd -0x10(%rdx),%xmm0
  mulpd  %xmm1,%xmm0
  movlpd %xmm0,-0x20(%rdx)
  movhpd %xmm0,-0x10(%rdx)
  cmp    %rdx,%r8
  jne    L298
  and    $0xfffffffe,%esi
  lea    0x1(%rsi,%rsi,1),%edx
L15:
  movslq %edx,%rsi
  movsd  D12(%rip),%xmm0
  add    $0x2,%edx
  shl    $0x3,%rsi
  lea    (%rax,%rsi,1),%r8
  movsd  (%r8),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,(%r8)
  cmp    %edx,%ecx
  jle    L38
  lea    0x10(%rax,%rsi,1),%rdx
  movsd  D187(%rip),%xmm5
  movsd  D52(%rip),%xmm1
  mulsd  (%rdx),%xmm0
  movsd  %xmm0,(%rdx)
  movsd  (%rax),%xmm0
  mulsd  0x8(%rax),%xmm1
  divsd  %xmm5,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L326:
  lea    -0x3(%rcx),%edx
  cmp    $0x3,%edx
  jbe    L236
  shr    $0x2,%edx
  movapd D187(%rip),%xmm4
  movapd D43(%rip),%xmm3
  mov    %edx,%r8d
  lea    0x18(%rax),%rdx
  lea    -0x1(%r8),%esi
  shl    $0x5,%rsi
  lea    0x38(%rax,%rsi,1),%rsi
  nopl   0x0(%rax,%rax,1)
L155:
  movupd (%rdx),%xmm0
  movlpd -0x8(%rdx),%xmm0
  add    $0x20,%rdx
  movupd -0x20(%rdx),%xmm1
  movupd -0x30(%rdx),%xmm2
  divpd  %xmm4,%xmm0
  movhpd -0x20(%rdx),%xmm2
  movhpd -0x10(%rdx),%xmm1
  addpd  %xmm2,%xmm1
  mulpd  %xmm3,%xmm1
  subpd  %xmm1,%xmm0
  movlpd %xmm0,-0x28(%rdx)
  movhpd %xmm0,-0x18(%rdx)
  cmp    %rsi,%rdx
  jne    L155
  lea    0x2(,%r8,4),%esi
L398:
  movslq %esi,%rdx
  lea    0x2(%rsi),%r9d
  shl    $0x3,%rdx
  lea    (%rax,%rdx,1),%r8
  cmp    %edi,%r9d
  jge    L273
  cmp    %esi,%ecx
  jle    L273
  movsd  (%r8),%xmm1
  movsd  0x8(%rax,%rdx,1),%xmm0
  lea    0x6(%rsi),%r9d
  movsd  -0x8(%r8),%xmm3
  movsd  D43(%rip),%xmm2
  divsd  %xmm5,%xmm1
  addsd  %xmm0,%xmm3
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  movsd  %xmm1,(%r8)
  lea    0x10(%rax,%rdx,1),%r8
  movsd  0x18(%rax,%rdx,1),%xmm3
  movsd  (%r8),%xmm1
  addsd  %xmm3,%xmm0
  divsd  %xmm5,%xmm1
  mulsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r8)
  lea    0x4(%rsi),%r8d
  cmp    %r9d,%edi
  jg     L296
L253:
  movslq %r8d,%rdx
  add    $0x2,%r8d
  shl    $0x3,%rdx
  lea    (%rax,%rdx,1),%rsi
  lea    0x8(%rax,%rdx,1),%r9
  movsd  -0x8(%rax,%rdx,1),%xmm1
  movsd  (%rsi),%xmm0
  addsd  (%r9),%xmm1
  divsd  %xmm5,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
  cmp    %r8d,%ecx
  jle    L198
  lea    0x10(%rax,%rdx,1),%rsi
  movsd  0x18(%rax,%rdx,1),%xmm1
  addsd  (%r9),%xmm1
  movsd  (%rsi),%xmm0
  divsd  %xmm5,%xmm0
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
L198:
  cmp    $0x1,%edi
  jle    L244
  lea    -0x4(%rcx),%edx
  cmp    $0x3,%edx
  jbe    L249
  shr    $0x2,%edx
  movapd D118(%rip),%xmm3
  mov    %edx,%r8d
  lea    0x10(%rax),%rdx
  lea    -0x1(%r8),%esi
  shl    $0x5,%rsi
  lea    0x30(%rax,%rsi,1),%rsi
  nopl   0x0(%rax)
L35:
  movupd (%rdx),%xmm0
  movupd -0x10(%rdx),%xmm2
  add    $0x20,%rdx
  movupd -0x20(%rdx),%xmm1
  movlpd -0x28(%rdx),%xmm1
  movhpd -0x20(%rdx),%xmm2
  movhpd -0x10(%rdx),%xmm0
  addpd  %xmm2,%xmm0
  mulpd  %xmm3,%xmm0
  subpd  %xmm0,%xmm1
  movlpd %xmm1,-0x28(%rdx)
  movhpd %xmm1,-0x18(%rdx)
  cmp    %rsi,%rdx
  jne    L35
  lea    0x1(,%r8,4),%esi
L418:
  movslq %esi,%rdx
  movsd  D118(%rip),%xmm3
  add    $0x2,%esi
  shl    $0x3,%rdx
  lea    (%rax,%rdx,1),%r8
  movsd  0x8(%rax,%rdx,1),%xmm0
  movsd  -0x8(%r8),%xmm2
  movsd  (%r8),%xmm1
  addsd  %xmm0,%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,(%r8)
  cmp    %esi,%edi
  jle    L244
  addsd  0x18(%rax,%rdx,1),%xmm0
  lea    0x10(%rax,%rdx,1),%rsi
  movsd  (%rsi),%xmm1
  mulsd  %xmm3,%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rsi)
L244:
  movslq %ecx,%rdx
  movsd  D179(%rip),%xmm1
  shl    $0x3,%rdx
  lea    -0x10(%rax,%rdx,1),%r8
  lea    -0x8(%rax,%rdx,1),%rsi
  mulsd  (%r8),%xmm1
  movsd  (%rsi),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
  movsd  D92(%rip),%xmm0
  mulsd  0x8(%rax),%xmm0
  addsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
  cmp    $0x2,%ecx
  jle    L312
  lea    -0x3(%rcx),%edx
  cmp    $0x3,%edx
  jbe    L415
  shr    $0x2,%edx
  movapd D147(%rip),%xmm2
  mov    %edx,%r10d
  lea    0x18(%rax),%rdx
  lea    -0x1(%r10),%r9d
  shl    $0x5,%r9
  lea    0x38(%rax,%r9,1),%r9
  xchg   %ax,%ax
L44:
  movupd (%rdx),%xmm0
  movupd -0x10(%rdx),%xmm1
  add    $0x20,%rdx
  movhpd -0x20(%rdx),%xmm1
  movhpd -0x10(%rdx),%xmm0
  addpd  %xmm1,%xmm0
  movupd -0x20(%rdx),%xmm1
  movlpd -0x28(%rdx),%xmm1
  mulpd  %xmm2,%xmm0
  addpd  %xmm1,%xmm0
  movlpd %xmm0,-0x28(%rdx)
  movhpd %xmm0,-0x18(%rdx)
  cmp    %r9,%rdx
  jne    L44
  lea    0x2(,%r10,4),%r9d
L313:
  movslq %r9d,%rdx
  lea    0x2(%r9),%r11d
  shl    $0x3,%rdx
  lea    (%rax,%rdx,1),%r10
  cmp    %edi,%r11d
  jge    L190
  cmp    %r9d,%ecx
  jle    L190
  movsd  0x8(%rax,%rdx,1),%xmm0
  movsd  -0x8(%r10),%xmm1
  lea    0x6(%r9),%r11d
  movsd  D147(%rip),%xmm2
  addsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  (%r10),%xmm1
  movsd  %xmm1,(%r10)
  movsd  0x18(%rax,%rdx,1),%xmm1
  lea    0x10(%rax,%rdx,1),%r10
  addsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r10)
  lea    0x4(%r9),%r10d
  cmp    %r11d,%edi
  jg     L12
L397:
  movslq %r10d,%rdx
  add    $0x2,%r10d
  shl    $0x3,%rdx
  lea    0x8(%rax,%rdx,1),%r11
  movsd  -0x8(%rax,%rdx,1),%xmm0
  lea    (%rax,%rdx,1),%r9
  addsd  (%r11),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  (%r9),%xmm0
  movsd  %xmm0,(%r9)
  cmp    %r10d,%ecx
  jle    L312
  movsd  0x18(%rax,%rdx,1),%xmm0
  addsd  (%r11),%xmm0
  lea    0x10(%rax,%rdx,1),%r9
  mulsd  %xmm2,%xmm0
  addsd  (%r9),%xmm0
  movsd  %xmm0,(%r9)
L312:
  cmp    $0x1,%edi
  jle    L387
  sub    $0x4,%ecx
  cmp    $0x3,%ecx
  jbe    L78
  shr    $0x2,%ecx
  movapd D91(%rip),%xmm2
  lea    0x10(%rax),%rdx
  lea    -0x1(%rcx),%r9d
  shl    $0x5,%r9
  lea    0x30(%rax,%r9,1),%r9
  nopw   0x0(%rax,%rax,1)
L23:
  movupd (%rdx),%xmm0
  movupd -0x10(%rdx),%xmm1
  add    $0x20,%rdx
  movhpd -0x20(%rdx),%xmm1
  movhpd -0x10(%rdx),%xmm0
  addpd  %xmm1,%xmm0
  movupd -0x20(%rdx),%xmm1
  movlpd -0x28(%rdx),%xmm1
  mulpd  %xmm2,%xmm0
  addpd  %xmm1,%xmm0
  movlpd %xmm0,-0x28(%rdx)
  movhpd %xmm0,-0x18(%rdx)
  cmp    %rdx,%r9
  jne    L23
  lea    0x1(,%rcx,4),%ecx
L156:
  movslq %ecx,%rdx
  movsd  D91(%rip),%xmm2
  add    $0x2,%ecx
  shl    $0x3,%rdx
  lea    (%rax,%rdx,1),%r9
  movsd  0x8(%rax,%rdx,1),%xmm0
  movsd  -0x8(%r9),%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  (%r9),%xmm1
  movsd  %xmm1,(%r9)
  cmp    %ecx,%edi
  jle    L387
  addsd  0x18(%rax,%rdx,1),%xmm0
  lea    0x10(%rax,%rdx,1),%rcx
  mulsd  %xmm2,%xmm0
  addsd  (%rcx),%xmm0
  movsd  %xmm0,(%rcx)
L387:
  movsd  D48(%rip),%xmm0
  mulsd  (%r8),%xmm0
  addsd  (%rsi),%xmm0
  movsd  %xmm0,(%rsi)
  pop    %rbx
  ret
  nopl   0x0(%rax)
L251:
  mov    %r9d,%r9d
  xor    %edx,%edx
  shl    $0x3,%r9
  nopl   0x0(%rax)
L339:
  movsd  (%rdi,%rdx,1),%xmm0
  movsd  %xmm0,(%rax,%rdx,2)
  movsd  (%r8,%rdx,1),%xmm0
  movsd  %xmm0,0x8(%rax,%rdx,2)
  add    $0x8,%rdx
  cmp    %rdx,%r9
  jne    L339
  jmp    L359
  nopl   0x0(%rax)
L265:
  movsd  D52(%rip),%xmm1
  mulsd  0x8(%rsi),%xmm1
  lea    -0x2(%rdx),%edi
  movsd  (%rsi),%xmm0
  divsd  D187(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
  jmp    L198
  nopl   0x0(%rax)
L38:
  movsd  (%rax),%xmm0
  movsd  D187(%rip),%xmm5
  movsd  D52(%rip),%xmm1
  mulsd  0x8(%rax),%xmm1
  divsd  %xmm5,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  cmp    $0x2,%ecx
  jg     L326
  jmp    L198
  nopl   0x0(%rax,%rax,1)
L249:
  mov    $0x1,%esi
  jmp    L418
L78:
  mov    $0x1,%ecx
  jmp    L156
L148:
  mov    $0x1,%edx
  jmp    L15
L415:
  mov    $0x2,%r9d
  jmp    L313
L190:
  movsd  D147(%rip),%xmm2
  mov    %r9d,%r10d
  jmp    L397
L236:
  mov    $0x2,%esi
  jmp    L398
L273:
  movsd  D43(%rip),%xmm2
  mov    %esi,%r8d
  jmp    L253
L296:
  lea    0x20(%rax,%rdx,1),%r8
  movsd  0x28(%rax,%rdx,1),%xmm0
  movsd  (%r8),%xmm1
  addsd  %xmm0,%xmm3
  divsd  %xmm5,%xmm1
  mulsd  %xmm2,%xmm3
  subsd  %xmm3,%xmm1
  movsd  %xmm1,(%r8)
  lea    0x30(%rax,%rdx,1),%r8
  addsd  0x38(%rax,%rdx,1),%xmm0
  movsd  (%r8),%xmm1
  divsd  %xmm5,%xmm1
  mulsd  %xmm2,%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%r8)
  lea    0x8(%rsi),%r8d
  jmp    L253
L12:
  movsd  0x28(%rax,%rdx,1),%xmm3
  lea    0x20(%rax,%rdx,1),%r10
  addsd  %xmm3,%xmm1
  movapd %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r10)
  addsd  0x38(%rax,%rdx,1),%xmm3
  lea    0x30(%rax,%rdx,1),%r10
  movapd %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  addsd  (%r10),%xmm0
  movsd  %xmm0,(%r10)
  lea    0x8(%r9),%r10d
  jmp    L397
```

tool_calls: name: extract_symbolic_data
arguments: label: D12
datatype: byte[16]
name: extract_symbolic_data
arguments: label: D187
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D52
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D43
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D118
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D179
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D92
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D147
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D91
datatype: f64[2]
name: extract_symbolic_data
arguments: label: D48
datatype: byte[8]

tool: {"D12": [0x5f,0xaa,0xed,0x7b,0xc7,0x64,0xf2,0xbf,0x5f,0xaa,0xed,0x7b,0xc7,0x64,0xf2,0xbf]}

tool: {"D187": [1.14960430535816,1.14960430535816]}

tool: {"D52": [0x80,0x53,0x01,0x0d,0x62,0x62,0xec,0x3f]}

tool: {"D43": [0.44350482244527,0.44350482244527]}

tool: {"D118": [0.88293362717904,0.88293362717904]}

tool: {"D179": [0x6a,0xb9,0xa8,0x05,0xfe,0x40,0xfc,0x3f]}

tool: {"D92": [0x5e,0x29,0xa7,0x2c,0x04,0x20,0xbb,0x3f]}

tool: {"D147": [0.05297864003258,0.05297864003258]}

tool: {"D91": [1.58615986717275,1.58615986717275]}

tool: {"D48": [0x30,0xc1,0x3b,0x2b,0xe9,0x60,0x09,0x40]}

assistant: ```c
void Daub97Synthesis1D(double *signal_in, double *signal_out, int signal_length) {
  double *even, *odd;
  int i, half;
  half = signal_length >> 1;
  even = signal_in;
  odd = signal_in + half;
  for (i = 0; i < half; i++) {
    signal_out[i << 1] = even[i];
    signal_out[(i << 1) + 1] = odd[i];
  }
  for (i = 1; i < signal_length; i += 2)
    signal_out[i] *= (-1.14960430535816);
  signal_out[0] = signal_out[0] / 1.14960430535816 - 2 * 0.44350482244527 * signal_out[1];
  for (i = 2; i < signal_length; i += 2)
    signal_out[i] = signal_out[i] / 1.14960430535816 - 0.44350482244527 * (signal_out[i + 1] + signal_out[i - 1]);
  for (i = 1; i < signal_length - 2; i += 2)
    signal_out[i] -= 0.88293362717904 * (signal_out[i - 1] + signal_out[i + 1]);
  signal_out[signal_length - 1] -= 2 * 0.88293362717904 * signal_out[signal_length - 2];
  signal_out[0] -= 2 * -0.05297864003258 * signal_out[1];
  for (i = 2; i < signal_length; i += 2)
    signal_out[i] -= -0.05297864003258 * (signal_out[i + 1] + signal_out[i - 1]);
  for (i = 1; i < signal_length - 2; i += 2)
    signal_out[i] -= -1.58615986717275 * (signal_out[i - 1] + signal_out[i + 1]);
  signal_out[signal_length - 1] -= 2 * -1.58615986717275 * signal_out[signal_length - 2];
}
```