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

```asm
<lm_lmdif>:
  endbr64
  push   %r15
  mov    %rdx,%r11
  push   %r14
  push   %r13
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  sub    $0x128,%rsp
  mov    0x178(%rsp),%rax
  mov    0x170(%rsp),%rdi
  mov    %rcx,0x60(%rsp)
  mov    %r8d,0x44(%rsp)
  mov    0x168(%rsp),%r15
  mov    %rax,0x38(%rsp)
  mov    0x180(%rsp),%rax
  mov    %r9,0x58(%rsp)
  mov    0x190(%rsp),%r14
  mov    %rax,0x48(%rsp)
  mov    0x188(%rsp),%rax
  mov    %rdi,0x8(%rsp)
  mov    0x1a0(%rsp),%rbx
  mov    %rax,0x68(%rsp)
  mov    0x198(%rsp),%rax
  mov    0x1a8(%rsp),%r13
  movsd  %xmm0,0x10(%rsp)
  mov    %rax,0x78(%rsp)
  mov    0x1b0(%rsp),%rax
  movsd  %xmm1,0x28(%rsp)
  mov    %rax,0x18(%rsp)
  mov    0x1b8(%rsp),%rax
  movsd  %xmm2,0x50(%rsp)
  mov    %rax,0x20(%rsp)
  movsd  %xmm4,0x70(%rsp)
  mov    0x1c8(%rsp),%rax
  mov    %rax,(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x118(%rsp)
  xor    %eax,%eax
  comisd D239(%rip),%xmm3
  movl   $0x0,(%rdi)
  movq   $0x0,0x110(%rsp)
  jb     L433
  pxor   %xmm5,%xmm5
  ucomisd %xmm3,%xmm5
  ja     L21
L945:
  sqrtsd %xmm3,%xmm3
  movsd  %xmm3,0x30(%rsp)
L111:
  test   %r12d,%r12d
  jle    L748
  cmp    %ebp,%r12d
  jg     L748
  pxor   %xmm5,%xmm5
  comisd 0x10(%rsp),%xmm5
  ja     L748
  comisd 0x28(%rsp),%xmm5
  ja     L748
  comisd 0x50(%rsp),%xmm5
  ja     L748
  mov    0x44(%rsp),%r9d
  test   %r9d,%r9d
  jle    L748
  comisd 0x70(%rsp),%xmm5
  jae    L748
  cmpl   $0x2,0x160(%rsp)
  je     L869
L40:
  mov    %r11,0x88(%rsp)
  mov    %ebp,%esi
  mov    %r11,%rdi
  mov    %r15,%r8
  mov    0x18(%rsp),%rax
  mov    0x60(%rsp),%rcx
  movl   $0x0,(%r15)
  mov    (%rsp),%rdx
  call   *%rax
  mov    0x8(%rsp),%rsi
  mov    0x20(%rsp),%r10
  mov    0x88(%rsp),%r11
  mov    (%rsi),%eax
  mov    %eax,0x80(%rsp)
  add    $0x1,%eax
  test   %r10,%r10
  mov    %eax,(%rsi)
  je     L547
  sub    $0x8,%rsp
  mov    %r11,%rsi
  mov    %ebp,%edx
  mov    %r12d,%edi
  push   %rax
  push   $0x0
  push   $0x0
  mov    0x1e0(%rsp),%r9d
  mov    0x80(%rsp),%r8
  mov    0x20(%rsp),%rcx
  mov    %r11,0xa0(%rsp)
  call   *%r10
  mov    0xa0(%rsp),%r11
  add    $0x20,%rsp
L547:
  mov    (%r15),%r8d
  mov    %r11,0x80(%rsp)
  test   %r8d,%r8d
  js     L237
  mov    0x60(%rsp),%rsi
  xor    %eax,%eax
  mov    %ebp,%edi
  call   <lm_enorm@plt>
  mov    0x80(%rsp),%r11
  test   %eax,%eax
  jle    L975
  pxor   %xmm6,%xmm6
  movsd  0x30(%rsp),%xmm5
  movq   $0x0,0xc8(%rsp)
  cvtsi2sd %eax,%xmm6
  movslq %ebp,%rax
  movq   $0x0,0x80(%rsp)
  mov    0x60(%rsp),%r10
  shl    $0x3,%rax
  mov    %r15,0xb0(%rsp)
  mov    %rax,0xb8(%rsp)
  add    $0x8,%rax
  mov    %rax,0xf8(%rsp)
  movsd  %xmm6,0xa0(%rsp)
  movapd %xmm5,%xmm6
  mulsd  %xmm5,%xmm6
  mov    %r14,0xe8(%rsp)
  mov    %r11,%r14
  movl   $0x0,0xd8(%rsp)
  movsd  %xmm6,0xc0(%rsp)
L696:
  xor    %eax,%eax
  mov    0x38(%rsp),%r15
  mov    0xb0(%rsp),%r11
  mov    %r12d,0xa8(%rsp)
  mov    %rbx,0xd0(%rsp)
  mov    %r14,%r12
  mov    %r10,%rbx
  mov    %rax,%r14
  nopl   0x0(%rax)
L715:
  movsd  (%r12,%r14,8),%xmm2
  mov    (%rsp),%rdx
  mov    %r11,%r8
  mov    %ebp,%esi
  movsd  0xc0(%rsp),%xmm7
  mov    0x18(%rsp),%rax
  mov    %r13,%rcx
  mov    %r12,%rdi
  movapd %xmm2,%xmm1
  andpd  D254(%rip),%xmm1
  mov    %r11,0x88(%rsp)
  movsd  %xmm2,0x90(%rsp)
  mulsd  0x30(%rsp),%xmm1
  movapd %xmm1,%xmm0
  cmpnlesd %xmm7,%xmm0
  andpd  %xmm0,%xmm1
  andnpd %xmm7,%xmm0
  orpd   %xmm0,%xmm1
  movsd  %xmm1,0x98(%rsp)
  movapd %xmm1,%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm0,(%r12,%r14,8)
  movl   $0x0,(%r11)
  call   *%rax
  mov    0x8(%rsp),%rax
  mov    0x88(%rsp),%r11
  movsd  0x90(%rsp),%xmm2
  movsd  0x98(%rsp),%xmm1
  mov    (%rax),%esi
  lea    0x1(%rsi),%edx
  mov    %esi,0x60(%rsp)
  mov    %edx,(%rax)
  mov    0x20(%rsp),%rax
  test   %rax,%rax
  je     L35
  mov    %r11,0x90(%rsp)
  sub    $0x8,%rsp
  mov    %r13,%r8
  movsd  %xmm2,0x90(%rsp)
  movsd  %xmm1,0x68(%rsp)
  push   %rdx
  mov    0xe8(%rsp),%esi
  mov    %ebp,%edx
  push   %rsi
  mov    %r12,%rsi
  push   $0x1
  mov    0x1e0(%rsp),%r9d
  mov    0x20(%rsp),%rcx
  mov    0xc8(%rsp),%edi
  call   *%rax
  mov    0xb0(%rsp),%r11
  movsd  0xa8(%rsp),%xmm2
  movsd  0x80(%rsp),%xmm1
  add    $0x20,%rsp
L35:
  mov    (%r11),%edi
  test   %edi,%edi
  js     L237
  xor    %edx,%edx
  xchg   %ax,%ax
L507:
  movsd  0x0(%r13,%rdx,8),%xmm0
  subsd  (%rbx,%rdx,8),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%r15,%rdx,8)
  add    $0x1,%rdx
  cmp    %edx,%ebp
  jg     L507
  movsd  %xmm2,(%r12,%r14,8)
  add    0xb8(%rsp),%r15
  add    $0x1,%r14
  cmp    %r14d,0xa8(%rsp)
  jg     L715
  mov    %rbx,0x60(%rsp)
  mov    %r12,%r14
  mov    $0x1,%ecx
  xor    %eax,%eax
  mov    0xd0(%rsp),%rbx
  mov    0xa8(%rsp),%r12d
  mov    %ebp,%edi
  push   %rbx
  mov    %r12d,%esi
  push   0x80(%rsp)
  mov    0xf8(%rsp),%r9
  mov    0x58(%rsp),%r8
  mov    0x48(%rsp),%rdx
  call   <lm_qrfac@plt>
  pop    %rdx
  pop    %rcx
  mov    0xd8(%rsp),%esi
  mov    0x60(%rsp),%r10
  test   %esi,%esi
  je     L793
  cmpl   $0x2,0x160(%rsp)
  jne    L678
L75:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L490:
  movsd  (%r10,%rax,8),%xmm0
  movsd  %xmm0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%ebp
  jg     L490
  mov    0x38(%rsp),%rsi
  mov    0xb8(%rsp),%rdi
  xor    %edx,%edx
  mov    0xf8(%rsp),%r8
  mov    0x68(%rsp),%r9
  mov    0xe8(%rsp),%r11
  mov    %rsi,%rcx
  jmp    L298
  xchg   %ax,%ax
L654:
  movsd  (%r11,%rdx,8),%xmm0
  add    %rdi,%rcx
  movsd  %xmm0,(%rsi)
  movsd  0x0(%r13,%rdx,8),%xmm0
  add    %r8,%rsi
  movsd  %xmm0,(%r9,%rdx,8)
  add    $0x1,%rdx
  cmp    %edx,%r12d
  jle    L837
L298:
  movsd  (%rsi),%xmm0
  pxor   %xmm5,%xmm5
  ucomisd %xmm5,%xmm0
  jp     L913
  je     L654
L913:
  cmp    %edx,%ebp
  jle    L654
  mov    %rdx,%rax
  movapd %xmm0,%xmm1
  pxor   %xmm2,%xmm2
  jmp    L535
  nopl   0x0(%rax,%rax,1)
L29:
  movsd  (%rcx,%rax,8),%xmm1
L535:
  mulsd  0x0(%r13,%rax,8),%xmm1
  add    $0x1,%rax
  addsd  %xmm1,%xmm2
  cmp    %eax,%ebp
  jg     L29
  xorpd  D172(%rip),%xmm2
  mov    %rdx,%rax
  divsd  %xmm0,%xmm2
  jmp    L724
  nopl   0x0(%rax)
L282:
  movsd  (%rcx,%rax,8),%xmm0
L724:
  mulsd  %xmm2,%xmm0
  addsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%ebp
  jg     L282
  jmp    L654
L869:
  mov    0x58(%rsp),%rdx
  xor    %eax,%eax
  jmp    L30
  nopl   (%rax)
L136:
  add    $0x1,%rax
  cmp    %eax,%r12d
  jle    L40
L30:
  pxor   %xmm7,%xmm7
  comisd (%rdx,%rax,8),%xmm7
  jb     L136
  nopl   0x0(%rax,%rax,1)
L748:
  movl   $0xa,(%r15)
L237:
  mov    0x118(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L107
  add    $0x128,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L433:
  mov    D239(%rip),%rax
  movq   %rax,%xmm3
  jmp    L945
L678:
  mov    0x58(%rsp),%rdx
  mov    0x78(%rsp),%rcx
  xor    %eax,%eax
L835:
  movsd  (%rcx,%rax,8),%xmm2
  movsd  (%rdx,%rax,8),%xmm0
  movapd %xmm2,%xmm1
  cmplesd %xmm0,%xmm1
  andpd  %xmm1,%xmm0
  andnpd %xmm2,%xmm1
  orpd   %xmm1,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L835
  jmp    L75
L837:
  mov    0x38(%rsp),%r11
  mov    0x48(%rsp),%r8
  xor    %esi,%esi
  xor    %ecx,%ecx
  mov    0x68(%rsp),%rdi
  mov    0x78(%rsp),%r9
  mov    $0x8,%edx
  pxor   %xmm3,%xmm3
  movsd  0xa0(%rsp),%xmm4
  jmp    L262
  nopl   0x0(%rax,%rax,1)
L545:
  add    $0x1,%rcx
  add    %ebp,%esi
  add    $0x8,%rdx
  cmp    %ecx,%r12d
  jle    L737
L262:
  movslq (%r8,%rcx,4),%rax
  pxor   %xmm6,%xmm6
  movsd  (%r9,%rax,8),%xmm2
  ucomisd %xmm6,%xmm2
  jp     L691
  je     L545
L691:
  movslq %esi,%rax
  pxor   %xmm1,%xmm1
  lea    (%r11,%rax,8),%r15
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L582:
  movsd  (%r15,%rax,1),%xmm0
  mulsd  (%rdi,%rax,1),%xmm0
  add    $0x8,%rax
  addsd  %xmm0,%xmm1
  cmp    %rax,%rdx
  jne    L582
  divsd  %xmm2,%xmm1
  divsd  %xmm4,%xmm1
  andpd  D254(%rip),%xmm1
  movapd %xmm1,%xmm0
  cmplesd %xmm3,%xmm1
  andpd  %xmm1,%xmm3
  andnpd %xmm0,%xmm1
  orpd   %xmm1,%xmm3
  jmp    L545
L737:
  movsd  %xmm3,0xe0(%rsp)
  movsd  0x50(%rsp),%xmm6
  comisd %xmm3,%xmm6
  jae    L246
  lea    0x1(%r12),%r15d
  lea    0x110(%rsp),%rax
  mov    %r10,0xf0(%rsp)
  mov    %rax,0xd0(%rsp)
  mov    %r13,%rax
  mov    %r14,%r13
  mov    %r15d,0xdc(%rsp)
  mov    0xe8(%rsp),%r15
  mov    %rax,%r14
  mov    %ebp,0x60(%rsp)
  mov    0x78(%rsp),%rbp
  nop
L327:
  sub    $0x8,%rsp
  mov    %r12d,%edi
  mov    $0x1,%eax
  push   %rbx
  push   %r14
  push   %rbp
  push   %r15
  push   0xf8(%rsp)
  mov    0x98(%rsp),%r9
  movsd  0xb0(%rsp),%xmm0
  mov    0x88(%rsp),%r8
  mov    0x78(%rsp),%rcx
  mov    0x90(%rsp),%edx
  mov    0x68(%rsp),%rsi
  call   <lm_lmpar@plt>
  add    $0x30,%rsp
  xor    %eax,%eax
  xchg   %ax,%ax
L343:
  movsd  0x0(%r13,%rax,8),%xmm0
  subsd  (%r15,%rax,8),%xmm0
  movsd  %xmm0,0x0(%rbp,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L343
  mov    %rbx,%rsi
  mov    %r12d,%edi
  xor    %eax,%eax
  call   <lm_enorm@plt>
  pxor   %xmm6,%xmm6
  mov    0xdc(%rsp),%esi
  cvtsi2sd %eax,%xmm6
  mov    0x8(%rsp),%rax
  movsd  %xmm6,0x88(%rsp)
  cmp    %esi,(%rax)
  jg     L598
  movsd  0x80(%rsp),%xmm5
  movapd %xmm5,%xmm0
  cmplesd %xmm6,%xmm0
  andpd  %xmm0,%xmm5
  andnpd %xmm6,%xmm0
  orpd   %xmm5,%xmm0
  movsd  %xmm0,0x80(%rsp)
L598:
  mov    %rbp,%rdi
  mov    (%rsp),%rdx
  mov    0x60(%rsp),%esi
  mov    %r14,%rcx
  mov    0xb0(%rsp),%rax
  movl   $0x0,(%rax)
  mov    %rax,%r8
  mov    0x18(%rsp),%rax
  call   *%rax
  mov    0x8(%rsp),%rdi
  mov    0x20(%rsp),%r10
  mov    (%rdi),%eax
  mov    %eax,0x90(%rsp)
  add    $0x1,%eax
  mov    %eax,(%rdi)
  test   %r10,%r10
  je     L128
  sub    $0x8,%rsp
  mov    %r14,%r8
  mov    %rbp,%rsi
  mov    %r12d,%edi
  push   %rax
  mov    0xe8(%rsp),%eax
  push   %rax
  push   $0x2
  mov    0x1e0(%rsp),%r9d
  mov    0x20(%rsp),%rcx
  mov    0x80(%rsp),%edx
  call   *%r10
  add    $0x20,%rsp
L128:
  mov    0xb0(%rsp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  js     L237
  mov    0x60(%rsp),%edi
  xor    %eax,%eax
  mov    %r14,%rsi
  call   <lm_enorm@plt>
  pxor   %xmm5,%xmm5
  movsd  D18(%rip),%xmm4
  movsd  0xa0(%rsp),%xmm7
  cvtsi2sd %eax,%xmm5
  movsd  %xmm5,0xa8(%rsp)
  mulsd  %xmm5,%xmm4
  comisd %xmm4,%xmm7
  jbe    L214
  divsd  %xmm7,%xmm5
  movsd  D212(%rip),%xmm2
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  subsd  %xmm0,%xmm2
L402:
  mov    0x38(%rsp),%rcx
  mov    0xb8(%rsp),%r8
  mov    $0x8,%edx
  xor    %edi,%edi
  mov    0x48(%rsp),%r9
  nopl   0x0(%rax,%rax,1)
L958:
  movslq (%r9,%rdi,4),%rax
  movq   $0x0,(%rbx,%rdi,8)
  lea    (%r15,%rax,8),%rsi
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L627:
  movsd  (%rcx,%rax,1),%xmm1
  mulsd  (%rsi),%xmm1
  movsd  (%rbx,%rax,1),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rbx,%rax,1)
  add    $0x8,%rax
  cmp    %rax,%rdx
  jne    L627
  add    $0x1,%rdi
  add    %r8,%rcx
  add    $0x8,%rdx
  cmp    %edi,%r12d
  jg     L958
  xor    %eax,%eax
  mov    %rbx,%rsi
  mov    %r12d,%edi
  movsd  %xmm4,0x98(%rsp)
  movsd  %xmm2,0x90(%rsp)
  call   <lm_enorm@plt>
  pxor   %xmm6,%xmm6
  pxor   %xmm3,%xmm3
  movsd  0x110(%rsp),%xmm5
  movsd  0x90(%rsp),%xmm2
  cvtsi2sd %eax,%xmm3
  movsd  0x98(%rsp),%xmm4
  divsd  0xa0(%rsp),%xmm3
  ucomisd %xmm5,%xmm6
  ja     L926
  movapd %xmm5,%xmm0
  sqrtsd %xmm0,%xmm0
L807:
  mulsd  0x88(%rsp),%xmm0
  pxor   %xmm7,%xmm7
  divsd  0xa0(%rsp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  mulsd  %xmm3,%xmm3
  mulsd  %xmm0,%xmm1
  addsd  %xmm3,%xmm1
  ucomisd %xmm7,%xmm1
  jp     L586
  pxor   %xmm6,%xmm6
  je     L878
L586:
  movapd %xmm2,%xmm6
  movsd  D218(%rip),%xmm7
  divsd  %xmm1,%xmm6
  comisd %xmm6,%xmm7
  jae    L878
  pxor   %xmm7,%xmm7
  ucomisd %xmm7,%xmm5
  jp     L859
  je     L959
L859:
  comisd D75(%rip),%xmm6
  jb     L478
L959:
  mulsd  D219(%rip),%xmm5
  movsd  0x88(%rsp),%xmm7
  addsd  %xmm7,%xmm7
  movsd  %xmm5,0x110(%rsp)
  movsd  %xmm7,0x80(%rsp)
L478:
  movsd  D3(%rip),%xmm3
  comisd %xmm3,%xmm6
  jae    L956
L13:
  movsd  D189(%rip),%xmm0
  comisd 0xa0(%rsp),%xmm0
  jae    L948
  andpd  D254(%rip),%xmm2
  movsd  0x10(%rsp),%xmm7
  mov    0xb0(%rsp),%rax
  movsd  0xc8(%rsp),%xmm0
  mulsd  0x28(%rsp),%xmm0
  comisd %xmm2,%xmm7
  movl   $0x0,(%rax)
  jb     L247
  comisd %xmm1,%xmm7
  jb     L247
  movsd  D219(%rip),%xmm4
  movsd  D212(%rip),%xmm5
  mulsd  %xmm6,%xmm4
  comisd %xmm4,%xmm5
  jae    L226
  nopl   0x0(%rax,%rax,1)
L247:
  comisd 0x80(%rsp),%xmm0
  jae    L199
  mov    0x8(%rsp),%rax
  mov    0x44(%rsp),%esi
  cmp    %esi,(%rax)
  jge    L160
  movsd  D239(%rip),%xmm5
  comisd %xmm2,%xmm5
  jb     L372
  comisd %xmm1,%xmm5
  jb     L372
  movsd  D219(%rip),%xmm0
  movsd  D212(%rip),%xmm1
  mulsd  %xmm6,%xmm0
  comisd %xmm0,%xmm1
  jae    L502
L372:
  movsd  D239(%rip),%xmm0
  mulsd  0xc8(%rsp),%xmm0
  comisd 0x80(%rsp),%xmm0
  jae    L594
  movsd  D239(%rip),%xmm7
  comisd 0xe0(%rsp),%xmm7
  jae    L902
  comisd %xmm6,%xmm3
  ja     L327
  mov    %r14,%rax
  mov    0x60(%rsp),%ebp
  mov    %r13,%r14
  mov    0xf0(%rsp),%r10
  mov    %rax,%r13
  jmp    L696
  nopl   (%rax)
L878:
  pxor   %xmm7,%xmm7
  mov    D18(%rip),%rax
  comisd %xmm7,%xmm2
  movq   %rax,%xmm7
  jb     L467
  comisd 0xa0(%rsp),%xmm4
  jae    L501
  movsd  D219(%rip),%xmm7
L501:
  movsd  0x80(%rsp),%xmm4
  divsd  %xmm7,%xmm5
  movsd  0x88(%rsp),%xmm3
  divsd  D18(%rip),%xmm3
  movapd %xmm4,%xmm0
  cmplesd %xmm3,%xmm0
  andpd  %xmm0,%xmm4
  andnpd %xmm3,%xmm0
  orpd   %xmm4,%xmm0
  mulsd  %xmm7,%xmm0
  movsd  %xmm0,0x80(%rsp)
  movsd  %xmm5,0x110(%rsp)
  jmp    L478
L214:
  mov    D227(%rip),%rax
  movq   %rax,%xmm2
  jmp    L402
L199:
  mov    0xb0(%rsp),%r15
  movl   $0x2,(%r15)
  jmp    L237
L956:
  mov    0x58(%rsp),%rdx
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L932:
  movsd  0x0(%rbp,%rax,8),%xmm0
  movsd  %xmm0,0x0(%r13,%rax,8)
  mulsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,0x0(%rbp,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L932
  mov    0x60(%rsp),%edx
  mov    0xf0(%rsp),%rcx
  xor    %eax,%eax
  nop
L265:
  movsd  (%r14,%rax,8),%xmm0
  movsd  %xmm0,(%rcx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L265
  mov    %rbp,%rsi
  mov    %r12d,%edi
  xor    %eax,%eax
  movsd  %xmm2,0x98(%rsp)
  movsd  %xmm1,0x90(%rsp)
  movsd  %xmm6,0x88(%rsp)
  call   <lm_enorm@plt>
  pxor   %xmm6,%xmm6
  addl   $0x1,0xd8(%rsp)
  movsd  0x98(%rsp),%xmm2
  movsd  0x90(%rsp),%xmm1
  cvtsi2sd %eax,%xmm6
  mov    D3(%rip),%rax
  movq   %rax,%xmm3
  movsd  %xmm6,0xc8(%rsp)
  movsd  0xa8(%rsp),%xmm6
  movsd  %xmm6,0xa0(%rsp)
  movsd  0x88(%rsp),%xmm6
  jmp    L13
L467:
  comisd 0xa0(%rsp),%xmm4
  jae    L501
  mulsd  %xmm0,%xmm0
  movq   %rax,%xmm4
  addsd  %xmm3,%xmm0
  movsd  D256(%rip),%xmm3
  mulsd  %xmm2,%xmm3
  movapd %xmm0,%xmm7
  xorpd  D172(%rip),%xmm7
  mulsd  D219(%rip),%xmm7
  subsd  %xmm0,%xmm3
  divsd  %xmm3,%xmm7
  maxsd  %xmm7,%xmm4
  movapd %xmm4,%xmm7
  jmp    L501
L948:
  mov    0xb0(%rsp),%r15
L975:
  movl   $0x0,(%r15)
  jmp    L237
L226:
  ucomisd 0x80(%rsp),%xmm0
  mov    %rax,%r15
  sbb    %eax,%eax
  and    $0xfffffffe,%eax
  add    $0x3,%eax
  mov    %eax,(%r15)
  jmp    L237
L793:
  cmpl   $0x2,0x160(%rsp)
  jne    L730
L738:
  mov    0x58(%rsp),%rdx
  xor    %eax,%eax
L64:
  movsd  (%rdx,%rax,8),%xmm0
  mulsd  (%r14,%rax,8),%xmm0
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L64
  xor    %eax,%eax
  mov    %rbx,%rsi
  mov    %r12d,%edi
  mov    %r10,0x60(%rsp)
  call   <lm_enorm@plt>
  pxor   %xmm6,%xmm6
  mov    0x60(%rsp),%r10
  cvtsi2sd %eax,%xmm6
  movsd  %xmm6,0xc8(%rsp)
  movapd %xmm6,%xmm7
  movsd  0x70(%rsp),%xmm6
  movapd %xmm6,%xmm5
  mulsd  %xmm7,%xmm5
  pxor   %xmm7,%xmm7
  movsd  %xmm5,0x80(%rsp)
  ucomisd %xmm7,%xmm5
  jp     L75
  movq   %xmm5,%rax
  movq   %xmm6,%rdi
  cmove  %rdi,%rax
  mov    %rax,0x80(%rsp)
  jmp    L75
L160:
  mov    0xb0(%rsp),%r15
  movl   $0x5,(%r15)
  jmp    L237
L594:
  mov    0xb0(%rsp),%r15
  movl   $0x7,(%r15)
  jmp    L237
L902:
  mov    0xb0(%rsp),%r15
  movl   $0x8,(%r15)
  jmp    L237
L730:
  xor    %eax,%eax
L144:
  mov    0x78(%rsp),%rdi
  pxor   %xmm5,%xmm5
  mov    (%rdi,%rax,8),%rdx
  movq   %rdx,%xmm6
  ucomisd %xmm5,%xmm6
  jp     L175
  mov    D212(%rip),%rdi
  cmove  %rdi,%rdx
L175:
  mov    0x58(%rsp),%rdi
  mov    %rdx,(%rdi,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L144
  jmp    L738
L502:
  mov    0xb0(%rsp),%r15
  movl   $0x6,(%r15)
  jmp    L237
L926:
  movsd  %xmm3,0x108(%rsp)
  movapd %xmm5,%xmm0
  movsd  %xmm2,0x100(%rsp)
  movsd  %xmm4,0x98(%rsp)
  movsd  %xmm5,0x90(%rsp)
  call   <sqrt@plt>
  movsd  0x108(%rsp),%xmm3
  movsd  0x100(%rsp),%xmm2
  movsd  0x98(%rsp),%xmm4
  movsd  0x90(%rsp),%xmm5
  jmp    L807
L246:
  mov    0xb0(%rsp),%r15
  movl   $0x4,(%r15)
  jmp    L237
L21:
  movapd %xmm3,%xmm0
  mov    %rdx,0x80(%rsp)
  call   <sqrt@plt>
  mov    0x80(%rsp),%r11
  movsd  %xmm0,0x30(%rsp)
  jmp    L111
L107:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D239
type_guessed: byte[16]
name: disassemble_data
arguments: label: D254
type_guessed: qword[2]
name: disassemble_data
arguments: label: D172
type_guessed: f32[4]
name: disassemble_data
arguments: label: D18
type_guessed: f64
name: disassemble_data
arguments: label: D212
type_guessed: f64
name: disassemble_data
arguments: label: D218
type_guessed: f64
name: disassemble_data
arguments: label: D75
type_guessed: f64[2]
name: disassemble_data
arguments: label: D219
type_guessed: f64
name: disassemble_data
arguments: label: D3
type_guessed: byte[8]
name: disassemble_data
arguments: label: D189
type_guessed: byte[8]
name: disassemble_data
arguments: label: D227
type_guessed: f32[2]
name: disassemble_data
arguments: label: D256
type_guessed: f64

tool: {"D239": [0x71,0x1f,0xb5,0xf4,0x37,0x4b,0xa1,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D254": [0x7fffffffffffffff,0x0000000000000000]}

tool: {"D172": [0.0,-0.0,0.0,0.0]}

tool: D18: 0.1

tool: D212: 1

tool: D218: 0.25

tool: {"D75": [0.75,0.0001]}

tool: D219: 0.5

tool: {"D3": [0x2d,0x43,0x1c,0xeb,0xe2,0x36,0x1a,0x3f]}

tool: {"D189": [0xe4,0x78,0xaa,0x9d,0xfb,0x38,0x0b,0x38]}

tool: {"D227": [0.0,-1.875]}

tool: D256: 0.55

assistant: ```c
void lm_lmdif(int m, int n, double *x, double *fvec, double ftol, double xtol, double gtol, int maxfev, double epsfcn, double *diag, int mode, double factor, int *info, int *nfev, double *fjac, int *ipvt, double *qtf, double *wa1, double *wa2, double *wa3, double *wa4, void (*evaluate)(const double *par, int m_dat, const void *data, double *fvec, int *info), void (*printout)(int n_par, const double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev), int printflags, const void *data) {
  int i, iter, j;
  double actred, delta, dirder, eps, fnorm, fnorm1, gnorm, par, pnorm, prered, ratio, step, sum, temp, temp1, temp2, temp3, xnorm;
  static double p1 = 0.1;
  static double p0001 = 1.0e-4;
  *nfev = 0;
  iter = 0;
  par = 0;
  delta = 0;
  xnorm = 0;
  temp = (((epsfcn) >= (1.2e-16)) ? (epsfcn) : (1.2e-16));
  eps = sqrt(temp);
  if ((n <= 0) || (m < n) || (ftol < 0.) || (xtol < 0.) || (gtol < 0.) || (maxfev <= 0) || (factor <= 0.)) {
    *info = 10;
    return;
  }
  if (mode == 2) {
    for (j = 0; j < n; j++) {
      if (diag[j] <= 0.0) {
        *info = 10;
        return;
      }
    }
  }
  *info = 0;
  (*evaluate)(x, m, data, fvec, info);
  ++(*nfev);
  if (printout)
    (*printout)(n, x, m, data, fvec, printflags, 0, 0, *nfev);
  if (*info < 0)
    return;
  fnorm = lm_enorm(m, fvec);
  if (fnorm <= 1.0e-38) {
    *info = 0;
    return;
  }
  do {
    for (j = 0; j < n; j++) {
      temp = x[j];
      step = (((eps * eps) >= (eps * fabs(temp))) ? (eps * eps) : (eps * fabs(temp)));
      x[j] = temp + step;
      *info = 0;
      (*evaluate)(x, m, data, wa4, info);
      ++(*nfev);
      if (printout)
        (*printout)(n, x, m, data, wa4, printflags, 1, iter, *nfev);
      if (*info < 0)
        return;
      for (i = 0; i < m; i++)
        fjac[j * m + i] = (wa4[i] - fvec[i]) / step;
      x[j] = temp;
    }
    lm_qrfac(m, n, fjac, 1, ipvt, wa1, wa2, wa3);
    if (!iter) {
      if (mode != 2) {
        for (j = 0; j < n; j++) {
          diag[j] = wa2[j];
          if (wa2[j] == 0.)
            diag[j] = 1.;
        }
      }
      for (j = 0; j < n; j++)
        wa3[j] = diag[j] * x[j];
      xnorm = lm_enorm(n, wa3);
      delta = factor * xnorm;
      if (delta == 0.)
        delta = factor;
    } else {
      if (mode != 2) {
        for (j = 0; j < n; j++)
          diag[j] = (((diag[j]) >= (wa2[j])) ? (diag[j]) : (wa2[j]));
      }
    }
    for (i = 0; i < m; i++)
      wa4[i] = fvec[i];
    for (j = 0; j < n; j++) {
      temp3 = fjac[j * m + j];
      if (temp3 != 0.) {
        sum = 0;
        for (i = j; i < m; i++)
          sum += fjac[j * m + i] * wa4[i];
        temp = -sum / temp3;
        for (i = j; i < m; i++)
          wa4[i] += fjac[j * m + i] * temp;
      }
      fjac[j * m + j] = wa1[j];
      qtf[j] = wa4[j];
    }
    gnorm = 0;
    for (j = 0; j < n; j++) {
      if (wa2[ipvt[j]] == 0)
        continue;
      sum = 0.;
      for (i = 0; i <= j; i++)
        sum += fjac[j * m + i] * qtf[i];
      gnorm = (((gnorm) >= (fabs(sum / wa2[ipvt[j]] / fnorm))) ? (gnorm) : (fabs(sum / wa2[ipvt[j]] / fnorm)));
    }
    if (gnorm <= gtol) {
      *info = 4;
      return;
    }
    do {
      lm_lmpar(n, fjac, m, ipvt, diag, qtf, delta, &par, wa1, wa2, wa4, wa3);
      for (j = 0; j < n; j++)
        wa2[j] = x[j] - wa1[j];
      pnorm = lm_enorm(n, wa3);
      if (*nfev <= 1 + n)
        delta = (((delta) <= (pnorm)) ? (delta) : (pnorm));
      *info = 0;
      (*evaluate)(wa2, m, data, wa4, info);
      ++(*nfev);
      if (printout)
        (*printout)(n, wa2, m, data, wa4, printflags, 2, iter, *nfev);
      if (*info < 0)
        return;
      fnorm1 = lm_enorm(m, wa4);
      if (p1 * fnorm1 < fnorm)
        actred = 1 - (fnorm1 / fnorm) * (fnorm1 / fnorm);
      else
        actred = -1;
      for (j = 0; j < n; j++) {
        wa3[j] = 0;
        for (i = 0; i <= j; i++)
          wa3[i] -= fjac[j * m + i] * wa1[ipvt[j]];
      }
      temp1 = lm_enorm(n, wa3) / fnorm;
      temp2 = sqrt(par) * pnorm / fnorm;
      prered = (temp1) * (temp1) + 2 * (temp2) * (temp2);
      dirder = -((temp1) * (temp1) + (temp2) * (temp2));
      ratio = prered != 0 ? actred / prered : 0;
      if (ratio <= 0.25) {
        if (actred >= 0.)
          temp = 0.5;
        else
          temp = 0.5 * dirder / (dirder + 0.55 * actred);
        if (p1 * fnorm1 >= fnorm || temp < p1)
          temp = p1;
        delta = temp * (((delta) <= (pnorm / p1)) ? (delta) : (pnorm / p1));
        par /= temp;
      } else if (par == 0. || ratio >= 0.75) {
        delta = pnorm / 0.5;
        par *= 0.5;
      }
      if (ratio >= p0001) {
        for (j = 0; j < n; j++) {
          x[j] = wa2[j];
          wa2[j] = diag[j] * x[j];
        }
        for (i = 0; i < m; i++)
          fvec[i] = wa4[i];
        xnorm = lm_enorm(n, wa2);
        fnorm = fnorm1;
        iter++;
      }
      if (fnorm <= 1.0e-38) {
        *info = 0;
        return;
      }
      *info = 0;
      if (fabs(actred) <= ftol && prered <= ftol && 0.5 * ratio <= 1)
        *info = 1;
      if (delta <= xtol * xnorm)
        *info += 2;
      if (*info != 0)
        return;
      if (*nfev >= maxfev) {
        *info = 5;
        return;
      }
      if (fabs(actred) <= 1.2e-16 && prered <= 1.2e-16 && 0.5 * ratio <= 1) {
        *info = 6;
        return;
      }
      if (delta <= 1.2e-16 * xnorm) {
        *info = 7;
        return;
      }
      if (gnorm <= 1.2e-16) {
        *info = 8;
        return;
      }
    } while (ratio < p0001);
  } while (1);
}
```