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

```asm
<u2Fit>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,%rbp
  mov    %esi,%r14d
  mov    %rdx,0x8(%rsp)
  mov    %rcx,%rbx
  movsd  %xmm0,0x28(%rsp)
  movsd  %xmm1,(%rsp)
  mov    %r8d,%r15d
  mov    %r8d,0x24(%rsp)
  subsd  %xmm0,%xmm1
  lea    -0x1(%r8),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsp)
  mov    %esi,%r12d
  lea    0x0(,%r12,4),%rdi
  call   <malloc@plt>
  mov    %rax,%r13
  lea    0x0(,%r12,8),%rdi
  call   <malloc@plt>
  mov    %rax,%r12
  lea    (%r14,%r14,8),%edi
  shl    $0x3,%rdi
  call   <malloc@plt>
  mov    %rax,0x10(%rsp)
  test   %r15d,%r15d
  je     L164
  mov    $0x0,%r15d
  jmp    L28
L129:
  movb   $0x0,(%rbx,%rax,1)
L101:
  add    $0x1,%rax
  cmp    %rax,%rdx
  je     L5
L131:
  comisd (%r12,%rax,8),%xmm0
  jbe    L129
  movb   $0x1,(%rbx,%rax,1)
  add    $0x1,%ecx
  jmp    L101
L32:
  mov    %ecx,%r14d
L121:
  mov    %r13,%rdi
  call   <free@plt>
  mov    %r12,%rdi
  call   <free@plt>
  mov    0x10(%rsp),%rdi
  call   <free@plt>
  jmp    L60
L189:
  add    $0x1,%rax
  cmp    %rax,%rdx
  je     L73
L167:
  cmpb   $0x0,(%rbx,%rax,1)
  je     L189
  mov    %esi,%ecx
  mov    %eax,0x0(%r13,%rcx,4)
  lea    0x1(%rsi),%esi
  jmp    L189
L73:
  mov    0x10(%rsp),%r8
  mov    0x8(%rsp),%rcx
  mov    %esi,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <u2f@plt>
  movsd  (%rsp),%xmm2
  subsd  0x18(%rsp),%xmm2
  movsd  %xmm2,(%rsp)
  add    $0x1,%r15d
  cmp    %r15d,0x24(%rsp)
  je     L157
L28:
  mov    %r14d,%ecx
  mov    %r12,%rdx
  mov    0x8(%rsp),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <FDs@plt>
  test   %r14d,%r14d
  je     L121
  mov    %r14d,%edx
  mov    $0x0,%eax
  mov    $0x0,%ecx
  movsd  (%rsp),%xmm0
  jmp    L131
L164:
  mov    %r14d,%ecx
  mov    %r12,%rdx
  mov    0x8(%rsp),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <FDs@plt>
  test   %r14d,%r14d
  jne    L134
L174:
  mov    %r13,%rdi
  call   <free@plt>
  mov    %r12,%rdi
  call   <free@plt>
  mov    0x10(%rsp),%rdi
  call   <free@plt>
L60:
  mov    %r14d,%eax
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L64:
  movb   $0x0,(%rbx,%rax,1)
L141:
  add    $0x1,%rax
  cmp    %rdx,%rax
  je     L174
L130:
  comisd (%r12,%rax,8),%xmm0
  jbe    L64
  movb   $0x1,(%rbx,%rax,1)
  add    $0x1,%r14d
  jmp    L141
L5:
  cmp    $0x7,%ecx
  jbe    L32
  mov    $0x0,%eax
  mov    $0x0,%esi
  jmp    L167
L157:
  mov    %r14d,%ecx
  mov    %r12,%rdx
  mov    0x8(%rsp),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <FDs@plt>
L134:
  mov    %r14d,%edx
  mov    $0x0,%eax
  mov    $0x0,%r14d
  movsd  0x28(%rsp),%xmm0
  jmp    L130
```

assistant: ```c
unsigned u2Fit(double *u, unsigned len, double *F, unsigned char *inl, double th, double ths, unsigned iters) {
  double dth = (ths - th) / (iters - 1);
  unsigned iter, i, no_i;
  int *inlI = (int *)malloc(len * sizeof(int));
  double *Ds = (double *)malloc(len * sizeof(double));
  double *buffer = (double *)malloc(9 * len * sizeof(double));
  for (iter = 0; iter < iters; ++iter) {
    FDs(u, F, Ds, len);
    no_i = 0;
    for (i = 0; i < len; ++i) {
      if (Ds[i] < ths) {
        inl[i] = 1;
        ++no_i;
      } else {
        inl[i] = 0;
      }
    }
    if (no_i < 8) {
      free(inlI);
      free(Ds);
      free(buffer);
      return no_i;
    }
    no_i = 0;
    for (i = 0; i < len; ++i) {
      if (inl[i]) {
        inlI[no_i++] = i;
      }
    }
    u2f(u, inlI, no_i, F, buffer);
    ths -= dth;
  }
  FDs(u, F, Ds, len);
  no_i = 0;
  for (i = 0; i < len; ++i) {
    if (Ds[i] < th) {
      inl[i] = 1;
      ++no_i;
    } else {
      inl[i] = 0;
    }
  }
  free(inlI);
  free(Ds);
  free(buffer);
  return no_i;
}
```