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

```asm
<durbin>:
  endbr64
  push   %r13
  movaps %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  comiss %xmm3,%xmm0
  jae    L165
  movss  (%rdi),%xmm0
  mov    %rdi,%r8
  mov    %rsi,%rdx
  mov    $0x1,%ecx
  movss  D8(%rip),%xmm4
  mov    %rsp,%r9
  lea    0x30(%rsp),%r10
  xorps  %xmm4,%xmm0
  divss  %xmm3,%xmm0
  movss  %xmm0,(%rsp)
  movss  %xmm0,(%rsi)
  movss  (%rdi),%xmm0
  xor    %edi,%edi
  jmp    L149
  nopl   0x0(%rax,%rax,1)
L204:
  mov    %eax,%ebx
  movslq %esi,%r13
  sub    %esi,%ebx
  lea    0x0(,%r13,4),%rbp
  movslq %ebx,%rbx
  movss  -0x4(%rdx,%rbx,4),%xmm1
  mulss  (%r8,%r13,4),%xmm1
  lea    0x1(%rsi),%r13d
  addss  %xmm1,%xmm0
  cmp    %ecx,%r13d
  jge    L201
  mov    %eax,%ebx
  add    $0x2,%esi
  sub    %r13d,%ebx
  movslq %ebx,%rbx
  movss  -0x4(%rdx,%rbx,4),%xmm1
  mulss  0x4(%r8,%rbp,1),%xmm1
  addss  %xmm1,%xmm0
  cmp    %ecx,%esi
  jge    L201
  mov    %eax,%ebx
  sub    %esi,%ebx
  movslq %ebx,%rsi
  movss  -0x4(%rdx,%rsi,4),%xmm1
  mulss  0x8(%r8,%rbp,1),%xmm1
  addss  %xmm1,%xmm0
L201:
  movaps %xmm0,%xmm2
  xorps  %xmm4,%xmm2
  divss  %xmm3,%xmm2
  movss  %xmm2,0x4(%r9,%rdi,4)
  cmp    $0x2,%rdi
  jbe    L150
  movups -0x10(%rdx,%rcx,4),%xmm5
L217:
  movaps %xmm2,%xmm6
  shufps $0x1b,%xmm5,%xmm5
  mov    %r11d,%esi
  shufps $0x0,%xmm6,%xmm6
  mulps  %xmm6,%xmm5
  shr    $0x2,%esi
  movaps %xmm5,0x30(%rsp)
  cmp    $0x2,%esi
  jne    L143
  movups -0x20(%rdx,%rcx,4),%xmm1
  shufps $0x1b,%xmm1,%xmm1
  mulps  %xmm6,%xmm1
  movaps %xmm1,0x40(%rsp)
L143:
  mov    %r11d,%esi
  and    $0xfffffffc,%esi
  mov    %esi,%ebx
  cmp    %esi,%r11d
  je     L94
L85:
  mov    %r11d,%ebp
  sub    %esi,%ebp
  cmp    $0x1,%ebp
  je     L114
  neg    %rsi
  movaps %xmm2,%xmm5
  shl    $0x2,%rsi
  shufps $0xe0,%xmm5,%xmm5
  lea    (%rdx,%rsi,1),%r13
  movq   -0x8(%r12,%r13,1),%xmm1
  mov    %r10,%r12
  sub    %rsi,%r12
  mov    %ebp,%esi
  shufps $0xe1,%xmm1,%xmm1
  and    $0xfffffffe,%esi
  mulps  %xmm5,%xmm1
  add    %esi,%ebx
  movlps %xmm1,(%r12)
  cmp    %esi,%ebp
  je     L208
L114:
  sub    %ebx,%eax
  movslq %ebx,%rsi
  cltq
  movss  -0x4(%rdx,%rax,4),%xmm1
  mulss  %xmm2,%xmm1
  movss  %xmm1,0x30(%rsp,%rsi,4)
L208:
  cmp    $0x2,%rdi
  jbe    L162
L94:
  movups (%rdx),%xmm1
  addps  0x30(%rsp),%xmm1
  mov    %r11d,%eax
  shr    $0x2,%eax
  movups %xmm1,(%rdx)
  cmp    $0x2,%eax
  jne    L200
  movups 0x10(%rdx),%xmm1
  addps  0x40(%rsp),%xmm1
  movups %xmm1,0x10(%rdx)
L200:
  mov    %r11d,%esi
  and    $0xfffffffc,%esi
  mov    %esi,%eax
  cmp    %esi,%r11d
  je     L186
L47:
  sub    %esi,%r11d
  cmp    $0x1,%r11d
  je     L90
  shl    $0x2,%rsi
  lea    (%rdx,%rsi,1),%rbx
  movq   0x30(%rsp,%rsi,1),%xmm5
  mov    %r11d,%esi
  movq   (%rbx),%xmm1
  and    $0xfffffffe,%esi
  add    %esi,%eax
  addps  %xmm5,%xmm1
  movlps %xmm1,(%rbx)
  cmp    %r11d,%esi
  je     L186
L90:
  cltq
  lea    (%rdx,%rax,4),%rsi
  movss  (%rsi),%xmm1
  addss  0x30(%rsp,%rax,4),%xmm1
  movss  %xmm1,(%rsi)
L186:
  movss  %xmm2,(%rdx,%rcx,4)
  add    $0x1,%rcx
  add    $0x1,%rdi
  cmp    $0xa,%rcx
  je     L80
L149:
  mulss  (%r9,%rdi,4),%xmm0
  mov    %ecx,%r11d
  mov    %ecx,%eax
  lea    0x0(,%rcx,4),%r12
  addss  %xmm0,%xmm3
  movss  (%r8,%rcx,4),%xmm0
  cmp    $0x2,%rdi
  jbe    L82
  movups -0x10(%rdx,%rcx,4),%xmm5
  movups (%r8),%xmm7
  mov    %ecx,%esi
  shr    $0x2,%esi
  movaps %xmm5,%xmm1
  shufps $0x1b,%xmm5,%xmm1
  mulps  %xmm7,%xmm1
  movaps %xmm1,%xmm2
  addss  %xmm0,%xmm2
  movaps %xmm1,%xmm0
  shufps $0x55,%xmm1,%xmm0
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x2,%esi
  jne    L61
  movups -0x20(%rdx,%rcx,4),%xmm1
  movups 0x10(%r8),%xmm7
  shufps $0x1b,%xmm1,%xmm1
  mulps  %xmm7,%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
L61:
  mov    %r11d,%esi
  and    $0xfffffffc,%esi
  cmp    %esi,%r11d
  jne    L204
  movaps %xmm0,%xmm2
  xorps  %xmm4,%xmm2
  divss  %xmm3,%xmm2
  movss  %xmm2,0x4(%r9,%rdi,4)
  jmp    L217
L165:
  mov    %rsp,%rdi
  mov    $0x28,%edx
  xor    %esi,%esi
  call   <memset@plt>
  nopw   0x0(%rax,%rax,1)
L80:
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L136
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L82:
  xor    %esi,%esi
  jmp    L204
  nopw   0x0(%rax,%rax,1)
L150:
  xor    %esi,%esi
  xor    %ebx,%ebx
  jmp    L85
  nopl   0x0(%rax)
L162:
  xor    %esi,%esi
  xor    %eax,%eax
  jmp    L47
L136:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_label: D8
type: byte[4]

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

assistant: ```c
void durbin(float c0, float *c, float *a) {
  int i, j;
  float alpha, beta, rc[10], tmp[10];
  if (c0 <= 0.0f) {
    memset(rc, 0, sizeof(rc[0]) * 10);
    return;
  }
  alpha = c0;
  *a = rc[0] = -*c / c0;
  beta = *c;
  for (i = 1; i < 10; i++) {
    alpha += beta * rc[i - 1];
    beta = c[i];
    for (j = 0; j <= i - 1; j++)
      beta += c[j] * a[i - j - 1];
    rc[i] = -beta / alpha;
    for (j = 0; j <= i - 1; j++)
      tmp[j] = rc[i] * a[i - j - 1];
    for (j = 0; j <= i - 1; j++)
      a[j] += tmp[j];
    a[i] = rc[i];
  }
}
```