user: What is the c source code of the assembly code below:

```asm
<daub4>:
  endbr64
  lea    -0x4000(%rsp),%r11
L60:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L60
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x4008(%rsp)
  xor    %eax,%eax
  cmp    $0x3,%rsi
  jbe    L20
  mov    %rdi,%rcx
  lea    -0x4(%rdi),%r9
  mov    %rsi,%r8
  shr    %r8
  test   %edx,%edx
  js     L23
  lea    -0x3(%rsi),%rdi
  lea    (%rsp,%r8,4),%rdx
  mov    $0x1,%eax
  movsd  D84(%rip),%xmm6
  movsd  D20(%rip),%xmm5
  movsd  D4(%rip),%xmm4
  movsd  D89(%rip),%xmm3
L17:
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%rcx,%rax,4),%xmm0
  pxor   %xmm8,%xmm8
  cvtss2sd (%rcx,%rax,4),%xmm8
  add    $0x2,%rax
  pxor   %xmm7,%xmm7
  cvtss2sd -0x4(%rcx,%rax,4),%xmm7
  pxor   %xmm2,%xmm2
  cvtss2sd (%rcx,%rax,4),%xmm2
  movapd %xmm0,%xmm1
  mulsd  %xmm6,%xmm1
  movapd %xmm8,%xmm9
  mulsd  %xmm5,%xmm9
  addsd  %xmm9,%xmm1
  movapd %xmm7,%xmm9
  mulsd  %xmm4,%xmm9
  addsd  %xmm9,%xmm1
  movapd %xmm2,%xmm9
  mulsd  %xmm3,%xmm9
  addsd  %xmm9,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,-0x2(%rsp,%rax,2)
  mulsd  %xmm3,%xmm0
  mulsd  %xmm4,%xmm8
  subsd  %xmm8,%xmm0
  mulsd  %xmm5,%xmm7
  addsd  %xmm7,%xmm0
  mulsd  %xmm6,%xmm2
  subsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x2(%rdx,%rax,2)
  cmp    %rdi,%rax
  jbe    L17
  lea    -0x4(%rsi),%rax
  shr    %rax
  add    $0x2,%rax
  pxor   %xmm0,%xmm0
  cvtss2sd -0x4(%r9,%rsi,4),%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd (%r9,%rsi,4),%xmm4
  pxor   %xmm3,%xmm3
  cvtss2sd (%rcx),%xmm3
  pxor   %xmm2,%xmm2
  cvtss2sd 0x4(%rcx),%xmm2
  movsd  D84(%rip),%xmm5
  movapd %xmm0,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  D20(%rip),%xmm6
  movapd %xmm4,%xmm7
  mulsd  %xmm6,%xmm7
  addsd  %xmm7,%xmm1
  movsd  D4(%rip),%xmm7
  movapd %xmm3,%xmm8
  mulsd  %xmm7,%xmm8
  addsd  %xmm8,%xmm1
  movsd  D89(%rip),%xmm8
  movapd %xmm2,%xmm9
  mulsd  %xmm8,%xmm9
  addsd  %xmm9,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rsp,%rax,4)
  add    %r8,%rax
  mulsd  %xmm8,%xmm0
  mulsd  %xmm7,%xmm4
  subsd  %xmm4,%xmm0
  mulsd  %xmm6,%xmm3
  addsd  %xmm3,%xmm0
  mulsd  %xmm5,%xmm2
  subsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rsp,%rax,4)
L1:
  mov    $0x1,%eax
L67:
  movss  (%rsp,%rax,4),%xmm0
  movss  %xmm0,-0x4(%rcx,%rax,4)
  mov    %rax,%rdx
  add    $0x1,%rax
  cmp    %rdx,%rsi
  jne    L67
L20:
  mov    0x4008(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L55
  add    $0x4018,%rsp
  ret
L23:
  pxor   %xmm0,%xmm0
  cvtss2sd (%r9,%r8,4),%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd (%r9,%rsi,4),%xmm4
  pxor   %xmm3,%xmm3
  cvtss2sd (%rdi),%xmm3
  pxor   %xmm2,%xmm2
  cvtss2sd (%rdi,%r8,4),%xmm2
  movsd  D4(%rip),%xmm5
  movapd %xmm0,%xmm1
  mulsd  %xmm5,%xmm1
  movsd  D20(%rip),%xmm6
  movapd %xmm4,%xmm7
  mulsd  %xmm6,%xmm7
  addsd  %xmm7,%xmm1
  movsd  D84(%rip),%xmm7
  movapd %xmm3,%xmm8
  mulsd  %xmm7,%xmm8
  addsd  %xmm8,%xmm1
  movsd  D89(%rip),%xmm8
  movapd %xmm2,%xmm9
  mulsd  %xmm8,%xmm9
  addsd  %xmm9,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x4(%rsp)
  mulsd  %xmm8,%xmm0
  mulsd  %xmm7,%xmm4
  subsd  %xmm4,%xmm0
  mulsd  %xmm6,%xmm3
  addsd  %xmm3,%xmm0
  mulsd  %xmm5,%xmm2
  subsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x8(%rsp)
  lea    0x1(%r8,%r8,1),%rdi
  lea    (%rcx,%r8,4),%rdx
  mov    $0x3,%eax
  movapd %xmm5,%xmm6
  movsd  D20(%rip),%xmm5
  movapd %xmm7,%xmm4
  movapd %xmm8,%xmm3
L12:
  pxor   %xmm0,%xmm0
  cvtss2sd -0x6(%rcx,%rax,2),%xmm0
  pxor   %xmm8,%xmm8
  cvtss2sd -0x6(%rdx,%rax,2),%xmm8
  pxor   %xmm7,%xmm7
  cvtss2sd -0x2(%rcx,%rax,2),%xmm7
  pxor   %xmm2,%xmm2
  cvtss2sd -0x2(%rdx,%rax,2),%xmm2
  movapd %xmm0,%xmm1
  mulsd  %xmm6,%xmm1
  movapd %xmm8,%xmm9
  mulsd  %xmm5,%xmm9
  addsd  %xmm9,%xmm1
  movapd %xmm7,%xmm9
  mulsd  %xmm4,%xmm9
  addsd  %xmm9,%xmm1
  movapd %xmm2,%xmm9
  mulsd  %xmm3,%xmm9
  addsd  %xmm9,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rsp,%rax,4)
  add    $0x2,%rax
  mulsd  %xmm3,%xmm0
  mulsd  %xmm4,%xmm8
  subsd  %xmm8,%xmm0
  mulsd  %xmm5,%xmm7
  addsd  %xmm7,%xmm0
  mulsd  %xmm6,%xmm2
  subsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rsp,%rax,4)
  cmp    %rax,%rdi
  jne    L12
  jmp    L1
L55:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D84
data_type: f64
name: parse_data
arguments: data_tag: D20
data_type: f64
name: parse_data
arguments: data_tag: D4
data_type: f64
name: parse_data
arguments: data_tag: D89
data_type: byte[8]

tool: D84: 0.4829629131445341

tool: D20: 0.8365163037378079

tool: D4: 0.2241438680420134

tool: {"D89": [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];
  }
}
```