user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x9000(%rsp),%r11
L505:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L505
  sub    $0xd60,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%eax
  call   <check_offloading@plt>
  movl   $0x0,-0x9d58(%rbp)
  jmp    L510
L1036:
  mov    -0x9d58(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x9d58(%rbp),%xmm0
  mov    -0x9d58(%rbp),%eax
  cltq
  movsd  %xmm0,-0x3e30(%rbp,%rax,8)
  mov    -0x9d58(%rbp),%eax
  neg    %eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0x9d58(%rbp),%eax
  cltq
  movsd  %xmm0,-0x1f20(%rbp,%rax,8)
  addl   $0x1,-0x9d58(%rbp)
L510:
  cmpl   $0x3df,-0x9d58(%rbp)
  jle    L1036
  movq   $0x0,-0x9b70(%rbp)
  mov    $0x0,%eax
  call   <omp_is_initial_device@plt>
  mov    %rax,-0x9b70(%rbp)
  movl   $0x300,-0x9c74(%rbp)
  movl   $0x20,-0x9c70(%rbp)
  cmpq   $0x0,-0x9b70(%rbp)
  je     L1428
  mov    -0x9c70(%rbp),%eax
  jmp    L1494
L1428:
  mov    -0x9c74(%rbp),%eax
L1494:
  mov    %eax,-0x9c6c(%rbp)
  movl   $0x0,-0x9d54(%rbp)
  movl   $0x0,-0x9d50(%rbp)
  jmp    L548
L165:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c68(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9c64(%rbp)
  mov    -0x9c68(%rbp),%eax
  imul   -0x9c64(%rbp),%eax
  mov    %eax,-0x9c60(%rbp)
  mov    -0x9c68(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c64(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c5c(%rbp)
  mov    -0x9c5c(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c5c(%rbp)
  mov    -0x9c60(%rbp),%eax
  mov    %eax,-0x9d4c(%rbp)
  jmp    L1490
L398:
  mov    -0x9d4c(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d4c(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d4c(%rbp)
L1490:
  mov    -0x9d4c(%rbp),%eax
  cmp    -0x9c5c(%rbp),%eax
  jl     L398
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9bc0(%rbp)
  mov    -0x9c68(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d48(%rbp)
  jmp    L1081
L1521:
  mov    -0x9d48(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9bc0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9bc0(%rbp)
  addl   $0x1,-0x9d48(%rbp)
L1081:
  cmpl   $0x3df,-0x9d48(%rbp)
  jle    L1521
  mov    -0x9c68(%rbp),%eax
  cltq
  movsd  -0x9bc0(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9bc0(%rbp)
  mov    -0x9c68(%rbp),%eax
  add    $0x2,%eax
  mov    %eax,-0x9d44(%rbp)
  jmp    L663
L990:
  mov    -0x9d44(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9bc0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9bc0(%rbp)
  addl   $0x1,-0x9d44(%rbp)
L663:
  cmpl   $0x3df,-0x9d44(%rbp)
  jle    L990
  mov    -0x9c68(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9bc0(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c68(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c68(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c68(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  movl   $0x0,-0x9d3c(%rbp)
  movl   $0x0,-0x9d40(%rbp)
  jmp    L1215
L1141:
  mov    -0x9d40(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm0
  mov    -0x9d40(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L1213
  ucomisd %xmm1,%xmm0
  je     L310
L1213:
  mov    -0x9d40(%rbp),%eax
  cltq
  mov    -0x7c50(%rbp,%rax,8),%rdx
  mov    -0x9d40(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x9d40(%rbp),%eax
  movq   %rdx,%xmm0
  lea    D111(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9d54(%rbp)
  mov    -0x9d3c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9d3c(%rbp)
  cmp    $0xa,%eax
  jg     L504
L310:
  addl   $0x1,-0x9d40(%rbp)
L1215:
  cmpl   $0x0,-0x9d40(%rbp)
  jle    L1141
  jmp    L1250
L504:
  nop
L1250:
  addl   $0x1,-0x9d50(%rbp)
L548:
  cmpl   $0x0,-0x9d50(%rbp)
  jg     L966
  cmpl   $0x0,-0x9d54(%rbp)
  je     L165
L966:
  cmpl   $0x0,-0x9d54(%rbp)
  je     L306
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L778
L306:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L778:
  movl   $0x1,-0x9d38(%rbp)
  jmp    L1066
L818:
  mov    -0x9d38(%rbp),%eax
  mov    %eax,-0x9b64(%rbp)
  movl   $0x0,-0x9d34(%rbp)
  movl   $0x0,-0x9d30(%rbp)
  jmp    L652
L630:
  movl   $0x0,-0x9d2c(%rbp)
  jmp    L623
L693:
  mov    -0x9d2c(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  addl   $0x1,-0x9d2c(%rbp)
L623:
  cmpl   $0x3df,-0x9d2c(%rbp)
  jle    L693
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c10(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9c0c(%rbp)
  mov    -0x9c10(%rbp),%eax
  imul   -0x9c0c(%rbp),%eax
  mov    %eax,-0x9c08(%rbp)
  mov    -0x9c10(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c0c(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c04(%rbp)
  mov    -0x9c04(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c04(%rbp)
  mov    -0x9c08(%rbp),%eax
  mov    %eax,-0x9d28(%rbp)
  jmp    L47
L140:
  mov    -0x9d28(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d28(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d28(%rbp)
L47:
  mov    -0x9d28(%rbp),%eax
  cmp    -0x9c04(%rbp),%eax
  jl     L140
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9bb8(%rbp)
  mov    -0x9c10(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d24(%rbp)
  jmp    L1117
L1208:
  mov    -0x9d24(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9bb8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9bb8(%rbp)
  addl   $0x1,-0x9d24(%rbp)
L1117:
  cmpl   $0x3df,-0x9d24(%rbp)
  jle    L1208
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  -0x9bb8(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c10(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c10(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c10(%rbp)
  jge    L925
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9c10(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L925:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c00(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9bfc(%rbp)
  mov    -0x9c00(%rbp),%eax
  imul   -0x9bfc(%rbp),%eax
  mov    %eax,-0x9bf8(%rbp)
  mov    -0x9c00(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9bfc(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9bf4(%rbp)
  mov    -0x9bf4(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9bf4(%rbp)
  mov    -0x9bf8(%rbp),%eax
  mov    %eax,-0x9d20(%rbp)
  jmp    L648
L1352:
  mov    -0x9d20(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d20(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d20(%rbp)
L648:
  mov    -0x9d20(%rbp),%eax
  cmp    -0x9bf4(%rbp),%eax
  jl     L1352
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9bb0(%rbp)
  mov    -0x9c00(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d1c(%rbp)
  jmp    L1506
L1187:
  mov    -0x9d1c(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9bb0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9bb0(%rbp)
  addl   $0x1,-0x9d1c(%rbp)
L1506:
  cmpl   $0x3df,-0x9d1c(%rbp)
  jle    L1187
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  -0x9bb0(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c00(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c00(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c00(%rbp)
  jge    L147
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9c00(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L147:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9bf0(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9bec(%rbp)
  mov    -0x9bf0(%rbp),%eax
  imul   -0x9bec(%rbp),%eax
  mov    %eax,-0x9be8(%rbp)
  mov    -0x9bf0(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9bec(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9be4(%rbp)
  mov    -0x9be4(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9be4(%rbp)
  mov    -0x9be8(%rbp),%eax
  mov    %eax,-0x9d18(%rbp)
  jmp    L1127
L715:
  mov    -0x9d18(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d18(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d18(%rbp)
L1127:
  mov    -0x9d18(%rbp),%eax
  cmp    -0x9be4(%rbp),%eax
  jl     L715
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9ba8(%rbp)
  mov    -0x9bf0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d14(%rbp)
  jmp    L685
L1114:
  mov    -0x9d14(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9ba8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9ba8(%rbp)
  addl   $0x1,-0x9d14(%rbp)
L685:
  cmpl   $0x3df,-0x9d14(%rbp)
  jle    L1114
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  -0x9ba8(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9bf0(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9bf0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9bf0(%rbp)
  jge    L1174
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9bf0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L1174:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9be0(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%ecx
  mov    $0x3e0,%eax
  cltd
  idiv   %ecx
  mov    %eax,-0x9bdc(%rbp)
  mov    -0x9be0(%rbp),%eax
  imul   -0x9bdc(%rbp),%eax
  mov    %eax,-0x9bd8(%rbp)
  mov    -0x9be0(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9bdc(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9bd4(%rbp)
  mov    -0x9bd4(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9bd4(%rbp)
  mov    -0x9bd8(%rbp),%eax
  mov    %eax,-0x9d10(%rbp)
  jmp    L241
L600:
  mov    -0x9d10(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d10(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d10(%rbp)
L241:
  mov    -0x9d10(%rbp),%eax
  cmp    -0x9bd4(%rbp),%eax
  jl     L600
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9ba0(%rbp)
  mov    -0x9be0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d0c(%rbp)
  jmp    L435
L1467:
  mov    -0x9d0c(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9ba0(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9ba0(%rbp)
  addl   $0x1,-0x9d0c(%rbp)
L435:
  cmpl   $0x3df,-0x9d0c(%rbp)
  jle    L1467
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  -0x9ba0(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9be0(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9be0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9be0(%rbp)
  jge    L1524
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9be0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L1524:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9bd0(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9bcc(%rbp)
  mov    -0x9bd0(%rbp),%eax
  imul   -0x9bcc(%rbp),%eax
  mov    %eax,-0x9bc8(%rbp)
  mov    -0x9bd0(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9bcc(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9bc4(%rbp)
  mov    -0x9bc4(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9bc4(%rbp)
  mov    -0x9bc8(%rbp),%eax
  mov    %eax,-0x9d08(%rbp)
  jmp    L897
L1050:
  mov    -0x9d08(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9d08(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9d08(%rbp)
L897:
  mov    -0x9d08(%rbp),%eax
  cmp    -0x9bc4(%rbp),%eax
  jl     L1050
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9b98(%rbp)
  mov    -0x9bd0(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9d04(%rbp)
  jmp    L1047
L948:
  mov    -0x9d04(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9b98(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9b98(%rbp)
  addl   $0x1,-0x9d04(%rbp)
L1047:
  cmpl   $0x3df,-0x9d04(%rbp)
  jle    L948
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  -0x9b98(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9bd0(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9bd0(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9bd0(%rbp)
  jge    L1443
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9bd0(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L1443:
  movl   $0x0,-0x9cfc(%rbp)
  movl   $0x0,-0x9d00(%rbp)
  jmp    L328
L849:
  mov    -0x9d00(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm0
  ucomisd D162(%rip),%xmm0
  jp     L228
  ucomisd D162(%rip),%xmm0
  je     L572
L228:
  mov    -0x9d00(%rbp),%eax
  cltq
  mov    -0x7c50(%rbp,%rax,8),%rdx
  mov    -0x9d00(%rbp),%eax
  movq   %rdx,%xmm0
  mov    $0x5,%ecx
  lea    D111(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9d34(%rbp)
  mov    -0x9cfc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9cfc(%rbp)
  cmp    $0xa,%eax
  jg     L420
L572:
  addl   $0x1,-0x9d00(%rbp)
L328:
  mov    -0x9b64(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x9d00(%rbp)
  jl     L849
  jmp    L801
L420:
  nop
L801:
  addl   $0x1,-0x9d30(%rbp)
L652:
  cmpl   $0x0,-0x9d30(%rbp)
  jg     L1380
  cmpl   $0x0,-0x9d34(%rbp)
  je     L630
L1380:
  cmpl   $0x0,-0x9d34(%rbp)
  je     L72
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L325
L72:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L325:
  addl   $0x1,-0x9d38(%rbp)
L1066:
  mov    -0x9d38(%rbp),%eax
  cmp    -0x9c6c(%rbp),%eax
  jle    L818
  movl   $0x0,-0x9cf8(%rbp)
  jmp    L1292
L618:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x9cf8(%rbp)
L1292:
  mov    -0x9c74(%rbp),%eax
  sub    -0x9c6c(%rbp),%eax
  cmp    %eax,-0x9cf8(%rbp)
  jl     L618
  movl   $0x0,-0x9cf4(%rbp)
  movl   $0x0,-0x9cf0(%rbp)
  jmp    L469
L339:
  movl   $0x0,-0x9cec(%rbp)
  jmp    L487
L334:
  mov    -0x9cec(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  addl   $0x1,-0x9cec(%rbp)
L487:
  cmpl   $0x3df,-0x9cec(%rbp)
  jle    L334
  movl   $0x2,-0x9ce8(%rbp)
  jmp    L1401
L1132:
  mov    -0x9ce8(%rbp),%eax
  mov    %eax,-0x9b64(%rbp)
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c58(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%ecx
  mov    $0x3e0,%eax
  cltd
  idiv   %ecx
  mov    %eax,-0x9c54(%rbp)
  mov    -0x9c58(%rbp),%eax
  imul   -0x9c54(%rbp),%eax
  mov    %eax,-0x9c50(%rbp)
  mov    -0x9c58(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c54(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c4c(%rbp)
  mov    -0x9c4c(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c4c(%rbp)
  mov    -0x9c50(%rbp),%eax
  mov    %eax,-0x9ce4(%rbp)
  jmp    L816
L631:
  mov    -0x9ce4(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9ce4(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9ce4(%rbp)
L816:
  mov    -0x9ce4(%rbp),%eax
  cmp    -0x9c4c(%rbp),%eax
  jl     L631
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9b90(%rbp)
  mov    -0x9c58(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9ce0(%rbp)
  jmp    L868
L164:
  mov    -0x9ce0(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9b90(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9b90(%rbp)
  addl   $0x1,-0x9ce0(%rbp)
L868:
  cmpl   $0x3df,-0x9ce0(%rbp)
  jle    L164
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  -0x9b90(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c58(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c58(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c58(%rbp)
  jge    L74
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9c58(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L74:
  addl   $0x1,-0x9ce8(%rbp)
L1401:
  mov    -0x9ce8(%rbp),%eax
  cmp    -0x9c6c(%rbp),%eax
  jle    L1132
  movl   $0x0,-0x9cd8(%rbp)
  movl   $0x0,-0x9cdc(%rbp)
  jmp    L1431
L1332:
  mov    -0x9cdc(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm0
  mov    -0x9c6c(%rbp),%eax
  sub    -0x9cdc(%rbp),%eax
  sub    $0x1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L938
  ucomisd %xmm1,%xmm0
  je     L1528
L938:
  mov    -0x9cdc(%rbp),%eax
  cltq
  mov    -0x7c50(%rbp,%rax,8),%rdx
  mov    -0x9c6c(%rbp),%eax
  sub    -0x9cdc(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x9cdc(%rbp),%eax
  movq   %rdx,%xmm0
  lea    D111(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9cf4(%rbp)
  mov    -0x9cd8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9cd8(%rbp)
  cmp    $0xa,%eax
  jg     L1120
L1528:
  addl   $0x1,-0x9cdc(%rbp)
L1431:
  mov    -0x9c6c(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x9cdc(%rbp)
  jl     L1332
  jmp    L125
L1120:
  nop
L125:
  addl   $0x1,-0x9cf0(%rbp)
L469:
  cmpl   $0x0,-0x9cf0(%rbp)
  jg     L151
  cmpl   $0x0,-0x9cf4(%rbp)
  je     L339
L151:
  cmpl   $0x0,-0x9cf4(%rbp)
  je     L102
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L881
L102:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L881:
  movl   $0x0,-0x9cd4(%rbp)
  movl   $0x0,-0x9cd0(%rbp)
  jmp    L390
L173:
  movl   $0x0,-0x9ccc(%rbp)
  jmp    L1091
L1346:
  mov    -0x9ccc(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  addl   $0x1,-0x9ccc(%rbp)
L1091:
  cmpl   $0x3df,-0x9ccc(%rbp)
  jle    L1346
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c48(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9c44(%rbp)
  mov    -0x9c48(%rbp),%eax
  imul   -0x9c44(%rbp),%eax
  mov    %eax,-0x9c40(%rbp)
  mov    -0x9c48(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c44(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c3c(%rbp)
  mov    -0x9c3c(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c3c(%rbp)
  mov    -0x9c40(%rbp),%eax
  mov    %eax,-0x9cc8(%rbp)
  jmp    L655
L542:
  mov    -0x9cc8(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9cc8(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9cc8(%rbp)
L655:
  mov    -0x9cc8(%rbp),%eax
  cmp    -0x9c3c(%rbp),%eax
  jl     L542
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9b88(%rbp)
  mov    -0x9c48(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9cc4(%rbp)
  jmp    L32
L1301:
  mov    -0x9cc4(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9b88(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9b88(%rbp)
  addl   $0x1,-0x9cc4(%rbp)
L32:
  cmpl   $0x3df,-0x9cc4(%rbp)
  jle    L1301
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  -0x9b88(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c48(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c48(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c48(%rbp)
  jge    L199
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9c48(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L199:
  movl   $0x0,-0x9cbc(%rbp)
  movl   $0x0,-0x9cc0(%rbp)
  jmp    L593
L365:
  mov    -0x9cc0(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  ucomisd D177(%rip),%xmm0
  jp     L256
  ucomisd D177(%rip),%xmm0
  je     L336
L256:
  mov    -0x9cc0(%rbp),%eax
  cltq
  mov    -0x5d40(%rbp,%rax,8),%rdx
  mov    -0x9cc0(%rbp),%eax
  movq   %rdx,%xmm0
  mov    $0x7800f,%ecx
  lea    D102(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9cd4(%rbp)
  mov    -0x9cbc(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9cbc(%rbp)
  cmp    $0xa,%eax
  jg     L399
L336:
  addl   $0x1,-0x9cc0(%rbp)
L593:
  cmpl   $0x0,-0x9cc0(%rbp)
  jle    L365
  jmp    L1063
L399:
  nop
L1063:
  addl   $0x1,-0x9cd0(%rbp)
L390:
  cmpl   $0x0,-0x9cd0(%rbp)
  jg     L1060
  cmpl   $0x0,-0x9cd4(%rbp)
  je     L173
L1060:
  cmpl   $0x0,-0x9cd4(%rbp)
  je     L307
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L1269
L307:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1269:
  movl   $0x2,-0x9cb8(%rbp)
  jmp    L874
L276:
  movl   $0x0,-0x9cb4(%rbp)
  jmp    L234
L355:
  mov    -0x9cb4(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  addl   $0x1,-0x9cb4(%rbp)
L234:
  cmpl   $0x3df,-0x9cb4(%rbp)
  jle    L355
  mov    -0x9cb8(%rbp),%eax
  mov    %eax,-0x9c24(%rbp)
  movl   $0x0,-0x9cb0(%rbp)
  movl   $0x0,-0x9cac(%rbp)
  jmp    L1229
L1032:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c20(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%ecx
  mov    $0x3e0,%eax
  cltd
  idiv   %ecx
  mov    %eax,-0x9c1c(%rbp)
  mov    -0x9c20(%rbp),%eax
  imul   -0x9c1c(%rbp),%eax
  mov    %eax,-0x9c18(%rbp)
  mov    -0x9c20(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c1c(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c14(%rbp)
  mov    -0x9c14(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c14(%rbp)
  mov    -0x9c18(%rbp),%eax
  mov    %eax,-0x9ca8(%rbp)
  jmp    L597
L218:
  mov    -0x9ca8(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9ca8(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9ca8(%rbp)
L597:
  mov    -0x9ca8(%rbp),%eax
  cmp    -0x9c14(%rbp),%eax
  jl     L218
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9b80(%rbp)
  mov    -0x9c20(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9ca4(%rbp)
  jmp    L275
L1023:
  mov    -0x9ca4(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9b80(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9b80(%rbp)
  addl   $0x1,-0x9ca4(%rbp)
L275:
  cmpl   $0x3df,-0x9ca4(%rbp)
  jle    L1023
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  -0x9b80(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c20(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c20(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c20(%rbp)
  jge    L651
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x9c20(%rbp),%eax
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L651:
  movl   $0x0,-0x9c9c(%rbp)
  movl   $0x0,-0x9ca0(%rbp)
  jmp    L461
L46:
  mov    -0x9ca0(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm0
  mov    -0x9cac(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L804
  ucomisd %xmm1,%xmm0
  je     L1375
L804:
  mov    -0x9ca0(%rbp),%eax
  cltq
  mov    -0x7c50(%rbp,%rax,8),%rdx
  mov    -0x9cac(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x9ca0(%rbp),%eax
  movq   %rdx,%xmm0
  lea    D111(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9cb0(%rbp)
  mov    -0x9c9c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9c9c(%rbp)
  cmp    $0xa,%eax
  jg     L706
L1375:
  addl   $0x1,-0x9ca0(%rbp)
L461:
  mov    -0x9cb8(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x9ca0(%rbp)
  jl     L46
  jmp    L100
L706:
  nop
L100:
  addl   $0x1,-0x9cac(%rbp)
L1229:
  cmpl   $0x0,-0x9cac(%rbp)
  jg     L965
  cmpl   $0x0,-0x9cb0(%rbp)
  je     L1032
L965:
  cmpl   $0x0,-0x9cb0(%rbp)
  je     L462
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L587
L462:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L587:
  addl   $0x1,-0x9cb8(%rbp)
L874:
  mov    -0x9cb8(%rbp),%eax
  cmp    -0x9c6c(%rbp),%eax
  jle    L276
  movl   $0x0,-0x9c98(%rbp)
  jmp    L888
L1196:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x9c98(%rbp)
L888:
  mov    -0x9c74(%rbp),%eax
  sub    -0x9c6c(%rbp),%eax
  cmp    %eax,-0x9c98(%rbp)
  jl     L1196
  cmpq   $0x0,-0x9b70(%rbp)
  jne    L387
  movl   $0x0,-0x9c94(%rbp)
  jmp    L340
L473:
  mov    -0x9c94(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  addl   $0x1,-0x9c94(%rbp)
L340:
  cmpl   $0x3df,-0x9c94(%rbp)
  jle    L473
  movl   $0x0,-0x9c90(%rbp)
  movl   $0x0,-0x9c8c(%rbp)
  jmp    L210
L394:
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  shl    $0x4,%eax
  mov    %eax,-0x9c38(%rbp)
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x9c34(%rbp)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,%esi
  mov    $0x3e0,%eax
  cltd
  idiv   %esi
  mov    %eax,-0x9c30(%rbp)
  mov    -0x9c34(%rbp),%eax
  imul   -0x9c30(%rbp),%eax
  mov    %eax,-0x9c2c(%rbp)
  mov    -0x9c34(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x9c30(%rbp),%eax
  imul   %edx,%eax
  mov    %eax,-0x9c28(%rbp)
  mov    -0x9c28(%rbp),%eax
  mov    $0x3e0,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x9c28(%rbp)
  mov    -0x9c2c(%rbp),%eax
  mov    %eax,-0x9c88(%rbp)
  jmp    L1261
L34:
  mov    -0x9c88(%rbp),%eax
  cltq
  movsd  -0x3e30(%rbp,%rax,8),%xmm0
  mov    -0x9c88(%rbp),%eax
  cltq
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  addl   $0x1,-0x9c88(%rbp)
L1261:
  mov    -0x9c88(%rbp),%eax
  cmp    -0x9c28(%rbp),%eax
  jl     L34
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x9b78(%rbp)
  mov    -0x9c34(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x9c84(%rbp)
  jmp    L717
L945:
  mov    -0x9c84(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  movsd  -0x9b78(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x9b78(%rbp)
  addl   $0x1,-0x9c84(%rbp)
L717:
  cmpl   $0x3df,-0x9c84(%rbp)
  jle    L945
  mov    -0x9c34(%rbp),%eax
  cltq
  movsd  -0x9b78(%rbp),%xmm0
  movsd  %xmm0,-0x9b60(%rbp,%rax,8)
  mov    -0x9c34(%rbp),%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm0
  mov    -0x9c34(%rbp),%eax
  add    $0x1,%eax
  cltq
  movsd  -0x9b60(%rbp,%rax,8),%xmm1
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x9c34(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  mov    -0x9c34(%rbp),%eax
  cltq
  movsd  %xmm0,-0x5d40(%rbp,%rax,8)
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  sub    $0x1,%eax
  cmp    %eax,-0x9c34(%rbp)
  jge    L1289
  mov    -0x9c38(%rbp),%edx
  mov    -0x9c34(%rbp),%eax
  add    %edx,%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  mov    -0x9c34(%rbp),%eax
  cltq
  movsd  -0x5d40(%rbp,%rax,8),%xmm0
  mov    -0x9c38(%rbp),%edx
  mov    -0x9c34(%rbp),%eax
  add    %edx,%eax
  addsd  %xmm1,%xmm0
  cltq
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
  jmp    L1022
L1289:
  mov    -0x9c38(%rbp),%edx
  mov    -0x9c34(%rbp),%eax
  add    %edx,%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x7c50(%rbp,%rax,8)
L1022:
  movl   $0x0,-0x9c7c(%rbp)
  movl   $0x0,-0x9c80(%rbp)
  jmp    L1038
L886:
  mov    -0x9c80(%rbp),%eax
  cltq
  movsd  -0x7c50(%rbp,%rax,8),%xmm1
  cmpl   $0x0,-0x9c80(%rbp)
  jle    L1517
  mov    -0x9c80(%rbp),%eax
  add    $0x1,%eax
  and    $0xf,%eax
  test   %eax,%eax
  je     L797
L1517:
  mov    -0x9c8c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  jmp    L402
L797:
  pxor   %xmm0,%xmm0
L402:
  ucomisd %xmm1,%xmm0
  jp     L138
  ucomisd %xmm1,%xmm0
  je     L309
L138:
  mov    -0x9c80(%rbp),%eax
  cltq
  mov    -0x7c50(%rbp,%rax,8),%rcx
  cmpl   $0x0,-0x9c80(%rbp)
  jle    L98
  mov    -0x9c80(%rbp),%eax
  add    $0x1,%eax
  and    $0xf,%eax
  test   %eax,%eax
  je     L405
L98:
  mov    -0x9c8c(%rbp),%eax
  lea    0x1(%rax),%edx
  jmp    L1334
L405:
  mov    $0x0,%edx
L1334:
  mov    -0x9c80(%rbp),%eax
  movq   %rcx,%xmm0
  mov    %edx,%ecx
  lea    D111(%rip),%rdx
  mov    %eax,%esi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movl   $0x1,-0x9c90(%rbp)
  mov    -0x9c7c(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x9c7c(%rbp)
  cmp    $0xa,%eax
  jg     L323
L309:
  addl   $0x1,-0x9c80(%rbp)
L1038:
  cmpl   $0xff,-0x9c80(%rbp)
  jle    L886
  jmp    L1216
L323:
  nop
L1216:
  addl   $0x1,-0x9c8c(%rbp)
L210:
  cmpl   $0x0,-0x9c8c(%rbp)
  jg     L747
  cmpl   $0x0,-0x9c90(%rbp)
  je     L394
L747:
  cmpl   $0x0,-0x9c90(%rbp)
  je     L664
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L259
L664:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L259
L387:
  movl   $0x0,-0x9c78(%rbp)
  jmp    L1531
L835:
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x9c78(%rbp)
L1531:
  cmpl   $0x0,-0x9c78(%rbp)
  jle    L835
L259:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L691
  call   <__stack_chk_fail@plt>
L691:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D111
type_infered: string
name: disassemble_data
arguments: tag: D77
type_infered: string
name: disassemble_data
arguments: tag: D62
type_infered: string
name: disassemble_data
arguments: tag: D144
type_infered: string
name: disassemble_data
arguments: tag: D162
type_infered: f32[2]
name: disassemble_data
arguments: tag: D177
type_infered: f32[2]
name: disassemble_data
arguments: tag: D102
type_infered: string

tool: D111: B[i]

tool: D77: Failed at %3d with %s, expected %f, got %f


tool: D62: Failed

tool: D144: Succeeded

tool: {"D162": [0.0,2.3125]}

tool: {"D177": [0.0,9.875057220458984]}

tool: D102: C[i]

assistant: ```c
int main(void) {
  check_offloading();
  double A[(992) + 2], B[(992) + 2], C[(992) + 2], D[(992) + 2], E[(992) + 2];
  {
    int i;
    for (i = 0; i < (992); i++) {
      {
        C[i] = 0;
        D[i] = i;
        E[i] = -i;
      }
    }
  };
  long cpuExec = 0;
#pragma omp target map(tofrom : cpuExec)
  { cpuExec = omp_is_initial_device(); }
  int gpu_threads = 768;
  int cpu_threads = 32;
  int max_threads = cpuExec ? cpu_threads : gpu_threads;

#pragma omp parallel num_threads(33) if (0)

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(33)
      {{{{int tid = omp_get_thread_num();
      int cs = (992) / omp_get_num_threads();
      int lb = tid * cs;
      int ub = (tid + 1) * cs;
      ub = ub > (992) ? (992) : ub;
      for (int i = lb; i < ub; i++) {
        A[i] = D[i];
      }
      double sum = 0;
      for (int i = 1 + tid; i < (992); i++) {
        sum += A[i];
      }
      A[tid] = sum;
      sum = 0;
      for (int i = 2 + tid; i < (992); i++) {
        sum += A[i];
      }
      A[tid + 1] = sum;
      B[tid] = A[tid] - A[tid + 1];
    }
  }
}
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < 1; i++) {
    if (B[i] != i + 1) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]", i + 1, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
for (int t = 1; t <= max_threads; t++) {
  int threads[1];
  threads[0] = t;

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(max_threads)
      {{{int i;
      for (i = 0; i < (992); i++) {
        B[i] = 0;
      }
    };
    {
      {{{int tid = omp_get_thread_num();
      int cs = (992) / omp_get_num_threads();
      int lb = tid * cs;
      int ub = (tid + 1) * cs;
      ub = ub > (992) ? (992) : ub;
      for (int i = lb; i < ub; i++) {
        A[i] = D[i];
      }
      double sum = 0;
      for (int i = 1 + tid; i < (992); i++) {
        sum += A[i];
      }
      A[tid] = sum;
      C[tid] = A[tid] - A[tid + 1] - tid;
      if (tid < omp_get_num_threads() - 1)
        B[tid] += C[tid];
    };
  }
}
{{{int tid = omp_get_thread_num();
int cs = (992) / omp_get_num_threads();
int lb = tid * cs;
int ub = (tid + 1) * cs;
ub = ub > (992) ? (992) : ub;
for (int i = lb; i < ub; i++) {
  A[i] = D[i];
}
double sum = 0;
for (int i = 1 + tid; i < (992); i++) {
  sum += A[i];
}
A[tid] = sum;
C[tid] = A[tid] - A[tid + 1] - tid;
if (tid < omp_get_num_threads() - 1)
  B[tid] += C[tid];
}
;
}
}
{{{int tid = omp_get_thread_num();
int cs = (992) / omp_get_num_threads();
int lb = tid * cs;
int ub = (tid + 1) * cs;
ub = ub > (992) ? (992) : ub;
for (int i = lb; i < ub; i++) {
  A[i] = D[i];
}
double sum = 0;
for (int i = 1 + tid; i < (992); i++) {
  sum += A[i];
}
A[tid] = sum;
C[tid] = A[tid] - A[tid + 1] - tid;
if (tid < omp_get_num_threads() - 1)
  B[tid] += C[tid];
}
;
}
}
{{{int tid = omp_get_thread_num();
int cs = (992) / omp_get_num_threads();
int lb = tid * cs;
int ub = (tid + 1) * cs;
ub = ub > (992) ? (992) : ub;
for (int i = lb; i < ub; i++) {
  A[i] = D[i];
}
double sum = 0;
for (int i = 1 + tid; i < (992); i++) {
  sum += A[i];
}
A[tid] = sum;
C[tid] = A[tid] - A[tid + 1] - tid;
if (tid < omp_get_num_threads() - 1)
  B[tid] += C[tid];
}
;
}
}
{
  {
    {
      int tid = omp_get_thread_num();
      int cs = (992) / omp_get_num_threads();
      int lb = tid * cs;
      int ub = (tid + 1) * cs;
      ub = ub > (992) ? (992) : ub;
      for (int i = lb; i < ub; i++) {
        A[i] = D[i];
      }
      double sum = 0;
      for (int i = 1 + tid; i < (992); i++) {
        sum += A[i];
      }
      A[tid] = sum;
      C[tid] = A[tid] - A[tid + 1] - tid;
      if (tid < omp_get_num_threads() - 1)
        B[tid] += C[tid];
    };
  }
}
}
}
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < threads[0] - 1; i++) {
    if (B[i] != 5) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]", 5, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
{
  for (int i = 0; i < (gpu_threads - max_threads); i++)
    printf("Succeeded\n");
};

#pragma omp parallel num_threads(threads[0])

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
{
  int fail = 0;
  int trial;
  for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(max_threads)
    {{{int i;
    for (i = 0; i < (992); i++) {
      B[i] = 0;
    }
  };
  for (int t = 2; t <= max_threads; t++) {
    int threads[1];
    threads[0] = t;
    {
      {
        {
          int tid = omp_get_thread_num();
          int cs = (992) / omp_get_num_threads();
          int lb = tid * cs;
          int ub = (tid + 1) * cs;
          ub = ub > (992) ? (992) : ub;
          for (int i = lb; i < ub; i++) {
            A[i] = D[i];
          }
          double sum = 0;
          for (int i = 1 + tid; i < (992); i++) {
            sum += A[i];
          }
          A[tid] = sum;
          C[tid] = A[tid] - A[tid + 1] - tid;
          if (tid < omp_get_num_threads() - 1)
            B[tid] += C[tid];
        };
      }
    }
  }
}
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < max_threads - 1; i++) {
    if (B[i] != max_threads - i - 1) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]", max_threads - i - 1, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
{
  int fail = 0;
  int trial;
  for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma #pragma omp target
    {{{int i;
    for (i = 0; i < (992); i++) {
      B[i] = 0;
    }
  };
  {
    int tid = omp_get_thread_num();
    int cs = (992) / omp_get_num_threads();
    int lb = tid * cs;
    int ub = (tid + 1) * cs;
    ub = ub > (992) ? (992) : ub;
    for (int i = lb; i < ub; i++) {
      A[i] = D[i];
    }
    double sum = 0;
    for (int i = 1 + tid; i < (992); i++) {
      sum += A[i];
    }
    A[tid] = sum;
    C[tid] = A[tid] - A[tid + 1] - tid;
    if (tid < omp_get_num_threads() - 1)
      B[tid] += C[tid];
  }
}
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < 1; i++) {
    if (C[i] != 491535) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "C[i]", 491535, C[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
for (int t = 2; t <= max_threads; t++) {
  {
    int i;
    for (i = 0; i < (992); i++) {
      B[i] = 0;
    }
  };
  int threads;
  threads = t;

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target parallel num_threads(threads)
      {{{int tid = omp_get_thread_num();
      int cs = (992) / omp_get_num_threads();
      int lb = tid * cs;
      int ub = (tid + 1) * cs;
      ub = ub > (992) ? (992) : ub;
      for (int i = lb; i < ub; i++) {
        A[i] = D[i];
      }
      double sum = 0;
      for (int i = 1 + tid; i < (992); i++) {
        sum += A[i];
      }
      A[tid] = sum;
      C[tid] = A[tid] - A[tid + 1] - tid;
      if (tid < omp_get_num_threads() - 1)
        B[tid] += C[tid];
    };
  }
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < t - 1; i++) {
    if (B[i] != (trial + 1) * 1) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]", (trial + 1) * 1, B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
{
  for (int i = 0; i < (gpu_threads - max_threads); i++)
    printf("Succeeded\n");
};
if (!cpuExec) {
  {
    int i;
    for (i = 0; i < (992); i++) {
      B[i] = 0;
    }
  };

#pragma omp parallel num_threads(16)

#pragma omp parallel num_threads(16)

#pragma omp barrier

#pragma omp barrier

#pragma omp barrier
  {
    int fail = 0;
    int trial;
    for (int trial = 0; trial < (1) && fail == 0; trial++) {
#pragma omp target teams num_teams(1) thread_limit(1024)
      {{{{int b = omp_get_thread_num() * 16;
      {
        int tid = omp_get_thread_num();
        int cs = (992) / omp_get_num_threads();
        int lb = tid * cs;
        int ub = (tid + 1) * cs;
        ub = ub > (992) ? (992) : ub;
        for (int i = lb; i < ub; i++) {
          A[i] = D[i];
        }
        double sum = 0;
        for (int i = 1 + tid; i < (992); i++) {
          sum += A[i];
        }
        A[tid] = sum;
        C[tid] = A[tid] - A[tid + 1] - tid;
        if (tid < omp_get_num_threads() - 1)
          B[b + tid] += C[tid];
        else
          B[b + tid] = 0;
      }
    }
  };
}
}
{
  int i;
  int errorNum = 0;
  for (i = 0; i < 16 * 16; i++) {
    if (B[i] != (i > 0 && (i + 1) % 16 == 0 ? 0 : (trial + 1) * 1)) {
      printf("Failed at %3d with %s, expected %f, got %f\n", i, "B[i]", (i > 0 && (i + 1) % 16 == 0 ? 0 : (trial + 1) * 1), B[i]);
      fail = 1;
      if (errorNum++ > 10)
        break;
    }
  }
}
}
if (fail) {
  printf("Failed\n");
} else {
  printf("Succeeded\n");
}
}
;
}
else {
  {
    for (int i = 0; i < (1); i++)
      printf("Succeeded\n");
  };
}
}
```