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

```asm
<daub4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x4000(%rsp),%r11
L84:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L84
  sub    $0x60,%rsp
  mov    %rdi,-0x4048(%rbp)
  mov    %rsi,-0x4050(%rbp)
  mov    %edx,-0x4054(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x4048(%rbp),%rax
  sub    $0x4,%rax
  mov    %rax,-0x4028(%rbp)
  cmpq   $0x3,-0x4050(%rbp)
  jbe    L89
  mov    -0x4050(%rbp),%rax
  shr    %rax
  mov    %rax,-0x4020(%rbp)
  mov    -0x4020(%rbp),%rax
  add    $0x1,%rax
  mov    %rax,-0x4018(%rbp)
  cmpl   $0x0,-0x4054(%rbp)
  js     L61
  movq   $0x1,-0x4038(%rbp)
  movq   $0x1,-0x4030(%rbp)
  jmp    L103
L109:
  mov    -0x4030(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D108(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x4030(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4030(%rbp),%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D40(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4030(%rbp),%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D310(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  mov    -0x4038(%rbp),%rax
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  mov    -0x4030(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D310(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x4030(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D40(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x4030(%rbp),%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x4030(%rbp),%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D108(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x4038(%rbp),%rdx
  mov    -0x4020(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  addq   $0x2,-0x4030(%rbp)
  addq   $0x1,-0x4038(%rbp)
L103:
  mov    -0x4050(%rbp),%rax
  sub    $0x3,%rax
  cmp    %rax,-0x4030(%rbp)
  jbe    L109
  mov    -0x4050(%rbp),%rax
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D108(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x4050(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4028(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D40(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4028(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D310(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  mov    -0x4038(%rbp),%rax
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  mov    -0x4050(%rbp),%rax
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D310(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x4050(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D40(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x4028(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x4028(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D108(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x4038(%rbp),%rdx
  mov    -0x4020(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  jmp    L70
L61:
  mov    -0x4020(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D40(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x4050(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4028(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D108(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4018(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D310(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x400c(%rbp)
  mov    -0x4020(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D310(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x4050(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D108(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x4028(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x4018(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D40(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4008(%rbp)
  movq   $0x1,-0x4038(%rbp)
  movq   $0x3,-0x4030(%rbp)
  jmp    L23
L24:
  mov    -0x4038(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D40(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x4038(%rbp),%rdx
  mov    -0x4020(%rbp),%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4038(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D108(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  mov    -0x4038(%rbp),%rdx
  mov    -0x4018(%rbp),%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D310(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x4030(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x4030(%rbp)
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  mov    -0x4038(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D310(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x4038(%rbp),%rdx
  mov    -0x4020(%rbp),%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D108(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  mov    -0x4038(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D36(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x4038(%rbp),%rdx
  mov    -0x4018(%rbp),%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm1,%xmm2
  movsd  D40(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x4030(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x4030(%rbp)
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4010(%rbp,%rax,4)
  addq   $0x1,-0x4038(%rbp)
L23:
  mov    -0x4038(%rbp),%rax
  cmp    -0x4020(%rbp),%rax
  jb     L24
L70:
  movq   $0x1,-0x4038(%rbp)
  jmp    L5
L64:
  mov    -0x4038(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x4028(%rbp),%rax
  add    %rax,%rdx
  mov    -0x4038(%rbp),%rax
  movss  -0x4010(%rbp,%rax,4),%xmm0
  movss  %xmm0,(%rdx)
  addq   $0x1,-0x4038(%rbp)
L5:
  mov    -0x4038(%rbp),%rax
  cmp    -0x4050(%rbp),%rax
  jbe    L64
  jmp    L85
L89:
  nop
L85:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L44
  call   <__stack_chk_fail@plt>
L44:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D108
type_guessed: f64
name: unpack_data
arguments: data_label: D36
type_guessed: f64
name: unpack_data
arguments: data_label: D40
type_guessed: f64
name: unpack_data
arguments: data_label: D310
type_guessed: byte[8]

tool: D108: 0.4829629131445341

tool: D36: 0.8365163037378079

tool: D40: 0.2241438680420134

tool: {"D310": [0x91,0x06,0x93,0xc1,0x7d,0x90,0xc0,0xbf]}

assistant: ```c
void daub4(float b[], unsigned long n, int isign) {
  float wksp[4097];
  float *a = b - 1;
  unsigned long nh, nh1, i, j;
  if (n < 4)
    return;
  nh1 = (nh = n >> 1) + 1;
  if (isign >= 0) {
    for (i = 1, j = 1; j <= n - 3; j += 2, i++) {
      wksp[i] = 0.4829629131445341 * a[j] + 0.8365163037378079 * a[j + 1] + 0.2241438680420134 * a[j + 2] + -0.1294095225512604 * a[j + 3];
      wksp[i + nh] = -0.1294095225512604 * a[j] - 0.2241438680420134 * a[j + 1] + 0.8365163037378079 * a[j + 2] - 0.4829629131445341 * a[j + 3];
    }
    wksp[i] = 0.4829629131445341 * a[n - 1] + 0.8365163037378079 * a[n] + 0.2241438680420134 * a[1] + -0.1294095225512604 * a[2];
    wksp[i + nh] = -0.1294095225512604 * a[n - 1] - 0.2241438680420134 * a[n] + 0.8365163037378079 * a[1] - 0.4829629131445341 * a[2];
  } else {
    wksp[1] = 0.2241438680420134 * a[nh] + 0.8365163037378079 * a[n] + 0.4829629131445341 * a[1] + -0.1294095225512604 * a[nh1];
    wksp[2] = -0.1294095225512604 * a[nh] - 0.4829629131445341 * a[n] + 0.8365163037378079 * a[1] - 0.2241438680420134 * a[nh1];
    for (i = 1, j = 3; i < nh; i++) {
      wksp[j++] = 0.2241438680420134 * a[i] + 0.8365163037378079 * a[i + nh] + 0.4829629131445341 * a[i + 1] + -0.1294095225512604 * a[i + nh1];
      wksp[j++] = -0.1294095225512604 * a[i] - 0.4829629131445341 * a[i + nh] + 0.8365163037378079 * a[i + 1] - 0.2241438680420134 * a[i + nh1];
    }
  }
  for (i = 1; i <= n; i++) {
    a[i] = wksp[i];
  }
}
```