user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<initGeneric>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %edi,-0x94(%rbp)
  mov    %rsi,-0xa0(%rbp)
  mov    %edx,-0x98(%rbp)
  mov    %rcx,-0xa8(%rbp)
  mov    %r8,-0xb0(%rbp)
  mov    %r9,-0xb8(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x58(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x50(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x48(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x40(%rbp)
  movl   $0x0,-0x84(%rbp)
  jmp    L181
L647:
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  movslq %eax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x40(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,(%rax)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  movslq %eax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x48(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,(%rax)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  movslq %eax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x50(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,(%rax)
  addl   $0x1,-0x84(%rbp)
L181:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L647
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x38(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x30(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x28(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x20(%rbp)
  mov    -0x94(%rbp),%eax
  cltq
  shl    $0x3,%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_malloc@plt>
  cltq
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0x74(%rbp)
  jmp    L441
L101:
  mov    -0x74(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x74(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x38(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x74(%rbp)
L441:
  mov    -0x74(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L101
  movl   $0x0,-0x84(%rbp)
  movl   $0x0,-0x80(%rbp)
  jmp    L286
L703:
  movl   $0x0,-0x7c(%rbp)
  jmp    L200
L602:
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x7c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x7c(%rbp)
L200:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L602
  addl   $0x1,-0x80(%rbp)
L286:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L703
  movl   $0x0,-0x80(%rbp)
  jmp    L170
L543:
  mov    -0x80(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x7c(%rbp)
  jmp    L555
L95:
  mov    -0x84(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x84(%rbp)
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rax,%rdx
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x50(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x7c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x7c(%rbp)
L555:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L95
  addl   $0x1,-0x80(%rbp)
L170:
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x80(%rbp)
  jl     L543
  movl   $0x0,-0x80(%rbp)
  jmp    L65
L273:
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x7c(%rbp)
  jmp    L172
L269:
  mov    -0x7c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x50(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x7c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x7c(%rbp)
L172:
  mov    -0x7c(%rbp),%eax
  cmp    -0x80(%rbp),%eax
  jl     L269
  addl   $0x1,-0x80(%rbp)
L65:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L273
  mov    0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x80(%rbp)
  jmp    L149
L198:
  movl   $0x0,-0x7c(%rbp)
  jmp    L635
L304:
  mov    0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x7c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm2
  mov    -0x7c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm2,%xmm0
  mov    0x30(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x7c(%rbp)
L635:
  mov    -0x7c(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L304
  addl   $0x1,-0x80(%rbp)
L149:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L198
  movl   $0x0,-0x78(%rbp)
  movl   $0x0,-0x84(%rbp)
  jmp    L678
L87:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x84(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x84(%rbp)
L678:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L87
  movl   $0x0,-0x84(%rbp)
  jmp    L705
L413:
  mov    -0x84(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x80(%rbp)
  jmp    L396
L630:
  mov    -0x78(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x78(%rbp)
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rdx
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x40(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x84(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movq   %rdx,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x84(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x80(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x84(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x84(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L396:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L630
  addl   $0x1,-0x84(%rbp)
L705:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L413
  mov    -0x30(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x94(%rbp),%esi
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <makeEigen@plt>
  movl   $0x0,-0x84(%rbp)
  jmp    L459
L580:
  movl   $0x0,-0x80(%rbp)
  jmp    L542
L366:
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L542:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L366
  addl   $0x1,-0x84(%rbp)
L459:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L580
  movl   $0x0,-0x84(%rbp)
  jmp    L57
L605:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd D33(%rip),%xmm0
  jbe    L390
  cmpl   $0x0,-0x84(%rbp)
  je     L518
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,(%rdx)
  mov    -0x28(%rbp),%rax
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x80(%rbp)
  jmp    L536
L477:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x40(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movsd  (%rax),%xmm0
  movsd  -0x60(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  addl   $0x1,-0x80(%rbp)
L536:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L477
  movl   $0x0,-0x80(%rbp)
  jmp    L684
L701:
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x40(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  divsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L684:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L701
  jmp    L518
L390:
  addl   $0x1,-0x84(%rbp)
L57:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L605
  jmp    L398
L518:
  nop
L398:
  movl   $0x0,-0x84(%rbp)
  jmp    L513
L75:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movq   D16(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x80(%rbp)
  jmp    L301
L257:
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x84(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x48(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L301:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L257
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  D14(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x84(%rbp)
L513:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L75
  movl   $0x1,-0x74(%rbp)
  jmp    L384
L362:
  mov    -0x74(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x74(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rcx
  mov    -0xb0(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x74(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  movzbl %al,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <assert@plt>
  addl   $0x1,-0x74(%rbp)
L384:
  mov    -0x74(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L362
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  movl   $0x0,-0x84(%rbp)
  jmp    L1
L682:
  movl   $0x0,-0x80(%rbp)
  jmp    L706
L308:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x80(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x68(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    %rdx,-0x68(%rbp)
  movsd  (%rcx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L706:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L308
  addl   $0x1,-0x84(%rbp)
L1:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L682
  movl   $0x0,-0x84(%rbp)
  jmp    L103
L544:
  movl   $0x1,-0x80(%rbp)
  jmp    L222
L584:
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x94(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x84(%rbp),%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L222:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L584
  addl   $0x1,-0x84(%rbp)
L103:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L544
  movl   $0x0,-0x84(%rbp)
  jmp    L71
L576:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x6c(%rbp)
  movl   $0x0,-0x80(%rbp)
  jmp    L305
L582:
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x80(%rbp)
L305:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L582
  cmpl   $0x0,-0x6c(%rbp)
  je     L194
  movl   $0x0,-0x80(%rbp)
  jmp    L639
L256:
  mov    -0x80(%rbp),%eax
  mov    -0x6c(%rbp),%edx
  mov    %eax,%ecx
  shr    %cl,%edx
  mov    %edx,%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L233
  movl   $0x0,-0x70(%rbp)
  jmp    L220
L545:
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x80(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x70(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x70(%rbp)
L220:
  mov    -0x70(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L545
L233:
  addl   $0x1,-0x80(%rbp)
L639:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L256
L194:
  addl   $0x1,-0x84(%rbp)
L71:
  mov    -0x84(%rbp),%eax
  cmp    -0x98(%rbp),%eax
  jl     L576
  movl   $0x0,-0x84(%rbp)
  jmp    L13
L50:
  movl   $0x0,-0x80(%rbp)
  jmp    L161
L360:
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd D8(%rip),%xmm0
  jbe    L328
  mov    -0x84(%rbp),%eax
  imul   -0x94(%rbp),%eax
  mov    %eax,%edx
  mov    -0x80(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x28(%rbp),%rax
  add    %rdx,%rax
  movsd  D8(%rip),%xmm0
  movsd  %xmm0,(%rax)
L328:
  addl   $0x1,-0x80(%rbp)
L161:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L360
  addl   $0x1,-0x84(%rbp)
L13:
  mov    -0x84(%rbp),%eax
  cmp    -0x98(%rbp),%eax
  jl     L50
  movl   $0x0,-0x84(%rbp)
  jmp    L254
L691:
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x84(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  addl   $0x1,-0x84(%rbp)
L254:
  mov    -0x84(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jl     L691
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <rax_free@plt>
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D33
datatype: byte[16]
name: retrieve_data
arguments: data_label: D16
datatype: f32[2]
name: retrieve_data
arguments: data_label: D14
datatype: f32[2]
name: retrieve_data
arguments: data_label: D8
datatype: f64

tool: {"D33": [0x3a,0x8c,0x30,0xe2,0x8e,0x79,0x45,0xbe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

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

tool: {"D14": [0.0,1.875]}

tool: D8: 0.999999999

assistant: ```c
void initGeneric(const int n, const unsigned int *valueVector, int valueVectorLength, double *fracchanges, double *ext_EIGN, double *EV, double *EI, double *frequencies, double *ext_initialRates, double *tipVector, int model) {
  double **r, **a, **EIGV, *initialRates = ext_initialRates, *f, *e, *d, *invfreq, *EIGN, *eptr;
  int i, j, k, m, l;
  r = (double **)rax_malloc(n * sizeof(double *));
  EIGV = (double **)rax_malloc(n * sizeof(double *));
  a = (double **)rax_malloc(n * sizeof(double *));
  for (i = 0; i < n; i++) {
    a[i] = (double *)rax_malloc(n * sizeof(double));
    EIGV[i] = (double *)rax_malloc(n * sizeof(double));
    r[i] = (double *)rax_malloc(n * sizeof(double));
  }
  f = (double *)rax_malloc(n * sizeof(double));
  e = (double *)rax_malloc(n * sizeof(double));
  d = (double *)rax_malloc(n * sizeof(double));
  invfreq = (double *)rax_malloc(n * sizeof(double));
  EIGN = (double *)rax_malloc(n * sizeof(double));
  for (l = 0; l < n; l++)
    f[l] = frequencies[l];
  i = 0;
  for (j = 0; j < n; j++)
    for (k = 0; k < n; k++)
      r[j][k] = 0.0;
  for (j = 0; j < n - 1; j++)
    for (k = j + 1; k < n; k++)
      r[j][k] = initialRates[i++];
  for (j = 0; j < n; j++) {
    r[j][j] = 0.0;
    for (k = 0; k < j; k++)
      r[j][k] = r[k][j];
  }
  fracchanges[model] = 0.0;
  for (j = 0; j < n; j++)
    for (k = 0; k < n; k++)
      fracchanges[model] += f[j] * r[j][k] * f[k];
  m = 0;
  for (i = 0; i < n; i++)
    a[i][i] = 0;
  for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) {
      double factor = initialRates[m++];
      a[i][j] = a[j][i] = factor * sqrt(f[i] * f[j]);
      a[i][i] -= factor * f[j];
      a[j][j] -= factor * f[i];
    }
  }
  makeEigen(a, n, d, e);
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
      a[i][j] *= sqrt(f[j]);
  for (i = 0; i < n; i++) {
    if (d[i] > -1e-8) {
      if (i != 0) {
        double tmp = d[i], sum = 0;
        d[i] = d[0];
        d[0] = tmp;
        for (j = 0; j < n; j++) {
          tmp = a[i][j];
          a[i][j] = a[0][j];
          sum += (a[0][j] = tmp);
        }
        for (j = 0; j < n; j++)
          a[0][j] /= sum;
      }
      break;
    }
  }
  for (i = 0; i < n; i++) {
    EIGN[i] = -d[i];
    for (j = 0; j < n; j++)
      EIGV[i][j] = a[j][i];
    invfreq[i] = 1 / EIGV[i][0];
  }
  for (l = 1; l < n; l++) {
    ext_EIGN[(l - 1)] = EIGN[l];
    assert(ext_EIGN[(l - 1)] > 0.0);
  }
  eptr = EV;
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) {
      *eptr++ = EIGV[i][j];
    }
  for (i = 0; i < n; i++)
    for (j = 1; j < n; j++)
      EI[i * (n - 1) + (j - 1)] = EV[i * n + j] * invfreq[i];
  for (i = 0; i < valueVectorLength; i++) {
    unsigned int value = valueVector[i];
    for (j = 0; j < n; j++)
      tipVector[i * n + j] = 0;
    if (value > 0) {
      for (j = 0; j < n; j++) {
        if ((value >> j) & 1) {
          int l;
          for (l = 0; l < n; l++)
            tipVector[i * n + l] += EIGV[j][l];
        }
      }
    }
  }
  for (i = 0; i < valueVectorLength; i++) {
    for (j = 0; j < n; j++)
      if (tipVector[i * n + j] > 0.999999999)
        tipVector[i * n + j] = 0.999999999;
  }
  for (i = 0; i < n; i++) {
    rax_free(EIGV[i]);
    rax_free(a[i]);
    rax_free(r[i]);
  }
  rax_free(r);
  rax_free(a);
  rax_free(EIGV);
  rax_free(f);
  rax_free(e);
  rax_free(d);
  rax_free(invfreq);
  rax_free(EIGN);
}
```