user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<levinson_durbin>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x58,%rsp
  mov    %edx,-0x48(%rbp)
  mov    %rsi,-0x78(%rbp)
  mov    %rsp,%rcx
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  mov    %edx,%eax
  add    $0x1,%eax
  cltq
  lea    0x0(,%rax,4),%r13
  imul   %rax,%rax
  lea    0xf(,%rax,4),%rax
  mov    %rax,%rdx
  and    $0xfffffffffffff000,%rax
  sub    %rax,%rcx
  and    $0xfffffffffffffff0,%rdx
  cmp    %rcx,%rsp
  je     L76
L20:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rcx,%rsp
  jne    L20
L76:
  and    $0xfff,%edx
  sub    %rdx,%rsp
  test   %rdx,%rdx
  jne    L78
L40:
  movss  (%rdi),%xmm7
  mov    -0x48(%rbp),%eax
  mov    %rsp,-0x58(%rbp)
  movss  %xmm7,-0x44(%rbp)
  test   %eax,%eax
  jle    L95
  mov    -0x58(%rbp),%rsi
  mov    %r13,%rax
  lea    0x4(%r13),%rcx
  mov    %r13,%r12
  shr    $0x2,%rax
  movss  D38(%rip),%xmm6
  mov    %rcx,-0x68(%rbp)
  add    $0x4,%rdi
  lea    (%rsi,%r13,1),%r14
  mov    %rax,-0x80(%rbp)
  add    $0x1,%rax
  lea    0x4(%rsi),%rbx
  mov    %rax,-0x70(%rbp)
  mov    %r14,%rax
  mov    $0x1,%r15d
  mov    %rsi,%r14
  movss  %xmm6,-0x60(%rbp)
  mov    %rax,%r13
  nopl   (%rax)
L118:
  pxor   %xmm3,%xmm3
  movss  (%rdi),%xmm2
  cvtss2sd -0x44(%rbp),%xmm3
  cmp    $0x1,%r15d
  je     L154
  lea    -0x2(%r15),%eax
  lea    -0x4(%rdi),%r10
  pxor   %xmm0,%xmm0
  shl    $0x2,%rax
  lea    0x4(%r14),%r9
  sub    %rax,%r10
  mov    %rdi,%rax
  nopl   0x0(%rax)
L22:
  movss  (%r9),%xmm1
  mulss  -0x4(%rax),%xmm1
  sub    $0x4,%rax
  add    $0x4,%r9
  addss  %xmm1,%xmm0
  cmp    %rax,%r10
  jne    L22
  addss  %xmm2,%xmm0
  pxor   %xmm1,%xmm1
  mov    %rdi,-0x50(%rbp)
  cvtss2sd %xmm0,%xmm1
  xorpd  D49(%rip),%xmm1
  divsd  %xmm3,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movaps %xmm1,%xmm0
  movss  %xmm1,-0x5c(%rbp)
  call   <fabsf@plt>
  comisd D4(%rip),%xmm0
  mov    -0x50(%rbp),%rdi
  jbe    L100
  movslq %r15d,%rax
  imul   -0x70(%rbp),%rax
  mov    -0x58(%rbp),%rsi
  pxor   %xmm1,%xmm1
  movl   $0x0,(%rsi,%rax,4)
L141:
  mov    %rbx,%r9
  mov    $0x1,%eax
  nopl   0x0(%rax)
L105:
  movss  -0x4(%r9),%xmm0
  sub    $0x4,%r9
  mulss  %xmm1,%xmm0
  addss  (%r14,%rax,4),%xmm0
  movss  %xmm0,0x0(%r13,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%r15d
  jg     L105
L13:
  add    $0x1,%r15d
  add    $0x4,%rdi
  add    %r12,%r14
  add    -0x68(%rbp),%rbx
  add    %r12,%r13
  cmp    %r15d,-0x48(%rbp)
  jge    L118
  movslq -0x48(%rbp),%rbx
  mov    -0x78(%rbp),%rax
  lea    0x0(,%rbx,4),%rdx
  lea    0x4(%rax),%rdi
  mov    -0x58(%rbp),%rax
  imul   -0x80(%rbp),%rbx
  lea    0x4(%rax,%rbx,4),%rsi
  call   <memcpy@plt>
L50:
  mov    -0x78(%rbp),%rax
  movss  -0x60(%rbp),%xmm5
  movss  %xmm5,(%rax)
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L113
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
  cs nopw 0x0(%rax,%rax,1)
L100:
  movss  -0x5c(%rbp),%xmm1
  movss  -0x60(%rbp),%xmm0
  movslq %r15d,%rax
  imul   -0x70(%rbp),%rax
  mov    -0x58(%rbp),%rcx
  movaps %xmm1,%xmm2
  mulss  %xmm1,%xmm2
  movss  %xmm1,(%rcx,%rax,4)
  subss  %xmm2,%xmm0
  mulss  -0x44(%rbp),%xmm0
  movss  %xmm0,-0x44(%rbp)
  jmp    L141
  nopl   (%rax)
L154:
  pxor   %xmm7,%xmm7
  pxor   %xmm1,%xmm1
  mov    %rdi,-0x50(%rbp)
  addss  %xmm7,%xmm2
  cvtss2sd %xmm2,%xmm1
  xorpd  D49(%rip),%xmm1
  divsd  %xmm3,%xmm1
  cvtsd2ss %xmm1,%xmm1
  movaps %xmm1,%xmm0
  movss  %xmm1,-0x5c(%rbp)
  call   <fabsf@plt>
  comisd D4(%rip),%xmm0
  mov    -0x50(%rbp),%rdi
  jbe    L23
  mov    -0x58(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  movl   $0x0,(%rax,%rdx,4)
  jmp    L13
L23:
  movss  -0x5c(%rbp),%xmm1
  mov    -0x58(%rbp),%rax
  mov    -0x70(%rbp),%rcx
  movss  -0x60(%rbp),%xmm0
  movss  %xmm1,(%rax,%rcx,4)
  mulss  %xmm1,%xmm1
  subss  %xmm1,%xmm0
  mulss  -0x44(%rbp),%xmm0
  movss  %xmm0,-0x44(%rbp)
  jmp    L13
L78:
  orq    $0x0,-0x8(%rsp,%rdx,1)
  jmp    L40
L95:
  movss  D38(%rip),%xmm5
  movss  %xmm5,-0x60(%rbp)
  jmp    L50
L113:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D38
type_guessed: f32
name: retrieve_data
arguments: label: D49
type_guessed: f32[4]
name: retrieve_data
arguments: label: D4
type_guessed: f32

tool: D38: 1

tool: {"D49": [0.0,-0.0,0.0,0.0]}

tool: D4: 0

assistant: ```c
void levinson_durbin(float R[], float lpcs[], int order) {
  float a[order + 1][order + 1];
  float sum, e, k;
  int i, j;
  e = R[0];
  for (i = 1; i <= order; i++) {
    sum = 0.0;
    for (j = 1; j <= i - 1; j++)
      sum += a[i - 1][j] * R[i - j];
    k = -1.0 * (R[i] + sum) / e;
    if (fabsf(k) > 1.0)
      k = 0.0;
    a[i][i] = k;
    for (j = 1; j <= i - 1; j++)
      a[i][j] = a[i - 1][j] + k * a[i - 1][i - j];
    e *= (1 - k * k);
  }
  for (i = 1; i <= order; i++)
    lpcs[i] = a[order][i];
  lpcs[0] = 1.0;
}
```