user: Demonstrate the C code that generates the assembly output below:

```asm
<lmdif>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xf8,%rsp
  mov    %rdi,0x30(%rsp)
  mov    %rsi,0x38(%rsp)
  mov    %edx,0xb8(%rsp)
  mov    %ecx,%r12d
  mov    %r8,%r15
  mov    %r9,0x58(%rsp)
  movsd  %xmm0,0x20(%rsp)
  movsd  %xmm1,0x60(%rsp)
  movsd  %xmm2,0x88(%rsp)
  movsd  %xmm3,0xa8(%rsp)
  mov    0x138(%rsp),%r13
  movsd  %xmm4,0xa0(%rsp)
  mov    0x150(%rsp),%rdi
  mov    %rdi,0x50(%rsp)
  mov    0x158(%rsp),%rax
  mov    %rax,0x48(%rsp)
  mov    0x168(%rsp),%r14
  mov    0x170(%rsp),%rax
  mov    %rax,0x70(%rsp)
  mov    0x178(%rsp),%rbp
  mov    0x180(%rsp),%rax
  mov    %rax,0x8(%rsp)
  mov    0x188(%rsp),%rbx
  mov    0x190(%rsp),%rax
  mov    %rax,0x10(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0xe8(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%rdi)
  test   %ecx,%ecx
  setle  %al
  mov    %edx,%edi
  cmp    %edx,%ecx
  setg   %dl
  or     %dl,%al
  jne    L263
  cmp    0x160(%rsp),%edi
  jg     L263
  pxor   %xmm0,%xmm0
  comisd 0x20(%rsp),%xmm0
  ja     L337
  comisd %xmm1,%xmm0
  ja     L650
  comisd %xmm2,%xmm0
  ja     L891
  cmpl   $0x0,0x130(%rsp)
  jle    L1008
  comisd %xmm4,%xmm0
  jae    L557
  cmpl   $0x2,0x140(%rsp)
  je     L769
L434:
  mov    $0x1,%r9d
  mov    0x58(%rsp),%r8
  mov    %r15,%rcx
  mov    %r12d,%edx
  mov    0xb8(%rsp),%esi
  mov    0x38(%rsp),%rdi
  mov    0x30(%rsp),%rax
  call   *%rax
  mov    %eax,0x28(%rsp)
  mov    0x50(%rsp),%rcx
  movl   $0x1,(%rcx)
  test   %eax,%eax
  js     L361
  mov    0x58(%rsp),%rsi
  mov    0xb8(%rsp),%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm6,%xmm6
  cvtsi2sd %eax,%xmm6
  movsd  %xmm6,0x40(%rsp)
  movq   $0x0,0xe0(%rsp)
  movslq 0x160(%rsp),%rax
  lea    0x8(,%rax,8),%rsi
  mov    %rsi,0xd0(%rsp)
  shl    $0x3,%rax
  mov    %rax,0xd8(%rsp)
  movq   $0x0,0x98(%rsp)
  movq   $0x0,0x18(%rsp)
  movl   $0x1,0xbc(%rsp)
  mov    %r14,%rax
  mov    %r12d,%r14d
  mov    %rax,%r12
L1067:
  sub    $0x8,%rsp
  push   0x18(%rsp)
  mov    0x170(%rsp),%eax
  push   %rax
  push   0x60(%rsp)
  movsd  0xc8(%rsp),%xmm0
  mov    0x78(%rsp),%r9
  mov    %r15,%r8
  mov    %r14d,%ecx
  mov    0xd8(%rsp),%edx
  mov    0x58(%rsp),%rsi
  mov    0x50(%rsp),%rdi
  mov    $0x1,%eax
  call   <fdjac2@plt>
  mov    %eax,0x48(%rsp)
  mov    0x70(%rsp),%rcx
  add    %r14d,(%rcx)
  add    $0x20,%rsp
  test   %eax,%eax
  js     L827
  cmpl   $0x0,0x148(%rsp)
  jle    L726
  mov    0xbc(%rsp),%ecx
  lea    -0x1(%rcx),%eax
  cltd
  idivl  0x148(%rsp)
  test   %edx,%edx
  jne    L205
  mov    $0x0,%r9d
  mov    0x58(%rsp),%r8
  mov    %r15,%rcx
  mov    %r14d,%edx
  mov    0xb8(%rsp),%esi
  mov    0x38(%rsp),%rdi
  mov    0x30(%rsp),%rax
  call   *%rax
  mov    %eax,0x28(%rsp)
  test   %eax,%eax
  jns    L726
  mov    %r14d,%r12d
  jmp    L651
L769:
  mov    $0x0,%eax
L289:
  comisd 0x0(%r13,%rax,8),%xmm0
  jae    L473
  add    $0x1,%rax
  cmp    %eax,%r12d
  jg     L289
  jmp    L434
L205:
  movl   $0x0,0x28(%rsp)
L726:
  push   %rbx
  push   0x10(%rsp)
  push   %rbp
  push   %r14
  mov    %r12,%r9
  mov    $0x1,%r8d
  mov    0x180(%rsp),%ecx
  mov    0x68(%rsp),%rdx
  mov    %r14d,%esi
  mov    0xd8(%rsp),%edi
  mov    $0x0,%eax
  call   <qrfac@plt>
  add    $0x20,%rsp
  cmpl   $0x1,0xbc(%rsp)
  je     L349
L335:
  mov    0xb8(%rsp),%eax
  test   %eax,%eax
  jle    L436
  lea    -0x1(%rax),%ecx
  mov    $0x0,%eax
  mov    0x58(%rsp),%rsi
  mov    0x10(%rsp),%rdi
L1050:
  movsd  (%rsi,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  mov    %rax,%rdx
  add    $0x1,%rax
  cmp    %rcx,%rdx
  jne    L1050
L436:
  mov    0x48(%rsp),%rcx
  mov    %rcx,%rsi
  mov    $0x0,%edx
  pxor   %xmm4,%xmm4
  movapd %xmm4,%xmm3
  mov    0xb8(%rsp),%r8d
  mov    0x70(%rsp),%r11
  mov    0x10(%rsp),%rdi
  jmp    L304
L349:
  cmpl   $0x2,0x140(%rsp)
  jne    L944
L660:
  mov    $0x0,%eax
L151:
  movsd  0x0(%r13,%rax,8),%xmm0
  mulsd  (%r15,%rax,8),%xmm0
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r14d
  jg     L151
  mov    %rbx,%rsi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm6,%xmm6
  cvtsi2sd %eax,%xmm6
  movapd %xmm6,%xmm7
  movsd  %xmm6,0x98(%rsp)
  movsd  0xa0(%rsp),%xmm4
  movapd %xmm4,%xmm6
  mulsd  %xmm7,%xmm6
  movsd  %xmm6,0x18(%rsp)
  ucomisd D292(%rip),%xmm6
  jp     L335
  movq   %xmm6,%rax
  movq   %xmm4,%rsi
  cmove  %rsi,%rax
  mov    %rax,0x18(%rsp)
  jmp    L335
L944:
  mov    $0x0,%eax
L298:
  mov    0x8(%rsp),%rsi
  movsd  (%rsi,%rax,8),%xmm0
  pxor   %xmm4,%xmm4
  ucomisd %xmm4,%xmm0
  jp     L744
  movq   %xmm0,%rsi
  cmove  D184(%rip),%rsi
  movq   %rsi,%xmm0
L744:
  movsd  %xmm0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r14d
  jg     L298
  jmp    L660
L387:
  movapd %xmm1,%xmm0
  mulsd  (%r9,%rax,8),%xmm0
  addsd  (%rdi,%rax,8),%xmm0
  movsd  %xmm0,(%rdi,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r8d
  jg     L387
L925:
  movsd  0x0(%rbp,%rdx,8),%xmm0
  movsd  %xmm0,(%r10)
  movsd  (%rdi,%rdx,8),%xmm0
  movsd  %xmm0,(%r11,%rdx,8)
  add    $0x1,%rdx
  add    0xd0(%rsp),%rsi
  add    0xd8(%rsp),%rcx
  cmp    %edx,%r14d
  jle    L839
L304:
  mov    %rsi,%r10
  movsd  (%rsi),%xmm2
  ucomisd %xmm4,%xmm2
  jp     L581
  ucomisd %xmm3,%xmm2
  je     L925
L581:
  cmp    %edx,%r8d
  jle    L925
  mov    %rdx,%rax
  pxor   %xmm1,%xmm1
  mov    %rcx,%r9
L200:
  movsd  (%rcx,%rax,8),%xmm0
  mulsd  (%rdi,%rax,8),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x1,%rax
  cmp    %eax,%r8d
  jg     L200
  xorpd  D214(%rip),%xmm1
  divsd  %xmm2,%xmm1
  mov    %rdx,%rax
  jmp    L387
L839:
  movsd  0x40(%rsp),%xmm3
  ucomisd D292(%rip),%xmm3
  jp     L393
  pxor   %xmm6,%xmm6
  movsd  %xmm6,0xc0(%rsp)
  jne    L393
L926:
  movsd  0x88(%rsp),%xmm7
  comisd 0xc0(%rsp),%xmm7
  jae    L791
  cmpl   $0x2,0x140(%rsp)
  je     L261
  mov    $0x0,%eax
  mov    0x8(%rsp),%rdx
L370:
  movsd  0x0(%r13,%rax,8),%xmm0
  movsd  (%rdx,%rax,8),%xmm2
  movapd %xmm2,%xmm1
  cmplesd %xmm0,%xmm1
  andpd  %xmm1,%xmm0
  andnpd %xmm2,%xmm1
  orpd   %xmm1,%xmm0
  movsd  %xmm0,0x0(%r13,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r14d
  jg     L370
  jmp    L261
L393:
  mov    $0x8,%ecx
  mov    $0x0,%esi
  mov    $0x0,%edx
  pxor   %xmm4,%xmm4
  movsd  %xmm4,0xc0(%rsp)
  movapd %xmm4,%xmm3
  mov    0x70(%rsp),%rdi
  mov    0x8(%rsp),%r8
  jmp    L631
L175:
  pxor   %xmm1,%xmm1
L749:
  divsd  %xmm2,%xmm1
  andpd  D149(%rip),%xmm1
  movapd %xmm1,%xmm0
  movsd  0xc0(%rsp),%xmm5
  cmplesd %xmm5,%xmm0
  andpd  %xmm0,%xmm5
  andnpd %xmm1,%xmm0
  orpd   %xmm5,%xmm0
  movsd  %xmm0,0xc0(%rsp)
L143:
  add    $0x1,%rdx
  add    0x160(%rsp),%esi
  add    $0x8,%rcx
  cmp    %edx,%r14d
  jle    L926
L631:
  mov    (%r12,%rdx,4),%eax
  sub    $0x1,%eax
  cltq
  movsd  (%r8,%rax,8),%xmm2
  ucomisd %xmm4,%xmm2
  jp     L673
  ucomisd %xmm3,%xmm2
  je     L143
L673:
  test   %edx,%edx
  js     L175
  movslq %esi,%rax
  mov    0x48(%rsp),%r11
  lea    (%r11,%rax,8),%r9
  mov    $0x0,%eax
  pxor   %xmm1,%xmm1
L882:
  movsd  (%rdi,%rax,1),%xmm0
  divsd  0x40(%rsp),%xmm0
  mulsd  (%r9,%rax,1),%xmm0
  addsd  %xmm0,%xmm1
  add    $0x8,%rax
  cmp    %rcx,%rax
  jne    L882
  jmp    L749
L619:
  movsd  0x18(%rsp),%xmm7
  movapd %xmm7,%xmm0
  cmplesd %xmm5,%xmm0
  andpd  %xmm0,%xmm7
  andnpd %xmm5,%xmm0
  orpd   %xmm7,%xmm0
  movsd  %xmm0,0x18(%rsp)
  jmp    L1029
L766:
  movsd  D76(%rip),%xmm3
  movsd  %xmm3,0x78(%rsp)
L896:
  mov    $0x8,%edx
  mov    $0x0,%edi
  mov    $0x0,%esi
  mov    0x48(%rsp),%r8
L976:
  movq   $0x0,(%rbx,%rsi,8)
  mov    (%r12,%rsi,4),%eax
  sub    $0x1,%eax
  cltq
  movsd  0x0(%rbp,%rax,8),%xmm1
  test   %esi,%esi
  js     L30
  movslq %edi,%rax
  lea    (%r8,%rax,8),%rcx
  mov    $0x0,%eax
L692:
  movapd %xmm1,%xmm0
  mulsd  (%rcx,%rax,1),%xmm0
  addsd  (%rbx,%rax,1),%xmm0
  movsd  %xmm0,(%rbx,%rax,1)
  add    $0x8,%rax
  cmp    %rdx,%rax
  jne    L692
L30:
  add    $0x1,%rsi
  add    0x160(%rsp),%edi
  add    $0x8,%rdx
  cmp    %esi,%r14d
  jg     L976
  mov    %rbx,%rsi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  divsd  0x40(%rsp),%xmm1
  movsd  %xmm1,0x28(%rsp)
  movsd  0xe0(%rsp),%xmm7
  movsd  %xmm7,0x90(%rsp)
  pxor   %xmm0,%xmm0
  ucomisd %xmm7,%xmm0
  ja     L327
  sqrtsd %xmm7,%xmm7
  movapd %xmm7,%xmm0
L856:
  mulsd  0x68(%rsp),%xmm0
  divsd  0x40(%rsp),%xmm0
  movsd  0x28(%rsp),%xmm1
  mulsd  %xmm1,%xmm1
  mulsd  %xmm0,%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  addsd  %xmm1,%xmm2
  movsd  %xmm2,0x80(%rsp)
  ucomisd D292(%rip),%xmm2
  jp     L606
  pxor   %xmm5,%xmm5
  movsd  %xmm5,0x28(%rsp)
  jne    L606
L79:
  movsd  0x78(%rsp),%xmm5
  comisd D292(%rip),%xmm5
  jb     L820
  movsd  D224(%rip),%xmm2
  movsd  0xb0(%rsp),%xmm6
  comisd 0x40(%rsp),%xmm6
  jb     L884
L862:
  movsd  0x68(%rsp),%xmm1
  divsd  D224(%rip),%xmm1
  movsd  0x18(%rsp),%xmm3
  movapd %xmm3,%xmm0
  cmplesd %xmm1,%xmm0
  andpd  %xmm0,%xmm3
  andnpd %xmm1,%xmm0
  orpd   %xmm3,%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm0,0x18(%rsp)
  movsd  0x90(%rsp),%xmm0
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0xe0(%rsp)
L957:
  movsd  0x28(%rsp),%xmm3
  comisd D70(%rip),%xmm3
  jae    L233
L917:
  movsd  0x78(%rsp),%xmm0
  andpd  D149(%rip),%xmm0
  movsd  0x20(%rsp),%xmm6
  comisd %xmm0,%xmm6
  jb     L340
  comisd 0x80(%rsp),%xmm6
  jb     L341
  movsd  D184(%rip),%xmm2
  movsd  0x28(%rsp),%xmm1
  mulsd  D43(%rip),%xmm1
  comisd %xmm1,%xmm2
  setae  %al
  movzbl %al,%eax
  jmp    L383
L327:
  movsd  0x90(%rsp),%xmm0
  call   <sqrt@plt>
  jmp    L856
L606:
  movsd  0x78(%rsp),%xmm4
  divsd  0x80(%rsp),%xmm4
  movsd  %xmm4,0x28(%rsp)
  movsd  D123(%rip),%xmm2
  comisd %xmm4,%xmm2
  jae    L79
  movsd  0x90(%rsp),%xmm7
  ucomisd D292(%rip),%xmm7
  jp     L582
  jne    L582
L773:
  movsd  0x68(%rsp),%xmm6
  addsd  %xmm6,%xmm6
  movsd  %xmm6,0x18(%rsp)
  movsd  0x90(%rsp),%xmm0
  mulsd  D43(%rip),%xmm0
  movsd  %xmm0,0xe0(%rsp)
  jmp    L957
L820:
  movsd  D224(%rip),%xmm2
  movsd  0xb0(%rsp),%xmm3
  comisd 0x40(%rsp),%xmm3
  jae    L862
  addsd  %xmm0,%xmm1
  movapd %xmm1,%xmm2
  xorpd  D214(%rip),%xmm2
  movsd  D43(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  mulsd  %xmm5,%xmm0
  subsd  %xmm1,%xmm0
  divsd  %xmm0,%xmm2
  movsd  D224(%rip),%xmm0
  comisd %xmm2,%xmm0
  jbe    L862
  movapd %xmm0,%xmm2
  jmp    L862
L884:
  movsd  D43(%rip),%xmm2
  jmp    L862
L582:
  movsd  0x28(%rsp),%xmm3
  comisd D72(%rip),%xmm3
  jb     L957
  jmp    L773
L233:
  mov    $0x0,%eax
  mov    0x8(%rsp),%rdx
L241:
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,(%r15,%rax,8)
  mulsd  0x0(%r13,%rax,8),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r14d
  jg     L241
  mov    0xb8(%rsp),%eax
  test   %eax,%eax
  jle    L1011
  lea    -0x1(%rax),%ecx
  mov    $0x0,%eax
  mov    0x58(%rsp),%rsi
  mov    0x10(%rsp),%rdi
L806:
  movsd  (%rdi,%rax,8),%xmm0
  movsd  %xmm0,(%rsi,%rax,8)
  mov    %rax,%rdx
  add    $0x1,%rax
  cmp    %rcx,%rdx
  jne    L806
L1011:
  mov    0x8(%rsp),%rsi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm4,%xmm4
  cvtsi2sd %eax,%xmm4
  movsd  %xmm4,0x98(%rsp)
  addl   $0x1,0xbc(%rsp)
  movsd  0xc8(%rsp),%xmm5
  movsd  %xmm5,0x40(%rsp)
  jmp    L917
L340:
  mov    $0x0,%eax
L383:
  movsd  0x98(%rsp),%xmm1
  mulsd  0x60(%rsp),%xmm1
  comisd 0x18(%rsp),%xmm1
  jae    L578
  movsd  0x20(%rsp),%xmm5
  comisd %xmm0,%xmm5
  jae    L876
L424:
  test   %eax,%eax
  jne    L87
  mov    0x50(%rsp),%rsi
  mov    0x130(%rsp),%edi
  cmp    %edi,(%rsi)
  mov    $0x5,%edx
  cmovge %edx,%eax
  movsd  D228(%rip),%xmm1
  comisd %xmm0,%xmm1
  jb     L84
  comisd 0x80(%rsp),%xmm1
  jb     L84
  movsd  D184(%rip),%xmm1
  movsd  0x28(%rsp),%xmm0
  mulsd  D43(%rip),%xmm0
  ucomisd %xmm0,%xmm1
  mov    $0x6,%edx
  cmovae %edx,%eax
L84:
  movsd  0x98(%rsp),%xmm0
  mulsd  D228(%rip),%xmm0
  ucomisd 0x18(%rsp),%xmm0
  mov    $0x7,%edx
  cmovae %edx,%eax
  movsd  D228(%rip),%xmm0
  comisd 0xc0(%rsp),%xmm0
  jae    L995
  test   %eax,%eax
  jne    L787
  movsd  D70(%rip),%xmm0
  comisd 0x28(%rsp),%xmm0
  jbe    L1067
L261:
  sub    $0x8,%rsp
  push   0x18(%rsp)
  push   %rbx
  push   0x20(%rsp)
  push   %rbp
  lea    0x108(%rsp),%rax
  push   %rax
  movsd  0x48(%rsp),%xmm0
  mov    0xa0(%rsp),%r9
  mov    %r13,%r8
  mov    %r12,%rcx
  mov    0x190(%rsp),%edx
  mov    0x78(%rsp),%rsi
  mov    %r14d,%edi
  mov    $0x1,%eax
  call   <lmpar@plt>
  add    $0x30,%rsp
  mov    $0x0,%eax
  mov    0x8(%rsp),%rdx
L487:
  movsd  0x0(%rbp,%rax,8),%xmm1
  movapd %xmm1,%xmm0
  xorpd  D214(%rip),%xmm0
  movsd  %xmm0,0x0(%rbp,%rax,8)
  movsd  (%r15,%rax,8),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  movsd  0x0(%r13,%rax,8),%xmm0
  mulsd  0x0(%rbp,%rax,8),%xmm0
  movsd  %xmm0,(%rbx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%r14d
  jg     L487
  mov    %rbx,%rsi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm5,%xmm5
  cvtsi2sd %eax,%xmm5
  movsd  %xmm5,0x68(%rsp)
  cmpl   $0x1,0xbc(%rsp)
  je     L619
L1029:
  mov    $0x1,%r9d
  mov    0x10(%rsp),%r8
  mov    0x8(%rsp),%rcx
  mov    %r14d,%edx
  mov    0xb8(%rsp),%esi
  mov    0x38(%rsp),%rdi
  mov    0x30(%rsp),%rax
  call   *%rax
  mov    0x50(%rsp),%rcx
  addl   $0x1,(%rcx)
  test   %eax,%eax
  js     L145
  mov    0x10(%rsp),%rsi
  mov    0xb8(%rsp),%edi
  mov    $0x0,%eax
  call   <enorm@plt>
  pxor   %xmm5,%xmm5
  cvtsi2sd %eax,%xmm5
  movsd  %xmm5,0xc8(%rsp)
  movapd %xmm5,%xmm6
  mulsd  D224(%rip),%xmm6
  movsd  %xmm6,0xb0(%rsp)
  movsd  0x40(%rsp),%xmm4
  comisd %xmm6,%xmm4
  jbe    L766
  divsd  %xmm4,%xmm5
  movapd %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  movsd  D184(%rip),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x78(%rsp)
  jmp    L896
L791:
  mov    %r14d,%r12d
  cmpl   $0x0,0x28(%rsp)
  js     L361
  movl   $0x4,0x28(%rsp)
  jmp    L361
L263:
  movl   $0x0,0x28(%rsp)
L361:
  cmpl   $0x0,0x148(%rsp)
  jle    L328
L651:
  mov    $0x0,%r9d
  mov    0x58(%rsp),%r8
  mov    %r15,%rcx
  mov    %r12d,%edx
  mov    0xb8(%rsp),%esi
  mov    0x38(%rsp),%rdi
  mov    0x30(%rsp),%rax
  call   *%rax
L328:
  mov    0xe8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L189
  mov    0x28(%rsp),%eax
  add    $0xf8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L337:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L650:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L891:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L1008:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L557:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L473:
  movl   $0x0,0x28(%rsp)
  jmp    L361
L827:
  mov    %r14d,%r12d
  jmp    L361
L145:
  mov    %eax,0x28(%rsp)
  mov    %r14d,%r12d
  jmp    L361
L87:
  mov    %eax,0x28(%rsp)
  mov    %r14d,%r12d
  jmp    L361
L787:
  mov    %eax,0x28(%rsp)
  mov    %r14d,%r12d
  jmp    L361
L995:
  mov    %r14d,%r12d
  movl   $0x8,0x28(%rsp)
  jmp    L361
L341:
  movsd  0x98(%rsp),%xmm1
  mulsd  0x60(%rsp),%xmm1
  mov    $0x0,%eax
  comisd 0x18(%rsp),%xmm1
  jb     L424
  mov    $0x2,%eax
  jmp    L876
L578:
  movsd  0x20(%rsp),%xmm5
  comisd %xmm0,%xmm5
  jb     L1105
  mov    $0x2,%eax
L876:
  movsd  0x20(%rsp),%xmm6
  comisd 0x80(%rsp),%xmm6
  jb     L424
  movsd  D184(%rip),%xmm2
  movsd  0x28(%rsp),%xmm1
  mulsd  D43(%rip),%xmm1
  comisd %xmm1,%xmm2
  jb     L424
  cmp    $0x2,%eax
  jne    L424
  mov    %r14d,%r12d
  movl   $0x3,0x28(%rsp)
  jmp    L361
L1105:
  mov    %r14d,%r12d
  movl   $0x2,0x28(%rsp)
  jmp    L361
L189:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D292
type: f64[2]
name: unpack_data
arguments: label: D184
type: f64
name: unpack_data
arguments: label: D214
type: byte[16]
name: unpack_data
arguments: label: D149
type: qword[2]
name: unpack_data
arguments: label: D76
type: byte[8]
name: unpack_data
arguments: label: D224
type: byte[8]
name: unpack_data
arguments: label: D70
type: byte[16]
name: unpack_data
arguments: label: D43
type: byte[8]
name: unpack_data
arguments: label: D123
type: byte[8]
name: unpack_data
arguments: label: D72
type: byte[16]
name: unpack_data
arguments: label: D228
type: byte[8]

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

tool: D184: 1

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

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

tool: {"D76": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

tool: {"D224": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0x3f]}

tool: {"D70": [0x2d,0x43,0x1c,0xeb,0xe2,0x36,0x1a,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x3c]}

tool: {"D43": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: {"D123": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

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

tool: {"D228": [0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x3c]}

assistant: ```c
int lmdif(int (*func)(void *d, int n, int m, double *p, double *hx, int iflag), void *d, 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 nprint, int *nfev, double *fjac, int ldfjac, int *ipvt, double *qtf, double *wa1, double *wa2, double *wa3, double *wa4) {
  double d1, d2;
  int i, j, l;
  double par, sum;
  int iter;
  double temp, temp1, temp2;
  int iflag;
  double delta = 0.;
  double ratio;
  double fnorm, gnorm;
  double pnorm, xnorm = 0., fnorm1, actred, dirder, epsmch, prered;
  int info;
  epsmch = 2.2204460492503131e-16;
  info = 0;
  iflag = 0;
  *nfev = 0;
  if (n <= 0 || m < n || ldfjac < m || ftol < 0. || xtol < 0. || gtol < 0. || maxfev <= 0 || factor <= 0.) {
    goto TERMINATE;
  }
  if (mode == 2) {
    for (j = 0; j < n; ++j) {
      if (diag[j] <= 0.) {
        goto TERMINATE;
      }
    }
  }
  iflag = func(d, m, n, x, fvec, 1);
  *nfev = 1;
  if (iflag < 0) {
    goto TERMINATE;
  }
  fnorm = enorm(m, fvec);
  par = 0.;
  iter = 1;
  for (;;) {
    iflag = fdjac2(func, d, m, n, x, fvec, fjac, ldfjac, epsfcn, wa4);
    *nfev += n;
    if (iflag < 0) {
      goto TERMINATE;
    }
    if (nprint > 0) {
      iflag = 0;
      if ((iter - 1) % nprint == 0) {
        iflag = func(d, m, n, x, fvec, 0);
      }
      if (iflag < 0) {
        goto TERMINATE;
      }
    }
    qrfac(m, n, fjac, ldfjac, 1, ipvt, n, wa1, wa2, wa3);
    if (iter == 1) {
      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 = enorm(n, wa3);
      delta = factor * xnorm;
      if (delta == 0.) {
        delta = factor;
      }
    }
    for (i = 0; i < m; ++i) {
      wa4[i] = fvec[i];
    }
    for (j = 0; j < n; ++j) {
      if (fjac[j + j * ldfjac] != 0.) {
        sum = 0.;
        for (i = j; i < m; ++i) {
          sum += fjac[i + j * ldfjac] * wa4[i];
        }
        temp = -sum / fjac[j + j * ldfjac];
        for (i = j; i < m; ++i) {
          wa4[i] += fjac[i + j * ldfjac] * temp;
        }
      }
      fjac[j + j * ldfjac] = wa1[j];
      qtf[j] = wa4[j];
    }
    gnorm = 0.;
    if (fnorm != 0.) {
      for (j = 0; j < n; ++j) {
        l = ipvt[j] - 1;
        if (wa2[l] != 0.) {
          sum = 0.;
          for (i = 0; i <= j; ++i) {
            sum += fjac[i + j * ldfjac] * (qtf[i] / fnorm);
          }
          d1 = fabs(sum / wa2[l]);
          gnorm = ((gnorm) >= (d1) ? (gnorm) : (d1));
        }
      }
    }
    if (gnorm <= gtol) {
      info = 4;
    }
    if (info != 0) {
      goto TERMINATE;
    }
    if (mode != 2) {
      for (j = 0; j < n; ++j) {
        d1 = diag[j], d2 = wa2[j];
        diag[j] = ((d1) >= (d2) ? (d1) : (d2));
      }
    }
    do {
      lmpar(n, fjac, ldfjac, ipvt, diag, qtf, delta, &par, wa1, wa2, wa3, wa4);
      for (j = 0; j < n; ++j) {
        wa1[j] = -wa1[j];
        wa2[j] = x[j] + wa1[j];
        wa3[j] = diag[j] * wa1[j];
      }
      pnorm = enorm(n, wa3);
      if (iter == 1) {
        delta = ((delta) <= (pnorm) ? (delta) : (pnorm));
      }
      iflag = func(d, m, n, wa2, wa4, 1);
      ++(*nfev);
      if (iflag < 0) {
        goto TERMINATE;
      }
      fnorm1 = enorm(m, wa4);
      actred = -1.;
      if (.1 * fnorm1 < fnorm) {
        d1 = fnorm1 / fnorm;
        actred = 1. - d1 * d1;
      }
      for (j = 0; j < n; ++j) {
        wa3[j] = 0.;
        l = ipvt[j] - 1;
        temp = wa1[l];
        for (i = 0; i <= j; ++i) {
          wa3[i] += fjac[i + j * ldfjac] * temp;
        }
      }
      temp1 = enorm(n, wa3) / fnorm;
      temp2 = (sqrt(par) * pnorm) / fnorm;
      prered = temp1 * temp1 + temp2 * temp2 / .5;
      dirder = -(temp1 * temp1 + temp2 * temp2);
      ratio = 0.;
      if (prered != 0.) {
        ratio = actred / prered;
      }
      if (ratio <= .25) {
        if (actred >= 0.) {
          temp = .5;
        } else {
          temp = .5 * dirder / (dirder + .5 * actred);
        }
        if (.1 * fnorm1 >= fnorm || temp < .1) {
          temp = .1;
        }
        d1 = pnorm / .1;
        delta = temp * ((delta) <= (d1) ? (delta) : (d1));
        par /= temp;
      } else {
        if (par == 0. || ratio >= .75) {
          delta = pnorm / .5;
          par = .5 * par;
        }
      }
      if (ratio >= 1e-4) {
        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 = enorm(n, wa2);
        fnorm = fnorm1;
        ++iter;
      }
      if (fabs(actred) <= ftol && prered <= ftol && .5 * ratio <= 1.) {
        info = 1;
      }
      if (delta <= xtol * xnorm) {
        info = 2;
      }
      if (fabs(actred) <= ftol && prered <= ftol && .5 * ratio <= 1. && info == 2) {
        info = 3;
      }
      if (info != 0) {
        goto TERMINATE;
      }
      if (*nfev >= maxfev) {
        info = 5;
      }
      if (fabs(actred) <= epsmch && prered <= epsmch && .5 * ratio <= 1.) {
        info = 6;
      }
      if (delta <= epsmch * xnorm) {
        info = 7;
      }
      if (gnorm <= epsmch) {
        info = 8;
      }
      if (info != 0) {
        goto TERMINATE;
      }
    } while (ratio < 1e-4);
  }
TERMINATE:
  if (iflag < 0) {
    info = iflag;
  }
  if (nprint > 0) {
    func(d, m, n, x, fvec, 0);
  }
  return info;
}
```