user: 请从给定的汇编指令推导出C源代码:

```asm
<cbal>:
  endbr64
  push   %r15
  push   %r14
  mov    %rdx,%r14
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xb8,%rsp
  mov    %edi,0x24(%rsp)
  mov    %esi,0x64(%rsp)
  mov    %r8,0xa0(%rsp)
  mov    %r9,0xa8(%rsp)
  cmp    $0x1,%edi
  jne    L86
  lea    -0x8(%rdx),%rax
  movslq 0x64(%rsp),%rbx
  mov    $0x1,%ecx
  pxor   %xmm0,%xmm0
  mov    %rax,0x48(%rsp)
L285:
  mov    %ebx,0x20(%rsp)
  mov    %ebx,%r10d
  mov    %ebx,%eax
  test   %ebx,%ebx
  jle    L422
  mov    %ebx,%edi
  lea    0x1(%rbx),%r11d
  nopw   0x0(%rax,%rax,1)
L746:
  mov    %edi,%r8d
  mov    $0x1,%edx
  lea    -0x2(%rdi),%r9d
  nopl   0x0(%rax)
L901:
  cmp    %edi,%edx
  je     L441
  lea    (%r9,%rdx,1),%esi
  movslq %esi,%rsi
  ucomisd (%r14,%rsi,8),%xmm0
  jp     L737
  jne    L737
  ucomisd 0x0(%r13,%rsi,8),%xmm0
  jp     L737
  jne    L737
L441:
  add    $0x1,%edx
  cmp    %eax,%edx
  jle    L901
  pxor   %xmm1,%xmm1
  mov    0xf0(%rsp),%rsi
  cvtsi2sd %edi,%xmm1
  movsd  %xmm1,-0x8(%rsi,%rbx,8)
  cmp    %eax,%edi
  jne    L676
L808:
  cmp    $0x1,%eax
  je     L291
  sub    $0x1,%rbx
  jmp    L285
  nopw   0x0(%rax,%rax,1)
L737:
  sub    $0x1,%edi
  mov    %r11d,%edx
  sub    %edi,%edx
  cmp    %eax,%edx
  jle    L746
L109:
  cmp    %eax,%ecx
  jg     L422
  mov    %ecx,%r8d
  nopw   0x0(%rax,%rax,1)
L135:
  mov    %ecx,%edx
  lea    -0x2(%r8),%edi
  cs nopw 0x0(%rax,%rax,1)
L205:
  cmp    %r8d,%edx
  je     L912
  lea    (%rdi,%rdx,1),%esi
  movsd  %xmm0,0x28(%rsp)
  movslq %esi,%rsi
  ucomisd (%r14,%rsi,8),%xmm0
  jp     L544
  jne    L544
  ucomisd 0x0(%r13,%rsi,8),%xmm0
  jp     L544
  jne    L544
L912:
  add    $0x1,%edx
  cmp    %eax,%edx
  jle    L205
  pxor   %xmm1,%xmm1
  mov    0xf0(%rsp),%rdi
  movslq %ecx,%r15
  movl   $0x2,0x60(%rsp)
  cvtsi2sd %r8d,%xmm1
  movsd  %xmm1,-0x8(%rdi,%r15,8)
  cmp    %ecx,%r8d
  je     L368
  mov    %ecx,%esi
  jmp    L725
L544:
  add    $0x1,%r8d
  cmp    %eax,%r8d
  jle    L135
  mov    %ecx,0x40(%rsp)
  lea    -0x1(%rcx),%r9d
  movl   $0x1,0x50(%rsp)
  movq   $0x1,0x18(%rsp)
L457:
  mov    0x20(%rsp),%eax
  lea    0x1(%rax),%esi
  sub    %ecx,%esi
  cmp    %eax,%ecx
  mov    $0x1,%eax
  cmovg  %eax,%esi
  jge    L955
  movslq %ecx,%rax
  mov    0xf0(%rsp),%rcx
  movapd D26(%rip),%xmm0
  mov    %rax,0x90(%rsp)
  lea    -0x8(%rcx,%rax,8),%rdx
  mov    %esi,%eax
  shr    %eax
  lea    -0x1(%rax),%ecx
  lea    0x10(%rdx),%rax
  shl    $0x4,%rcx
  add    %rax,%rcx
  jmp    L66
L690:
  add    $0x10,%rax
L66:
  movups %xmm0,(%rdx)
  mov    %rax,%rdx
  cmp    %rcx,%rax
  jne    L690
  mov    0x40(%rsp),%eax
  mov    %esi,%edx
  and    $0xfffffffe,%edx
  add    %edx,%eax
  cmp    %edx,%esi
  je     L59
L581:
  mov    0xf0(%rsp),%rcx
  mov    D26(%rip),%rdi
  cltq
  mov    %rdi,-0x8(%rcx,%rax,8)
L59:
  mov    0x24(%rsp),%edi
  mov    0x18(%rsp),%rax
  mov    0x20(%rsp),%ecx
  imul   %r9d,%edi
  shl    $0x3,%rax
  mov    %rax,0x70(%rsp)
  imul   0x50(%rsp),%r9d
  test   %ecx,%ecx
  movslq %edi,%rax
  mov    %edi,0x98(%rsp)
  mov    %rax,0x78(%rsp)
  mov    $0x1,%eax
  cmovg  %ecx,%eax
  mov    %r9d,0x9c(%rsp)
  mov    %eax,%ecx
  mov    %eax,0x84(%rsp)
  shr    %eax
  sub    $0x1,%eax
  and    $0xfffffffe,%ecx
  add    $0x1,%rax
  mov    %ecx,0x80(%rsp)
  shl    $0x4,%rax
  mov    %rax,0x88(%rsp)
  lea    -0x1(%rdi),%eax
  mov    %eax,0x58(%rsp)
  nopl   0x0(%rax,%rax,1)
L566:
  mov    0x9c(%rsp),%eax
  mov    0x90(%rsp),%r12
  movl   $0x0,0x68(%rsp)
  mov    %r14,%r15
  mov    %eax,0x30(%rsp)
  mov    0x98(%rsp),%eax
  mov    %r12,%r14
  mov    %eax,0x38(%rsp)
  nopl   0x0(%rax)
L21:
  mov    0x58(%rsp),%eax
  movsd  0x28(%rsp),%xmm1
  mov    %r14d,0x48(%rsp)
  mov    %r14,%rdx
  mov    0x40(%rsp),%r12d
  lea    (%rax,%r14,1),%ebp
  mov    0x30(%rsp),%eax
  movapd %xmm1,%xmm2
  movsd  %xmm1,0x8(%rsp)
  mov    %ebp,%r14d
  sub    $0x1,%eax
  mov    %eax,0x60(%rsp)
  nopl   0x0(%rax,%rax,1)
L380:
  cmp    %edx,%r12d
  je     L65
  mov    0x60(%rsp),%eax
  mov    %rdx,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  add    %r12d,%eax
  add    $0x1,%r12d
  movslq %eax,%rbp
  movsd  (%r15,%rbp,8),%xmm0
  call   <fabs@plt>
  movsd  0x0(%r13,%rbp,8),%xmm0
  movslq %r14d,%rbp
  mov    %rax,%rbx
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  add    %rax,%rbx
  cvtsi2sd %rbx,%xmm0
  addsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  movsd  (%r15,%rbp,8),%xmm0
  call   <fabs@plt>
  movsd  0x0(%r13,%rbp,8),%xmm0
  mov    %rax,%rbx
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  movsd  0x10(%rsp),%xmm2
  add    0x24(%rsp),%r14d
  add    %rax,%rbx
  cmp    %r12d,0x20(%rsp)
  mov    0x18(%rsp),%rdx
  cvtsi2sd %rbx,%xmm0
  addsd  %xmm0,%xmm2
  jge    L380
L909:
  movsd  0x8(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm7
  mov    %rdx,%r14
  mov    $0x0,%edx
  ucomisd %xmm7,%xmm1
  setnp  %al
  cmovne %edx,%eax
  test   %al,%al
  jne    L515
  ucomisd %xmm7,%xmm2
  setnp  %dl
  cmove  %edx,%eax
  test   %al,%al
  jne    L515
  movsd  D58(%rip),%xmm4
  movapd %xmm1,%xmm7
  addsd  %xmm2,%xmm7
  mulsd  %xmm2,%xmm4
  comisd %xmm1,%xmm4
  jbe    L706
  movsd  D26(%rip),%xmm5
  movsd  D96(%rip),%xmm3
  movsd  D72(%rip),%xmm6
  movapd %xmm5,%xmm0
  xchg   %ax,%ax
L489:
  mulsd  %xmm6,%xmm1
  mulsd  %xmm3,%xmm0
  comisd %xmm1,%xmm4
  ja     L489
L533:
  mulsd  %xmm2,%xmm3
  comisd %xmm3,%xmm1
  jb     L81
  nopl   0x0(%rax,%rax,1)
L52:
  mulsd  D99(%rip),%xmm1
  mulsd  D58(%rip),%xmm0
  comisd %xmm3,%xmm1
  jae    L52
L81:
  addsd  %xmm2,%xmm1
  movsd  D59(%rip),%xmm2
  mulsd  %xmm7,%xmm2
  divsd  %xmm0,%xmm1
  comisd %xmm2,%xmm1
  jb     L567
L515:
  mov    0x24(%rsp),%ecx
  add    $0x1,%r14
  add    %ecx,0x38(%rsp)
  mov    0x50(%rsp),%ecx
  add    %ecx,0x30(%rsp)
  cmp    %r14d,0x20(%rsp)
  jge    L21
  mov    0x68(%rsp),%eax
  mov    %r15,%r14
  test   %eax,%eax
  jne    L566
L203:
  mov    0xa0(%rsp),%rax
  mov    0x40(%rsp),%ecx
  mov    %ecx,(%rax)
  mov    0xa8(%rsp),%rax
  mov    0x20(%rsp),%ecx
  mov    %ecx,(%rax)
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L676:
  movl   $0x1,0x60(%rsp)
  mov    0x20(%rsp),%esi
L725:
  lea    -0x1(%rsi),%edi
  movslq %r8d,%r11
  lea    -0x1(%r8),%edx
  mov    %edi,0x8(%rsp)
  movslq %esi,%rdi
  lea    0x0(,%r11,8),%r9
  lea    0x8(,%rdi,8),%r15
  mov    %rdi,0x38(%rsp)
  lea    -0x10(%r15),%rbp
  lea    -0x8(%r15),%rdi
  mov    %r11,0x40(%rsp)
  lea    0x0(%r13,%rbp,1),%rsi
  lea    -0x8(%r9),%r11
  mov    %r9,0x58(%rsp)
  add    $0x8,%r9
  lea    (%r14,%r15,1),%r12
  mov    %rsi,0x10(%rsp)
  lea    0x0(%r13,%r9,1),%rsi
  cmp    0x10(%rsp),%r12
  mov    %rdi,0x50(%rsp)
  lea    0x0(%r13,%r15,1),%rdi
  lea    0x0(%r13,%r11,1),%r8
  mov    %rdi,0x18(%rsp)
  lea    (%r14,%rbp,1),%rdi
  mov    %rsi,0x28(%rsp)
  lea    (%r14,%r9,1),%rsi
  mov    %r12,0x30(%rsp)
  setbe  %r12b
  cmp    %rdi,0x18(%rsp)
  setbe  0x78(%rsp)
  mov    %rsi,0x70(%rsp)
  movzbl 0x78(%rsp),%esi
  mov    %r9,0x68(%rsp)
  lea    (%r14,%r11,1),%r9
  or     %esi,%r12d
  cmp    %r11,%r15
  mov    0x70(%rsp),%rsi
  mov    0x10(%rsp),%r15
  setle  %r11b
  cmp    %rbp,0x68(%rsp)
  setle  %bpl
  or     %ebp,%r11d
  and    %r12d,%r11d
  cmp    $0x2,%eax
  setg   %bpl
  and    %ebp,%r11d
  cmp    %r8,0x30(%rsp)
  mov    %r11d,%r12d
  setbe  %r11b
  cmp    0x28(%rsp),%rdi
  setae  %bpl
  or     %ebp,%r11d
  and    %r11d,%r12d
  cmp    %rsi,%r15
  setae  %r11b
  cmp    %r9,0x18(%rsp)
  setbe  %bpl
  or     %ebp,%r11d
  test   %r11b,%r12b
  je     L767
  cmp    %rsi,%r8
  setae  %bpl
  cmp    %r9,0x28(%rsp)
  setbe  %r11b
  or     %bpl,%r11b
  je     L767
  mov    0x20(%rsp),%esi
  mov    $0x1,%ebp
  test   %esi,%esi
  mov    %r15,%rsi
  cmovg  %r10d,%ebp
  mov    %ebp,%r11d
  shr    %r11d
  shl    $0x4,%r11
  mov    %r11,%r12
  xor    %r11d,%r11d
L509:
  movupd (%r9,%r11,1),%xmm1
  movupd (%rdi,%r11,1),%xmm4
  movups %xmm4,(%r9,%r11,1)
  movups %xmm1,(%rdi,%r11,1)
  movupd (%r8,%r11,1),%xmm1
  movupd (%rsi,%r11,1),%xmm4
  movups %xmm4,(%r8,%r11,1)
  movups %xmm1,(%rsi,%r11,1)
  add    $0x10,%r11
  cmp    %r12,%r11
  jne    L509
  mov    %ebp,%esi
  and    $0xfffffffe,%esi
  and    $0x1,%ebp
  je     L413
  lea    (%rdx,%rsi,1),%edi
  add    0x8(%rsp),%esi
  movslq %edi,%rdi
  movslq %esi,%rsi
  shl    $0x3,%rdi
  shl    $0x3,%rsi
  lea    (%r14,%rdi,1),%r8
  lea    (%r14,%rsi,1),%r9
  add    %r13,%rdi
  add    %r13,%rsi
  movsd  (%r8),%xmm1
  movsd  (%r9),%xmm2
  movsd  %xmm2,(%r8)
  movsd  %xmm1,(%r9)
  movsd  (%rdi),%xmm1
  movsd  (%rsi),%xmm2
  movsd  %xmm2,(%rdi)
  movsd  %xmm1,(%rsi)
L413:
  cmp    %ecx,0x64(%rsp)
  jl     L481
  mov    0x38(%rsp),%rsi
  movslq %ecx,%r15
  mov    0x64(%rsp),%edi
  add    %r15,%rsi
  sub    %ecx,%edi
  lea    0x0(,%rsi,8),%rbp
  mov    0x40(%rsp),%rsi
  mov    %edi,0x10(%rsp)
  lea    -0x10(%rbp),%r11
  lea    0x0(%r13,%rbp,1),%r9
  lea    (%r15,%rsi,1),%r8
  lea    0x0(%r13,%r11,1),%rdi
  mov    %r11,0x58(%rsp)
  mov    %rdi,0x18(%rsp)
  lea    (%r14,%r11,1),%rdi
  lea    (%r14,%rbp,1),%r12
  lea    0x0(,%r8,8),%r11
  mov    %r9,0x28(%rsp)
  lea    0x0(%r13,%r11,1),%rsi
  lea    -0x10(%r11),%r9
  mov    %r8,0x68(%rsp)
  mov    %rsi,0x30(%rsp)
  lea    0x0(%r13,%r9,1),%r8
  lea    (%r14,%r11,1),%rsi
  mov    %r9,0x70(%rsp)
  add    %r14,%r9
  cmp    0x18(%rsp),%r12
  mov    %rsi,0x78(%rsp)
  setbe  0x80(%rsp)
  cmp    %rdi,0x28(%rsp)
  movzbl 0x80(%rsp),%esi
  mov    %r12,0x50(%rsp)
  setbe  %r12b
  or     %esi,%r12d
  cmp    0x70(%rsp),%rbp
  mov    0x78(%rsp),%rsi
  setle  %bpl
  cmp    0x58(%rsp),%r11
  setle  %r11b
  or     %ebp,%r11d
  and    %r12d,%r11d
  cmpl   $0x1,0x10(%rsp)
  seta   %bpl
  and    %ebp,%r11d
  cmp    %r8,0x50(%rsp)
  mov    %r11d,%r12d
  setbe  %r11b
  cmp    0x30(%rsp),%rdi
  setae  %bpl
  or     %ebp,%r11d
  and    %r11d,%r12d
  cmp    %rsi,0x18(%rsp)
  setae  %r11b
  cmp    %r9,0x28(%rsp)
  setbe  %bpl
  or     %ebp,%r11d
  test   %r11b,%r12b
  je     L894
  cmp    %rsi,%r8
  setae  %bpl
  cmp    %r9,0x30(%rsp)
  setbe  %r11b
  or     %bpl,%r11b
  je     L894
  mov    0x10(%rsp),%r12d
  mov    0x18(%rsp),%rsi
  xor    %r11d,%r11d
  add    $0x1,%r12d
  mov    %r12d,%ebp
  shr    %ebp
  shl    $0x4,%rbp
L12:
  movupd (%r9,%r11,1),%xmm1
  movupd (%rdi,%r11,1),%xmm4
  movups %xmm4,(%r9,%r11,1)
  movups %xmm1,(%rdi,%r11,1)
  movupd (%r8,%r11,1),%xmm1
  movupd (%rsi,%r11,1),%xmm4
  movups %xmm4,(%r8,%r11,1)
  movups %xmm1,(%rsi,%r11,1)
  add    $0x10,%r11
  cmp    %rbp,%r11
  jne    L12
  mov    %r12d,%esi
  and    $0xfffffffe,%esi
  lea    (%rsi,%rcx,1),%r8d
  cmp    %esi,%r12d
  je     L481
  sub    $0x1,%r8d
  lea    (%rdx,%r8,1),%esi
  mov    0x8(%rsp),%edx
  movslq %esi,%rsi
  add    %r8d,%edx
  shl    $0x3,%rsi
  movslq %edx,%rdx
  lea    (%r14,%rsi,1),%rdi
  add    %r13,%rsi
  shl    $0x3,%rdx
  movsd  (%rdi),%xmm1
  lea    (%r14,%rdx,1),%r8
  add    %r13,%rdx
  movsd  (%r8),%xmm2
  movsd  %xmm2,(%rdi)
  movsd  %xmm1,(%r8)
  movsd  (%rsi),%xmm1
  movsd  (%rdx),%xmm2
  movsd  %xmm2,(%rsi)
  movsd  %xmm1,(%rdx)
L481:
  cmpl   $0x2,0x60(%rsp)
  jne    L808
L368:
  add    $0x1,%ecx
  jmp    L109
  nopl   (%rax)
L65:
  add    $0x1,%r12d
  add    0x24(%rsp),%r14d
  cmp    %r12d,0x20(%rsp)
  jge    L380
  jmp    L909
  nopl   0x0(%rax)
L567:
  mov    0xf0(%rsp),%rax
  divsd  %xmm0,%xmm5
  mov    0x64(%rsp),%edi
  movsd  -0x8(%rax,%r14,8),%xmm2
  mulsd  %xmm0,%xmm2
  movsd  %xmm2,-0x8(%rax,%r14,8)
  mov    0x48(%rsp),%eax
  sub    $0x1,%eax
  cmp    %edi,0x40(%rsp)
  jg     L516
  mov    %edi,%ecx
  cltq
  mov    0x40(%rsp),%edx
  add    0x78(%rsp),%rax
  mov    0x70(%rsp),%rsi
  shl    $0x3,%rax
  add    $0x1,%ecx
L718:
  movsd  (%r15,%rax,1),%xmm1
  add    $0x1,%edx
  mulsd  %xmm5,%xmm1
  movsd  %xmm1,(%r15,%rax,1)
  movsd  0x0(%r13,%rax,1),%xmm1
  mulsd  %xmm5,%xmm1
  movsd  %xmm1,0x0(%r13,%rax,1)
  add    %rsi,%rax
  cmp    %ecx,%edx
  jne    L718
L516:
  movslq 0x38(%rsp),%rdx
  lea    0x10(,%rdx,8),%rax
  shl    $0x3,%rdx
  lea    0x0(%r13,%rax,1),%r8
  lea    0x0(%r13,%rdx,1),%rcx
  add    %r15,%rdx
  cmp    %r8,%rdx
  setae  %r8b
  add    %r15,%rax
  cmp    %rax,%rcx
  setae  %al
  or     %al,%r8b
  je     L842
  movapd %xmm0,%xmm2
  xor    %eax,%eax
  cmpl   $0x1,0x20(%rsp)
  mov    0x88(%rsp),%rsi
  unpcklpd %xmm2,%xmm2
  jle    L842
L181:
  movupd (%rdx,%rax,1),%xmm1
  mulpd  %xmm2,%xmm1
  movups %xmm1,(%rdx,%rax,1)
  movupd (%rcx,%rax,1),%xmm1
  mulpd  %xmm2,%xmm1
  movups %xmm1,(%rcx,%rax,1)
  add    $0x10,%rax
  cmp    %rsi,%rax
  jne    L181
  mov    0x80(%rsp),%eax
  mov    0x84(%rsp),%ecx
  cmp    %ecx,%eax
  je     L666
  add    0x38(%rsp),%eax
  cltq
  shl    $0x3,%rax
  lea    (%r15,%rax,1),%rdx
  add    %r13,%rax
  movsd  (%rdx),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdx)
  mulsd  (%rax),%xmm0
  movsd  %xmm0,(%rax)
L666:
  movl   $0x1,0x68(%rsp)
  jmp    L515
L706:
  mov    D26(%rip),%rax
  movsd  D96(%rip),%xmm3
  movq   %rax,%xmm5
  movq   %rax,%xmm0
  jmp    L533
L842:
  mov    0x20(%rsp),%esi
  mov    $0x1,%eax
  xchg   %ax,%ax
L50:
  movsd  -0x8(%rdx,%rax,8),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x8(%rdx,%rax,8)
  movsd  -0x8(%rcx,%rax,8),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x8(%rcx,%rax,8)
  add    $0x1,%rax
  cmp    %eax,%esi
  jge    L50
  jmp    L666
L86:
  movslq %esi,%rbp
  movslq %edi,%rcx
  pxor   %xmm0,%xmm0
  mov    %rbp,%rax
  mov    %rcx,0x18(%rsp)
  mov    %rcx,%rdx
  shl    $0x3,%rcx
  add    $0x1,%eax
  mov    %rcx,0x30(%rsp)
  mov    $0x1,%ecx
  mov    %eax,0x80(%rsp)
L103:
  mov    %ebp,0x48(%rsp)
  mov    %ebp,%eax
  mov    %ebp,0x20(%rsp)
  test   %ebp,%ebp
  jle    L422
  mov    %ebp,%r9d
  lea    0x1(%rbp),%r11d
L25:
  mov    %r9d,%r10d
  sub    $0x1,%r9d
  mov    $0x1,%esi
  mov    %r9d,%edi
  nop
L186:
  cmp    %esi,%r10d
  je     L46
  movslq %edi,%r8
  ucomisd (%r14,%r8,8),%xmm0
  jp     L579
  jne    L579
  ucomisd 0x0(%r13,%r8,8),%xmm0
  jp     L579
  jne    L579
L46:
  add    $0x1,%esi
  add    %edx,%edi
  cmp    %eax,%esi
  jle    L186
  pxor   %xmm1,%xmm1
  mov    0xf0(%rsp),%rdi
  cvtsi2sd %r10d,%xmm1
  movsd  %xmm1,-0x8(%rdi,%rbp,8)
  cmp    %eax,%r10d
  jne    L48
L778:
  cmp    $0x1,%eax
  je     L291
  sub    $0x1,%rbp
  jmp    L103
  nopl   (%rax)
L579:
  mov    %r11d,%esi
  sub    %r9d,%esi
  cmp    %eax,%esi
  jle    L25
L580:
  cmp    %eax,%ecx
  jg     L422
  lea    -0x1(%rcx),%r9d
  mov    %edx,0x50(%rsp)
  mov    %ecx,%r10d
  mov    %r9d,%r11d
  imul   %edx,%r11d
L624:
  mov    %ecx,%esi
  lea    -0x1(%r11),%r8d
  nopw   0x0(%rax,%rax,1)
L458:
  cmp    %r10d,%esi
  je     L940
  lea    (%r8,%rsi,1),%edi
  movsd  %xmm0,0x28(%rsp)
  movslq %edi,%rdi
  ucomisd (%r14,%rdi,8),%xmm0
  jp     L866
  jne    L866
  ucomisd 0x0(%r13,%rdi,8),%xmm0
  jp     L866
  jne    L866
L940:
  add    $0x1,%esi
  cmp    %eax,%esi
  jle    L458
  pxor   %xmm1,%xmm1
  mov    0xf0(%rsp),%rdi
  movslq %ecx,%rsi
  movl   $0x2,0x8(%rsp)
  cvtsi2sd %r10d,%xmm1
  movsd  %xmm1,-0x8(%rdi,%rsi,8)
  mov    %ecx,%esi
  cmp    %r10d,%ecx
  jne    L633
L881:
  lea    0x1(%r10),%ecx
  jmp    L580
  nopl   0x0(%rax,%rax,1)
L866:
  add    $0x1,%r10d
  add    %edx,%r11d
  cmp    %eax,%r10d
  jle    L624
  mov    %ecx,0x40(%rsp)
  jmp    L457
L422:
  mov    %ecx,0x40(%rsp)
  jmp    L203
L48:
  movl   $0x1,0x8(%rsp)
  mov    0x20(%rsp),%esi
L633:
  lea    -0x1(%r10),%edi
  sub    $0x1,%esi
  mov    %edi,0x70(%rsp)
  imul   %edx,%edi
  mov    %esi,0x78(%rsp)
  imul   %edx,%esi
  mov    %edi,0x60(%rsp)
  movslq %edi,%rdi
  lea    0x10(,%rdi,8),%r11
  movslq %esi,%r8
  mov    %rdi,0x38(%rsp)
  lea    -0x10(%r11),%r15
  shl    $0x3,%r8
  lea    (%r14,%r11,1),%r12
  mov    %esi,0x28(%rsp)
  lea    0x0(%r13,%r15,1),%r9
  lea    0x10(%r8),%rbx
  mov    %r12,0x40(%rsp)
  lea    0x0(%r13,%r11,1),%rdi
  cmp    %r9,%r12
  lea    (%r14,%r15,1),%r10
  mov    %rdi,0x10(%rsp)
  lea    0x0(%r13,%rbx,1),%rdi
  lea    0x0(%r13,%r8,1),%rsi
  setbe  0x68(%rsp)
  cmp    %r10,0x10(%rsp)
  mov    %rdi,0x50(%rsp)
  setbe  %r12b
  lea    (%r14,%rbx,1),%rdi
  or     0x68(%rsp),%r12b
  cmp    %r8,%r11
  mov    %rdi,0x58(%rsp)
  lea    (%r14,%r8,1),%rdi
  setle  %r8b
  cmp    %r15,%rbx
  mov    0x50(%rsp),%r15
  setle  %r11b
  or     %r11d,%r8d
  and    %r12d,%r8d
  cmp    $0x2,%eax
  mov    0x58(%rsp),%r12
  setg   %r11b
  mov    %r8d,%ebx
  and    %r11d,%ebx
  cmp    %rsi,0x40(%rsp)
  setbe  %r8b
  cmp    %r15,%r10
  setae  %r11b
  or     %r11d,%r8d
  and    %r8d,%ebx
  cmp    %r12,%r9
  setae  %r8b
  cmp    %rdi,0x10(%rsp)
  setbe  %r11b
  or     %r11d,%r8d
  test   %r8b,%bl
  je     L952
  cmp    %r12,%rsi
  setae  %r8b
  cmp    %rdi,%r15
  setbe  %r11b
  or     %r8b,%r11b
  je     L952
  mov    0x20(%rsp),%r8d
  mov    $0x1,%r11d
  test   %r8d,%r8d
  cmovg  0x48(%rsp),%r11d
  mov    %r11d,%r8d
  shr    %r8d
  mov    %r8,%rbx
  xor    %r8d,%r8d
  shl    $0x4,%rbx
L504:
  movupd (%r10,%r8,1),%xmm1
  movupd (%rdi,%r8,1),%xmm4
  movups %xmm4,(%r10,%r8,1)
  movups %xmm1,(%rdi,%r8,1)
  movupd (%r9,%r8,1),%xmm1
  movupd (%rsi,%r8,1),%xmm4
  movups %xmm4,(%r9,%r8,1)
  movups %xmm1,(%rsi,%r8,1)
  add    $0x10,%r8
  cmp    %r8,%rbx
  jne    L504
  mov    %r11d,%esi
  and    $0xfffffffe,%esi
  and    $0x1,%r11d
  je     L314
  mov    0x60(%rsp),%edi
  add    %esi,%edi
  add    0x28(%rsp),%esi
  movslq %edi,%rdi
  movslq %esi,%rsi
  shl    $0x3,%rdi
  shl    $0x3,%rsi
  lea    (%r14,%rdi,1),%r8
  lea    (%r14,%rsi,1),%r9
  add    %r13,%rdi
  add    %r13,%rsi
  movsd  (%r8),%xmm1
  movsd  (%r9),%xmm2
  movsd  %xmm2,(%r8)
  movsd  %xmm1,(%r9)
  movsd  (%rdi),%xmm1
  movsd  (%rsi),%xmm2
  movsd  %xmm2,(%rdi)
  movsd  %xmm1,(%rsi)
L314:
  cmp    0x64(%rsp),%ecx
  jg     L622
  lea    -0x1(%rcx),%r8d
  movslq 0x78(%rsp),%rdi
  movslq 0x70(%rsp),%rsi
  imul   %edx,%r8d
  mov    0x30(%rsp),%r9
  movslq %r8d,%r8
  add    %r8,%rdi
  add    %r8,%rsi
  mov    %ecx,%r8d
  shl    $0x3,%rdi
  shl    $0x3,%rsi
L207:
  movsd  (%r14,%rsi,1),%xmm1
  movsd  (%r14,%rdi,1),%xmm2
  add    $0x1,%r8d
  movsd  %xmm2,(%r14,%rsi,1)
  movsd  %xmm1,(%r14,%rdi,1)
  movsd  0x0(%r13,%rsi,1),%xmm1
  movsd  0x0(%r13,%rdi,1),%xmm2
  movsd  %xmm2,0x0(%r13,%rsi,1)
  add    %r9,%rsi
  movsd  %xmm1,0x0(%r13,%rdi,1)
  add    %r9,%rdi
  cmp    0x80(%rsp),%r8d
  jne    L207
L622:
  cmpl   $0x2,0x8(%rsp)
  jne    L778
  mov    %ecx,%r10d
  jmp    L881
L767:
  mov    0x58(%rsp),%rsi
  mov    0x50(%rsp),%r11
  lea    (%r14,%rsi,1),%r8
  lea    (%r14,%r11,1),%rdi
  add    %r13,%r11
  lea    0x0(%r13,%rsi,1),%r9
  mov    $0x1,%esi
L747:
  movsd  -0x10(%r8,%rsi,8),%xmm1
  movsd  -0x10(%rdi,%rsi,8),%xmm2
  movsd  %xmm2,-0x10(%r8,%rsi,8)
  movsd  %xmm1,-0x10(%rdi,%rsi,8)
  movsd  -0x10(%r9,%rsi,8),%xmm1
  movsd  -0x10(%r11,%rsi,8),%xmm2
  movsd  %xmm2,-0x10(%r9,%rsi,8)
  movsd  %xmm1,-0x10(%r11,%rsi,8)
  add    $0x1,%rsi
  cmp    %esi,%eax
  jge    L747
  jmp    L413
L894:
  movslq %edx,%rdx
  mov    0x48(%rsp),%r11
  mov    0x10(%rsp),%edi
  lea    -0x1(%rdx,%r15,1),%rdx
  add    0x68(%rsp),%rdi
  shl    $0x3,%rdx
  lea    (%r11,%rdi,8),%r8
  mov    0x38(%rsp),%rdi
  sub    0x40(%rsp),%rdi
  lea    (%r14,%rdx,1),%rsi
  add    %r13,%rdx
L211:
  movsd  (%rsi),%xmm1
  movsd  (%rsi,%rdi,8),%xmm2
  movsd  %xmm2,(%rsi)
  movsd  %xmm1,(%rsi,%rdi,8)
  movsd  (%rdx),%xmm1
  movsd  (%rdx,%rdi,8),%xmm2
  add    $0x8,%rsi
  movsd  %xmm2,(%rdx)
  movsd  %xmm1,(%rdx,%rdi,8)
  add    $0x8,%rdx
  cmp    %rsi,%r8
  jne    L211
  jmp    L481
L291:
  mov    %ecx,0x40(%rsp)
  movl   $0x1,0x20(%rsp)
  jmp    L203
L955:
  mov    %ecx,%eax
  movslq %ecx,%rcx
  mov    %rcx,0x90(%rsp)
  jmp    L581
L952:
  mov    0x38(%rsp),%r9
  mov    $0x1,%r8d
  shl    $0x3,%r9
  lea    (%r14,%r9,1),%r10
  add    %r13,%r9
L599:
  movsd  -0x8(%r10,%r8,8),%xmm1
  movsd  -0x8(%rdi,%r8,8),%xmm2
  movsd  %xmm2,-0x8(%r10,%r8,8)
  movsd  %xmm1,-0x8(%rdi,%r8,8)
  movsd  -0x8(%r9,%r8,8),%xmm1
  movsd  -0x8(%rsi,%r8,8),%xmm2
  movsd  %xmm2,-0x8(%r9,%r8,8)
  movsd  %xmm1,-0x8(%rsi,%r8,8)
  add    $0x1,%r8
  cmp    %r8d,%eax
  jge    L599
  jmp    L314
```

tool_calls: name: disassemble_data
arguments: tag: D26
type_guessed: f64[2]
name: disassemble_data
arguments: tag: D58
type_guessed: f32[2]
name: disassemble_data
arguments: tag: D96
type_guessed: f64
name: disassemble_data
arguments: tag: D72
type_guessed: f32[2]
name: disassemble_data
arguments: tag: D99
type_guessed: f32[2]
name: disassemble_data
arguments: tag: D59
type_guessed: f64

tool: {"D26": [1.0,1.0]}

tool: {"D58": [0.0,1.375]}

tool: D96: 16

tool: {"D72": [0.0,3.75]}

tool: {"D99": [0.0,0.9375]}

tool: D59: 0.95

assistant: ```c
void cbal(int nm, int n, double *ar, double *ai, int *low, int *igh, double *scale) {
  int i, j, k, l, m, jj, iexc;
  double c, f, g, r, s, b2, radix;
  int noconv;
  radix = 16.0;
  b2 = radix * radix;
  k = 1;
  l = n;
  goto L100;
L20:
  scale[(m)-1] = j;
  if (j != m) {
    for (i = 1; i <= l; i++) {
      f = ar[(i)-1 + ((j)-1) * (nm)];
      ar[(i)-1 + ((j)-1) * (nm)] = ar[(i)-1 + ((m)-1) * (nm)];
      ar[(i)-1 + ((m)-1) * (nm)] = f;
      f = ai[(i)-1 + ((j)-1) * (nm)];
      ai[(i)-1 + ((j)-1) * (nm)] = ai[(i)-1 + ((m)-1) * (nm)];
      ai[(i)-1 + ((m)-1) * (nm)] = f;
    }
    for (i = k; i <= n; i++) {
      f = ar[(j)-1 + ((i)-1) * (nm)];
      ar[(j)-1 + ((i)-1) * (nm)] = ar[(m)-1 + ((i)-1) * (nm)];
      ar[(m)-1 + ((i)-1) * (nm)] = f;
      f = ai[(j)-1 + ((i)-1) * (nm)];
      ai[(j)-1 + ((i)-1) * (nm)] = ai[(m)-1 + ((i)-1) * (nm)];
      ai[(m)-1 + ((i)-1) * (nm)] = f;
    }
  }
  if (iexc == 2) {
    k++;
    goto L130;
  }
  if (l == 1)
    goto L280;
  l--;
L100:
  for (jj = 1; jj <= l; jj++) {
    int test = 0;
    j = l + 1 - jj;
    for (i = 1; i <= l; i++) {
      if (i == j)
        continue;
      if (ar[(j)-1 + ((i)-1) * (nm)] != 0.0 || ai[(j)-1 + ((i)-1) * (nm)] != 0.0) {
        test = 1;
        break;
      }
    }
    if (!test) {
      m = l;
      iexc = 1;
      goto L20;
    }
  }
L130:
  for (j = k; j <= l; j++) {
    int test = 0;
    for (i = k; i <= l; i++) {
      if (i == j)
        continue;
      if (ar[(i)-1 + ((j)-1) * (nm)] != 0.0 || ai[(i)-1 + ((j)-1) * (nm)] != 0.0) {
        test = 1;
        break;
      }
    }
    if (!test) {
      m = k;
      iexc = 2;
      goto L20;
    }
  }
  for (i = k; i <= l; i++)
    scale[(i)-1] = 1.0;
  do {
    noconv = 0;
    for (i = k; i <= l; i++) {
      c = 0.0;
      r = 0.0;
      for (j = k; j <= l; j++) {
        if (j == i)
          continue;
        c += fabs(ar[(j)-1 + ((i)-1) * (nm)]) + fabs(ai[(j)-1 + ((i)-1) * (nm)]);
        r += fabs(ar[(i)-1 + ((j)-1) * (nm)]) + fabs(ai[(i)-1 + ((j)-1) * (nm)]);
      }
      if (c == 0.0 || r == 0.0)
        continue;
      g = r / radix;
      f = 1.0;
      s = c + r;
      while (c < g) {
        f *= radix;
        c *= b2;
      }
      g = r * radix;
      while (c >= g) {
        f /= radix;
        c /= b2;
      }
      if ((c + r) / f >= 0.95 * s)
        continue;
      g = 1.0 / f;
      scale[(i)-1] *= f;
      noconv = 1;
      for (j = k; j <= n; j++) {
        ar[(i)-1 + ((j)-1) * (nm)] *= g;
        ai[(i)-1 + ((j)-1) * (nm)] *= g;
      }
      for (j = 1; j <= l; j++) {
        ar[(j)-1 + ((i)-1) * (nm)] *= f;
        ai[(j)-1 + ((i)-1) * (nm)] *= f;
      }
    }
  } while (noconv);
L280:
  *low = k;
  *igh = l;
}
```