user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<compute_ref_coefs>:
  endbr64
  sub    $0x3d8,%rsp
  mov    %esi,%r9d
  mov    %rdx,%r8
  movsd  (%rdi),%xmm0
  mov    %fs:0x28,%rdx
  mov    %rdx,0x3c8(%rsp)
  xor    %edx,%edx
  and    $0xff,%r9d
  je     L14
  lea    0x8(%rdi),%rdx
  movzbl %sil,%ecx
  lea    0x1e0(%rsp),%r10
  movq   D12(%rip),%xmm5
  mov    %rcx,%rax
  mov    %r10,%rdi
  mov    %rdx,%rsi
  mov    %rsp,%r10
  rep movsq %ds:(%rsi),%es:(%rdi)
  mov    %eax,%ecx
  mov    %rdx,%rsi
  mov    %r10,%rdi
  lea    0x8(%rsp),%r11
  xor    %eax,%eax
  rep movsq %ds:(%rsi),%es:(%rdi)
  lea    -0x1(%r9),%esi
  mov    $0x1,%edi
  mov    %esi,%edx
  movsd  0x1e0(%rsp),%xmm1
  movapd %xmm1,%xmm4
  xorpd  %xmm5,%xmm4
  divsd  %xmm0,%xmm4
  movsd  %xmm4,(%r8)
  mulsd  %xmm1,%xmm4
  addsd  %xmm0,%xmm4
  cmp    $0x1,%r9d
  je     L7
  nopl   (%rax)
L65:
  lea    -0x1(%rdx),%ecx
  test   %edx,%edx
  jle    L105
  sub    $0x1,%edx
  movsd  -0x8(%r8,%rdi,8),%xmm3
  mov    %r10,%rax
  mov    %rdx,%rcx
  lea    (%r11,%rdx,8),%rdx
  nopl   0x0(%rax,%rax,1)
L118:
  movsd  (%rax),%xmm2
  movapd %xmm3,%xmm1
  movsd  0x1e8(%rax),%xmm0
  add    $0x8,%rax
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm3,%xmm0
  movsd  %xmm1,0x1d8(%rax)
  addsd  %xmm2,%xmm0
  movsd  %xmm0,-0x8(%rax)
  cmp    %rdx,%rax
  jne    L118
  movsd  0x1e0(%rsp),%xmm1
L105:
  movapd %xmm1,%xmm0
  mov    %ecx,%edx
  xorpd  %xmm5,%xmm0
  divsd  %xmm4,%xmm0
  movsd  %xmm0,(%r8,%rdi,8)
  mulsd  %xmm1,%xmm0
  add    $0x1,%rdi
  addsd  %xmm0,%xmm4
  cmp    %edi,%r9d
  jg     L65
L12:
  movslq %esi,%rax
  cmp    $0xffffffff,%eax
  je     L24
L7:
  movq   D14(%rip),%xmm2
  movsd  D19(%rip),%xmm1
  jmp    L47
  nopw   0x0(%rax,%rax,1)
L1:
  sub    $0x1,%rax
  cmp    $0xffffffff,%eax
  je     L24
L47:
  movsd  (%r8,%rax,8),%xmm0
  andpd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jbe    L1
  add    $0x1,%eax
  jmp    L32
L24:
  mov    $0x1,%eax
L32:
  mov    0x3c8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L101
  add    $0x3d8,%rsp
  ret
L14:
  movsd  0x1e0(%rsp),%xmm1
  mov    $0xffffffff,%esi
  xorpd  D12(%rip),%xmm1
  divsd  %xmm0,%xmm1
  movsd  %xmm1,(%r8)
  jmp    L12
L101:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D12
type_guessed: byte[16]
name: parse_data
arguments: data_label: D14
type_guessed: qword
name: parse_data
arguments: data_label: D19
type_guessed: f64

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

tool: D14: 9223372036854775807

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