user: 请将以下的汇编代码转换成C语言代码：

```asm
<llsfit>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x88,%rsp
  mov    %edi,-0x64(%rbp)
  mov    %rsi,-0x70(%rbp)
  mov    %edx,-0x68(%rbp)
  mov    %rcx,-0x78(%rbp)
  mov    %r8,-0x80(%rbp)
  mov    %r9,-0x88(%rbp)
  movl   $0x0,-0x44(%rbp)
  jmp    L96
L71:
  movl   $0x0,-0x50(%rbp)
  jmp    L80
L53:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x50(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x50(%rbp)
L80:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L53
  movl   $0x0,-0x50(%rbp)
  jmp    L222
L170:
  movl   $0x0,-0x54(%rbp)
  jmp    L250
L40:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x50(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    0x18(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%edx
  mov    %edx,%ecx
  imul   -0x68(%rbp),%ecx
  mov    -0x54(%rbp),%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x20(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  mov    -0x50(%rbp),%edx
  mov    -0x70(%rbp),%rcx
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   *%rcx
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x54(%rbp)
L250:
  mov    -0x54(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jl     L40
  addl   $0x1,-0x50(%rbp)
L222:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L170
  movl   $0x0,-0x54(%rbp)
  jmp    L13
L318:
  mov    -0x54(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rax,%rdx
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x54(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    0x20(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x54(%rbp)
L13:
  mov    -0x54(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jl     L318
  cmpl   $0x0,-0x44(%rbp)
  je     L111
  movl   $0x0,-0x50(%rbp)
  jmp    L324
L125:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x90(%rbp)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x64(%rbp),%eax
  imul   -0x50(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x90(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x50(%rbp)
L324:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L125
  movl   $0x0,-0x50(%rbp)
  jmp    L184
L127:
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x64(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x50(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x4c(%rbp)
  jmp    L206
L266:
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x64(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd -0x40(%rbp),%xmm0
  jbe    L252
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x64(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x40(%rbp)
L252:
  addl   $0x1,-0x4c(%rbp)
L206:
  mov    -0x4c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L266
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    -0x50(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    0x18(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x4c(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x50(%rbp)
L184:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L127
L111:
  movl   $0x0,-0x50(%rbp)
  jmp    L165
L4:
  cmpl   $0x0,-0x44(%rbp)
  jne    L237
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  jmp    L112
L215:
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movq   %xmm0,%rdx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    0x20(%rbp),%rax
  add    %rax,%rcx
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  lea    (%rsi,%rax,1),%rdi
  mov    -0x68(%rbp),%eax
  imul   -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  add    %rax,%rsi
  mov    -0x68(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %rdi,%rdx
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <fortho@plt>
  mov    -0x68(%rbp),%eax
  imul   -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x68(%rbp),%eax
  imul   -0x64(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  jp     L310
  pxor   %xmm0,%xmm0
  ucomisd -0x40(%rbp),%xmm0
  je     L183
L310:
  movsd  -0x40(%rbp),%xmm0
  comisd -0x18(%rbp),%xmm0
  jbe    L281
L183:
  movsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %eax,-0x48(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
L281:
  addl   $0x1,-0x4c(%rbp)
L112:
  mov    -0x4c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L215
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    -0x50(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    0x18(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x48(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x4c(%rbp),%eax
  mov    %eax,(%rdx)
  movsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  jmp    L181
L237:
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x30(%rbp)
L181:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movq   %xmm0,%rdx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    0x20(%rbp),%rax
  add    %rax,%rcx
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  lea    (%rsi,%rax,1),%rdi
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  add    %rax,%rsi
  mov    -0x68(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %rdi,%rdx
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <fortho@plt>
  mov    -0x50(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x4c(%rbp)
  jmp    L159
L10:
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  -0x38(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movq   %xmm0,%rdx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    0x20(%rbp),%rax
  add    %rax,%rcx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    0x18(%rbp),%rax
  add    %rsi,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  lea    (%rsi,%rax,1),%rdi
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    0x18(%rbp),%rax
  add    %rsi,%rax
  mov    (%rax),%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rsi
  mov    0x20(%rbp),%rax
  add    %rax,%rsi
  mov    -0x68(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %rdi,%rdx
  mov    %eax,%edi
  mov    $0x1,%eax
  call   <fortho@plt>
  addl   $0x1,-0x4c(%rbp)
L159:
  mov    -0x4c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L10
  addl   $0x1,-0x50(%rbp)
L165:
  mov    -0x50(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L4
  mov    -0x64(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x50(%rbp)
  jmp    L245
L251:
  mov    -0x50(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x4c(%rbp)
  jmp    L136
L143:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x64(%rbp),%eax
  add    $0x2,%eax
  imul   -0x68(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  imul   -0x64(%rbp),%eax
  add    %eax,%edx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x4c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  %xmm2,%xmm1
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x4c(%rbp)
L136:
  mov    -0x4c(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jl     L143
  subl   $0x1,-0x50(%rbp)
L245:
  cmpl   $0x0,-0x50(%rbp)
  jns    L251
  addl   $0x1,-0x44(%rbp)
L96:
  cmpl   $0x1,-0x44(%rbp)
  jle    L71
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0x68(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x68(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fdot@plt>
  cltd
  idivl  -0x68(%rbp)
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
double llsfit(int N, double (*f)(double, int), int D, double x[], double y[], double w[], double A[], int order[], double WORK[]) {
  int d, n, m, mmax, RUN;
  double chi, nchi, inner, norm, isave, nsave;
  for (RUN = 0; RUN <= 1; RUN++) {
    for (n = 0; n < N; n++)
      order[n] = n;
    for (n = 0; n < N; n++) {
      for (d = 0; d < D; d++)
        WORK[D * order[n] + (d)] = (*f)(x[d], n);
    }
    for (d = 0; d < D; d++)
      WORK[D * (N + 1) + (d)] = y[d];
    if (RUN) {
      for (n = 0; n < N; n++)
        WORK[D * (N + 2) + N * (n) + (0)] = A[n] * A[n] * fdot(D, w, &WORK[D * order[n] + (0)], &WORK[D * order[n] + (0)]);
      for (n = 0; n < N; n++) {
        chi = WORK[D * (N + 2) + N * (order[n]) + (0)];
        mmax = n;
        for (m = n + 1; m < N; m++) {
          if (WORK[D * (N + 2) + N * (order[m]) + (0)] > chi) {
            mmax = m;
            chi = WORK[D * (N + 2) + N * (order[m]) + (0)];
          }
        }
        m = order[n];
        order[n] = order[mmax];
        order[mmax] = m;
      }
    }
    for (n = 0; n < N; n++) {
      if (!RUN) {
        mmax = n;
        chi = isave = nsave = 0.0;
        for (m = n; m < N; m++) {
          inner = fdot(D, w, &WORK[D * order[m] + (0)], &WORK[D * (N + 1) + (0)]);
          norm = fdot(D, w, &WORK[D * order[m] + (0)], &WORK[D * order[m] + (0)]);
          fortho(D, &WORK[D * (N) + (0)], &WORK[D * (N + 1) + (0)], &WORK[D * order[m] + (0)], inner / norm);
          nchi = fdot(D, w, &WORK[D * (N) + (0)], &WORK[D * (N) + (0)]);
          if (!chi || (nchi < chi)) {
            chi = nchi;
            mmax = m;
            isave = inner;
            nsave = norm;
          }
        }
        m = order[n];
        order[n] = order[mmax];
        order[mmax] = m;
        inner = isave;
        norm = nsave;
      } else {
        inner = fdot(D, w, &WORK[D * order[n] + (0)], &WORK[D * (N + 1) + (0)]);
        norm = fdot(D, w, &WORK[D * order[n] + (0)], &WORK[D * order[n] + (0)]);
      }
      A[order[n]] = inner / norm;
      fortho(D, &WORK[D * (N + 1) + (0)], &WORK[D * (N + 1) + (0)], &WORK[D * order[n] + (0)], inner / norm);
      for (m = n + 1; m < N; m++) {
        inner = fdot(D, w, &WORK[D * order[n] + (0)], &WORK[D * order[m] + (0)]);
        WORK[D * (N + 2) + N * (order[m]) + (order[n])] = inner / norm;
        fortho(D, &WORK[D * order[m] + (0)], &WORK[D * order[m] + (0)], &WORK[D * order[n] + (0)], inner / norm);
      }
    }
    for (n = N - 1; n >= 0; n--)
      for (m = n + 1; m < N; m++)
        A[order[n]] -= WORK[D * (N + 2) + N * (order[m]) + (order[n])] * A[order[m]];
  }
  return sqrt(fdot(D, w, &WORK[D * (N + 1) + (0)], &WORK[D * (N + 1) + (0)]) / D);
}
```