user: 这段汇编代码用C语言表示是什么样的:

```asm
<hugeglasso>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x100,%rsp
  mov    %rdi,-0xd8(%rbp)
  mov    %rsi,-0xe0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  mov    %ecx,-0xec(%rbp)
  movsd  %xmm0,-0xf8(%rbp)
  mov    -0xec(%rbp),%eax
  imul   %eax,%eax
  mov    %eax,-0xa8(%rbp)
  movsd  D37(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D37(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movl   $0x64,-0xa4(%rbp)
  movl   $0x2710,-0xa0(%rbp)
  movl   $0x2710,-0x9c(%rbp)
  mov    -0xa8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x30(%rbp)
  mov    -0xa8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x28(%rbp)
  mov    -0xec(%rbp),%eax
  cltq
  shl    $0x2,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0xec(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0xec(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  call   <malloc@plt>
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0xc8(%rbp)
  jmp    L397
L267:
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x98(%rbp)
  mov    -0x98(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xd8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x98(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  addsd  -0xf8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x98(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  movl   $0x0,-0xc4(%rbp)
  jmp    L14
L173:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L298
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L258
L298:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  divsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L658
L258:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
L658:
  addl   $0x1,-0xc4(%rbp)
L14:
  mov    -0xc4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L173
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc4(%rbp)
  jmp    L318
L464:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L229
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  je     L86
L229:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  divsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  jmp    L603
L86:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
L603:
  addl   $0x1,-0xc4(%rbp)
L318:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L464
  addl   $0x1,-0xc8(%rbp)
L397:
  mov    -0xc8(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L267
  movsd  D117(%rip),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  movl   $0x0,-0xb8(%rbp)
  jmp    L226
L44:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  movl   $0x0,-0xc8(%rbp)
  jmp    L435
L349:
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x98(%rbp)
  movl   $0x1,-0xbc(%rbp)
  movl   $0x0,-0xb4(%rbp)
  movl   $0x0,-0xc4(%rbp)
  jmp    L91
L508:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x10(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xc4(%rbp)
L91:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L508
  jmp    L291
L160:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x94(%rbp)
  movl   $0x0,-0xc4(%rbp)
  jmp    L685
L297:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  je     L73
  mov    -0xc4(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x84(%rbp)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xd8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L134
L100:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x88(%rbp)
  mov    -0x84(%rbp),%edx
  mov    -0x88(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x98(%rbp),%edx
  mov    -0x88(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x70(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  addl   $0x1,-0xc0(%rbp)
L134:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xc0(%rbp)
  jl     L100
  movsd  -0x70(%rbp),%xmm0
  comisd -0xf8(%rbp),%xmm0
  jbe    L263
  movsd  -0x70(%rbp),%xmm0
  subsd  -0xf8(%rbp),%xmm0
  mov    -0x84(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L274
L263:
  movsd  -0xf8(%rbp),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  comisd -0x70(%rbp),%xmm0
  jbe    L688
  movsd  -0x70(%rbp),%xmm0
  addsd  -0xf8(%rbp),%xmm0
  mov    -0x84(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  add    $0x1,%edx
  mov    %edx,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L274
L688:
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
L274:
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%ecx
  mov    -0xc4(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0xe8(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
L73:
  addl   $0x1,-0xc4(%rbp)
L685:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L297
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    -0x94(%rbp),%eax
  mov    %eax,-0xbc(%rbp)
  movsd  D117(%rip),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  movl   $0x0,-0xb0(%rbp)
  jmp    L641
L368:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movl   $0x0,-0xc4(%rbp)
  jmp    L79
L2:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x90(%rbp)
  cmpl   $0xffffffff,-0x90(%rbp)
  je     L441
  mov    -0x90(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x8c(%rbp)
  mov    -0x98(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xd8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x98(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x8c(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L109
L393:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x88(%rbp)
  mov    -0x8c(%rbp),%edx
  mov    -0x88(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x98(%rbp),%edx
  mov    -0x88(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x70(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  addl   $0x1,-0xc0(%rbp)
L109:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xc0(%rbp)
  jl     L393
  movsd  -0x70(%rbp),%xmm0
  comisd -0xf8(%rbp),%xmm0
  jbe    L177
  movsd  -0x70(%rbp),%xmm0
  subsd  -0xf8(%rbp),%xmm0
  mov    -0x8c(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  -0x58(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  jmp    L307
L177:
  movsd  -0xf8(%rbp),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  comisd -0x70(%rbp),%xmm0
  jbe    L48
  movsd  -0x70(%rbp),%xmm0
  addsd  -0xf8(%rbp),%xmm0
  mov    -0x8c(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  -0x58(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x58(%rbp)
  jmp    L307
L48:
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
L307:
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x98(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movq   D57(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%ecx
  mov    -0x90(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0xe8(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
L441:
  addl   $0x1,-0xc4(%rbp)
L79:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xc4(%rbp)
  jl     L2
  movsd  -0x60(%rbp),%xmm0
  divsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  addl   $0x1,-0xb0(%rbp)
L641:
  movsd  -0x78(%rbp),%xmm0
  comisd -0x40(%rbp),%xmm0
  jbe    L549
  mov    -0xb0(%rbp),%eax
  cmp    -0x9c(%rbp),%eax
  jl     L368
L549:
  movl   $0x0,-0xac(%rbp)
  movl   $0x0,-0xc4(%rbp)
  jmp    L62
L515:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x90(%rbp)
  mov    -0x90(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L495
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L495
  addl   $0x1,-0xac(%rbp)
  mov    -0x98(%rbp),%edx
  mov    -0x90(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0xffffffff,(%rax)
  jmp    L456
L495:
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  sub    -0xac(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x90(%rbp),%eax
  mov    %eax,(%rdx)
L456:
  addl   $0x1,-0xc4(%rbp)
L62:
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0xc4(%rbp)
  jl     L515
  mov    -0xc8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    -0xc8(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x20(%rbp),%rdx
  add    %rcx,%rdx
  sub    -0xac(%rbp),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0xb4(%rbp)
L291:
  cmpl   $0x0,-0xbc(%rbp)
  je     L210
  mov    -0xb4(%rbp),%eax
  cmp    -0xa0(%rbp),%eax
  jl     L160
L210:
  movl   $0x0,-0xc4(%rbp)
  jmp    L105
L184:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0xc4(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x84(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L36
L317:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc0(%rbp)
L36:
  mov    -0xc0(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L317
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc0(%rbp)
  jmp    L711
L374:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc0(%rbp)
L711:
  mov    -0xc0(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L374
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x84(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xc4(%rbp)
L105:
  mov    -0xc4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L184
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc4(%rbp)
  jmp    L689
L356:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0xc4(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,-0x84(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L214
L39:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc0(%rbp)
L214:
  mov    -0xc0(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L39
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc0(%rbp)
  jmp    L553
L536:
  mov    -0x98(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%edx
  mov    -0xc0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc0(%rbp)
L553:
  mov    -0xc0(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L536
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x84(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x68(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xc4(%rbp)
L689:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L356
  movl   $0x0,-0xc4(%rbp)
  jmp    L360
L137:
  mov    -0xc4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x98(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  subsd  %xmm1,%xmm0
  movq   D57(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  addl   $0x1,-0xc4(%rbp)
L360:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L137
  movsd  -0x48(%rbp),%xmm0
  addsd  -0x58(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  addl   $0x1,-0xc8(%rbp)
L435:
  mov    -0xc8(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L349
  movsd  -0x50(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  addl   $0x1,-0xb8(%rbp)
L226:
  movsd  -0x80(%rbp),%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L517
  mov    -0xb8(%rbp),%eax
  cmp    -0xa4(%rbp),%eax
  jl     L44
L517:
  movl   $0x0,-0xc8(%rbp)
  jmp    L71
L512:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movl   $0x0,-0xc4(%rbp)
  jmp    L253
L141:
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc4(%rbp)
L253:
  mov    -0xc4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L141
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc4(%rbp)
  jmp    L444
L41:
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x68(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  addl   $0x1,-0xc4(%rbp)
L444:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L41
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movapd %xmm0,%xmm1
  subsd  -0x68(%rbp),%xmm1
  movsd  D117(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc8(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0xc4(%rbp)
  jmp    L352
L224:
  movsd  -0x8(%rbp),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xc4(%rbp)
L352:
  mov    -0xc4(%rbp),%eax
  cmp    -0xc8(%rbp),%eax
  jl     L224
  mov    -0xc8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0xc4(%rbp)
  jmp    L384
L296:
  movsd  -0x8(%rbp),%xmm0
  movq   D42(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0xc8(%rbp),%eax
  imul   -0xec(%rbp),%eax
  mov    %eax,%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe8(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0xc4(%rbp)
L384:
  mov    -0xc4(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L296
  addl   $0x1,-0xc8(%rbp)
L71:
  mov    -0xc8(%rbp),%eax
  cmp    -0xec(%rbp),%eax
  jl     L512
  mov    -0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D37
type: byte[8]
name: read_data
arguments: tag: D42
type: byte[8]
name: read_data
arguments: tag: D117
type: byte[8]
name: read_data
arguments: tag: D57
type: qword

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

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

tool: {"D117": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D57: 9223372036854775807

assistant: ```c
void hugeglasso(const double *S, double *W, double *T, int d, double ilambda) {
  int d2;
  d2 = d * d;
  int i, j, k;
  int rss_idx, w_idx;
  int tmp_i;
  int tmp_j, tmp_a;
  int gap_int;
  double gap_ext, gap_act;
  double thol_act = 1e-4;
  double thol_ext = 1e-4;
  int MAX_ITER_EXT = 100;
  int MAX_ITER_INT = 10000;
  int MAX_ITER_ACT = 10000;
  int iter_ext, iter_int, iter_act;
  int *idx_a = (int *)malloc((d2) * sizeof(int));
  int *idx_i = (int *)malloc((d2) * sizeof(int));
  int *size_a = (int *)malloc(d * sizeof(int));
  double *w1 = (double *)malloc(d * sizeof(double));
  double *ww = (double *)malloc(d * sizeof(double));
  int size_a_prev;
  int junk_a;
  double r;
  double tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
  for (i = 0; i < d; i++) {
    tmp_i = i * d;
    W[tmp_i + i] = S[tmp_i + i] + ilambda;
    size_a[i] = 0;
    tmp1 = T[tmp_i + i];
    T[tmp_i + i] = 0;
    idx_i[tmp_i + i] = -1;
    for (j = 0; j < i; j++) {
      if (T[tmp_i + j] != 0) {
        idx_a[tmp_i + size_a[i]] = j;
        size_a[i]++;
        idx_i[tmp_i + j] = -1;
        T[tmp_i + j] = -T[tmp_i + j] / tmp1;
      } else
        idx_i[tmp_i + j] = 1;
    }
    for (j = i + 1; j < d; j++) {
      if (T[tmp_i + j] != 0) {
        idx_a[tmp_i + size_a[i]] = j;
        size_a[i]++;
        idx_i[tmp_i + j] = -1;
        T[tmp_i + j] = -T[tmp_i + j] / tmp1;
      } else
        idx_i[tmp_i + j] = 1;
    }
  }
  gap_ext = 1;
  iter_ext = 0;
  while (gap_ext > thol_ext && iter_ext < MAX_ITER_EXT) {
    tmp1 = 0;
    tmp6 = 0;
    tmp5 = 0;
    for (i = 0; i < d; i++) {
      tmp_i = i * d;
      gap_int = 1;
      iter_int = 0;
      for (j = 0; j < d; j++)
        ww[j] = T[tmp_i + j];
      while (gap_int != 0 && iter_int < MAX_ITER_INT) {
        size_a_prev = size_a[i];
        for (j = 0; j < d; j++) {
          if (idx_i[tmp_i + j] != -1) {
            tmp_j = j * d;
            r = S[tmp_i + j];
            for (k = 0; k < size_a[i]; k++) {
              rss_idx = idx_a[tmp_i + k];
              r = r - W[tmp_j + rss_idx] * T[tmp_i + rss_idx];
            }
            if (r > ilambda) {
              w1[j] = (r - ilambda) / W[tmp_j + j];
              idx_a[tmp_i + size_a[i]] = j;
              size_a[i] = size_a[i] + 1;
              idx_i[tmp_i + j] = -1;
            } else if (r < -ilambda) {
              w1[j] = (r + ilambda) / W[tmp_j + j];
              idx_a[tmp_i + size_a[i]] = j;
              size_a[i] = size_a[i] + 1;
              idx_i[tmp_i + j] = -1;
            } else
              w1[j] = 0;
            T[tmp_i + j] = w1[j];
          }
        }
        gap_int = size_a[i] - size_a_prev;
        gap_act = 1;
        iter_act = 0;
        while (gap_act > thol_act && iter_act < MAX_ITER_ACT) {
          tmp3 = 0;
          tmp4 = 0;
          for (j = 0; j < size_a[i]; j++) {
            w_idx = idx_a[tmp_i + j];
            if (w_idx != -1) {
              tmp_a = w_idx * d;
              r = S[tmp_i + w_idx] + T[tmp_i + w_idx] * W[tmp_a + w_idx];
              for (k = 0; k < size_a[i]; k++) {
                rss_idx = idx_a[tmp_i + k];
                r = r - W[tmp_a + rss_idx] * T[tmp_i + rss_idx];
              }
              if (r > ilambda) {
                w1[w_idx] = (r - ilambda) / W[tmp_a + w_idx];
                tmp4 += w1[w_idx];
              } else if (r < -ilambda) {
                w1[w_idx] = (r + ilambda) / W[tmp_a + w_idx];
                tmp4 -= w1[w_idx];
              } else
                w1[w_idx] = 0;
              tmp3 = tmp3 + fabs(w1[w_idx] - T[tmp_i + w_idx]);
              T[tmp_i + w_idx] = w1[w_idx];
            }
          }
          gap_act = tmp3 / tmp4;
          iter_act++;
        }
        junk_a = 0;
        for (j = 0; j < size_a[i]; j++) {
          w_idx = idx_a[tmp_i + j];
          if (w1[w_idx] == 0) {
            junk_a++;
            idx_i[tmp_i + w_idx] = 1;
            idx_a[tmp_i + j] = -1;
          } else
            idx_a[tmp_i + j - junk_a] = w_idx;
        }
        size_a[i] = size_a[i] - junk_a;
        iter_int++;
      }
      for (j = 0; j < i; j++) {
        tmp2 = 0;
        tmp_j = j * d;
        for (k = 0; k < i; k++)
          tmp2 = tmp2 + T[tmp_i + k] * W[tmp_j + k];
        for (k = i + 1; k < d; k++)
          tmp2 = tmp2 + T[tmp_i + k] * W[tmp_j + k];
        W[tmp_i + j] = tmp2;
        W[tmp_j + i] = tmp2;
      }
      for (j = i + 1; j < d; j++) {
        tmp2 = 0;
        tmp_j = j * d;
        for (k = 0; k < i; k++)
          tmp2 = tmp2 + T[tmp_i + k] * W[tmp_j + k];
        for (k = i + 1; k < d; k++)
          tmp2 = tmp2 + T[tmp_i + k] * W[tmp_j + k];
        W[tmp_i + j] = tmp2;
        W[tmp_j + i] = tmp2;
      }
      for (j = 0; j < d; j++)
        tmp5 = tmp5 + fabs(ww[j] - T[tmp_i + j]);
      tmp6 = tmp6 + tmp4;
    }
    gap_ext = tmp5 / tmp6;
    iter_ext++;
  }
  for (i = 0; i < d; i++) {
    tmp2 = 0;
    for (j = 0; j < i; j++)
      tmp2 = tmp2 + W[i * d + j] * T[i * d + j];
    for (j = i + 1; j < d; j++)
      tmp2 = tmp2 + W[i * d + j] * T[i * d + j];
    tmp1 = 1 / (W[i * d + i] - tmp2);
    T[i * d + i] = tmp1;
    for (j = 0; j < i; j++)
      T[i * d + j] = -tmp1 * T[i * d + j];
    for (j = i + 1; j < d; j++)
      T[i * d + j] = -tmp1 * T[i * d + j];
  }
  free(idx_a);
  free(idx_i);
  free(size_a);
  free(w1);
  free(ww);
}
```