user: Converte this assembly snippet into its equivalent C code:

```asm
<sv2uv>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xa8,%rsp
  mov    %rdi,(%rsp)
  mov    %rsi,0x48(%rsp)
  mov    %rdx,0x50(%rsp)
  mov    %ecx,0x3c(%rsp)
  mov    %r8,0x10(%rsp)
  cmp    %r9d,%ecx
  jl     L1188
  mov    %rdi,%rbp
  mov    %rsi,%r13
  lea    (%rcx,%r9,1),%edi
  mov    $0x8,%esi
  mov    %ecx,%ebx
  mov    %r9d,%r15d
  call   <calloc@plt>
  mov    %rax,%rcx
  mov    %rax,0x18(%rsp)
  movslq %ebx,%rax
  lea    0x0(,%rax,8),%rdi
  mov    %rcx,%rax
  add    %rdi,%rax
  mov    %rdi,0x60(%rsp)
  mov    %rax,0x40(%rsp)
  test   %r15d,%r15d
  jle    L929
  movslq %r15d,%rax
  mov    %rbp,%r11
  mov    %rbp,0x68(%rsp)
  lea    -0x2(%rbx),%r9d
  mov    %r15d,0x8(%rsp)
  lea    -0x1(%rbx),%ebp
  lea    -0x2(%r15),%r12d
  mov    %r13,%rbx
  lea    0x0(,%rax,8),%r14
  shl    $0x4,%rax
  pxor   %xmm3,%xmm3
  mov    %rcx,%r15
  lea    0x8(%r14),%r8
  lea    0x0(%r13,%r14,1),%r10
  mov    %rax,0x28(%rsp)
  movq   D123(%rip),%xmm4
  mov    %r8,0x30(%rsp)
  mov    %r11,%r13
  jmp    L858
  nopl   0x0(%rax,%rax,1)
L208:
  jne    L995
  movsd  (%rbx),%xmm0
  movsd  %xmm0,0x0(%r13)
L995:
  sub    $0x1,%r12d
  add    %r8,%rbx
  add    $0x8,%r13
  sub    $0x1,%r9d
  sub    $0x1,%ebp
  add    %r8,%r10
  cmp    $0xfffffffe,%r12d
  je     L468
L858:
  lea    0x1(%rbp),%eax
  cmp    $0x1,%eax
  jle    L208
  mov    %ebp,%edi
  lea    0x8(%r15),%r11
  cmpl   $0x1,0x8(%rsp)
  mov    %r15,%rax
  mov    %rdi,0x20(%rsp)
  lea    (%r11,%rdi,8),%rcx
  mov    %rbx,%rdx
  movapd %xmm3,%xmm1
  jne    L381
  nopl   0x0(%rax,%rax,1)
L1182:
  movsd  (%rdx),%xmm0
  add    $0x8,%rax
  add    %r14,%rdx
  movsd  %xmm0,-0x8(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rcx,%rax
  jne    L1182
L935:
  comisd %xmm3,%xmm1
  ja     L1217
  mov    D123(%rip),%rax
  movapd %xmm3,%xmm6
  movq   %rax,%xmm8
L1009:
  movsd  %xmm6,(%rbx)
  movsd  %xmm8,0x0(%r13)
  jmp    L995
  xchg   %ax,%ax
L381:
  movsd  (%rdx),%xmm0
  add    $0x8,%rax
  add    %r14,%rdx
  movsd  %xmm0,-0x8(%rax)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rcx,%rax
  jne    L381
  jmp    L935
  nop
L468:
  mov    0x8(%rsp),%ebx
  mov    0x48(%rsp),%rbp
  mov    0x3c(%rsp),%edx
  mov    0x50(%rsp),%rsi
  mov    %rbp,%rdi
  mov    %ebx,%ecx
  lea    0x0(,%rbx,8),%r12
  mov    %rbx,%r15
  call   <ldumat@plt>
  lea    -0x1(%rbx),%eax
  mov    %r14,0x8(%rsp)
  mov    %rbp,%rdi
  mov    %rax,0x70(%rsp)
  mov    (%rsp),%r14
  mov    %rax,%r13
  xor    %r8d,%r8d
  movdqa D43(%rip),%xmm7
  pxor   %xmm5,%xmm5
  pxor   %xmm3,%xmm3
  movdqa D159(%rip),%xmm9
  movdqa D110(%rip),%xmm8
  movdqa D80(%rip),%xmm6
  mov    $0x1,%ebp
L487:
  mov    %r8d,%ecx
  test   %r8,%r8
  jne    L130
  mov    %rdi,%rdx
  xor    %eax,%eax
  nopl   0x0(%rax)
L24:
  cmp    %ecx,%eax
  je     L22
L618:
  add    $0x1,%eax
  add    $0x8,%rdx
  cmp    %eax,%r15d
  jg     L24
L571:
  add    $0x1,%r8
  add    %r12,%rdi
  cmp    %r8,%rbx
  jne    L487
L439:
  mov    0x18(%rsp),%rax
  sub    0x50(%rsp),%rax
  mov    %r13d,%r12d
  xor    %r11d,%r11d
  mov    %rax,0x28(%rsp)
  mov    %r15d,%eax
  mov    0x8(%rsp),%r14
  mov    %r15d,%r13d
  imul   %r15d,%eax
  mov    %r15d,0x8(%rsp)
  mov    0x48(%rsp),%rbx
  mov    %eax,0x20(%rsp)
  jmp    L1158
  nopl   0x0(%rax)
L489:
  mov    0x30(%rsp),%rax
  lea    (%rbx,%rax,1),%rdi
  jne    L19
  movsd  0x8(%rbx),%xmm0
  mov    0x40(%rsp),%rax
  movsd  %xmm0,(%rax,%r11,8)
L19:
  mov    %rdi,%rbx
  sub    $0x1,%r12d
  mov    0x8(%rsp),%edi
  add    $0x1,%r11
  subq   $0x8,0x28(%rsp)
  sub    %edi,0x20(%rsp)
  sub    $0x1,%r13d
  je     L76
L1158:
  test   %r11d,%r11d
  je     L361
  cmp    $0x1,%r13d
  jg     L554
L361:
  cmp    $0x1,%r13d
  je     L123
L335:
  cmp    $0x1,%r12d
  jle    L489
  mov    %r12d,%esi
  lea    0x8(%rbx),%rax
  movapd %xmm3,%xmm1
  shr    %esi
  mov    %rax,%rbp
  lea    -0x1(%rsi),%edx
  shl    $0x4,%rdx
  lea    0x18(%rbx,%rdx,1),%rdx
  nopl   0x0(%rax)
L555:
  movupd (%rax),%xmm0
  add    $0x10,%rax
  mulpd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  unpckhpd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %rax,%rdx
  jne    L555
  mov    %r12d,%r15d
  and    $0xfffffffe,%r15d
  mov    %r15d,%r10d
  shl    $0x3,%r10
  add    %r10,%rbp
  cmp    %r15d,%r12d
  je     L383
  movsd  0x0(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
L383:
  comisd %xmm3,%xmm1
  ja     L878
  mov    0x30(%rsp),%rax
  movsd  D123(%rip),%xmm6
  movapd %xmm3,%xmm5
  lea    (%rbx,%rax,1),%rdi
L285:
  mov    0x40(%rsp),%rax
  movsd  %xmm5,0x8(%rbx)
  movsd  %xmm6,(%rax,%r11,8)
  jmp    L19
  nopl   0x0(%rax)
L130:
  cmp    %r8d,%r15d
  mov    %r8d,%esi
  mov    %ebp,%r11d
  cmovle %r15d,%esi
  test   %esi,%esi
  cmovg  %esi,%r11d
  cmp    $0x3,%esi
  jle    L525
  lea    0x8(%rdi),%rdx
  movq   %rdi,%xmm4
  mov    %rdi,%rax
  movq   %rdx,%xmm2
  mov    %r11d,%edx
  shr    $0x2,%edx
  punpcklqdq %xmm2,%xmm4
  movdqa D39(%rip),%xmm2
  sub    $0x1,%edx
  shl    $0x5,%rdx
  lea    0x20(%rdi,%rdx,1),%rdx
  nopl   0x0(%rax,%rax,1)
L229:
  movdqa %xmm2,%xmm0
  movdqa %xmm4,%xmm1
  movups %xmm5,(%rax)
  add    $0x20,%rax
  movups %xmm5,-0x10(%rax)
  paddd  %xmm9,%xmm2
  paddq  %xmm8,%xmm4
  paddd  %xmm7,%xmm0
  paddq  %xmm6,%xmm1
  cmp    %rdx,%rax
  jne    L229
  mov    %r11d,%r9d
  movhlps %xmm1,%xmm4
  pshufd $0xff,%xmm0,%xmm0
  and    $0xfffffffc,%r9d
  movq   %xmm4,%rdx
  movd   %xmm0,%eax
  mov    %r9d,%r10d
  lea    (%rdi,%r10,8),%r10
  cmp    %r9d,%r11d
  je     L355
L1027:
  lea    0x1(%r9),%eax
  movq   $0x0,(%r10)
  lea    0x8(%r10),%rdx
  cmp    %esi,%eax
  jge    L355
  lea    0x2(%r9),%eax
  movq   $0x0,0x8(%r10)
  lea    0x10(%r10),%rdx
  cmp    %esi,%eax
  jge    L355
  movq   $0x0,0x10(%r10)
  lea    0x3(%r9),%eax
  lea    0x18(%r10),%rdx
L355:
  cmp    %eax,%r15d
  jle    L571
  cmp    %ecx,%eax
  jne    L618
  xchg   %ax,%ax
L22:
  movsd  (%r14,%r8,8),%xmm0
  add    $0x1,%eax
  add    $0x8,%rdx
  movsd  %xmm0,-0x8(%rdx)
  cmp    %eax,%r15d
  jg     L24
  add    $0x1,%r8
  add    %r12,%rdi
  cmp    %r8,%rbx
  jne    L487
  jmp    L439
L554:
  xor    %eax,%eax
  cmpl   $0x1,0x8(%rsp)
  mov    0x18(%rsp),%rcx
  mov    %rbx,%rdx
  movapd %xmm3,%xmm1
  jne    L427
  nopl   (%rax)
L928:
  movsd  (%rdx),%xmm0
  add    $0x1,%eax
  add    %r14,%rdx
  add    $0x8,%rcx
  movsd  %xmm0,-0x8(%rcx)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %eax,%r13d
  jg     L928
L190:
  comisd %xmm3,%xmm1
  ja     L28
  mov    D123(%rip),%rax
  movapd %xmm3,%xmm5
  movq   %rax,%xmm6
L716:
  mov    (%rsp),%rax
  movsd  %xmm5,(%rbx)
  movsd  %xmm6,(%rax,%r11,8)
  jmp    L335
  nopl   (%rax)
L427:
  movsd  (%rdx),%xmm0
  add    $0x1,%eax
  add    %r14,%rdx
  add    $0x8,%rcx
  movsd  %xmm0,-0x8(%rcx)
  mulsd  %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  cmp    %eax,%r13d
  jg     L427
  jmp    L190
  nopw   0x0(%rax,%rax,1)
L123:
  movsd  (%rbx),%xmm0
  mov    (%rsp),%rax
  movsd  %xmm0,(%rax,%r11,8)
  jmp    L335
  nopl   0x0(%rax,%rax,1)
L76:
  mov    0x10(%rsp),%rbx
  mov    %edi,%r15d
  mov    %edi,%edx
  mov    0x48(%rsp),%rdi
  mov    %rbx,%rsi
  call   <ldvmat@plt>
  mov    0x3c(%rsp),%ecx
  mov    (%rsp),%rdi
  mov    %r15d,%r9d
  mov    0x50(%rsp),%rdx
  mov    0x40(%rsp),%rsi
  mov    %rbx,%r8
  call   <qrbdv@plt>
  cmp    $0x1,%r15d
  pxor   %xmm3,%xmm3
  jne    L479
  mov    (%rsp),%rax
  movsd  (%rax),%xmm0
  comisd %xmm0,%xmm3
  jbe    L307
  movq   D123(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    0x10(%rsp),%rax
  movsd  (%rax),%xmm0
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L307:
  mov    0x18(%rsp),%rdi
  call   <free@plt>
  xor    %eax,%eax
L1172:
  add    $0xa8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L525:
  mov    %rdi,%r10
  xor    %r9d,%r9d
  jmp    L1027
L1217:
  ucomisd %xmm1,%xmm3
  ja     L2
  movapd %xmm1,%xmm2
  sqrtsd %xmm2,%xmm2
L17:
  movsd  (%rbx),%xmm0
  movapd %xmm2,%xmm8
  xorpd  %xmm4,%xmm8
  comisd %xmm0,%xmm3
  ja     L972
L338:
  mulsd  %xmm2,%xmm0
  movsd  D40(%rip),%xmm7
  movsd  D40(%rip),%xmm5
  mov    %r11,0x98(%rsp)
  mov    %r10,0x90(%rsp)
  mov    %r9d,0x88(%rsp)
  mov    %r8,0x80(%rsp)
  movsd  %xmm8,0x78(%rsp)
  addsd  %xmm1,%xmm0
  divsd  %xmm0,%xmm7
  movsd  (%r15),%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm0,(%r15)
  divsd  %xmm0,%xmm5
  movsd  (%rbx),%xmm0
  movsd  %xmm7,0x70(%rsp)
  divsd  %xmm2,%xmm0
  movsd  %xmm5,0x58(%rsp)
  call   <fabs@plt>
  pxor   %xmm6,%xmm6
  cmp    $0xffffffff,%r12d
  movsd  0x58(%rsp),%xmm5
  cvtsi2sd %eax,%xmm6
  movsd  0x70(%rsp),%xmm7
  addsd  D40(%rip),%xmm6
  pxor   %xmm3,%xmm3
  movsd  0x78(%rsp),%xmm8
  movq   D123(%rip),%xmm4
  mov    0x80(%rsp),%r8
  mov    0x88(%rsp),%r9d
  mov    0x90(%rsp),%r10
  mov    0x98(%rsp),%r11
  je     L829
  mov    0x20(%rsp),%rsi
  mov    %r12d,%eax
  cmpl   $0x1,0x8(%rsp)
  mov    %r8,0x58(%rsp)
  lea    0x10(%rbx,%rax,8),%rax
  lea    0x8(%rbx),%rdi
  lea    (%r11,%rsi,8),%rsi
  mov    %rax,%r8
  jne    L859
  nopl   0x0(%rax)
L72:
  mov    %rdi,%rax
  mov    %r15,%rdx
  movapd %xmm3,%xmm1
  mov    %rdi,%rcx
  nopl   (%rax)
L1124:
  movsd  (%rcx),%xmm0
  mulsd  (%rdx),%xmm0
  add    $0x8,%rdx
  add    %r14,%rcx
  addsd  %xmm0,%xmm1
  cmp    %rsi,%rdx
  jne    L1124
  mulsd  %xmm7,%xmm1
  mov    %r15,%rdx
  nopw   0x0(%rax,%rax,1)
L1189:
  movsd  (%rdx),%xmm2
  movsd  (%rax),%xmm0
  add    $0x8,%rdx
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  add    %r14,%rax
  cmp    %rsi,%rdx
  jne    L1189
  add    $0x8,%rdi
  cmp    %r8,%rdi
  jne    L72
  mov    0x58(%rsp),%r8
L455:
  mov    0x20(%rsp),%rcx
  mov    %r14,%rdx
  mov    %r11,%rax
  sub    $0x1,%rcx
  imul   %rcx,%rdx
  lea    0xf(%r15,%rcx,8),%rsi
  xor    %ecx,%ecx
  test   %r14,%r14
  cmovs  %rdx,%rcx
  add    %r14,%rcx
  add    %rbx,%rcx
  cmp    %rcx,%rsi
  mov    $0x7,%esi
  setb   %cl
  add    $0x7,%rdx
  test   %r14,%r14
  cmovs  %rsi,%rdx
  add    %r14,%rdx
  add    %rbx,%rdx
  cmp    %r11,%rdx
  setb   %dl
  or     %cl,%dl
  je     L445
  cmp    $0x8,%r9d
  jbe    L445
  mov    %ebp,%edx
  movapd %xmm5,%xmm1
  mov    0x28(%rsp),%rsi
  shr    %edx
  unpcklpd %xmm1,%xmm1
  sub    $0x1,%edx
  shl    $0x4,%rdx
  lea    0x18(%r15,%rdx,1),%rcx
  mov    %r10,%rdx
  nopl   0x0(%rax)
L835:
  movupd (%rax),%xmm0
  add    $0x10,%rax
  mulpd  %xmm1,%xmm0
  movlpd %xmm0,(%rdx)
  movhpd %xmm0,(%rdx,%r14,1)
  add    %rsi,%rdx
  cmp    %rcx,%rax
  jne    L835
  mov    %ebp,%edx
  or     $0x1,%edx
  test   $0x1,%bpl
  je     L1009
  mov    %edx,%eax
  movslq %edx,%rdx
  mulsd  (%r15,%rdx,8),%xmm5
  imul   %r14,%rax
  movsd  %xmm5,(%rbx,%rax,1)
  jmp    L1009
  cs nopw 0x0(%rax,%rax,1)
L546:
  mulsd  %xmm7,%xmm1
  mov    %r15,%rdx
  nopw   0x0(%rax,%rax,1)
L1135:
  movsd  (%rdx),%xmm2
  movsd  (%rax),%xmm0
  add    $0x8,%rdx
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  add    %r14,%rax
  cmp    %rsi,%rdx
  jne    L1135
  add    $0x8,%rdi
  cmp    %r8,%rdi
  je     L1165
L859:
  mov    %rdi,%rax
  mov    %r15,%rdx
  movapd %xmm3,%xmm1
  mov    %rdi,%rcx
  nopw   0x0(%rax,%rax,1)
L709:
  movsd  (%rdx),%xmm0
  mulsd  (%rcx),%xmm0
  add    $0x8,%rdx
  add    %r14,%rcx
  addsd  %xmm0,%xmm1
  cmp    %rsi,%rdx
  jne    L709
  jmp    L546
L878:
  ucomisd %xmm1,%xmm3
  ja     L216
  movapd %xmm1,%xmm2
  sqrtsd %xmm2,%xmm2
L459:
  movsd  0x8(%rbx),%xmm0
  movapd %xmm2,%xmm6
  xorpd  D123(%rip),%xmm6
  comisd %xmm0,%xmm3
  ja     L497
L1074:
  divsd  %xmm2,%xmm0
  mov    %r11,0x98(%rsp)
  mov    %r10,0x90(%rsp)
  mov    %esi,0x88(%rsp)
  movsd  %xmm6,0x80(%rsp)
  movsd  %xmm1,0x78(%rsp)
  movsd  %xmm2,0x58(%rsp)
  call   <fabs@plt>
  movsd  0x8(%rbx),%xmm0
  movsd  0x58(%rsp),%xmm2
  pxor   %xmm5,%xmm5
  movsd  0x78(%rsp),%xmm1
  cvtsi2sd %eax,%xmm5
  mov    0x20(%rsp),%edi
  pxor   %xmm3,%xmm3
  movapd %xmm0,%xmm7
  addsd  %xmm2,%xmm0
  movsd  D40(%rip),%xmm4
  cmp    %edi,0x8(%rsp)
  mulsd  %xmm2,%xmm7
  mov    0x88(%rsp),%esi
  movsd  0x80(%rsp),%xmm6
  mov    0x90(%rsp),%r10
  mov    0x98(%rsp),%r11
  addsd  %xmm4,%xmm5
  movsd  %xmm0,0x8(%rbx)
  addsd  %xmm7,%xmm1
  movapd %xmm4,%xmm7
  divsd  %xmm0,%xmm4
  divsd  %xmm1,%xmm7
  jge    L60
  mov    0x30(%rsp),%r9
  lea    -0x2(%r13),%eax
  mov    0x8(%rsp),%ecx
  mov    %r13d,0x78(%rsp)
  mov    %eax,0x58(%rsp)
  shl    $0x4,%rsi
  lea    (%rbx,%r9,1),%rdi
  mov    %r11,0x80(%rsp)
  mov    %ecx,%r8d
  mov    %ecx,%r13d
  mov    %rdi,0x88(%rsp)
  mov    %rdi,%rdx
  mov    0x20(%rsp),%edi
  mov    %rax,%r11
  nopw   0x0(%rax,%rax,1)
L821:
  xor    %eax,%eax
  movapd %xmm3,%xmm0
  xchg   %ax,%ax
L476:
  movupd 0x8(%rbx,%rax,1),%xmm2
  movupd (%rdx,%rax,1),%xmm1
  add    $0x10,%rax
  mulpd  %xmm1,%xmm2
  addsd  %xmm2,%xmm0
  unpckhpd %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  cmp    %rax,%rsi
  jne    L476
  lea    (%rdx,%r10,1),%rcx
  cmp    %r15d,%r12d
  je     L736
  movsd  (%rcx),%xmm1
  mulsd  0x0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
L736:
  mulsd  %xmm7,%xmm0
  cmp    $0x10,%r9
  je     L170
  movapd %xmm0,%xmm8
  xor    %eax,%eax
  unpcklpd %xmm8,%xmm8
  nopl   0x0(%rax)
L41:
  movupd 0x8(%rbx,%rax,1),%xmm2
  movupd (%rdx,%rax,1),%xmm1
  mulpd  %xmm8,%xmm2
  subpd  %xmm2,%xmm1
  movups %xmm1,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rsi
  jne    L41
  cmp    %r15d,%r12d
  je     L94
  mulsd  0x0(%rbp),%xmm0
  movsd  (%rcx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rcx)
L94:
  add    %r13d,%r8d
  add    %r14,%rdx
  add    %r14,%r9
  cmp    %edi,%r8d
  jl     L821
  mov    0x78(%rsp),%r13d
  mov    0x80(%rsp),%r11
  mov    0x88(%rsp),%rdi
L1010:
  lea    0x10(%rbx),%rax
  mov    %rax,%rdx
  cmp    $0x2,%r12d
  je     L1130
  mov    0x58(%rsp),%ecx
  movapd %xmm4,%xmm1
  unpcklpd %xmm1,%xmm1
  shr    %ecx
  sub    $0x1,%ecx
  shl    $0x4,%rcx
  lea    0x20(%rbx,%rcx,1),%rcx
  nopl   (%rax)
L294:
  movupd (%rax),%xmm0
  add    $0x10,%rax
  mulpd  %xmm1,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %rax,%rcx
  jne    L294
  mov    0x58(%rsp),%esi
  mov    %esi,%eax
  and    $0xfffffffe,%eax
  mov    %eax,%ecx
  lea    (%rdx,%rcx,8),%rdx
  cmp    %eax,%esi
  je     L285
L1130:
  mulsd  (%rdx),%xmm4
  movsd  %xmm4,(%rdx)
  jmp    L285
  nopl   0x0(%rax)
L170:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L431:
  movsd  0x8(%rbx,%rax,8),%xmm2
  movsd  (%rdx,%rax,8),%xmm1
  mov    %rax,%rcx
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,(%rdx,%rax,8)
  add    $0x1,%rax
  cmp    %r11,%rcx
  jne    L431
  jmp    L94
L972:
  movq   %xmm2,%rax
  movapd %xmm8,%xmm2
  movq   %rax,%xmm8
  jmp    L338
L497:
  movq   %xmm2,%rax
  movapd %xmm6,%xmm2
  movq   %rax,%xmm6
  jmp    L1074
L28:
  ucomisd %xmm1,%xmm3
  ja     L1161
  movapd %xmm1,%xmm2
  sqrtsd %xmm2,%xmm2
L894:
  movsd  (%rbx),%xmm0
  movapd %xmm2,%xmm6
  xorpd  D123(%rip),%xmm6
  comisd %xmm0,%xmm3
  jbe    L609
  movq   %xmm2,%rax
  movapd %xmm6,%xmm2
  movq   %rax,%xmm6
L609:
  mulsd  %xmm2,%xmm0
  mov    0x18(%rsp),%rax
  movsd  D40(%rip),%xmm4
  mov    %r11,0x80(%rsp)
  movsd  %xmm6,0x78(%rsp)
  addsd  %xmm1,%xmm0
  divsd  %xmm0,%xmm4
  movsd  (%rax),%xmm0
  addsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  movsd  (%rbx),%xmm0
  divsd  %xmm2,%xmm0
  movsd  %xmm4,0x58(%rsp)
  call   <fabs@plt>
  pxor   %xmm5,%xmm5
  cmpl   $0x1,0x8(%rsp)
  mov    0x18(%rsp),%rsi
  cvtsi2sd %eax,%xmm5
  lea    -0x2(%r13),%eax
  movsd  0x58(%rsp),%xmm4
  movsd  0x78(%rsp),%xmm6
  addsd  D40(%rip),%xmm5
  lea    0x8(%rbx),%rdi
  pxor   %xmm3,%xmm3
  mov    0x80(%rsp),%r11
  lea    0x10(%rbx,%rax,8),%r8
  jne    L843
  nopl   0x0(%rax)
L144:
  mov    %rdi,%rax
  mov    %rsi,%r9
  mov    %rdi,%rcx
  xor    %edx,%edx
  movapd %xmm3,%xmm1
  nop
L1183:
  movsd  (%rcx),%xmm0
  mulsd  (%r9),%xmm0
  add    $0x1,%edx
  add    %r14,%rcx
  add    $0x8,%r9
  addsd  %xmm0,%xmm1
  cmp    %edx,%r13d
  jg     L1183
  mulsd  %xmm4,%xmm1
  mov    %rsi,%rcx
  xor    %edx,%edx
  nopl   (%rax)
L133:
  movsd  (%rcx),%xmm2
  movsd  (%rax),%xmm0
  add    $0x1,%edx
  add    $0x8,%rcx
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  add    %r14,%rax
  cmp    %edx,%r13d
  jg     L133
  add    $0x8,%rdi
  cmp    %r8,%rdi
  jne    L144
L276:
  mov    0x28(%rsp),%rax
  mov    0x18(%rsp),%r8
  mov    %rax,%rdi
  sub    %rax,%r8
  mov    0x3c(%rsp),%eax
  neg    %rdi
  test   %eax,%eax
  jle    L716
  test   %r13d,%r13d
  mov    $0x1,%ebp
  mov    0x18(%rsp),%rsi
  mov    %r11,0x90(%rsp)
  cmovg  %r13d,%ebp
  mov    0x60(%rsp),%r11
  mov    %r14,0x78(%rsp)
  xor    %r15d,%r15d
  mov    %rsi,%rcx
  mov    %r12d,0x80(%rsp)
  mov    %ebp,%eax
  mov    %ebp,%r9d
  mov    %rbx,0x88(%rsp)
  shr    %eax
  and    $0xfffffffe,%r9d
  sub    $0x1,%eax
  mov    %r9d,%ebx
  mov    %rax,%rdx
  add    $0x1,%rax
  shl    $0x4,%rdx
  shl    $0x4,%rax
  lea    0x10(%rsi,%rdx,1),%r10
  mov    %rax,0x58(%rsp)
  mov    %r9d,%edx
  mov    %rsi,%rax
  shl    $0x3,%rdx
  add    $0x8,%rax
  mov    0x28(%rsp),%rsi
  add    %rdx,%rcx
  mov    %rdx,%r14
  mov    %rax,%r12
  nopw   0x0(%rax,%rax,1)
L962:
  mov    0x18(%rsp),%rax
  movapd %xmm3,%xmm0
  nopl   0x0(%rax)
L698:
  movupd (%rax),%xmm2
  movupd (%rdi,%rax,1),%xmm7
  add    $0x10,%rax
  mulpd  %xmm7,%xmm2
  addsd  %xmm2,%xmm0
  unpckhpd %xmm2,%xmm2
  addsd  %xmm2,%xmm0
  cmp    %rax,%r10
  jne    L698
  lea    (%r8,%r14,1),%rdx
  cmp    %ebx,%ebp
  je     L7
  movsd  (%rcx),%xmm1
  mulsd  (%rdx),%xmm1
  addsd  %xmm1,%xmm0
L7:
  mulsd  %xmm4,%xmm0
  cmp    %r12,%r8
  je     L249
  mov    0x58(%rsp),%rax
  movapd %xmm0,%xmm7
  unpcklpd %xmm7,%xmm7
  lea    (%r8,%rax,1),%r9
  mov    %r8,%rax
  nop
L284:
  movupd (%rax,%rsi,1),%xmm2
  movupd (%rax),%xmm1
  add    $0x10,%rax
  mulpd  %xmm7,%xmm2
  subpd  %xmm2,%xmm1
  movups %xmm1,-0x10(%rax)
  cmp    %r9,%rax
  jne    L284
  cmp    %ebx,%ebp
  je     L932
  mulsd  (%rcx),%xmm0
  movsd  (%rdx),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,(%rdx)
L932:
  add    $0x1,%r15d
  add    %r11,%r8
  sub    %r11,%rsi
  add    %r11,%rdi
  cmp    %r15d,0x3c(%rsp)
  jne    L962
  mov    0x78(%rsp),%r14
  mov    0x80(%rsp),%r12d
  mov    0x88(%rsp),%rbx
  mov    0x90(%rsp),%r11
  jmp    L716
L989:
  mulsd  %xmm4,%xmm1
  mov    %rsi,%rcx
  xor    %edx,%edx
  nopl   (%rax)
L324:
  movsd  (%rcx),%xmm2
  movsd  (%rax),%xmm0
  add    $0x1,%edx
  add    $0x8,%rcx
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm0
  movsd  %xmm0,(%rax)
  add    %r14,%rax
  cmp    %edx,%r13d
  jg     L324
  add    $0x8,%rdi
  cmp    %rdi,%r8
  je     L276
L843:
  mov    %rdi,%rax
  mov    %rsi,%r9
  mov    %rdi,%rcx
  xor    %edx,%edx
  movapd %xmm3,%xmm1
  nopw   0x0(%rax,%rax,1)
L424:
  movsd  (%r9),%xmm0
  mulsd  (%rcx),%xmm0
  add    $0x1,%edx
  add    %r14,%rcx
  add    $0x8,%r9
  addsd  %xmm0,%xmm1
  cmp    %edx,%r13d
  jg     L424
  jmp    L989
L249:
  mov    %r8,%rax
  xor    %edx,%edx
  nopl   0x0(%rax,%rax,1)
L1157:
  movsd  (%rax,%rsi,1),%xmm2
  movsd  (%rax),%xmm1
  add    $0x1,%edx
  add    $0x8,%rax
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,-0x8(%rax)
  cmp    %edx,%r13d
  jg     L1157
  jmp    L932
L1165:
  mov    0x58(%rsp),%r8
L416:
  mov    0x20(%rsp),%rcx
  mov    %r14,%rdx
  mov    %r11,%rax
  sub    $0x1,%rcx
  imul   %rcx,%rdx
  lea    0xf(%r15,%rcx,8),%rsi
  xor    %ecx,%ecx
  test   %r14,%r14
  cmovs  %rdx,%rcx
  add    %r14,%rcx
  add    %rbx,%rcx
  cmp    %rcx,%rsi
  mov    $0x7,%esi
  setb   %cl
  add    $0x7,%rdx
  test   %r14,%r14
  cmovs  %rsi,%rdx
  add    %r14,%rdx
  add    %rbx,%rdx
  cmp    %r11,%rdx
  setb   %dl
  or     %cl,%dl
  je     L88
  cmp    $0x8,%r9d
  jbe    L88
  mov    %ebp,%edx
  movapd %xmm5,%xmm1
  mov    0x28(%rsp),%rsi
  shr    %edx
  unpcklpd %xmm1,%xmm1
  sub    $0x1,%edx
  shl    $0x4,%rdx
  lea    0x18(%r15,%rdx,1),%rcx
  mov    %r10,%rdx
L1004:
  movupd (%rax),%xmm0
  add    $0x10,%rax
  mulpd  %xmm1,%xmm0
  movlpd %xmm0,(%rdx)
  movhpd %xmm0,(%rdx,%r14,1)
  add    %rsi,%rdx
  cmp    %rcx,%rax
  jne    L1004
  mov    %ebp,%eax
  or     $0x1,%eax
  test   $0x1,%bpl
  je     L1009
  mov    %eax,%edx
  cltq
  mulsd  (%r15,%rax,8),%xmm5
  imul   %r14,%rdx
  movsd  %xmm5,(%rbx,%rdx,1)
  jmp    L1009
L479:
  mov    0x70(%rsp),%rdi
  mov    (%rsp),%rax
  mov    0x10(%rsp),%rcx
  movq   D123(%rip),%xmm1
  lea    0x8(%rax,%rdi,8),%rsi
  mov    0x68(%rsp),%rdi
  jmp    L865
  cs nopw 0x0(%rax,%rax,1)
L513:
  add    $0x8,%rdi
  add    $0x8,%rcx
  cmp    %rsi,%rdi
  je     L307
L865:
  movsd  (%rdi),%xmm0
  comisd %xmm0,%xmm3
  jbe    L513
  xorpd  %xmm1,%xmm0
  mov    %rcx,%rax
  xor    %edx,%edx
  movsd  %xmm0,(%rdi)
  nopl   0x0(%rax,%rax,1)
L647:
  movsd  (%rax),%xmm0
  add    $0x1,%edx
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  add    %r14,%rax
  cmp    %edx,%r15d
  jne    L647
  jmp    L513
L929:
  mov    0x3c(%rsp),%r12d
  mov    0x50(%rsp),%rbp
  mov    %r15d,%ecx
  mov    0x48(%rsp),%r14
  mov    %r12d,%edx
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <ldumat@plt>
  mov    0x10(%rsp),%rbx
  mov    %r15d,%edx
  mov    %r14,%rdi
  mov    %rbx,%rsi
  call   <ldvmat@plt>
  mov    0x40(%rsp),%rsi
  mov    %r15d,%r9d
  mov    %rbx,%r8
  mov    (%rsp),%rdi
  mov    %r12d,%ecx
  mov    %rbp,%rdx
  call   <qrbdv@plt>
  jmp    L307
L445:
  mov    %r9d,%edx
  lea    0x10(%r15,%rdx,8),%rcx
  mov    %rbx,%rdx
  cs nopw 0x0(%rax,%rax,1)
L182:
  movsd  (%rax),%xmm0
  add    %r14,%rdx
  add    $0x8,%rax
  mulsd  %xmm5,%xmm0
  movsd  %xmm0,(%rdx)
  cmp    %rcx,%rax
  jne    L182
  jmp    L1009
L829:
  cmpl   $0x1,0x8(%rsp)
  je     L455
  jmp    L416
L60:
  lea    -0x2(%r13),%eax
  mov    %eax,0x58(%rsp)
  mov    0x30(%rsp),%rax
  lea    (%rbx,%rax,1),%rdi
  jmp    L1010
L88:
  mov    %r9d,%edx
  lea    0x10(%r15,%rdx,8),%rcx
  mov    %rbx,%rdx
L337:
  movsd  (%rax),%xmm0
  add    %r14,%rdx
  add    $0x8,%rax
  mulsd  %xmm5,%xmm0
  movsd  %xmm0,(%rdx)
  cmp    %rcx,%rax
  jne    L337
  jmp    L1009
L1188:
  mov    $0xffffffff,%eax
  jmp    L1172
L2:
  movapd %xmm1,%xmm0
  mov    %r11,0x88(%rsp)
  mov    %r10,0x80(%rsp)
  mov    %r9d,0x78(%rsp)
  mov    %r8,0x70(%rsp)
  movsd  %xmm1,0x58(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r9d
  mov    0x70(%rsp),%r8
  pxor   %xmm3,%xmm3
  mov    0x88(%rsp),%r11
  movsd  0x58(%rsp),%xmm1
  movapd %xmm0,%xmm2
  mov    0x80(%rsp),%r10
  movq   D123(%rip),%xmm4
  jmp    L17
L216:
  movapd %xmm1,%xmm0
  mov    %r11,0x88(%rsp)
  mov    %r10,0x80(%rsp)
  mov    %esi,0x78(%rsp)
  movsd  %xmm1,0x58(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%esi
  pxor   %xmm3,%xmm3
  mov    0x88(%rsp),%r11
  mov    0x80(%rsp),%r10
  movsd  0x58(%rsp),%xmm1
  movapd %xmm0,%xmm2
  jmp    L459
L1161:
  movapd %xmm1,%xmm0
  mov    %r11,0x78(%rsp)
  movsd  %xmm1,0x58(%rsp)
  call   <sqrt@plt>
  mov    0x78(%rsp),%r11
  movsd  0x58(%rsp),%xmm1
  pxor   %xmm3,%xmm3
  movapd %xmm0,%xmm2
  jmp    L894
```

tool_calls: name: read_data
arguments: label: D123
data_type: f32[4]
name: read_data
arguments: label: D43
data_type: byte[16]
name: read_data
arguments: label: D159
data_type: byte[16]
name: read_data
arguments: label: D110
data_type: byte[16]
name: read_data
arguments: label: D80
data_type: byte[16]
name: read_data
arguments: label: D39
data_type: f32[4]
name: read_data
arguments: label: D40
data_type: f64

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

tool: {"D43": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

tool: {"D159": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D110": [0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D80": [0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D39": [0.0,1.401298464324817e-45,2.802596928649634e-45,4.203895392974451e-45]}

tool: D40: 1

assistant: ```c
int sv2uv(double *d, double *a, double *u, int m, double *v, int n) {
  double *p, *p1, *q, *pp, *w, *e;
  double s, t, h, r, sv;
  int i, j, k, mm, nm, ms;
  if (m < n)
    return -1;
  w = (double *)calloc(m + n, sizeof(double));
  e = w + m;
  for (i = 0, mm = m, p = a; i < n; ++i, --mm, p += n + 1) {
    if (mm > 1) {
      sv = h = 0.;
      for (j = 0, q = p, s = 0.; j < mm; ++j, q += n) {
        w[j] = *q;
        s += *q * *q;
      }
      if (s > 0.) {
        h = sqrt(s);
        if (*p < 0.)
          h = -h;
        s += *p * h;
        s = 1. / s;
        t = 1. / (w[0] += h);
        sv = 1. + fabs(*p / h);
        for (k = 1, ms = n - i; k < ms; ++k) {
          for (j = 0, q = p + k, r = 0.; j < mm; q += n)
            r += w[j++] * *q;
          r = r * s;
          for (j = 0, q = p + k; j < mm; q += n)
            *q -= r * w[j++];
        }
        for (j = 1, q = p; j < mm;)
          *(q += n) = w[j++] * t;
      }
      *p = sv;
      d[i] = -h;
    }
    if (mm == 1)
      d[i] = *p;
  }
  ldumat(a, u, m, n);
  for (i = 0, q = a; i < n; ++i) {
    for (j = 0; j < n; ++j, ++q) {
      if (j < i)
        *q = 0.;
      else if (j == i)
        *q = d[i];
    }
  }
  for (i = 0, mm = n, nm = n - 1, p = a; i < n; ++i, --mm, --nm, p += n + 1) {
    if (i && mm > 1) {
      sv = h = 0.;
      for (j = 0, q = p, s = 0.; j < mm; ++j, q += n) {
        w[j] = *q;
        s += *q * *q;
      }
      if (s > 0.) {
        h = sqrt(s);
        if (*p < 0.)
          h = -h;
        s += *p * h;
        s = 1. / s;
        t = 1. / (w[0] += h);
        sv = 1. + fabs(*p / h);
        for (k = 1, ms = n - i; k < ms; ++k) {
          for (j = 0, q = p + k, r = 0.; j < mm; q += n)
            r += w[j++] * *q;
          for (j = 0, q = p + k, r *= s; j < mm; q += n)
            *q -= r * w[j++];
        }
        for (k = 0, p1 = u + i; k < m; ++k, p1 += m) {
          for (j = 0, q = p1, r = 0.; j < mm;)
            r += w[j++] * *q++;
          for (j = 0, q = p1, r *= s; j < mm;)
            *q++ -= r * w[j++];
        }
      }
      *p = sv;
      d[i] = -h;
    }
    if (mm == 1)
      d[i] = *p;
    p1 = p + 1;
    if (nm > 1) {
      sv = h = 0.;
      for (j = 0, q = p1, s = 0.; j < nm; ++j, ++q)
        s += *q * *q;
      if (s > 0.) {
        h = sqrt(s);
        if (*p1 < 0.)
          h = -h;
        sv = 1. + fabs(*p1 / h);
        s += *p1 * h;
        s = 1. / s;
        t = 1. / (*p1 += h);
        for (k = n, ms = n * (n - i); k < ms; k += n) {
          for (j = 0, q = p1, pp = p1 + k, r = 0.; j < nm; ++j)
            r += *q++ * *pp++;
          for (j = 0, q = p1, pp = p1 + k, r *= s; j < nm; ++j)
            *pp++ -= r * *q++;
        }
        for (j = 1, q = p1 + 1; j < nm; ++j)
          *q++ *= t;
      }
      *p1 = sv;
      e[i] = -h;
    }
    if (nm == 1)
      e[i] = *p1;
  }
  ldvmat(a, v, n);
  qrbdv(d, e, u, m, v, n);
  for (i = 0; i < n; ++i) {
    if (d[i] < 0.) {
      d[i] = -d[i];
      for (j = 0, p = v + i; j < n; ++j, p += n)
        *p = -*p;
    }
  }
  free(w);
  return 0;
}
```