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

```asm
<f3_coef>:
  endbr64
  push   %r13
  mov    %rdi,%r8
  mov    %esi,%r13d
  push   %r12
  push   %rbp
  mov    %edx,%ebp
  push   %rbx
  mov    %ecx,%ebx
  sub    $0x198,%rsp
  movss  D9(%rip),%xmm3
  mov    %fs:0x28,%rax
  mov    %rax,0x188(%rsp)
  xor    %eax,%eax
  movslq %esi,%rax
  movss  %xmm3,(%rsp,%rax,4)
  test   %esi,%esi
  jle    L152
  lea    (%rsp,%rax,4),%rdx
  movaps %xmm0,%xmm6
  movaps %xmm3,%xmm4
  mov    %esi,%eax
  lea    0x1(%rsi),%esi
  jmp    L168
  nopl   0x0(%rax,%rax,1)
L5:
  movaps %xmm0,%xmm4
L168:
  pxor   %xmm0,%xmm0
  mov    %esi,%ecx
  pxor   %xmm5,%xmm5
  sub    $0x4,%rdx
  cvtsi2ss %eax,%xmm0
  sub    %eax,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm6,%xmm0
  divss  %xmm5,%xmm0
  mulss  %xmm4,%xmm0
  movss  %xmm0,(%rdx)
  sub    $0x1,%eax
  jne    L5
L152:
  movslq %ebp,%rax
  movss  %xmm3,0x80(%rsp,%rax,4)
  test   %ebp,%ebp
  jle    L118
  lea    0x80(%rsp,%rax,4),%rdx
  movaps %xmm3,%xmm4
  lea    0x1(%rbp),%esi
  mov    %ebp,%eax
  jmp    L153
  nopw   0x0(%rax,%rax,1)
L151:
  movaps %xmm0,%xmm4
L153:
  pxor   %xmm0,%xmm0
  mov    %esi,%ecx
  pxor   %xmm5,%xmm5
  sub    $0x4,%rdx
  cvtsi2ss %eax,%xmm0
  sub    %eax,%ecx
  cvtsi2ss %ecx,%xmm5
  mulss  %xmm1,%xmm0
  divss  %xmm5,%xmm0
  mulss  %xmm4,%xmm0
  movss  %xmm0,(%rdx)
  sub    $0x1,%eax
  jne    L151
L118:
  movslq %ebx,%r12
  movss  %xmm3,0x100(%rsp,%r12,4)
  test   %ebx,%ebx
  jle    L4
  lea    0x100(%rsp,%r12,4),%rdx
  movaps %xmm3,%xmm1
  lea    0x1(%rbx),%esi
  mov    %ebx,%eax
  jmp    L155
  nopl   0x0(%rax,%rax,1)
L140:
  movaps %xmm0,%xmm1
L155:
  pxor   %xmm0,%xmm0
  mov    %esi,%ecx
  pxor   %xmm3,%xmm3
  sub    $0x4,%rdx
  cvtsi2ss %eax,%xmm0
  sub    %eax,%ecx
  cvtsi2ss %ecx,%xmm3
  mulss  %xmm2,%xmm0
  divss  %xmm3,%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rdx)
  sub    $0x1,%eax
  jne    L140
L4:
  lea    0x0(%r13,%rbp,1),%eax
  add    %ebx,%eax
  js     L38
  cltq
  mov    %r8,%rdi
  xor    %esi,%esi
  lea    0x4(,%rax,4),%rdx
  call   <memset@plt>
  mov    %rax,%r8
L38:
  test   %r13d,%r13d
  js     L166
  lea    0x1(%rbp),%r9d
  mov    %rsp,%r10
  lea    0x2(%r13,%rbp,1),%r13d
  lea    0x4(%r8),%r11
  nopl   0x0(%rax)
L78:
  test   %ebp,%ebp
  js     L56
  mov    %r9d,%esi
  lea    0x80(%rsp),%rdi
  sub    %ebp,%esi
  sub    $0x1,%esi
  nopl   0x0(%rax)
L42:
  test   %ebx,%ebx
  js     L103
  movss  (%r10),%xmm1
  mulss  (%rdi),%xmm1
  movslq %esi,%rcx
  lea    0x100(%rsp),%rdx
  lea    (%r8,%rcx,4),%rax
  add    %r12,%rcx
  lea    (%r11,%rcx,4),%rcx
  nopl   0x0(%rax,%rax,1)
L45:
  movss  (%rdx),%xmm0
  add    $0x4,%rax
  add    $0x4,%rdx
  mulss  %xmm1,%xmm0
  addss  -0x4(%rax),%xmm0
  movss  %xmm0,-0x4(%rax)
  cmp    %rcx,%rax
  jne    L45
L103:
  add    $0x1,%esi
  add    $0x4,%rdi
  cmp    %esi,%r9d
  jne    L42
L56:
  add    $0x1,%r9d
  add    $0x4,%r10
  cmp    %r9d,%r13d
  jne    L78
L166:
  mov    0x188(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L34
  add    $0x198,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L34:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D9
type_infered: f32

tool: D9: 1

assistant: ```c
void f3_coef(float *f, int l, int m, int n, float a, float b, float c) {
  float Ca[32], Cb[32], Cc[32];
  int iA, iB, iC;
  int I;
  Ca[l] = 1.0;
  for (iA = l - 1; iA >= 0; iA--)
    Ca[iA] = a * (iA + 1) / (l - iA) * Ca[iA + 1];
  Cb[m] = 1.0;
  for (iB = m - 1; iB >= 0; iB--)
    Cb[iB] = b * (iB + 1) / (m - iB) * Cb[iB + 1];
  Cc[n] = 1.0;
  for (iC = n - 1; iC >= 0; iC--)
    Cc[iC] = c * (iC + 1) / (n - iC) * Cc[iC + 1];
  for (I = 0; I <= (l + m + n); I++)
    f[I] = 0.0;
  for (iA = 0; iA < l + 1; iA++)
    for (iB = 0; iB < m + 1; iB++)
      for (iC = 0; iC < n + 1; iC++) {
        I = iA + iB + iC;
        f[I] += Ca[iA] * Cb[iB] * Cc[iC];
      }
  return;
}
```