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

```asm
<dradb3>:
  endbr64
  mov    %esi,%r11d
  push   %r15
  lea    (%rdi,%rdi,1),%eax
  push   %r14
  imul   %edi,%r11d
  push   %r13
  push   %r12
  push   %rbp
  mov    %esi,%ebp
  lea    (%rax,%rdi,1),%esi
  push   %rbx
  mov    %rcx,-0x8(%rsp)
  mov    %r11d,-0xc(%rsp)
  mov    %eax,-0x14(%rsp)
  mov    %esi,-0x10(%rsp)
  test   %ebp,%ebp
  jle    L27
  movslq %eax,%r12
  mov    %rdx,%rbx
  movslq %esi,%r14
  mov    %rcx,%rdx
  shl    $0x2,%r12
  lea    (%r11,%r11,1),%r13d
  movslq %edi,%rsi
  shl    $0x2,%r14
  lea    (%rbx,%r12,1),%rcx
  shl    $0x2,%rsi
  mov    %rdx,%rax
  neg    %r12
  movss  D8(%rip),%xmm4
  xor    %r10d,%r10d
  movslq %r11d,%r15
  movslq %r13d,%r13
  movss  D5(%rip),%xmm5
  nopl   0x0(%rax)
L58:
  movss  -0x4(%rcx),%xmm0
  movss  (%rcx,%r12,1),%xmm2
  mov    %r10d,%r11d
  lea    0x1(%r10),%r10d
  addss  %xmm0,%xmm0
  movaps %xmm0,%xmm1
  addss  %xmm2,%xmm0
  mulss  %xmm4,%xmm1
  movss  %xmm0,(%rdx)
  movss  (%rcx),%xmm0
  add    %r14,%rcx
  addss  %xmm0,%xmm0
  addss  %xmm2,%xmm1
  mulss  %xmm5,%xmm0
  movaps %xmm1,%xmm2
  subss  %xmm0,%xmm2
  addss  %xmm1,%xmm0
  movss  %xmm2,(%rdx,%r15,4)
  movss  %xmm0,(%rdx,%r13,4)
  add    %rsi,%rdx
  cmp    %r10d,%ebp
  jne    L58
  cmp    $0x1,%edi
  je     L27
  mov    -0xc(%rsp),%edx
  mov    -0x8(%rsp),%rcx
  xor    %r14d,%r14d
  add    %edx,%edx
  lea    (%rcx,%r15,4),%r12
  xor    %r15d,%r15d
  movslq %edx,%rdx
  lea    (%rcx,%rdx,4),%rbp
  nopl   0x0(%rax)
L1:
  mov    -0x14(%rsp),%ecx
  lea    (%rcx,%r14,1),%edx
  cmp    $0x2,%edi
  jle    L48
  movslq %edx,%rdx
  lea    (%rbx,%rdx,4),%rcx
  movslq %r14d,%rdx
  lea    (%rbx,%rdx,4),%r13
  mov    %rcx,%r10
  mov    $0x2,%edx
  nopw   0x0(%rax,%rax,1)
L31:
  movss  0x4(%rcx),%xmm1
  addss  -0xc(%r10),%xmm1
  add    $0x8,%rcx
  sub    $0x8,%r10
  movss  -0x4(%r13,%rdx,4),%xmm0
  movaps %xmm1,%xmm3
  mulss  %xmm4,%xmm3
  addss  %xmm0,%xmm3
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%rdx,4)
  movss  (%rcx),%xmm2
  subss  (%r10),%xmm2
  movaps %xmm3,%xmm6
  movss  0x0(%r13,%rdx,4),%xmm1
  movaps %xmm2,%xmm0
  mulss  %xmm4,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm2,%xmm1
  movss  %xmm1,(%rax,%rdx,4)
  movss  (%rcx),%xmm1
  addss  (%r10),%xmm1
  movss  -0x4(%rcx),%xmm2
  subss  -0x4(%r10),%xmm2
  movss  -0x4(%r8,%rdx,4),%xmm7
  mulss  %xmm5,%xmm1
  mulss  %xmm5,%xmm2
  subss  %xmm1,%xmm6
  addss  %xmm1,%xmm3
  movaps %xmm0,%xmm1
  addss  %xmm2,%xmm1
  subss  %xmm2,%xmm0
  movss  -0x8(%r8,%rdx,4),%xmm2
  mulss  %xmm6,%xmm2
  mulss  %xmm1,%xmm7
  subss  %xmm7,%xmm2
  movss  %xmm2,-0x4(%r12,%rdx,4)
  mulss  -0x8(%r8,%rdx,4),%xmm1
  mulss  -0x4(%r8,%rdx,4),%xmm6
  addss  %xmm6,%xmm1
  movss  %xmm1,(%r12,%rdx,4)
  movss  -0x8(%r9,%rdx,4),%xmm1
  movss  -0x4(%r9,%rdx,4),%xmm2
  mulss  %xmm3,%xmm1
  mulss  %xmm0,%xmm2
  subss  %xmm2,%xmm1
  movss  %xmm1,-0x4(%rbp,%rdx,4)
  mulss  -0x8(%r9,%rdx,4),%xmm0
  mulss  -0x4(%r9,%rdx,4),%xmm3
  addss  %xmm3,%xmm0
  movss  %xmm0,0x0(%rbp,%rdx,4)
  add    $0x2,%rdx
  cmp    %edx,%edi
  jg     L31
L48:
  lea    0x1(%r15),%edx
  add    -0x10(%rsp),%r14d
  add    %rsi,%rax
  add    %rsi,%r12
  add    %rsi,%rbp
  cmp    %r15d,%r11d
  je     L27
  mov    %edx,%r15d
  jmp    L1
  nopl   0x0(%rax)
L27:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: tag: D8
data_type: byte[4]
name: parse_data
arguments: tag: D5
data_type: byte[4]

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

tool: {"D5": [0xd7,0xb3,0x5d,0x3f]}

assistant: ```c
void dradb3(int ido, int l1, float *cc, float *ch, float *wa1, float *wa2) {
  static float taur = -.5f;
  static float taui = .8660254037844386f;
  int i, k, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10;
  float ci2, ci3, di2, di3, cr2, cr3, dr2, dr3, ti2, tr2;
  t0 = l1 * ido;
  t1 = 0;
  t2 = t0 << 1;
  t3 = ido << 1;
  t4 = ido + (ido << 1);
  t5 = 0;
  for (k = 0; k < l1; k++) {
    tr2 = cc[t3 - 1] + cc[t3 - 1];
    cr2 = cc[t5] + (taur * tr2);
    ch[t1] = cc[t5] + tr2;
    ci3 = taui * (cc[t3] + cc[t3]);
    ch[t1 + t0] = cr2 - ci3;
    ch[t1 + t2] = cr2 + ci3;
    t1 += ido;
    t3 += t4;
    t5 += t4;
  }
  if (ido == 1)
    return;
  t1 = 0;
  t3 = ido << 1;
  for (k = 0; k < l1; k++) {
    t7 = t1 + (t1 << 1);
    t6 = (t5 = t7 + t3);
    t8 = t1;
    t10 = (t9 = t1 + t0) + t0;
    for (i = 2; i < ido; i += 2) {
      t5 += 2;
      t6 -= 2;
      t7 += 2;
      t8 += 2;
      t9 += 2;
      t10 += 2;
      tr2 = cc[t5 - 1] + cc[t6 - 1];
      cr2 = cc[t7 - 1] + (taur * tr2);
      ch[t8 - 1] = cc[t7 - 1] + tr2;
      ti2 = cc[t5] - cc[t6];
      ci2 = cc[t7] + (taur * ti2);
      ch[t8] = cc[t7] + ti2;
      cr3 = taui * (cc[t5 - 1] - cc[t6 - 1]);
      ci3 = taui * (cc[t5] + cc[t6]);
      dr2 = cr2 - ci3;
      dr3 = cr2 + ci3;
      di2 = ci2 + cr3;
      di3 = ci2 - cr3;
      ch[t9 - 1] = wa1[i - 2] * dr2 - wa1[i - 1] * di2;
      ch[t9] = wa1[i - 2] * di2 + wa1[i - 1] * dr2;
      ch[t10 - 1] = wa2[i - 2] * dr3 - wa2[i - 1] * di3;
      ch[t10] = wa2[i - 2] * di3 + wa2[i - 1] * dr3;
    }
    t1 += ido;
  }
}
```