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

```asm
<f3_coef>:
  endbr64
  push   %r15
  mov    %rdi,%r8
  push   %r14
  push   %r13
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %ecx,%ebp
  push   %rbx
  mov    %edx,%ebx
  sub    $0x1b8,%rsp
  movss  D1(%rip),%xmm6
  mov    %fs:0x28,%rax
  mov    %rax,0x1a8(%rsp)
  xor    %eax,%eax
  movslq %esi,%rax
  mov    %rax,0x18(%rsp)
  movss  %xmm6,0x20(%rsp,%rax,4)
  test   %esi,%esi
  jle    L233
  lea    0x20(%rsp,%rax,4),%rdx
  movaps %xmm0,%xmm5
  mov    %esi,%eax
  movss  (%rdx),%xmm3
  lea    0x1(%rsi),%esi
  nopl   (%rax)
L89:
  pxor   %xmm0,%xmm0
  mov    %esi,%ecx
  pxor   %xmm4,%xmm4
  sub    $0x4,%rdx
  cvtsi2ss %eax,%xmm0
  sub    %eax,%ecx
  cvtsi2ss %ecx,%xmm4
  mulss  %xmm5,%xmm0
  divss  %xmm4,%xmm0
  mulss  %xmm0,%xmm3
  movss  %xmm3,(%rdx)
  sub    $0x1,%eax
  jne    L89
L233:
  movslq %ebx,%rax
  movss  %xmm6,0xa0(%rsp,%rax,4)
  test   %ebx,%ebx
  jle    L237
  lea    0xa0(%rsp,%rax,4),%rdx
  lea    0x1(%rbx),%esi
  mov    %ebx,%eax
  movss  (%rdx),%xmm3
  xchg   %ax,%ax
L41:
  pxor   %xmm0,%xmm0
  mov    %esi,%ecx
  pxor   %xmm4,%xmm4
  sub    $0x4,%rdx
  cvtsi2ss %eax,%xmm0
  sub    %eax,%ecx
  cvtsi2ss %ecx,%xmm4
  mulss  %xmm1,%xmm0
  divss  %xmm4,%xmm0
  mulss  %xmm0,%xmm3
  movss  %xmm3,(%rdx)
  sub    $0x1,%eax
  jne    L41
L237:
  movslq %ebp,%rax
  movss  %xmm6,0x120(%rsp,%rax,4)
  test   %ebp,%ebp
  jle    L61
  lea    0x120(%rsp,%rax,4),%rdx
  lea    0x1(%rbp),%esi
  mov    %ebp,%eax
  movss  (%rdx),%xmm1
  xchg   %ax,%ax
L147:
  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  %xmm0,%xmm1
  movss  %xmm1,(%rdx)
  sub    $0x1,%eax
  jne    L147
L61:
  lea    (%r12,%rbx,1),%eax
  add    %ebp,%eax
  js     L108
  cltq
  mov    %r8,%rdi
  xor    %esi,%esi
  lea    0x4(,%rax,4),%rdx
  call   <memset@plt>
  mov    %rax,%r8
L108:
  test   %r12d,%r12d
  js     L48
  mov    %ebx,%eax
  or     %ebp,%eax
  js     L48
  lea    0x20(%rsp),%rax
  mov    %ebx,%ebx
  lea    0x1(%rbp),%r12d
  mov    %r8,0x8(%rsp)
  mov    %rax,0x10(%rsp)
  lea    0x1(%rbx),%r13
  mov    %r12d,%r10d
  mov    %r12d,%ebx
  movaps 0x120(%rsp),%xmm3
  movaps 0x130(%rsp),%xmm4
  lea    0xa0(%rsp),%r14
  shr    $0x2,%r10d
  movaps 0x140(%rsp),%xmm5
  and    $0xfffffffc,%ebx
  xor    %r15d,%r15d
  movaps 0x150(%rsp),%xmm6
  movaps 0x160(%rsp),%xmm7
  movaps 0x170(%rsp),%xmm8
  movaps 0x180(%rsp),%xmm9
  movaps 0x190(%rsp),%xmm10
  nopl   0x0(%rax,%rax,1)
L66:
  mov    0x10(%rsp),%rax
  mov    0x8(%rsp),%rcx
  mov    %r15,%rdi
  movss  (%rax),%xmm2
  nopl   0x0(%rax)
L216:
  movss  (%r14,%rdi,4),%xmm0
  mov    %edi,%eax
  mulss  %xmm2,%xmm0
  cmp    $0x2,%ebp
  jbe    L229
  movaps %xmm0,%xmm1
  movaps %xmm3,%xmm11
  movups (%rcx),%xmm12
  shufps $0x0,%xmm1,%xmm1
  mulps  %xmm1,%xmm11
  addps  %xmm12,%xmm11
  movups %xmm11,(%rcx)
  cmp    $0x1,%r10d
  jbe    L150
  movaps %xmm1,%xmm11
  movups 0x10(%rcx),%xmm13
  mulps  %xmm4,%xmm11
  addps  %xmm13,%xmm11
  movups %xmm11,0x10(%rcx)
  cmp    $0x2,%r10d
  je     L150
  movaps %xmm1,%xmm11
  movups 0x20(%rcx),%xmm14
  mulps  %xmm5,%xmm11
  addps  %xmm14,%xmm11
  movups %xmm11,0x20(%rcx)
  cmp    $0x3,%r10d
  je     L150
  movaps %xmm1,%xmm11
  movups 0x30(%rcx),%xmm15
  mulps  %xmm6,%xmm11
  addps  %xmm15,%xmm11
  movups %xmm11,0x30(%rcx)
  cmp    $0x4,%r10d
  je     L150
  movaps %xmm1,%xmm11
  movups 0x40(%rcx),%xmm15
  mulps  %xmm7,%xmm11
  addps  %xmm15,%xmm11
  movups %xmm11,0x40(%rcx)
  cmp    $0x5,%r10d
  je     L150
  movaps %xmm1,%xmm11
  movups 0x50(%rcx),%xmm14
  mulps  %xmm8,%xmm11
  addps  %xmm14,%xmm11
  movups %xmm11,0x50(%rcx)
  cmp    $0x6,%r10d
  je     L150
  movaps %xmm1,%xmm11
  movups 0x60(%rcx),%xmm13
  mulps  %xmm9,%xmm11
  addps  %xmm13,%xmm11
  movups %xmm11,0x60(%rcx)
  cmp    $0x7,%r10d
  je     L150
  mulps  %xmm10,%xmm1
  movups 0x70(%rcx),%xmm12
  addps  %xmm12,%xmm1
  movups %xmm1,0x70(%rcx)
L150:
  cmp    %ebx,%r12d
  je     L85
  mov    %ebx,%esi
  mov    %ebx,%edx
L212:
  mov    %r12d,%r11d
  sub    %esi,%r11d
  cmp    %esi,%ebp
  je     L29
  movq   0x120(%rsp,%rsi,4),%xmm11
  movaps %xmm0,%xmm1
  lea    (%rsi,%rdi,1),%r9
  mov    %r11d,%esi
  shufps $0xe0,%xmm1,%xmm1
  lea    (%r8,%r9,4),%r9
  and    $0xfffffffe,%esi
  mulps  %xmm11,%xmm1
  movq   (%r9),%xmm11
  add    %esi,%edx
  addps  %xmm11,%xmm1
  movlps %xmm1,(%r9)
  cmp    %r11d,%esi
  je     L85
L29:
  add    %edx,%eax
  movslq %edx,%rdx
  mulss  0x120(%rsp,%rdx,4),%xmm0
  cltq
  lea    (%r8,%rax,4),%rax
  addss  (%rax),%xmm0
  movss  %xmm0,(%rax)
L85:
  add    $0x1,%rdi
  add    $0x4,%rcx
  cmp    %r13,%rdi
  jne    L216
  addq   $0x4,0x8(%rsp)
  lea    0x1(%r15),%rax
  add    $0x1,%r13
  sub    $0x4,%r14
  addq   $0x4,0x10(%rsp)
  cmp    0x18(%rsp),%r15
  je     L48
  mov    %rax,%r15
  jmp    L66
L229:
  xor    %esi,%esi
  xor    %edx,%edx
  jmp    L212
L48:
  mov    0x1a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L132
  add    $0x1b8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L132:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D1
datatype: f32

tool: D1: 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;
}
```