user: Translate the below assembly code into C programming language:

```asm
<simplx>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %rsi,-0x50(%rbp)
  mov    %rdx,-0x58(%rbp)
  movss  %xmm0,-0x48(%rbp)
  mov    %ecx,-0x5c(%rbp)
  mov    %r8,-0x68(%rbp)
  mov    %r9,-0x70(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  mov    0x38(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x30(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L739
L401:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x90(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L739:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L401
  movss  D38(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L490
L302:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  movsd  %xmm3,-0xa8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x5c(%rbp),%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm0,%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x44(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  D27(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0xa8(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  mulss  -0xc(%rbp),%xmm1
  cvtss2sd %xmm1,%xmm1
  divsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm5,%xmm5
  cvtss2sd %xmm0,%xmm5
  movsd  %xmm5,-0xa8(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x5c(%rbp),%xmm0
  pxor   %xmm6,%xmm6
  cvtss2sd %xmm0,%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movsd  D27(%rip),%xmm1
  movq   %rax,%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0xa8(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  mulss  -0xc(%rbp),%xmm1
  cvtss2sd %xmm1,%xmm1
  divsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L490:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L302
  movl   $0x1,-0x18(%rbp)
  jmp    L91
L583:
  movl   $0x0,-0x14(%rbp)
  jmp    L617
L21:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x14(%rbp)
L617:
  mov    -0x14(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L21
  mov    -0x18(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L91:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L583
  movl   $0x0,-0x18(%rbp)
  jmp    L755
L199:
  movl   $0x0,-0x14(%rbp)
  jmp    L512
L63:
  mov    -0x18(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x68(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x14(%rbp)
L512:
  mov    -0x14(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L63
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x44(%rbp),%esi
  mov    -0xa0(%rbp),%rax
  mov    -0x98(%rbp),%r8
  mov    %rax,%rdi
  call   *%r8
  addl   $0x1,-0x18(%rbp)
L755:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L199
  nop
L11:
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x88(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x28(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L435
L225:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  comiss -0x2c(%rbp),%xmm0
  jb     L250
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x20(%rbp)
L250:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movss  -0x28(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jb     L574
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x28(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
L574:
  addl   $0x1,-0x18(%rbp)
L435:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L225
  movl   $0x0,-0x18(%rbp)
  jmp    L155
L357:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L155:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L357
  movl   $0x0,-0x18(%rbp)
  jmp    L149
L643:
  movl   $0x0,-0x14(%rbp)
  jmp    L474
L427:
  mov    -0x14(%rbp),%eax
  cmp    -0x20(%rbp),%eax
  je     L139
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x14(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
L139:
  addl   $0x1,-0x14(%rbp)
L474:
  mov    -0x14(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L427
  addl   $0x1,-0x18(%rbp)
L149:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L643
  movl   $0x0,-0x18(%rbp)
  jmp    L461
L815:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x44(%rbp),%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L461:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L815
  movl   $0x0,-0x18(%rbp)
  jmp    L594
L399:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm0,%xmm0
  mov    -0x20(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  cvtss2sd %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L594:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L399
  lea    -0x3c(%rbp),%rcx
  mov    -0x78(%rbp),%rdx
  mov    -0x44(%rbp),%esi
  mov    -0xa0(%rbp),%rax
  mov    -0x98(%rbp),%r8
  mov    %rax,%rdi
  call   *%r8
  movss  -0x3c(%rbp),%xmm1
  movss  -0x28(%rbp),%xmm0
  comiss %xmm1,%xmm0
  ja     L627
  movl   $0x0,-0x18(%rbp)
  jmp    L358
L178:
  mov    -0x18(%rbp),%eax
  cmp    -0x20(%rbp),%eax
  je     L666
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  -0x3c(%rbp),%xmm1
  comiss %xmm1,%xmm0
  ja     L496
  addl   $0x1,-0x18(%rbp)
L358:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L178
  jmp    L235
L666:
  nop
  jmp    L235
L496:
  nop
  jmp    L297
L609:
  nop
L297:
  movl   $0x0,-0x18(%rbp)
  jmp    L684
L111:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x90(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L684:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L111
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  -0x3c(%rbp),%xmm0
  movss  %xmm0,(%rax)
L714:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x24(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L775
L183:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  -0x24(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  addl   $0x1,-0x18(%rbp)
L775:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L183
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x5c(%rbp),%xmm1
  movss  -0x24(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x24(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x34(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L704
L457:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movaps %xmm0,%xmm1
  subss  -0x24(%rbp),%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  subss  -0x24(%rbp),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x34(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x34(%rbp)
  addl   $0x1,-0x18(%rbp)
L704:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L457
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x5c(%rbp),%xmm1
  movss  -0x34(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x34(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L668
L517:
  mov    -0x1c(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x50(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L668:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L517
  mov    -0x58(%rbp),%rax
  movss  -0x28(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x48(%rbp),%xmm0
  comiss -0x34(%rbp),%xmm0
  ja     L561
  movss  -0x34(%rbp),%xmm0
  subss  -0x30(%rbp),%xmm0
  movss  D6(%rip),%xmm1
  andps  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D41(%rip),%xmm0
  comisd %xmm1,%xmm0
  ja     L614
  movss  -0x34(%rbp),%xmm0
  movss  %xmm0,-0x30(%rbp)
  addl   $0x1,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  cmp    0x48(%rbp),%eax
  je     L308
  jmp    L11
L627:
  nop
  movl   $0x0,-0x18(%rbp)
  jmp    L372
L243:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm0,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  cvtss2sd %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L372:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L243
  lea    -0x38(%rbp),%rcx
  mov    -0x80(%rbp),%rdx
  mov    -0x44(%rbp),%esi
  mov    -0xa0(%rbp),%rax
  mov    -0x98(%rbp),%r8
  mov    %rax,%rdi
  call   *%r8
  movss  -0x38(%rbp),%xmm0
  comiss -0x28(%rbp),%xmm0
  jae    L609
L369:
  movl   $0x0,-0x18(%rbp)
  jmp    L366
L135:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x90(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L366:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L135
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  -0x38(%rbp),%xmm0
  movss  %xmm0,(%rax)
  jmp    L714
L235:
  movss  -0x3c(%rbp),%xmm1
  movss  -0x2c(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jb     L170
  movl   $0x0,-0x18(%rbp)
  jmp    L581
L19:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x78(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x90(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L581:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L19
  movss  -0x3c(%rbp),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movss  -0x2c(%rbp),%xmm0
  movss  %xmm0,(%rax)
L170:
  movl   $0x0,-0x18(%rbp)
  jmp    L634
L265:
  mov    -0x20(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D62(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D62(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L634:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L265
  lea    -0x38(%rbp),%rcx
  mov    -0x80(%rbp),%rdx
  mov    -0x44(%rbp),%esi
  mov    -0xa0(%rbp),%rax
  mov    -0x98(%rbp),%r8
  mov    %rax,%rdi
  call   *%r8
  movss  -0x3c(%rbp),%xmm1
  movss  -0x2c(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L487
  movss  -0x3c(%rbp),%xmm0
  jmp    L528
L487:
  movss  -0x2c(%rbp),%xmm0
L528:
  movss  -0x38(%rbp),%xmm1
  comiss %xmm0,%xmm1
  ja     L791
  jmp    L369
L791:
  movl   $0x0,-0x18(%rbp)
  jmp    L593
L691:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L593:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L691
  movl   $0x0,-0x14(%rbp)
  jmp    L779
L562:
  movl   $0x0,-0x18(%rbp)
  jmp    L527
L350:
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x18(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L527:
  mov    -0x18(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L350
  addl   $0x1,-0x14(%rbp)
L779:
  mov    -0x14(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L562
  movl   $0x0,-0x18(%rbp)
  jmp    L788
L205:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x5c(%rbp),%xmm1
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L788:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L205
  movl   $0x0,-0x14(%rbp)
  jmp    L741
L748:
  movl   $0x0,-0x18(%rbp)
  jmp    L631
L469:
  mov    -0x14(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm2
  mov    -0x1c(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  addss  %xmm2,%xmm1
  mov    -0x14(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L631:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L469
  addl   $0x1,-0x14(%rbp)
L741:
  mov    -0x14(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L748
  movl   $0x0,-0x14(%rbp)
  jmp    L662
L663:
  movl   $0x0,-0x18(%rbp)
  jmp    L569
L450:
  mov    -0x14(%rbp),%eax
  imul   0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x90(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x68(%rbp),%rax
  add    %rcx,%rax
  movss  (%rdx),%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x18(%rbp)
L569:
  mov    -0x18(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jl     L450
  mov    -0x14(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x88(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x44(%rbp),%esi
  mov    -0xa0(%rbp),%rax
  mov    -0x98(%rbp),%r8
  mov    %rax,%rdi
  call   *%r8
  addl   $0x1,-0x14(%rbp)
L662:
  mov    -0x14(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L663
  jmp    L714
L561:
  nop
  jmp    L13
L614:
  nop
  jmp    L13
L308:
  nop
L13:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L105
  call   <__stack_chk_fail@plt>
L105:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D38
type_infered: byte[4]
name: extract_symbolic_data
arguments: label: D27
type_infered: f64
name: extract_symbolic_data
arguments: label: D6
type_infered: dword
name: extract_symbolic_data
arguments: label: D41
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D62
type_infered: f64

tool: {"D38": [0xf3,0x04,0xb5,0x3f]}

tool: D27: 1

tool: D6: 2147483647

tool: {"D41": [0x23,0x42,0x92,0x0c,0xa1,0x9c,0xc7,0x3b]}

tool: D62: 0.5

assistant: ```c
void simplx(int n, float *x, float *f, float tol, int iw, float *xn, float *pdash, float *pastx, float *pdastx, float *y, float *p, int ldp, void (*funct)(void *, int, float *, float *), void *data, int maxcal) {
  float yerr, yerrold = 0.0, yh, yl, yast, ydast, fm, sqrt2;
  int iyhigh, iylow;
  int i, j, icount = 0;
  for (i = 0; i < n; i++)
    (p[(0) * ldp + (i)]) = x[i];
  sqrt2 = sqrt(2);
  for (i = 0; i < n; i++) {
    xn[i] = x[i] * (sqrt((float)iw) + n - 1) / (sqrt2 * n);
    pdash[i] = x[i] * (sqrt((float)iw) - 1.0) / (sqrt2 * n);
  }
  for (i = 1; i < iw; i++) {
    for (j = 0; j < n; j++)
      (p[(i)*ldp + (j)]) = (p[(0) * ldp + (j)]) + pdash[j];
    (p[(i)*ldp + (i - 1)]) += xn[i - 1];
  }
  for (i = 0; i < iw; i++) {
    for (j = 0; j < n; j++)
      xn[j] = (p[(i)*ldp + (j)]);
    funct(data, n, xn, &(y[i]));
  }
L110:
  yh = y[0];
  yl = y[0];
  for (i = 0; i < iw; i++) {
    if (yh <= y[i]) {
      yh = y[i];
      iyhigh = i;
    }
    if (yl >= y[i]) {
      yl = y[i];
      iylow = i;
    }
  }
  for (i = 0; i < n; i++)
    xn[i] = 0.0;
  for (i = 0; i < n; i++)
    for (j = 0; j < iw; j++)
      if (j != iyhigh)
        xn[i] += (p[(j)*ldp + (i)]);
  for (i = 0; i < n; i++)
    pdash[i] = xn[i] / (float)n;
  for (i = 0; i < n; i++)
    pastx[i] = 2.0 * pdash[i] - (p[(iyhigh)*ldp + (i)]);
  funct(data, n, pastx, &yast);
  if (yast < yl)
    goto L1000;
  for (i = 0; i < iw; i++) {
    if (i == iyhigh)
      break;
    if (yast < y[i])
      goto L2030;
  }
  goto L3000;
L2030:
  for (i = 0; i < n; i++)
    (p[(iyhigh)*ldp + (i)]) = pastx[i];
  y[iyhigh] = yast;
L2040:
  fm = 0.0;
  for (i = 0; i < iw; i++)
    fm += y[i];
  fm /= (float)iw;
  yerr = 0.0;
  for (i = 0; i < iw; i++)
    yerr += (y[i] - fm) * (y[i] - fm);
  yerr /= (float)iw;
  for (i = 0; i < n; i++)
    x[i] = (p[(iylow)*ldp + (i)]);
  *f = yl;
  if (yerr < tol)
    return;
  if (fabs(yerr - yerrold) < 1.e-20)
    return;
  yerrold = yerr;
  icount++;
  if (icount == maxcal)
    return;
  goto L110;
L1000:
  for (i = 0; i < n; i++)
    pdastx[i] = 2.0 * pastx[i] - pdash[i];
  funct(data, n, pdastx, &ydast);
  if (ydast >= yl)
    goto L2030;
L1030:
  for (i = 0; i < n; i++)
    (p[(iyhigh)*ldp + (i)]) = pdastx[i];
  y[iyhigh] = ydast;
  goto L2040;
L3000:
  if (yast <= yh) {
    for (i = 0; i < n; i++)
      (p[(iyhigh)*ldp + (i)]) = pastx[i];
    yh = yast;
    y[iyhigh] = yh;
  }
  for (i = 0; i < n; i++)
    pdastx[i] = 0.5 * (p[(iyhigh)*ldp + (i)]) + 0.5 * pdash[i];
  funct(data, n, pdastx, &ydast);
  if (ydast > ((((yast) < (yh)) ? (yast) : (yh)))) {
    for (i = 0; i < n; i++)
      xn[i] = 0.0;
    for (j = 0; j < n; j++)
      for (i = 0; i < iw; i++)
        xn[j] += (p[(i)*ldp + (j)]);
    for (i = 0; i < n; i++)
      xn[i] /= (float)iw;
    for (j = 0; j < iw; j++)
      for (i = 0; i < n; i++)
        (p[(j)*ldp + (i)]) -= xn[i] + (p[(iylow)*ldp + (i)]);
    for (j = 0; j < iw; j++) {
      for (i = 0; i < n; i++)
        xn[i] = (p[(j)*ldp + (i)]);
      funct(data, n, xn, &(y[j]));
    }
  } else
    goto L1030;
  goto L2040;
}
```