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

```asm
<levdurb>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  movl   $0x3f800000,(%rdi)
  movss  (%rdx),%xmm0
  movss  D12(%rip),%xmm1
  mov    %rsi,0x10(%rsp)
  mov    %ecx,0x1c(%rsp)
  comiss %xmm0,%xmm1
  jbe    L45
  mov    %ecx,%eax
  test   %ecx,%ecx
  jle    L124
  add    $0x1,%eax
  mov    %ecx,%edx
  lea    0x4(%rdi),%rbp
  lea    (%rdi,%rax,4),%rax
  lea    0x0(,%rdx,4),%r12
  cmp    %rax,%rsi
  jae    L76
  lea    (%rsi,%r12,1),%rax
  cmp    %rax,%rbp
  jb     L214
L76:
  mov    0x10(%rsp),%rdi
  mov    %r12,%rdx
  xor    %esi,%esi
  call   <memset@plt>
  add    $0x48,%rsp
  mov    %r12,%rdx
  mov    %rbp,%rdi
  pop    %rbx
  xor    %esi,%esi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <memset@plt>
  nopl   (%rax)
L45:
  movss  0x4(%rdx),%xmm3
  movss  D6(%rip),%xmm4
  cmpl   $0x1,0x1c(%rsp)
  mov    %rdx,%r14
  xorps  %xmm4,%xmm3
  divss  %xmm0,%xmm3
  movss  %xmm3,(%rsi)
  movss  %xmm3,0x4(%rdi)
  mulss  0x4(%rdx),%xmm3
  addss  (%rdx),%xmm3
  jg     L198
L124:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L198:
  lea    -0x8(%rdx),%rbx
  lea    0x8(%rsi),%rdx
  mov    $0x1,%eax
  mov    $0x4,%r10d
  lea    0x14(%rdi),%rsi
  lea    0x4(%rdi),%r9
  movss  0x10(%rbx),%xmm1
  mov    %rsi,0x28(%rsp)
  lea    0x8(%rdi),%rsi
  lea    -0x1(%rax),%ecx
  mov    %rsi,0x8(%rsp)
  lea    0xc(%rdi),%rsi
  lea    -0xc(%rdi),%r12
  mov    %rsi,0x38(%rsp)
  lea    0x18(%rdi),%rsi
  mov    %r9,0x20(%rsp)
  mov    %rsi,0x30(%rsp)
  cmp    $0x2,%ecx
  jbe    L231
  nopl   (%rax)
L100:
  mov    %eax,%ecx
  mov    %rbx,%rsi
  shr    $0x2,%ecx
  lea    -0x1(%rcx),%r8d
  mov    0x20(%rsp),%rcx
  shl    $0x4,%r8
  add    0x28(%rsp),%r8
  nopw   0x0(%rax,%rax,1)
L0:
  movups (%rsi),%xmm0
  movups (%rcx),%xmm7
  add    $0x10,%rcx
  sub    $0x10,%rsi
  shufps $0x1b,%xmm0,%xmm0
  mulps  %xmm7,%xmm0
  addss  %xmm0,%xmm1
  movaps %xmm0,%xmm2
  shufps $0x55,%xmm0,%xmm2
  addss  %xmm2,%xmm1
  movaps %xmm0,%xmm2
  unpckhps %xmm0,%xmm2
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm2,%xmm1
  addss  %xmm0,%xmm1
  cmp    %r8,%rcx
  jne    L0
  mov    %eax,%ecx
  and    $0xfffffffc,%ecx
  test   $0x3,%al
  je     L31
L54:
  mov    %eax,%esi
  lea    0x1(%rcx),%r8d
  sub    %ecx,%esi
  movslq %r8d,%r11
  movslq %esi,%rsi
  lea    0x0(,%r11,4),%rbp
  movss  (%r14,%rsi,4),%xmm0
  mulss  (%rdi,%r11,4),%xmm0
  addss  %xmm0,%xmm1
  cmp    %eax,%r8d
  jge    L31
  mov    %eax,%esi
  add    $0x2,%ecx
  sub    %r8d,%esi
  movslq %esi,%rsi
  movss  (%r14,%rsi,4),%xmm0
  mulss  0x4(%rdi,%rbp,1),%xmm0
  addss  %xmm0,%xmm1
  cmp    %eax,%ecx
  jge    L31
  mov    %eax,%esi
  sub    %ecx,%esi
  movslq %esi,%rsi
  movss  (%r14,%rsi,4),%xmm0
  mulss  0x8(%rdi,%rbp,1),%xmm0
  addss  %xmm0,%xmm1
L31:
  movaps %xmm1,%xmm0
  lea    0x1(%rax),%ebp
  xorps  %xmm4,%xmm0
  mov    %ebp,%ecx
  divss  %xmm3,%xmm0
  sar    %ecx
  mulss  %xmm0,%xmm1
  movss  %xmm0,-0x4(%rdx)
  movss  0x4(%rdi),%xmm2
  movss  (%r9),%xmm5
  addss  %xmm1,%xmm3
  movaps %xmm2,%xmm1
  mulss  %xmm0,%xmm1
  mulss  %xmm5,%xmm0
  addss  %xmm5,%xmm1
  addss  %xmm2,%xmm0
  movss  %xmm1,(%r9)
  movss  %xmm0,0x4(%rdi)
  cmp    $0x1,%ecx
  je     L12
  lea    -0x1(%rcx),%r11d
  mov    %r11,%r8
  mov    %r11,%rsi
  lea    0x8(,%r11,4),%r11
  neg    %r8
  lea    (%r10,%r8,4),%r8
  lea    (%rdi,%r8,1),%r13
  cmp    %r13,%rdx
  setbe  %r13b
  cmp    0x10(%rsp),%rdi
  setbe  %r15b
  or     %r15d,%r13d
  cmp    %r11,%r8
  setge  %r8b
  cmp    %r9,0x8(%rsp)
  setae  %r15b
  or     %r15d,%r8d
  and    %r13d,%r8d
  cmp    $0x2,%ecx
  setne  %r13b
  test   %r13b,%r8b
  je     L122
  mov    0x10(%rsp),%r15
  add    %rdi,%r11
  lea    (%r15,%r10,1),%r8
  cmp    %r8,%r11
  setbe  %r11b
  cmp    %rdx,0x8(%rsp)
  setae  %r8b
  or     %r11b,%r8b
  je     L122
  lea    -0x2(%rcx),%r8d
  cmp    $0x2,%r8d
  jbe    L106
  mov    %esi,%r11d
  movss  -0x4(%rdx),%xmm5
  mov    0x8(%rsp),%r8
  shr    $0x2,%r11d
  lea    -0x1(%r11),%r13d
  mov    %r12,%r11
  shufps $0x0,%xmm5,%xmm5
  shl    $0x4,%r13
  add    0x30(%rsp),%r13
  nopl   0x0(%rax)
L248:
  movups (%r8),%xmm2
  movaps %xmm5,%xmm1
  movups (%r11),%xmm0
  add    $0x10,%r8
  sub    $0x10,%r11
  mulps  %xmm2,%xmm1
  shufps $0x1b,%xmm0,%xmm0
  addps  %xmm0,%xmm1
  mulps  %xmm5,%xmm0
  shufps $0x1b,%xmm1,%xmm1
  movups %xmm1,0x10(%r11)
  addps  %xmm2,%xmm0
  movups %xmm0,-0x10(%r8)
  cmp    %r13,%r8
  jne    L248
  mov    %esi,%r11d
  and    $0xfffffffc,%r11d
  lea    0x1(%r11),%r8d
  cmp    %r11d,%esi
  je     L12
  sub    %r11d,%ecx
  lea    -0x1(%rcx),%esi
  cmp    $0x2,%ecx
  je     L192
L66:
  movss  -0x4(%rdx),%xmm0
  lea    0x8(%rdi,%r11,4),%r13
  neg    %r11
  movq   0x0(%r13),%xmm5
  lea    -0x8(%r10,%r11,4),%rcx
  add    %rdi,%rcx
  shufps $0xe0,%xmm0,%xmm0
  movaps %xmm0,%xmm1
  movq   (%rcx),%xmm2
  mulps  %xmm5,%xmm1
  shufps $0xe1,%xmm2,%xmm2
  mulps  %xmm2,%xmm0
  addps  %xmm2,%xmm1
  addps  %xmm5,%xmm0
  shufps $0xe1,%xmm1,%xmm1
  movlps %xmm1,(%rcx)
  mov    %esi,%ecx
  and    $0xfffffffe,%ecx
  movlps %xmm0,0x0(%r13)
  add    %ecx,%r8d
  cmp    %ecx,%esi
  je     L12
L192:
  lea    0x1(%r8),%ecx
  sub    %r8d,%eax
  movss  -0x4(%rdx),%xmm0
  movslq %ecx,%rcx
  cltq
  lea    (%rdi,%rcx,4),%rcx
  lea    (%rdi,%rax,4),%rax
  movaps %xmm0,%xmm1
  movss  (%rcx),%xmm2
  movss  (%rax),%xmm5
  mulss  %xmm2,%xmm1
  mulss  %xmm5,%xmm0
  addss  %xmm5,%xmm1
  addss  %xmm2,%xmm0
  movss  %xmm1,(%rax)
  movss  %xmm0,(%rcx)
L12:
  add    $0x4,%r9
  add    $0x4,%rbx
  add    $0x4,%r10
  add    $0x4,%rdx
  movss  -0x8(%rdx),%xmm0
  add    $0x4,%r12
  movss  %xmm0,0x10(%r12)
  cmp    0x1c(%rsp),%ebp
  je     L124
  mov    %ebp,%eax
  movss  0x10(%rbx),%xmm1
  lea    -0x1(%rax),%ecx
  cmp    $0x2,%ecx
  ja     L100
L231:
  xor    %ecx,%ecx
  jmp    L54
  nopl   0x0(%rax,%rax,1)
L122:
  mov    0x38(%rsp),%rsi
  sub    $0x2,%ecx
  mov    0x8(%rsp),%rax
  lea    (%rsi,%rcx,4),%rsi
  mov    %r9,%rcx
  nopl   0x0(%rax)
L153:
  movss  -0x4(%rdx),%xmm0
  movss  (%rax),%xmm2
  add    $0x4,%rax
  sub    $0x4,%rcx
  movss  (%rcx),%xmm5
  movaps %xmm0,%xmm1
  mulss  %xmm2,%xmm1
  mulss  %xmm5,%xmm0
  addss  %xmm5,%xmm1
  addss  %xmm2,%xmm0
  movss  %xmm1,(%rcx)
  movss  %xmm0,-0x4(%rax)
  cmp    %rsi,%rax
  jne    L153
  jmp    L12
L106:
  xor    %r11d,%r11d
  mov    $0x1,%r8d
  jmp    L66
L214:
  mov    %rsi,%rcx
  xor    %eax,%eax
  xchg   %ax,%ax
L156:
  movl   $0x0,(%rcx,%rax,4)
  movl   $0x0,0x4(%rdi,%rax,4)
  add    $0x1,%rax
  cmp    %rax,%rdx
  jne    L156
  jmp    L124
```

tool_calls: name: disassemble_data
arguments: tag: D12
data_type: byte[4]
name: disassemble_data
arguments: tag: D6
data_type: byte[4]

tool: {"D12": [0x00,0x00,0x80,0x25]}

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

assistant: ```c
void levdurb(float *a, float *k, float *r, int order) {
  float sum;
  float alpha;
  int m;
  int m_h;
  int i;
  a[0] = 1.0f;
  if (r[0] < 2.220446049250313e-016f) {
    for (i = 0; i < order; i++) {
      k[i] = 0;
      a[i + 1] = 0;
    }
  } else {
    a[1] = k[0] = -r[1] / r[0];
    alpha = r[0] + r[1] * k[0];
    for (m = 1; m < order; m++) {
      sum = r[m + 1];
      for (i = 0; i < m; i++)
        sum += a[i + 1] * r[m - i];
      k[m] = -sum / alpha;
      alpha += k[m] * sum;
      m_h = (m + 1) >> 1;
      for (i = 0; i < m_h; i++) {
        sum = a[i + 1] + k[m] * a[m - i];
        a[m - i] += k[m] * a[i + 1];
        a[i + 1] = sum;
      }
      a[m + 1] = k[m];
    }
  }
}
```