user: What would the C source look like for the assembly code provided here?

```asm
<compute_ref_coefs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x410,%rsp
  mov    %rdi,-0x3f8(%rbp)
  mov    %esi,%eax
  mov    %rdx,-0x408(%rbp)
  mov    %al,-0x3fc(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x3e0(%rbp)
  jmp    L10
L107:
  mov    -0x3e0(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x3f8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x3e0(%rbp),%eax
  cltq
  add    $0x3c,%rax
  movsd  %xmm0,-0x3d0(%rbp,%rax,8)
  mov    -0x3e0(%rbp),%eax
  cltq
  add    $0x3c,%rax
  movsd  -0x3d0(%rbp,%rax,8),%xmm0
  mov    -0x3e0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x3d0(%rbp,%rax,8)
  addl   $0x1,-0x3e0(%rbp)
L10:
  movzbl -0x3fc(%rbp),%eax
  cmp    %eax,-0x3e0(%rbp)
  jl     L107
  mov    -0x3f8(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x3d8(%rbp)
  movsd  -0x1f0(%rbp),%xmm0
  movq   D6(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  divsd  -0x3d8(%rbp),%xmm0
  mov    -0x408(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x1f0(%rbp),%xmm1
  mov    -0x408(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x3d8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x3d8(%rbp)
  movl   $0x1,-0x3e0(%rbp)
  jmp    L43
L21:
  movl   $0x0,-0x3dc(%rbp)
  jmp    L63
L14:
  mov    -0x3dc(%rbp),%eax
  add    $0x1,%eax
  cltq
  add    $0x3c,%rax
  movsd  -0x3d0(%rbp,%rax,8),%xmm1
  mov    -0x3e0(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x408(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x3dc(%rbp),%eax
  cltq
  movsd  -0x3d0(%rbp,%rax,8),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x3dc(%rbp),%eax
  cltq
  add    $0x3c,%rax
  movsd  %xmm0,-0x3d0(%rbp,%rax,8)
  mov    -0x3dc(%rbp),%eax
  add    $0x1,%eax
  cltq
  add    $0x3c,%rax
  movsd  -0x3d0(%rbp,%rax,8),%xmm1
  mov    -0x3e0(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x408(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x3dc(%rbp),%eax
  cltq
  movsd  -0x3d0(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x3dc(%rbp),%eax
  cltq
  movsd  %xmm0,-0x3d0(%rbp,%rax,8)
  addl   $0x1,-0x3dc(%rbp)
L63:
  movzbl -0x3fc(%rbp),%eax
  sub    -0x3e0(%rbp),%eax
  cmp    %eax,-0x3dc(%rbp)
  jl     L14
  movsd  -0x1f0(%rbp),%xmm0
  movq   D6(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x3e0(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x408(%rbp),%rax
  add    %rdx,%rax
  divsd  -0x3d8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x1f0(%rbp),%xmm1
  mov    -0x3e0(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x408(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x3d8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x3d8(%rbp)
  addl   $0x1,-0x3e0(%rbp)
L43:
  movzbl -0x3fc(%rbp),%eax
  cmp    %eax,-0x3e0(%rbp)
  jl     L21
  movb   $0x1,-0x3e1(%rbp)
  movzbl -0x3fc(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x3e0(%rbp)
  jmp    L109
L77:
  mov    -0x3e0(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x408(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D10(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd D26(%rip),%xmm0
  jbe    L23
  mov    -0x3e0(%rbp),%eax
  add    $0x1,%eax
  mov    %al,-0x3e1(%rbp)
  jmp    L72
L23:
  subl   $0x1,-0x3e0(%rbp)
L109:
  cmpl   $0x0,-0x3e0(%rbp)
  jns    L77
L72:
  movzbl -0x3e1(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L49
  call   <__stack_chk_fail@plt>
L49:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D6
data_type: byte[8]
name: extract_symbolic_data
arguments: tag: D10
data_type: qword
name: extract_symbolic_data
arguments: tag: D26
data_type: f64

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

tool: D10: 9223372036854775807

tool: D26: 0.1

assistant: ```c
unsigned char compute_ref_coefs(double *autoc, unsigned char max_order, double *ref) {
  int i, j;
  double error;
  double gen[2][60];
  unsigned char order_est;
  for (i = 0; i < max_order; i++)
    gen[0][i] = gen[1][i] = autoc[i + 1];
  error = autoc[0];
  ref[0] = -gen[1][0] / error;
  error += gen[1][0] * ref[0];
  for (i = 1; i < max_order; i++) {
    for (j = 0; j < max_order - i; j++) {
      gen[1][j] = gen[1][j + 1] + ref[i - 1] * gen[0][j];
      gen[0][j] = gen[1][j + 1] * ref[i - 1] + gen[0][j];
    }
    ref[i] = -gen[1][0] / error;
    error += gen[1][0] * ref[i];
  }
  order_est = 1;
  for (i = max_order - 1; i >= 0; i--) {
    if (fabs(ref[i]) > 0.10) {
      order_est = i + 1;
      break;
    }
  }
  return (order_est);
}
```