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

```asm
<odsq4_>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %rdi,0x10(%rsp)
  movsd  (%r9),%xmm7
  movsd  %xmm7,0x8(%rsp)
  pxor   %xmm1,%xmm1
  comisd %xmm7,%xmm1
  jae    L984
  mov    %rdx,%rbx
  mov    %rcx,%r14
  mov    %r9,%r12
  lea    -0x8(%rdx),%r15
  mov    (%rsi),%eax
  mov    (%rcx),%edx
  lea    (%rdx,%rax,4),%ebp
  mov    (%r8),%edx
  cmp    %edx,%eax
  je     L546
  lea    0x1(%rax),%ecx
  cmp    %ecx,%edx
  je     L728
  add    $0x2,%eax
  cmp    %eax,%edx
  je     L775
  jle    L730
  mov    0xd0(%rsp),%rax
  movl   $0xfffffff4,(%rax)
  pxor   %xmm0,%xmm0
  jmp    L730
L984:
  movapd %xmm7,%xmm0
  xorpd  D483(%rip),%xmm0
  mov    0xc8(%rsp),%rax
  movsd  %xmm0,(%rax)
  mov    0xd0(%rsp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L584
L546:
  mov    0xb0(%rsp),%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,0x18(%rsp)
  movsd  0x8(%rsp),%xmm2
  ucomisd %xmm4,%xmm2
  jp     L31
  je     L851
L31:
  mov    0xb8(%rsp),%rax
  movsd  0x8(%rsp),%xmm3
  ucomisd (%rax),%xmm3
  jp     L287
  jne    L287
L851:
  movslq %ebp,%rax
  lea    0x0(,%rax,8),%r13
  movsd  -0x18(%r15,%r13,1),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L965
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,0x30(%rsp)
L301:
  lea    -0x28(%r15,%r13,1),%rax
  mov    %rax,0x20(%rsp)
  movsd  (%rax),%xmm5
  movsd  %xmm5,0x38(%rsp)
  pxor   %xmm0,%xmm0
  ucomisd %xmm5,%xmm0
  ja     L172
  sqrtsd %xmm5,%xmm5
  movsd  %xmm5,0x40(%rsp)
L510:
  lea    -0x38(%r15,%r13,1),%rax
  mov    %rax,0x28(%rsp)
  movsd  (%rax),%xmm3
  movsd  %xmm3,0x48(%rsp)
  pxor   %xmm0,%xmm0
  ucomisd %xmm3,%xmm0
  ja     L497
  sqrtsd %xmm3,%xmm3
  movsd  %xmm3,0x50(%rsp)
L256:
  lea    -0x48(%r15,%r13,1),%rax
  mov    %rax,0x58(%rsp)
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L332
  sqrtsd %xmm0,%xmm0
L402:
  movsd  0x8(%rsp),%xmm4
  movsd  0x18(%rsp),%xmm5
  ucomisd %xmm5,%xmm4
  jp     L1038
  jne    L1038
  mov    0xa0(%rsp),%rax
  movsd  (%rax),%xmm1
  mov    0xb8(%rsp),%rax
  ucomisd (%rax),%xmm1
  jp     L1038
  jne    L1038
  movsd  0x30(%rsp),%xmm2
  mulsd  0x40(%rsp),%xmm2
  movsd  0x50(%rsp),%xmm3
  mulsd  %xmm0,%xmm3
  movsd  0x38(%rsp),%xmm1
  addsd  0x48(%rsp),%xmm1
  mov    0xa8(%rsp),%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm4
  subsd  %xmm1,%xmm4
  mulsd  D154(%rip),%xmm0
  subsd  %xmm0,%xmm4
  comisd D55(%rip),%xmm4
  jbe    L58
  comisd %xmm3,%xmm4
  jbe    L58
  movapd %xmm3,%xmm0
  divsd  %xmm4,%xmm0
  movapd %xmm0,%xmm4
  mulsd  %xmm3,%xmm4
  movapd %xmm1,%xmm0
  subsd  %xmm5,%xmm0
  subsd  %xmm4,%xmm0
  jmp    L46
L965:
  call   <sqrt@plt>
  movsd  %xmm0,0x30(%rsp)
  jmp    L301
L172:
  movsd  0x38(%rsp),%xmm0
  call   <sqrt@plt>
  movsd  %xmm0,0x40(%rsp)
  jmp    L510
L497:
  movsd  0x48(%rsp),%xmm0
  call   <sqrt@plt>
  movsd  %xmm0,0x50(%rsp)
  jmp    L256
L332:
  call   <sqrt@plt>
  jmp    L402
L58:
  movapd %xmm2,%xmm4
  addsd  %xmm3,%xmm4
  movapd %xmm1,%xmm0
  subsd  0x18(%rsp),%xmm0
  subsd  %xmm4,%xmm0
L46:
  comisd D55(%rip),%xmm0
  jbe    L148
  comisd %xmm2,%xmm0
  jbe    L148
  movapd %xmm2,%xmm1
  divsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  0x18(%rsp),%xmm2
  subsd  %xmm1,%xmm2
  movsd  0x8(%rsp),%xmm1
  mulsd  D405(%rip),%xmm1
  movapd %xmm2,%xmm0
  call   <fmax@plt>
  mov    0xd0(%rsp),%rax
  movl   $0xfffffffe,(%rax)
  jmp    L730
L148:
  movsd  0x18(%rsp),%xmm5
  pxor   %xmm0,%xmm0
  comisd %xmm2,%xmm5
  jbe    L54
  subsd  %xmm2,%xmm5
  movapd %xmm5,%xmm0
L54:
  addsd  %xmm3,%xmm2
  comisd %xmm2,%xmm1
  jbe    L181
  subsd  %xmm2,%xmm1
  call   <fmin@plt>
L181:
  movsd  0x8(%rsp),%xmm1
  mulsd  D382(%rip),%xmm1
  call   <fmax@plt>
  mov    0xd0(%rsp),%rax
  movl   $0xfffffffd,(%rax)
  jmp    L730
L1038:
  mov    0xd0(%rsp),%rax
  movl   $0xfffffffc,(%rax)
  mov    (%r12),%r12
  mov    0xb0(%rsp),%rax
  movsd  (%rax),%xmm3
  movsd  %xmm3,0x18(%rsp)
  movq   %r12,%xmm4
  ucomisd %xmm3,%xmm4
  jp     L887
  jne    L887
  mov    0x20(%rsp),%rax
  movsd  (%rax),%xmm1
  mov    0x28(%rsp),%rax
  movsd  (%rax),%xmm0
  comisd %xmm0,%xmm1
  ja     L584
  divsd  %xmm0,%xmm1
  sub    $0x9,%ebp
  pxor   %xmm0,%xmm0
L1039:
  addsd  %xmm1,%xmm0
  movq   %xmm0,%r13
  mov    0x10(%rsp),%rax
  mov    (%rax),%edx
  mov    (%r14),%eax
  lea    -0x1(%rax,%rdx,4),%r14d
  ucomisd D55(%rip),%xmm1
  setnp  %al
  mov    $0x0,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L579
  cmp    %r14d,%ebp
  jl     L579
  sub    $0x4,%ebp
  movslq %ebp,%rbp
  mov    $0x0,%r15d
  jmp    L711
L887:
  mov    (%r14),%eax
  lea    (%rax,%rax,1),%edx
  mov    %ebp,%eax
  sub    %edx,%eax
  cltq
  shl    $0x3,%rax
  movsd  -0x10(%r15,%rax,1),%xmm2
  movsd  -0x20(%r15,%rax,1),%xmm0
  comisd %xmm2,%xmm0
  ja     L584
  mov    0x58(%rsp),%rax
  movsd  (%rax),%xmm1
  movsd  -0x58(%r15,%r13,1),%xmm3
  comisd %xmm3,%xmm1
  ja     L584
  mov    0xb8(%rsp),%rax
  movsd  (%rax),%xmm4
  movsd  %xmm4,0x18(%rsp)
  divsd  %xmm2,%xmm0
  divsd  %xmm3,%xmm1
  sub    $0xd,%ebp
  jmp    L1039
L627:
  movsd  0x8(%rsp),%xmm1
L711:
  movsd  0x18(%rbx,%rbp,8),%xmm0
  movsd  0x8(%rbx,%rbp,8),%xmm2
  comisd %xmm2,%xmm0
  ja     L584
  divsd  %xmm2,%xmm0
  movapd %xmm0,%xmm6
  mulsd  %xmm1,%xmm6
  movq   %r13,%xmm5
  addsd  %xmm6,%xmm5
  movq   %xmm5,%r13
  movsd  %xmm6,0x8(%rsp)
  movapd %xmm6,%xmm0
  call   <fmax@plt>
  mulsd  D338(%rip),%xmm0
  movq   %r13,%xmm4
  comisd %xmm0,%xmm4
  ja     L579
  comisd D445(%rip),%xmm4
  ja     L579
  movsd  0x8(%rsp),%xmm6
  ucomisd D55(%rip),%xmm6
  setnp  %al
  cmovne %r15d,%eax
  cmp    %ebp,%r14d
  setg   %dl
  sub    $0x4,%rbp
  or     %dl,%al
  je     L627
L579:
  movq   %r13,%xmm2
  mulsd  D291(%rip),%xmm2
  movsd  %xmm2,0x8(%rsp)
  movsd  D445(%rip),%xmm0
  comisd %xmm2,%xmm0
  ja     L439
  movq   %r12,%xmm0
  mulsd  D154(%rip),%xmm0
  jmp    L730
L439:
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm5
  ucomisd %xmm5,%xmm0
  ja     L30
  sqrtsd %xmm5,%xmm5
  movapd %xmm5,%xmm2
L513:
  movsd  D222(%rip),%xmm1
  movapd %xmm1,%xmm0
  subsd  %xmm2,%xmm0
  mulsd  0x18(%rsp),%xmm0
  addsd  0x8(%rsp),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L730
L30:
  movsd  0x8(%rsp),%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm2
  jmp    L513
L287:
  mov    0xc0(%rsp),%rax
  movsd  0x8(%rsp),%xmm5
  ucomisd (%rax),%xmm5
  jp     L902
  jne    L902
  mov    0xd0(%rsp),%rax
  movl   $0xfffffffb,(%rax)
  mov    (%r14),%edx
  lea    (%rdx,%rdx,1),%ecx
  mov    %ebp,%eax
  sub    %ecx,%eax
  cltq
  shl    $0x3,%rax
  movsd  -0x30(%r15,%rax,1),%xmm2
  movsd  -0x40(%r15,%rax,1),%xmm1
  comisd %xmm2,%xmm1
  ja     L584
  movsd  -0x10(%r15,%rax,1),%xmm3
  movsd  -0x20(%r15,%rax,1),%xmm0
  comisd %xmm3,%xmm0
  ja     L584
  divsd  %xmm3,%xmm0
  addsd  D222(%rip),%xmm0
  divsd  %xmm2,%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,0x8(%rsp)
  mov    0x10(%rsp),%rax
  mov    (%rax),%ecx
  mov    (%rsi),%eax
  sub    %ecx,%eax
  cmp    $0x2,%eax
  jle    L930
  movslq %ebp,%rax
  movsd  -0x68(%r15,%rax,8),%xmm1
  divsd  -0x78(%r15,%rax,8),%xmm1
  addsd  %xmm1,%xmm7
  movq   %xmm7,%r13
  lea    -0x1(%rdx,%rcx,4),%r14d
  lea    -0x11(%rbp),%eax
  cmp    %eax,%r14d
  jg     L1002
  ucomisd D55(%rip),%xmm1
  setnp  %al
  mov    $0x0,%edx
  cmovne %edx,%eax
  test   %al,%al
  jne    L1002
  sub    $0x15,%ebp
  movslq %ebp,%rbp
  mov    $0x0,%r15d
  jmp    L1069
L382:
  movsd  0x8(%rsp),%xmm1
L1069:
  movsd  0x18(%rbx,%rbp,8),%xmm0
  movsd  0x8(%rbx,%rbp,8),%xmm2
  comisd %xmm2,%xmm0
  ja     L584
  divsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movq   %r13,%xmm5
  addsd  %xmm2,%xmm5
  movq   %xmm5,%r13
  movsd  %xmm2,0x8(%rsp)
  movapd %xmm2,%xmm0
  call   <fmax@plt>
  mulsd  D338(%rip),%xmm0
  movq   %r13,%xmm4
  comisd %xmm0,%xmm4
  ja     L1002
  comisd D445(%rip),%xmm4
  ja     L1002
  cmp    %ebp,%r14d
  setg   %dl
  movsd  0x8(%rsp),%xmm2
  ucomisd D55(%rip),%xmm2
  setnp  %al
  cmovne %r15d,%eax
  sub    $0x4,%rbp
  or     %al,%dl
  je     L382
L1002:
  movq   %r13,%xmm5
  mulsd  D291(%rip),%xmm5
  movsd  %xmm5,0x8(%rsp)
L930:
  movsd  (%r12),%xmm0
  movsd  D445(%rip),%xmm1
  comisd 0x8(%rsp),%xmm1
  ja     L327
  mulsd  D154(%rip),%xmm0
  jmp    L730
L327:
  mov    0xc0(%rsp),%rax
  mov    (%rax),%rbx
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm5
  ucomisd %xmm5,%xmm0
  ja     L447
  sqrtsd %xmm5,%xmm5
  movapd %xmm5,%xmm2
L616:
  movsd  D222(%rip),%xmm1
  movapd %xmm1,%xmm0
  subsd  %xmm2,%xmm0
  movq   %rbx,%xmm3
  mulsd  %xmm3,%xmm0
  addsd  0x8(%rsp),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L730
L447:
  movsd  0x8(%rsp),%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm2
  jmp    L616
L902:
  mov    0xd0(%rsp),%rax
  mov    (%rax),%eax
  cmp    $0xfffffffa,%eax
  je     L683
  movsd  D154(%rip),%xmm0
  cmp    $0xffffffee,%eax
  je     L251
L715:
  mov    0xd8(%rsp),%rax
  movsd  %xmm0,(%rax)
  mulsd  (%r12),%xmm0
  mov    0xd0(%rsp),%rax
  movl   $0xfffffffa,(%rax)
  jmp    L730
L683:
  mov    0xd8(%rsp),%rax
  movsd  (%rax),%xmm1
  movsd  D222(%rip),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  D382(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L715
L251:
  movsd  D452(%rip),%xmm0
  jmp    L715
L728:
  mov    0xa0(%rsp),%rax
  movsd  (%rax),%xmm0
  mov    0xb8(%rsp),%rax
  ucomisd (%rax),%xmm0
  jp     L741
  jne    L741
  mov    0xa8(%rsp),%rax
  movsd  (%rax),%xmm1
  mov    0xc0(%rsp),%rax
  ucomisd (%rax),%xmm1
  jp     L1048
  jne    L1048
  mov    0xd0(%rsp),%rax
  movl   $0xfffffff9,(%rax)
  movslq %ebp,%rbp
  lea    0x0(,%rbp,8),%rax
  movsd  -0x28(%r15,%rax,1),%xmm0
  movsd  -0x38(%r15,%rax,1),%xmm1
  comisd %xmm1,%xmm0
  ja     L584
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rbp
  ucomisd D55(%rip),%xmm0
  jp     L634
  je     L1033
L634:
  mov    0x10(%rsp),%rax
  mov    (%rax),%eax
  lea    -0x1(,%rax,4),%edx
  mov    (%r14),%r12d
  lea    (%rdx,%r12,1),%r13d
  mov    (%rsi),%eax
  lea    -0x9(,%rax,4),%eax
  add    %eax,%r12d
  cmp    %eax,%edx
  jg     L1033
  movslq %r12d,%r12
  movq   %rbp,%xmm1
  jmp    L988
L795:
  movsd  0x8(%rsp),%xmm1
L988:
  movsd  -0x8(%rbx,%r12,8),%xmm0
  movsd  -0x18(%rbx,%r12,8),%xmm2
  comisd %xmm2,%xmm0
  ja     L584
  divsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%rsp)
  movq   %rbp,%xmm5
  addsd  %xmm0,%xmm5
  movq   %xmm5,%rbp
  call   <fmax@plt>
  mulsd  D338(%rip),%xmm0
  movq   %rbp,%xmm4
  comisd %xmm0,%xmm4
  ja     L1033
  sub    $0x4,%r12
  cmp    %r12d,%r13d
  jle    L795
L1033:
  mov    0xa0(%rsp),%rax
  mov    (%rax),%rbx
  movq   %rbp,%xmm0
  mulsd  D291(%rip),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L1112
  sqrtsd %xmm0,%xmm0
L1072:
  movq   %rbx,%xmm3
  mulsd  D382(%rip),%xmm3
  movapd %xmm0,%xmm1
  mulsd  %xmm0,%xmm1
  addsd  D222(%rip),%xmm1
  movq   %rbx,%xmm2
  divsd  %xmm1,%xmm2
  movsd  D405(%rip),%xmm1
  mov    0xa8(%rsp),%rax
  mulsd  (%rax),%xmm1
  subsd  %xmm2,%xmm1
  comisd D55(%rip),%xmm1
  jbe    L503
  movapd %xmm2,%xmm4
  mulsd  %xmm0,%xmm4
  comisd %xmm4,%xmm1
  jbe    L503
  movapd %xmm2,%xmm4
  mulsd  D9(%rip),%xmm4
  movapd %xmm0,%xmm5
  divsd  %xmm1,%xmm5
  mulsd  %xmm5,%xmm4
  mulsd  %xmm4,%xmm0
  movsd  D222(%rip),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movapd %xmm3,%xmm0
  call   <fmax@plt>
  jmp    L730
L1112:
  call   <sqrt@plt>
  jmp    L1072
L503:
  mulsd  D9(%rip),%xmm0
  movsd  D222(%rip),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movapd %xmm3,%xmm0
  call   <fmax@plt>
  mov    0xd0(%rsp),%rax
  movl   $0xfffffff8,(%rax)
  jmp    L730
L775:
  mov    0xa8(%rsp),%rax
  movsd  (%rax),%xmm0
  mov    0xc0(%rsp),%rax
  ucomisd (%rax),%xmm0
  jp     L353
  jne    L353
  movslq %ebp,%rbp
  shl    $0x3,%rbp
  lea    -0x28(%r15,%rbp,1),%rdx
  lea    -0x38(%r15,%rbp,1),%rax
  movsd  (%rdx),%xmm1
  addsd  %xmm1,%xmm1
  movsd  (%rax),%xmm2
  comisd %xmm1,%xmm2
  jbe    L353
  mov    0xd0(%rsp),%rdi
  movl   $0xfffffff6,(%rdi)
  movsd  (%rdx),%xmm0
  mov    (%rax),%r12
  movq   %r12,%xmm4
  comisd %xmm4,%xmm0
  ja     L584
  divsd  %xmm4,%xmm0
  ucomisd D55(%rip),%xmm0
  jp     L100
  je     L160
L100:
  mov    0x10(%rsp),%rax
  mov    (%rax),%eax
  lea    -0x1(,%rax,4),%edi
  mov    (%r14),%eax
  lea    (%rdi,%rax,1),%edx
  mov    (%rsi),%ecx
  lea    -0x9(,%rcx,4),%ecx
  add    %ecx,%eax
  cmp    %ecx,%edi
  jg     L160
  cltq
  movapd %xmm0,%xmm2
  movsd  D338(%rip),%xmm4
L209:
  movsd  -0x8(%rbx,%rax,8),%xmm1
  movsd  -0x18(%rbx,%rax,8),%xmm3
  comisd %xmm3,%xmm1
  ja     L584
  divsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  movapd %xmm2,%xmm1
  mulsd  %xmm4,%xmm1
  comisd %xmm1,%xmm0
  ja     L160
  sub    $0x4,%rax
  cmp    %eax,%edx
  jle    L209
L160:
  mov    0xa8(%rsp),%rax
  mov    (%rax),%rbx
  mulsd  D291(%rip),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L1058
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,0x8(%rsp)
L409:
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  mulsd  %xmm4,%xmm0
  addsd  D222(%rip),%xmm0
  movq   %rbx,%xmm5
  divsd  %xmm0,%xmm5
  movsd  %xmm5,0x10(%rsp)
  mov    -0x48(%r15,%rbp,1),%r13
  movq   %r12,%xmm2
  movq   %r13,%xmm7
  addsd  %xmm7,%xmm2
  movq   %xmm2,%r12
  movsd  -0x58(%r15,%rbp,1),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L1011
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,0x18(%rsp)
L963:
  pxor   %xmm0,%xmm0
  movq   %r13,%xmm3
  ucomisd %xmm3,%xmm0
  ja     L1050
  movq   %r13,%xmm1
  sqrtsd %xmm1,%xmm1
L162:
  movq   %rbx,%xmm0
  mulsd  D382(%rip),%xmm0
  movsd  0x18(%rsp),%xmm2
  mulsd  %xmm1,%xmm2
  movq   %r12,%xmm1
  subsd  %xmm2,%xmm1
  movsd  0x10(%rsp),%xmm3
  subsd  %xmm3,%xmm1
  comisd D55(%rip),%xmm1
  jbe    L759
  movapd %xmm3,%xmm5
  movapd %xmm3,%xmm2
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm7,%xmm2
  comisd %xmm2,%xmm1
  jbe    L759
  movapd %xmm3,%xmm2
  mulsd  D9(%rip),%xmm2
  movapd %xmm7,%xmm3
  divsd  %xmm1,%xmm3
  mulsd  %xmm3,%xmm2
  mulsd  %xmm7,%xmm2
  movsd  D222(%rip),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  %xmm5,%xmm1
  call   <fmax@plt>
  jmp    L730
L1058:
  call   <sqrt@plt>
  movsd  %xmm0,0x8(%rsp)
  jmp    L409
L1011:
  call   <sqrt@plt>
  movsd  %xmm0,0x18(%rsp)
  jmp    L963
L1050:
  movq   %r13,%xmm0
  call   <sqrt@plt>
  movapd %xmm0,%xmm1
  jmp    L162
L759:
  movsd  0x8(%rsp),%xmm2
  mulsd  D9(%rip),%xmm2
  movsd  D222(%rip),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  0x10(%rsp),%xmm1
  call   <fmax@plt>
  jmp    L730
L353:
  mulsd  D154(%rip),%xmm0
  mov    0xd0(%rsp),%rax
  movl   $0xfffffff5,(%rax)
  jmp    L730
L1048:
  mulsd  D405(%rip),%xmm0
L756:
  mov    0xd0(%rsp),%rax
  movl   $0xfffffff7,(%rax)
L730:
  mov    0xc8(%rsp),%rax
  movsd  %xmm0,(%rax)
L584:
  mov    $0x0,%eax
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L741:
  mulsd  D154(%rip),%xmm0
  jmp    L756
```

tool_calls: name: disassemble_data
arguments: tag: D483
data_type: f32[4]
name: disassemble_data
arguments: tag: D154
data_type: f32[2]
name: disassemble_data
arguments: tag: D55
data_type: f32
name: disassemble_data
arguments: tag: D405
data_type: f32[2]
name: disassemble_data
arguments: tag: D382
data_type: byte[8]
name: disassemble_data
arguments: tag: D338
data_type: f64
name: disassemble_data
arguments: tag: D445
data_type: byte[16]
name: disassemble_data
arguments: tag: D291
data_type: f64
name: disassemble_data
arguments: tag: D222
data_type: f64
name: disassemble_data
arguments: tag: D452
data_type: byte[8]
name: disassemble_data
arguments: tag: D9
data_type: f64

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

tool: {"D154": [0.0,1.625]}

tool: D55: 0

tool: {"D405": [0.0,1.75]}

tool: {"D382": [0x1d,0x5a,0x64,0x3b,0xdf,0x4f,0xd5,0x3f]}

tool: D338: 100

tool: {"D445": [0x6a,0xbc,0x74,0x93,0x18,0x04,0xe2,0x3f,0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xf0,0x3f]}

tool: D291: 1.05

tool: D222: 1

tool: {"D452": [0x1d,0x5a,0x64,0x3b,0xdf,0x4f,0xb5,0x3f]}

tool: D9: 1.01

assistant: ```c
int odsq4_(int *i0, int *n0, double *z__, int *pp, int *n0in, double *dmin__, double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2, double *tau, int *ttype, double *g) {
  int i__1;
  double d__1, d__2;
  double s, a2, b1, b2;
  int i4, nn, np;
  double gam, gap1, gap2;
  --z__;
  if (*dmin__ <= 0.) {
    *tau = -(*dmin__);
    *ttype = -1;
    return 0;
  }
  nn = (*n0 << 2) + *pp;
  if (*n0in == *n0) {
    if (*dmin__ == *dn || *dmin__ == *dn1) {
      b1 = sqrt(z__[nn - 3]) * sqrt(z__[nn - 5]);
      b2 = sqrt(z__[nn - 7]) * sqrt(z__[nn - 9]);
      a2 = z__[nn - 7] + z__[nn - 5];
      if (*dmin__ == *dn && *dmin1 == *dn1) {
        gap2 = *dmin2 - a2 - *dmin2 * .25;
        if (gap2 > 0. && gap2 > b2) {
          gap1 = a2 - *dn - b2 / gap2 * b2;
        } else {
          gap1 = a2 - *dn - (b1 + b2);
        }
        if (gap1 > 0. && gap1 > b1) {
          d__1 = *dn - b1 / gap1 * b1, d__2 = *dmin__ * .5;
          s = fmax(d__1, d__2);
          *ttype = -2;
        } else {
          s = 0.;
          if (*dn > b1) {
            s = *dn - b1;
          }
          if (a2 > b1 + b2) {
            d__1 = s, d__2 = a2 - (b1 + b2);
            s = fmin(d__1, d__2);
          }
          d__1 = s, d__2 = *dmin__ * .333;
          s = fmax(d__1, d__2);
          *ttype = -3;
        }
      } else {
        *ttype = -4;
        s = *dmin__ * .25;
        if (*dmin__ == *dn) {
          gam = *dn;
          a2 = 0.;
          if (z__[nn - 5] > z__[nn - 7]) {
            return 0;
          }
          b2 = z__[nn - 5] / z__[nn - 7];
          np = nn - 9;
        } else {
          np = nn - (*pp << 1);
          b2 = z__[np - 2];
          gam = *dn1;
          if (z__[np - 4] > z__[np - 2]) {
            return 0;
          }
          a2 = z__[np - 4] / z__[np - 2];
          if (z__[nn - 9] > z__[nn - 11]) {
            return 0;
          }
          b2 = z__[nn - 9] / z__[nn - 11];
          np = nn - 13;
        }
        a2 += b2;
        i__1 = (*i0 << 2) - 1 + *pp;
        for (i4 = np; i4 >= i__1; i4 += -4) {
          if (b2 == 0.) {
            goto L20;
          }
          b1 = b2;
          if (z__[i4] > z__[i4 - 2]) {
            return 0;
          }
          b2 *= z__[i4] / z__[i4 - 2];
          a2 += b2;
          if (fmax(b2, b1) * 100. < a2 || .563 < a2) {
            goto L20;
          }
        }
      L20:
        a2 *= 1.05;
        if (a2 < .563) {
          s = gam * (1. - sqrt(a2)) / (a2 + 1.);
        }
      }
    } else if (*dmin__ == *dn2) {
      *ttype = -5;
      s = *dmin__ * .25;
      np = nn - (*pp << 1);
      b1 = z__[np - 2];
      b2 = z__[np - 6];
      gam = *dn2;
      if (z__[np - 8] > b2 || z__[np - 4] > b1) {
        return 0;
      }
      a2 = z__[np - 8] / b2 * (z__[np - 4] / b1 + 1.);
      if (*n0 - *i0 > 2) {
        b2 = z__[nn - 13] / z__[nn - 15];
        a2 += b2;
        i__1 = (*i0 << 2) - 1 + *pp;
        for (i4 = nn - 17; i4 >= i__1; i4 += -4) {
          if (b2 == 0.) {
            goto L40;
          }
          b1 = b2;
          if (z__[i4] > z__[i4 - 2]) {
            return 0;
          }
          b2 *= z__[i4] / z__[i4 - 2];
          a2 += b2;
          if (fmax(b2, b1) * 100. < a2 || .563 < a2) {
            goto L40;
          }
        }
      L40:
        a2 *= 1.05;
      }
      if (a2 < .563) {
        s = gam * (1. - sqrt(a2)) / (a2 + 1.);
      }
    } else {
      if (*ttype == -6) {
        *g += (1. - *g) * .333;
      } else if (*ttype == -18) {
        *g = .083250000000000005;
      } else {
        *g = .25;
      }
      s = *g * *dmin__;
      *ttype = -6;
    }
  } else if (*n0in == *n0 + 1) {
    if (*dmin1 == *dn1 && *dmin2 == *dn2) {
      *ttype = -7;
      s = *dmin1 * .333;
      if (z__[nn - 5] > z__[nn - 7]) {
        return 0;
      }
      b1 = z__[nn - 5] / z__[nn - 7];
      b2 = b1;
      if (b2 == 0.) {
        goto L60;
      }
      i__1 = (*i0 << 2) - 1 + *pp;
      for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
        a2 = b1;
        if (z__[i4] > z__[i4 - 2]) {
          return 0;
        }
        b1 *= z__[i4] / z__[i4 - 2];
        b2 += b1;
        if (fmax(b1, a2) * 100. < b2) {
          goto L60;
        }
      }
    L60:
      b2 = sqrt(b2 * 1.05);
      d__1 = b2;
      a2 = *dmin1 / (d__1 * d__1 + 1.);
      gap2 = *dmin2 * .5 - a2;
      if (gap2 > 0. && gap2 > b2 * a2) {
        d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
        s = fmax(d__1, d__2);
      } else {
        d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
        s = fmax(d__1, d__2);
        *ttype = -8;
      }
    } else {
      s = *dmin1 * .25;
      if (*dmin1 == *dn1) {
        s = *dmin1 * .5;
      }
      *ttype = -9;
    }
  } else if (*n0in == *n0 + 2) {
    if (*dmin2 == *dn2 && z__[nn - 5] * 2. < z__[nn - 7]) {
      *ttype = -10;
      s = *dmin2 * .333;
      if (z__[nn - 5] > z__[nn - 7]) {
        return 0;
      }
      b1 = z__[nn - 5] / z__[nn - 7];
      b2 = b1;
      if (b2 == 0.) {
        goto L80;
      }
      i__1 = (*i0 << 2) - 1 + *pp;
      for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
        if (z__[i4] > z__[i4 - 2]) {
          return 0;
        }
        b1 *= z__[i4] / z__[i4 - 2];
        b2 += b1;
        if (b1 * 100. < b2) {
          goto L80;
        }
      }
    L80:
      b2 = sqrt(b2 * 1.05);
      d__1 = b2;
      a2 = *dmin2 / (d__1 * d__1 + 1.);
      gap2 = z__[nn - 7] + z__[nn - 9] - sqrt(z__[nn - 11]) * sqrt(z__[nn - 9]) - a2;
      if (gap2 > 0. && gap2 > b2 * a2) {
        d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
        s = fmax(d__1, d__2);
      } else {
        d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
        s = fmax(d__1, d__2);
      }
    } else {
      s = *dmin2 * .25;
      *ttype = -11;
    }
  } else if (*n0in > *n0 + 2) {
    s = 0.;
    *ttype = -12;
  }
  *tau = s;
  return 0;
}
```