void make_nucleon_2pt(
    double *C_re, double *C_im, const double *prop_re, const double *prop_im,
    const int *src_color_weights_r1, const int *src_spin_weights_r1,
    const double *src_weights_r1, const int *src_color_weights_r2,
    const int *src_spin_weights_r2, const double *src_weights_r2,
    const double *src_psi_re, const double *src_psi_im,
    const double *snk_psi_re, const double *snk_psi_im, const int Nc,
    const int Ns, const int Vsrc, const int Vsnk, const int Nt, const int Nw,
    const int Nq, const int Nsrc, const int Nsnk) {
  int n, m, t, x, iC, iS, jC, jS, kC, kS, wnum;
  double *Blocal_r1_re =
      malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r1_im =
      malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r2_re =
      malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  double *Blocal_r2_im =
      malloc(Nt * Nc * Ns * Nc * Ns * Vsnk * Nc * Ns * Nsrc * sizeof(double));
  make_local_block(Blocal_r1_re, Blocal_r1_im, prop_re, prop_im,
                   src_color_weights_r1, src_spin_weights_r1, src_weights_r1,
                   src_psi_re, src_psi_im, Nc, Ns, Vsrc, Vsnk, Nt, Nw, Nq,
                   Nsrc);
  make_local_block(Blocal_r2_re, Blocal_r2_im, prop_re, prop_im,
                   src_color_weights_r2, src_spin_weights_r2, src_weights_r2,
                   src_psi_re, src_psi_im, Nc, Ns, Vsrc, Vsnk, Nt, Nw, Nq,
                   Nsrc);
  for (wnum = 0; wnum < Nw; wnum++) {
    iC = src_color_weights_r1[index_2d(wnum, 0, Nq)];
    iS = src_spin_weights_r1[index_2d(wnum, 0, Nq)];
    jC = src_color_weights_r1[index_2d(wnum, 1, Nq)];
    jS = src_spin_weights_r1[index_2d(wnum, 1, Nq)];
    kC = src_color_weights_r1[index_2d(wnum, 2, Nq)];
    kS = src_spin_weights_r1[index_2d(wnum, 2, Nq)];
    for (m = 0; m < Nsrc; m++) {
      for (n = 0; n < Nsnk; n++) {
        for (t = 0; t < Nt; t++) {
          for (x = 0; x < Vsnk; x++) {
            C_re[index_4d(0, m, n, t, Nsrc, Nsnk, Nt)] +=
                (src_weights_r1[wnum] *
                 (snk_psi_re[index_2d(x, n, Nsnk)] *
                      Blocal_r1_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)] -
                  snk_psi_im[index_2d(x, n, Nsnk)] *
                      Blocal_r1_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)])) /
                ((Vsrc) * (Vsnk));
            C_im[index_4d(0, m, n, t, Nsrc, Nsnk, Nt)] +=
                (src_weights_r1[wnum] *
                 (snk_psi_re[index_2d(x, n, Nsnk)] *
                      Blocal_r1_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)] -
                  snk_psi_im[index_2d(x, n, Nsnk)] *
                      Blocal_r1_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)])) /
                ((Vsrc) * (Vsnk));
          }
        }
      }
    }
  }
  for (wnum = 0; wnum < Nw; wnum++) {
    iC = src_color_weights_r2[index_2d(wnum, 0, Nq)];
    iS = src_spin_weights_r2[index_2d(wnum, 0, Nq)];
    jC = src_color_weights_r2[index_2d(wnum, 1, Nq)];
    jS = src_spin_weights_r2[index_2d(wnum, 1, Nq)];
    kC = src_color_weights_r2[index_2d(wnum, 2, Nq)];
    kS = src_spin_weights_r2[index_2d(wnum, 2, Nq)];
    for (m = 0; m < Nsrc; m++) {
      for (n = 0; n < Nsnk; n++) {
        for (t = 0; t < Nt; t++) {
          for (x = 0; x < Vsnk; x++) {
            C_re[index_4d(1, m, n, t, Nsrc, Nsnk, Nt)] +=
                (src_weights_r2[wnum] *
                 (snk_psi_re[index_2d(x, n, Nsnk)] *
                      Blocal_r2_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)] -
                  snk_psi_im[index_2d(x, n, Nsnk)] *
                      Blocal_r2_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)])) /
                ((Vsrc) * (Vsnk));
            C_im[index_4d(1, m, n, t, Nsrc, Nsnk, Nt)] +=
                (src_weights_r2[wnum] *
                 (snk_psi_re[index_2d(x, n, Nsnk)] *
                      Blocal_r2_im[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)] -
                  snk_psi_im[index_2d(x, n, Nsnk)] *
                      Blocal_r2_re[Blocal_index(t, iC, iS, kC, kS, x, jC, jS, m,
                                                Nc, Ns, Vsnk, Nsrc)])) /
                ((Vsrc) * (Vsnk));
          }
        }
      }
    }
  }
  free(Blocal_r1_re);
  free(Blocal_r1_im);
  free(Blocal_r2_re);
  free(Blocal_r2_im);
}


x86 assembly (clang, -O0):
<make_nucleon_2pt>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2b8,%rsp
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%eax
mov    0x78(%rbp),%eax
mov    0x70(%rbp),%eax
mov    0x68(%rbp),%eax
mov    0x60(%rbp),%eax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
mov    0x70(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x68(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x88(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x90(%rbp)
mov    0x70(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x68(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x88(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x98(%rbp)
mov    0x70(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x68(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x88(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0xa0(%rbp)
mov    0x70(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x68(%rbp),%eax
imul   0x50(%rbp),%eax
imul   0x58(%rbp),%eax
imul   0x88(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0xa8(%rbp)
mov    -0x90(%rbp),%rdi
mov    -0x98(%rbp),%rsi
mov    -0x40(%rbp),%rdx
mov    -0x48(%rbp),%rcx
mov    -0x50(%rbp),%r8
mov    -0x58(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    0x30(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    0x38(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    0x50(%rbp),%r13d
mov    0x58(%rbp),%r12d
mov    0x60(%rbp),%r15d
mov    0x68(%rbp),%r14d
mov    0x70(%rbp),%ebx
mov    0x78(%rbp),%r11d
mov    0x80(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xe0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0xd8(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0xcc(%rbp),%eax
mov    %r13d,0x18(%rsp)
mov    %r12d,0x20(%rsp)
mov    %r15d,0x28(%rsp)
mov    %r14d,0x30(%rsp)
mov    %ebx,0x38(%rsp)
mov    %r11d,0x40(%rsp)
mov    %r10d,0x48(%rsp)
mov    %eax,0x50(%rsp)
mov    $0x0,%al
call   1040 <make_local_block@plt>
mov    -0xa0(%rbp),%rdi
mov    -0xa8(%rbp),%rsi
mov    -0x40(%rbp),%rdx
mov    -0x48(%rbp),%rcx
mov    0x18(%rbp),%r8
mov    0x20(%rbp),%r9
mov    0x28(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    0x30(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    0x38(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    0x50(%rbp),%r13d
mov    0x58(%rbp),%r12d
mov    0x60(%rbp),%r15d
mov    0x68(%rbp),%r14d
mov    0x70(%rbp),%ebx
mov    0x78(%rbp),%r11d
mov    0x80(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xc8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xc0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0xb8(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0xac(%rbp),%eax
mov    %r13d,0x18(%rsp)
mov    %r12d,0x20(%rsp)
mov    %r15d,0x28(%rsp)
mov    %r14d,0x30(%rsp)
mov    %ebx,0x38(%rsp)
mov    %r11d,0x40(%rsp)
mov    %r10d,0x48(%rsp)
mov    %eax,0x50(%rsp)
mov    $0x0,%al
call   1040 <make_local_block@plt>
movl   $0x0,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    0x78(%rbp),%eax
jge    1a7f <make_nucleon_2pt+0x91f>
mov    -0x50(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
xor    %esi,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x118(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
xor    %esi,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x110(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x108(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x74(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x100(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x78(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0xf8(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0xf0(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x80(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    0x88(%rbp),%eax
jge    1a66 <make_nucleon_2pt+0x906>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    1a53 <make_nucleon_2pt+0x8f3>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    0x70(%rbp),%eax
jge    1a40 <make_nucleon_2pt+0x8e0>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    0x68(%rbp),%eax
jge    1a2d <make_nucleon_2pt+0x8cd>
mov    0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    0x40(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1b8(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x90(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
mov    %eax,%ecx
mov    -0x1b0(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    0x48(%rbp),%rax
mov    %rax,-0x1a8(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1a8(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x98(%rbp),%rax
mov    %rax,-0x180(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
movsd  -0x1a0(%rbp),%xmm2
ff
movsd  -0x198(%rbp),%xmm1
ff
movsd  -0x190(%rbp),%xmm3
ff
movsd  -0x188(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x180(%rbp),%rax
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x60(%rbp),%eax
imul   0x68(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x30(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x60(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x64(%rbp),%ecx
mov    0x88(%rbp),%r8d
mov    0x90(%rbp),%r9d
mov    0x70(%rbp),%eax
xor    %edi,%edi
mov    %eax,(%rsp)
mov    $0x0,%al
call   1050 <index_4d@plt>
movsd  -0x178(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x170(%rbp),%rax
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x40(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x168(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x98(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
mov    %eax,%ecx
mov    -0x160(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x48(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x158(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x90(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movsd  -0x140(%rbp),%xmm3
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x130(%rbp),%rax
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x60(%rbp),%eax
imul   0x68(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    -0x60(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x64(%rbp),%ecx
mov    0x88(%rbp),%r8d
mov    0x90(%rbp),%r9d
mov    0x70(%rbp),%eax
xor    %edi,%edi
mov    %eax,(%rsp)
mov    $0x0,%al
call   1050 <index_4d@plt>
movsd  -0x128(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x120(%rbp),%rax
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    15c9 <make_nucleon_2pt+0x469>
jmp    1a32 <make_nucleon_2pt+0x8d2>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    15b6 <make_nucleon_2pt+0x456>
jmp    1a45 <make_nucleon_2pt+0x8e5>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    15a0 <make_nucleon_2pt+0x440>
jmp    1a58 <make_nucleon_2pt+0x8f8>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    158a <make_nucleon_2pt+0x42a>
jmp    1a6b <make_nucleon_2pt+0x90b>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    143c <make_nucleon_2pt+0x2dc>
movl   $0x0,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    0x78(%rbp),%eax
jge    20d2 <make_nucleon_2pt+0xf72>
mov    0x18(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
xor    %esi,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1e8(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x6c(%rbp)
mov    0x20(%rbp),%rax
mov    %rax,-0x1e0(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
xor    %esi,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1e0(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
mov    0x18(%rbp),%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1d8(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x74(%rbp)
mov    0x20(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1d0(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x78(%rbp)
mov    0x18(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1c8(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
mov    0x20(%rbp),%rax
mov    %rax,-0x1c0(%rbp)
mov    -0x84(%rbp),%edi
mov    0x80(%rbp),%edx
mov    $0x2,%esi
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x1c0(%rbp),%rax
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x80(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    0x88(%rbp),%eax
jge    20b9 <make_nucleon_2pt+0xf59>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    20a6 <make_nucleon_2pt+0xf46>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    0x70(%rbp),%eax
jge    2093 <make_nucleon_2pt+0xf33>
movl   $0x0,-0x68(%rbp)
mov    -0x68(%rbp),%eax
cmp    0x68(%rbp),%eax
jge    2080 <make_nucleon_2pt+0xf20>
mov    0x28(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
mov    0x40(%rbp),%rax
mov    %rax,-0x288(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x288(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x268(%rbp)
ff
mov    -0xa0(%rbp),%rax
mov    %rax,-0x280(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
mov    %eax,%ecx
mov    -0x280(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
mov    0x48(%rbp),%rax
mov    %rax,-0x278(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x278(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
mov    -0xa8(%rbp),%rax
mov    %rax,-0x250(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
movsd  -0x270(%rbp),%xmm2
ff
movsd  -0x268(%rbp),%xmm1
ff
movsd  -0x260(%rbp),%xmm3
ff
movsd  -0x258(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x250(%rbp),%rax
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x60(%rbp),%eax
imul   0x68(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
mov    -0x30(%rbp),%rax
mov    %rax,-0x240(%rbp)
mov    -0x60(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x64(%rbp),%ecx
mov    0x88(%rbp),%r8d
mov    0x90(%rbp),%r9d
mov    0x70(%rbp),%eax
mov    $0x1,%edi
mov    %eax,(%rsp)
mov    $0x0,%al
call   1050 <index_4d@plt>
movsd  -0x248(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x240(%rbp),%rax
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
mov    0x40(%rbp),%rax
mov    %rax,-0x238(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x238(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
mov    -0xa8(%rbp),%rax
mov    %rax,-0x230(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
mov    %eax,%ecx
mov    -0x230(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
mov    0x48(%rbp),%rax
mov    %rax,-0x228(%rbp)
mov    -0x68(%rbp),%edi
mov    -0x5c(%rbp),%esi
mov    0x90(%rbp),%edx
mov    $0x0,%al
call   1080 <index_2d@plt>
mov    %eax,%ecx
mov    -0x228(%rbp),%rax
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
mov    -0xa0(%rbp),%rax
mov    %rax,-0x200(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x6c(%rbp),%esi
mov    -0x70(%rbp),%edx
mov    -0x7c(%rbp),%ecx
mov    -0x80(%rbp),%r8d
mov    -0x68(%rbp),%r9d
mov    -0x74(%rbp),%r12d
mov    -0x78(%rbp),%r15d
mov    -0x60(%rbp),%r14d
mov    0x50(%rbp),%ebx
mov    0x58(%rbp),%r11d
mov    0x68(%rbp),%r10d
mov    0x88(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1070 <Blocal_index@plt>
movsd  -0x220(%rbp),%xmm2
ff
movsd  -0x218(%rbp),%xmm1
ff
movsd  -0x210(%rbp),%xmm3
ff
movsd  -0x208(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x200(%rbp),%rax
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x60(%rbp),%eax
imul   0x68(%rbp),%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    %rax,-0x1f0(%rbp)
mov    -0x60(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x64(%rbp),%ecx
mov    0x88(%rbp),%r8d
mov    0x90(%rbp),%r9d
mov    0x70(%rbp),%eax
mov    $0x1,%edi
mov    %eax,(%rsp)
mov    $0x0,%al
call   1050 <index_4d@plt>
movsd  -0x1f8(%rbp),%xmm0
ff
mov    %eax,%ecx
mov    -0x1f0(%rbp),%rax
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    1c16 <make_nucleon_2pt+0xab6>
jmp    2085 <make_nucleon_2pt+0xf25>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1c03 <make_nucleon_2pt+0xaa3>
jmp    2098 <make_nucleon_2pt+0xf38>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1bed <make_nucleon_2pt+0xa8d>
jmp    20ab <make_nucleon_2pt+0xf4b>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    1bd7 <make_nucleon_2pt+0xa77>
jmp    20be <make_nucleon_2pt+0xf5e>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1a89 <make_nucleon_2pt+0x929>
mov    -0x90(%rbp),%rdi
call   1030 <free@plt>
mov    -0x98(%rbp),%rdi
call   1030 <free@plt>
mov    -0xa0(%rbp),%rdi
call   1030 <free@plt>
mov    -0xa8(%rbp),%rdi
call   1030 <free@plt>
add    $0x2b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<make_nucleon_2pt>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x128,%rsp
mov    %r9,0xb0(%rsp)
mov    %r8,0xb8(%rsp)
mov    %rcx,0x8(%rsp)
mov    %rdx,%r13
mov    %rsi,0x120(%rsp)
mov    %rdi,0x118(%rsp)
mov    0x1e0(%rsp),%eax
mov    %eax,0x4(%rsp)
mov    0x1d8(%rsp),%r14d
mov    0x1d0(%rsp),%eax
mov    %rax,0xf0(%rsp)
mov    0x1c0(%rsp),%esi
mov    %rsi,0x70(%rsp)
mov    0x1b8(%rsp),%edx
mov    %rdx,0x28(%rsp)
mov    0x1a8(%rsp),%eax
mov    %rax,0x80(%rsp)
mov    0x1a0(%rsp),%ecx
mov    %rcx,0x38(%rsp)
imul   %ecx,%eax
mov    %eax,%ecx
imul   %eax,%ecx
imul   %edx,%eax
imul   %ecx,%eax
mov    %esi,%ecx
imul   %r14d,%ecx
imul   %eax,%ecx
mov    0x1c8(%rsp),%eax
mov    %rax,0xe8(%rsp)
movslq %ecx,%rbx
shl    $0x3,%rbx
mov    0x1b0(%rsp),%eax
mov    %rax,0x20(%rsp)
mov    0x198(%rsp),%rax
mov    %rax,0xe0(%rsp)
mov    0x190(%rsp),%rax
mov    %rax,0x88(%rsp)
mov    0x178(%rsp),%rax
mov    %rax,0xd0(%rsp)
mov    0x170(%rsp),%rax
mov    %rax,0xa0(%rsp)
mov    0x168(%rsp),%rax
mov    %rax,0xa8(%rsp)
mov    0x160(%rsp),%rax
mov    %rax,0x68(%rsp)
mov    0x180(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    0x188(%rsp),%rax
mov    %rax,0x18(%rsp)
mov    %rbx,%rdi
call   1060 <malloc@plt>
mov    %rax,%r12
mov    %rbx,%rdi
call   1060 <malloc@plt>
mov    %rax,%r15
mov    %rbx,%rdi
call   1060 <malloc@plt>
mov    %rax,0xc8(%rsp)
mov    %rbx,%rdi
mov    %r14,%rbx
call   1060 <malloc@plt>
mov    %rax,0xc0(%rsp)
sub    $0x8,%rsp
mov    %r12,0x110(%rsp)
mov    %r12,%rdi
mov    %r15,0x108(%rsp)
mov    %r15,%rsi
mov    %r13,%rdx
mov    0x10(%rsp),%rcx
mov    0xc0(%rsp),%r8
mov    0xb8(%rsp),%r9
xor    %eax,%eax
push   %r14
mov    0x100(%rsp),%rbp
push   %rbp
push   0x100(%rsp)
mov    0x90(%rsp),%r15
push   %r15
mov    0x50(%rsp),%r12
push   %r12
mov    0x50(%rsp),%r14
push   %r14
push   0xb8(%rsp)
push   0x78(%rsp)
push   0x60(%rsp)
push   0x60(%rsp)
push   0xc0(%rsp)
call   1040 <make_local_block@plt>
add    $0x58,%rsp
mov    0xd0(%rsp),%rdi
mov    %r14,%r10
mov    0xc8(%rsp),%rsi
mov    %r13,%rdx
mov    0x10(%rsp),%rcx
mov    0xc(%rsp),%r14d
mov    0xb0(%rsp),%r8
mov    0xa8(%rsp),%r9
xor    %eax,%eax
push   %rbx
push   %rbp
mov    0x100(%rsp),%r13
push   %r13
push   %r15
push   %r12
push   %r10
push   0xb8(%rsp)
push   0x78(%rsp)
push   0x60(%rsp)
push   0x60(%rsp)
push   0x128(%rsp)
call   1040 <make_local_block@plt>
add    $0x60,%rsp
test   %r13d,%r13d
jle    1de0 <make_nucleon_2pt+0xc80>
mov    0x20(%rsp),%rcx
imul   %r12d,%ecx
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0xd8(%rsp)
mov    %r13d,%eax
mov    %rax,0x110(%rsp)
xor    %r13d,%r13d
mov    %rbx,0x58(%rsp)
jmp    1417 <make_nucleon_2pt+0x2b7>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x40(%rsp),%r13
add    $0x1,%r13
cmp    0x110(%rsp),%r13
je     18e6 <make_nucleon_2pt+0x786>
mov    %r13d,%edi
xor    %esi,%esi
mov    0xf0(%rsp),%rbp
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xb8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x20(%rsp)
mov    %r13d,%edi
xor    %esi,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xb0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x98(%rsp)
mov    %r13d,%edi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xb8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %rax,0x90(%rsp)
mov    %r13d,%edi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xb0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %rax,0x50(%rsp)
mov    %r13d,%edi
mov    $0x2,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xb8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x34(%rsp)
mov    %r13,0x40(%rsp)
mov    %r13d,%edi
mov    $0x2,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
test   %ebx,%ebx
jle    1400 <make_nucleon_2pt+0x2a0>
cltq
mov    0xb0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x78(%rsp)
xor    %eax,%eax
jmp    1515 <make_nucleon_2pt+0x3b5>
xchg   %ax,%ax
mov    0x48(%rsp),%rax
add    $0x1,%eax
mov    0x58(%rsp),%rbx
cmp    %ebx,%eax
je     1400 <make_nucleon_2pt+0x2a0>
mov    %rax,0x48(%rsp)
test   %r14d,%r14d
jle    1500 <make_nucleon_2pt+0x3a0>
xor    %eax,%eax
jmp    1541 <make_nucleon_2pt+0x3e1>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x10(%rsp),%eax
add    $0x1,%eax
mov    0x4(%rsp),%r14d
cmp    %r14d,%eax
je     1500 <make_nucleon_2pt+0x3a0>
mov    %eax,0x10(%rsp)
test   %r15d,%r15d
jle    1530 <make_nucleon_2pt+0x3d0>
xor    %r13d,%r13d
jmp    155e <make_nucleon_2pt+0x3fe>
nop
add    $0x1,%r13d
mov    0x70(%rsp),%r15
cmp    %r15d,%r13d
je     1530 <make_nucleon_2pt+0x3d0>
test   %r12d,%r12d
mov    0x4(%rsp),%edx
mov    0x88(%rsp),%r15
mov    0x68(%rsp),%rcx
mov    0x40(%rsp),%rdi
mov    0x20(%rsp),%ebx
mov    0x10(%rsp),%esi
jle    1550 <make_nucleon_2pt+0x3f0>
xor    %r14d,%r14d
mov    %r13d,0x18(%rsp)
nopl   0x0(%rax)
movsd  (%rcx,%rdi,8),%xmm0
movsd  %xmm0,0x60(%rsp)
mov    %r14d,%edi
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
movsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    %r13d,%edi
mov    %ebx,%esi
mov    0xa0(%rsp),%r12d
mov    %r12d,%edx
mov    0x3c(%rsp),%r15d
mov    %r15d,%ecx
mov    0x80(%rsp),%ebx
mov    %ebx,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
push   0x60(%rsp)
push   0x38(%rsp)
mov    0x98(%rsp),%r13
push   %r13
push   0x58(%rsp)
push   0x70(%rsp)
mov    0x80(%rsp),%rbp
push   %rbp
mov    0xc8(%rsp),%rbp
push   %rbp
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0x108(%rsp),%rcx
movsd  0x8(%rsp),%xmm0
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xe0(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0xf8(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %ebx,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
mov    0x60(%rsp),%r12
push   %r12
push   0x38(%rsp)
push   %r13
push   0x58(%rsp)
mov    0x70(%rsp),%r15
push   %r15
push   0x80(%rsp)
push   %rbp
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0x100(%rsp),%rcx
movsd  0xf8(%rsp),%xmm1
mulsd  (%rcx,%rax,8),%xmm1
movsd  0x8(%rsp),%xmm0
subsd  %xmm1,%xmm0
mulsd  0x60(%rsp),%xmm0
divsd  0xd8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
xor    %edi,%edi
mov    %r15d,%esi
mov    0x18(%rsp),%edx
mov    0x20(%rsp),%ecx
mov    %r12d,%r8d
mov    0xc(%rsp),%r9d
xor    %eax,%eax
push   0x78(%rsp)
call   1050 <index_4d@plt>
add    $0x10,%rsp
cltq
mov    0x118(%rsp),%rcx
movsd  0x8(%rsp),%xmm0
addsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,(%rcx,%rax,8)
mov    0x68(%rsp),%rax
mov    0x40(%rsp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x60(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0x88(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    0xa0(%rsp),%r13d
mov    %r13d,%edx
mov    0x3c(%rsp),%ebx
mov    %ebx,%ecx
mov    0x80(%rsp),%ebp
mov    %ebp,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
push   %r12
push   0x38(%rsp)
mov    0x98(%rsp),%r12
push   %r12
push   0x58(%rsp)
push   %r15
push   0x80(%rsp)
mov    0xc8(%rsp),%r15
push   %r15
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
movsd  0x8(%rsp),%xmm0
mov    0x100(%rsp),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xe0(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0xf8(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    %r13d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
mov    0x60(%rsp),%rbp
push   %rbp
push   0x38(%rsp)
push   %r12
push   0x58(%rsp)
mov    0x70(%rsp),%rbx
push   %rbx
push   0x80(%rsp)
push   %r15
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0x108(%rsp),%rcx
movsd  0xf8(%rsp),%xmm1
mulsd  (%rcx,%rax,8),%xmm1
movsd  0x8(%rsp),%xmm0
subsd  %xmm1,%xmm0
mulsd  0x60(%rsp),%xmm0
divsd  0xd8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
xor    %edi,%edi
mov    %ebx,%esi
mov    0x18(%rsp),%edx
mov    0x20(%rsp),%ecx
mov    %ebp,%r8d
mov    0x28(%rsp),%ebx
mov    0x90(%rsp),%r15
mov    0x20(%rsp),%r13d
mov    0xc(%rsp),%r9d
xor    %eax,%eax
push   0x78(%rsp)
call   1050 <index_4d@plt>
mov    0x50(%rsp),%rdi
mov    0x78(%rsp),%rcx
mov    0x14(%rsp),%edx
mov    0x130(%rsp),%rbp
mov    0x38(%rsp),%r12
add    $0x10,%rsp
cltq
movsd  0x8(%rsp),%xmm0
addsd  0x0(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x0(%rbp,%rax,8)
mov    0x10(%rsp),%esi
add    $0x1,%r14d
cmp    %r14d,%r12d
jne    1590 <make_nucleon_2pt+0x430>
jmp    1550 <make_nucleon_2pt+0x3f0>
cmpl   $0x0,0xe8(%rsp)
jle    1de0 <make_nucleon_2pt+0xc80>
xor    %r13d,%r13d
jmp    1917 <make_nucleon_2pt+0x7b7>
nopl   0x0(%rax)
mov    0x40(%rsp),%r13
add    $0x1,%r13
cmp    0x110(%rsp),%r13
je     1de0 <make_nucleon_2pt+0xc80>
mov    %r13d,%edi
xor    %esi,%esi
mov    0xf0(%rsp),%rbp
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xa8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x20(%rsp)
mov    %r13d,%edi
xor    %esi,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xa0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x68(%rsp)
mov    %r13d,%edi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xa8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %rax,0x98(%rsp)
mov    %r13d,%edi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xa0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %rax,0x50(%rsp)
mov    %r13d,%edi
mov    $0x2,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xa8(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x90(%rsp)
mov    %r13,0x40(%rsp)
mov    %r13d,%edi
mov    $0x2,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
test   %ebx,%ebx
jle    1900 <make_nucleon_2pt+0x7a0>
cltq
mov    0xa0(%rsp),%rcx
mov    (%rcx,%rax,4),%eax
mov    %eax,0x34(%rsp)
xor    %eax,%eax
jmp    1a15 <make_nucleon_2pt+0x8b5>
xchg   %ax,%ax
mov    0x48(%rsp),%rax
add    $0x1,%eax
mov    0x58(%rsp),%rbx
cmp    %ebx,%eax
je     1900 <make_nucleon_2pt+0x7a0>
mov    %rax,0x48(%rsp)
test   %r14d,%r14d
jle    1a00 <make_nucleon_2pt+0x8a0>
xor    %eax,%eax
jmp    1a41 <make_nucleon_2pt+0x8e1>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x10(%rsp),%eax
add    $0x1,%eax
mov    0x4(%rsp),%r14d
cmp    %r14d,%eax
je     1a00 <make_nucleon_2pt+0x8a0>
mov    %eax,0x10(%rsp)
test   %r15d,%r15d
jle    1a30 <make_nucleon_2pt+0x8d0>
xor    %r13d,%r13d
jmp    1a5e <make_nucleon_2pt+0x8fe>
nop
add    $0x1,%r13d
mov    0x70(%rsp),%r15
cmp    %r15d,%r13d
je     1a30 <make_nucleon_2pt+0x8d0>
test   %r12d,%r12d
mov    0x4(%rsp),%edx
mov    0x88(%rsp),%r15
mov    0xd0(%rsp),%rcx
mov    0x40(%rsp),%rdi
mov    0x20(%rsp),%ebx
mov    0x10(%rsp),%esi
jle    1a50 <make_nucleon_2pt+0x8f0>
xor    %r14d,%r14d
mov    %r13d,0x18(%rsp)
nopl   0x0(%rax)
movsd  (%rcx,%rdi,8),%xmm0
movsd  %xmm0,0x78(%rsp)
mov    %r14d,%edi
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
movsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    %r13d,%edi
mov    %ebx,%esi
mov    0x70(%rsp),%r12d
mov    %r12d,%edx
mov    0x98(%rsp),%r15d
mov    %r15d,%ecx
mov    0x3c(%rsp),%ebx
mov    %ebx,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
push   0x60(%rsp)
push   0x38(%rsp)
mov    0x98(%rsp),%r13
push   %r13
push   0x58(%rsp)
push   0x70(%rsp)
mov    0x80(%rsp),%rbp
push   %rbp
mov    0xd0(%rsp),%rbp
push   %rbp
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0xc8(%rsp),%rcx
movsd  0x8(%rsp),%xmm0
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xe0(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x60(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    %r12d,%edx
mov    %r15d,%ecx
mov    %ebx,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
mov    0x60(%rsp),%r12
push   %r12
push   0x38(%rsp)
push   %r13
push   0x58(%rsp)
mov    0x70(%rsp),%r15
push   %r15
push   0x80(%rsp)
push   %rbp
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0xc0(%rsp),%rcx
movsd  0x60(%rsp),%xmm1
mulsd  (%rcx,%rax,8),%xmm1
movsd  0x8(%rsp),%xmm0
subsd  %xmm1,%xmm0
mulsd  0x78(%rsp),%xmm0
divsd  0xd8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    $0x1,%edi
mov    %r15d,%esi
mov    0x18(%rsp),%edx
mov    0x20(%rsp),%ecx
mov    %r12d,%r8d
mov    0xc(%rsp),%r9d
xor    %eax,%eax
push   0x78(%rsp)
call   1050 <index_4d@plt>
add    $0x10,%rsp
cltq
mov    0x118(%rsp),%rcx
movsd  0x8(%rsp),%xmm0
addsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,(%rcx,%rax,8)
mov    0xd0(%rsp),%rax
mov    0x40(%rsp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,0x78(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0x88(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    0x70(%rsp),%r13d
mov    %r13d,%edx
mov    0x98(%rsp),%ebx
mov    %ebx,%ecx
mov    0x3c(%rsp),%ebp
mov    %ebp,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
push   %r12
push   0x38(%rsp)
mov    0x98(%rsp),%r12
push   %r12
push   0x58(%rsp)
push   %r15
push   0x80(%rsp)
mov    0xd0(%rsp),%r15
push   %r15
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
movsd  0x8(%rsp),%xmm0
mov    0xc0(%rsp),%rcx
mulsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %r14d,%edi
mov    0x10(%rsp),%esi
mov    0x4(%rsp),%edx
xor    %eax,%eax
call   1080 <index_2d@plt>
cltq
mov    0xe0(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x60(%rsp)
sub    $0x8,%rsp
mov    0x20(%rsp),%edi
mov    0x28(%rsp),%esi
mov    %r13d,%edx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    %r14d,%r9d
xor    %eax,%eax
mov    0x60(%rsp),%rbp
push   %rbp
push   0x38(%rsp)
push   %r12
push   0x58(%rsp)
mov    0x70(%rsp),%rbx
push   %rbx
push   0x80(%rsp)
push   %r15
call   1070 <Blocal_index@plt>
add    $0x40,%rsp
cltq
mov    0xc8(%rsp),%rcx
movsd  0x60(%rsp),%xmm1
mulsd  (%rcx,%rax,8),%xmm1
movsd  0x8(%rsp),%xmm0
subsd  %xmm1,%xmm0
mulsd  0x78(%rsp),%xmm0
divsd  0xd8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
sub    $0x8,%rsp
mov    $0x1,%edi
mov    %ebx,%esi
mov    0x18(%rsp),%edx
mov    0x20(%rsp),%ecx
mov    %ebp,%r8d
mov    0x28(%rsp),%ebx
mov    0x90(%rsp),%r15
mov    0x20(%rsp),%r13d
mov    0xc(%rsp),%r9d
xor    %eax,%eax
push   0x78(%rsp)
call   1050 <index_4d@plt>
mov    0x50(%rsp),%rdi
mov    0xe0(%rsp),%rcx
mov    0x14(%rsp),%edx
mov    0x130(%rsp),%rbp
mov    0x38(%rsp),%r12
add    $0x10,%rsp
cltq
movsd  0x8(%rsp),%xmm0
addsd  0x0(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x0(%rbp,%rax,8)
mov    0x10(%rsp),%esi
add    $0x1,%r14d
cmp    %r14d,%r12d
jne    1a90 <make_nucleon_2pt+0x930>
jmp    1a50 <make_nucleon_2pt+0x8f0>
mov    0x108(%rsp),%rdi
call   1030 <free@plt>
mov    0x100(%rsp),%rdi
call   1030 <free@plt>
mov    0xc8(%rsp),%rdi
call   1030 <free@plt>
mov    0xc0(%rsp),%rdi
add    $0x128,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free@plt>

LLVM IR (-O0):
define void @make_nucleon_2pt(double* %0, double* %1, double* %2, double* %3, i32* %4, i32* %5, double* %6, i32* %7, i32* %8, double* %9, double* %10, double* %11, double* %12, double* %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21, i32 %22) {
%24 = alloca double*
%25 = alloca double*
%26 = alloca double*
%27 = alloca double*
%28 = alloca i32*
%29 = alloca i32*
%30 = alloca double*
%31 = alloca i32*
%32 = alloca i32*
%33 = alloca double*
%34 = alloca double*
%35 = alloca double*
%36 = alloca double*
%37 = alloca double*
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca double*
%59 = alloca double*
%60 = alloca double*
%61 = alloca double*
store double* %0, double** %24
store double* %1, double** %25
store double* %2, double** %26
store double* %3, double** %27
store i32* %4, i32** %28
store i32* %5, i32** %29
store double* %6, double** %30
store i32* %7, i32** %31
store i32* %8, i32** %32
store double* %9, double** %33
store double* %10, double** %34
store double* %11, double** %35
store double* %12, double** %36
store double* %13, double** %37
store i32 %14, i32* %38
store i32 %15, i32* %39
store i32 %16, i32* %40
store i32 %17, i32* %41
store i32 %18, i32* %42
store i32 %19, i32* %43
store i32 %20, i32* %44
store i32 %21, i32* %45
store i32 %22, i32* %46
%62 = load i32, i32* %42
%63 = load i32, i32* %38
%64 = mul nsw i32 %62, %63
%65 = load i32, i32* %39
%66 = mul nsw i32 %64, %65
%67 = load i32, i32* %38
%68 = mul nsw i32 %66, %67
%69 = load i32, i32* %39
%70 = mul nsw i32 %68, %69
%71 = load i32, i32* %41
%72 = mul nsw i32 %70, %71
%73 = load i32, i32* %38
%74 = mul nsw i32 %72, %73
%75 = load i32, i32* %39
%76 = mul nsw i32 %74, %75
%77 = load i32, i32* %45
%78 = mul nsw i32 %76, %77
%79 = sext i32 %78 to i64
%80 = mul i64 %79, 8
%81 = call i8* @malloc(i64 %80)
%82 = bitcast i8* %81 to double*
store double* %82, double** %58
%83 = load i32, i32* %42
%84 = load i32, i32* %38
%85 = mul nsw i32 %83, %84
%86 = load i32, i32* %39
%87 = mul nsw i32 %85, %86
%88 = load i32, i32* %38
%89 = mul nsw i32 %87, %88
%90 = load i32, i32* %39
%91 = mul nsw i32 %89, %90
%92 = load i32, i32* %41
%93 = mul nsw i32 %91, %92
%94 = load i32, i32* %38
%95 = mul nsw i32 %93, %94
%96 = load i32, i32* %39
%97 = mul nsw i32 %95, %96
%98 = load i32, i32* %45
%99 = mul nsw i32 %97, %98
%100 = sext i32 %99 to i64
%101 = mul i64 %100, 8
%102 = call i8* @malloc(i64 %101)
%103 = bitcast i8* %102 to double*
store double* %103, double** %59
%104 = load i32, i32* %42
%105 = load i32, i32* %38
%106 = mul nsw i32 %104, %105
%107 = load i32, i32* %39
%108 = mul nsw i32 %106, %107
%109 = load i32, i32* %38
%110 = mul nsw i32 %108, %109
%111 = load i32, i32* %39
%112 = mul nsw i32 %110, %111
%113 = load i32, i32* %41
%114 = mul nsw i32 %112, %113
%115 = load i32, i32* %38
%116 = mul nsw i32 %114, %115
%117 = load i32, i32* %39
%118 = mul nsw i32 %116, %117
%119 = load i32, i32* %45
%120 = mul nsw i32 %118, %119
%121 = sext i32 %120 to i64
%122 = mul i64 %121, 8
%123 = call i8* @malloc(i64 %122)
%124 = bitcast i8* %123 to double*
store double* %124, double** %60
%125 = load i32, i32* %42
%126 = load i32, i32* %38
%127 = mul nsw i32 %125, %126
%128 = load i32, i32* %39
%129 = mul nsw i32 %127, %128
%130 = load i32, i32* %38
%131 = mul nsw i32 %129, %130
%132 = load i32, i32* %39
%133 = mul nsw i32 %131, %132
%134 = load i32, i32* %41
%135 = mul nsw i32 %133, %134
%136 = load i32, i32* %38
%137 = mul nsw i32 %135, %136
%138 = load i32, i32* %39
%139 = mul nsw i32 %137, %138
%140 = load i32, i32* %45
%141 = mul nsw i32 %139, %140
%142 = sext i32 %141 to i64
%143 = mul i64 %142, 8
%144 = call i8* @malloc(i64 %143)
%145 = bitcast i8* %144 to double*
store double* %145, double** %61
%146 = load double*, double** %58
%147 = load double*, double** %59
%148 = load double*, double** %26
%149 = load double*, double** %27
%150 = load i32*, i32** %28
%151 = load i32*, i32** %29
%152 = load double*, double** %30
%153 = load double*, double** %34
%154 = load double*, double** %35
%155 = load i32, i32* %38
%156 = load i32, i32* %39
%157 = load i32, i32* %40
%158 = load i32, i32* %41
%159 = load i32, i32* %42
%160 = load i32, i32* %43
%161 = load i32, i32* %44
%162 = load i32, i32* %45
%163 = call i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @make_local_block to i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(double* %146, double* %147, double* %148, double* %149, i32* %150, i32* %151, double* %152, double* %153, double* %154, i32 %155, i32 %156, i32 %157, i32 %158, i32 %159, i32 %160, i32 %161, i32 %162)
%164 = load double*, double** %60
%165 = load double*, double** %61
%166 = load double*, double** %26
%167 = load double*, double** %27
%168 = load i32*, i32** %31
%169 = load i32*, i32** %32
%170 = load double*, double** %33
%171 = load double*, double** %34
%172 = load double*, double** %35
%173 = load i32, i32* %38
%174 = load i32, i32* %39
%175 = load i32, i32* %40
%176 = load i32, i32* %41
%177 = load i32, i32* %42
%178 = load i32, i32* %43
%179 = load i32, i32* %44
%180 = load i32, i32* %45
%181 = call i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @make_local_block to i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(double* %164, double* %165, double* %166, double* %167, i32* %168, i32* %169, double* %170, double* %171, double* %172, i32 %173, i32 %174, i32 %175, i32 %176, i32 %177, i32 %178, i32 %179, i32 %180)
store i32 0, i32* %57
br label %182
182: ; preds = %421, %23
%183 = load i32, i32* %57
%184 = load i32, i32* %43
%185 = icmp slt i32 %183, %184
br i1 %185, label %186, label %424
186: ; preds = %182
%187 = load i32*, i32** %28
%188 = load i32, i32* %57
%189 = load i32, i32* %44
%190 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %188, i32 0, i32 %189)
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds i32, i32* %187, i64 %191
%193 = load i32, i32* %192
store i32 %193, i32* %51
%194 = load i32*, i32** %29
%195 = load i32, i32* %57
%196 = load i32, i32* %44
%197 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %195, i32 0, i32 %196)
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds i32, i32* %194, i64 %198
%200 = load i32, i32* %199
store i32 %200, i32* %52
%201 = load i32*, i32** %28
%202 = load i32, i32* %57
%203 = load i32, i32* %44
%204 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %202, i32 1, i32 %203)
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds i32, i32* %201, i64 %205
%207 = load i32, i32* %206
store i32 %207, i32* %53
%208 = load i32*, i32** %29
%209 = load i32, i32* %57
%210 = load i32, i32* %44
%211 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %209, i32 1, i32 %210)
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i32, i32* %208, i64 %212
%214 = load i32, i32* %213
store i32 %214, i32* %54
%215 = load i32*, i32** %28
%216 = load i32, i32* %57
%217 = load i32, i32* %44
%218 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %216, i32 2, i32 %217)
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds i32, i32* %215, i64 %219
%221 = load i32, i32* %220
store i32 %221, i32* %55
%222 = load i32*, i32** %29
%223 = load i32, i32* %57
%224 = load i32, i32* %44
%225 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %223, i32 2, i32 %224)
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds i32, i32* %222, i64 %226
%228 = load i32, i32* %227
store i32 %228, i32* %56
store i32 0, i32* %48
br label %229
229: ; preds = %417, %186
%230 = load i32, i32* %48
%231 = load i32, i32* %45
%232 = icmp slt i32 %230, %231
br i1 %232, label %233, label %420
233: ; preds = %229
store i32 0, i32* %47
br label %234
234: ; preds = %413, %233
%235 = load i32, i32* %47
%236 = load i32, i32* %46
%237 = icmp slt i32 %235, %236
br i1 %237, label %238, label %416
238: ; preds = %234
store i32 0, i32* %49
br label %239
239: ; preds = %409, %238
%240 = load i32, i32* %49
%241 = load i32, i32* %42
%242 = icmp slt i32 %240, %241
br i1 %242, label %243, label %412
243: ; preds = %239
store i32 0, i32* %50
br label %244
244: ; preds = %405, %243
%245 = load i32, i32* %50
%246 = load i32, i32* %41
%247 = icmp slt i32 %245, %246
br i1 %247, label %248, label %408
248: ; preds = %244
%249 = load double*, double** %30
%250 = load i32, i32* %57
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds double, double* %249, i64 %251
%253 = load double, double* %252
%254 = load double*, double** %36
%255 = load i32, i32* %50
%256 = load i32, i32* %47
%257 = load i32, i32* %46
%258 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %255, i32 %256, i32 %257)
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds double, double* %254, i64 %259
%261 = load double, double* %260
%262 = load double*, double** %58
%263 = load i32, i32* %49
%264 = load i32, i32* %51
%265 = load i32, i32* %52
%266 = load i32, i32* %55
%267 = load i32, i32* %56
%268 = load i32, i32* %50
%269 = load i32, i32* %53
%270 = load i32, i32* %54
%271 = load i32, i32* %48
%272 = load i32, i32* %38
%273 = load i32, i32* %39
%274 = load i32, i32* %41
%275 = load i32, i32* %45
%276 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %263, i32 %264, i32 %265, i32 %266, i32 %267, i32 %268, i32 %269, i32 %270, i32 %271, i32 %272, i32 %273, i32 %274, i32 %275)
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds double, double* %262, i64 %277
%279 = load double, double* %278
%280 = load double*, double** %37
%281 = load i32, i32* %50
%282 = load i32, i32* %47
%283 = load i32, i32* %46
%284 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %281, i32 %282, i32 %283)
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds double, double* %280, i64 %285
%287 = load double, double* %286
%288 = load double*, double** %59
%289 = load i32, i32* %49
%290 = load i32, i32* %51
%291 = load i32, i32* %52
%292 = load i32, i32* %55
%293 = load i32, i32* %56
%294 = load i32, i32* %50
%295 = load i32, i32* %53
%296 = load i32, i32* %54
%297 = load i32, i32* %48
%298 = load i32, i32* %38
%299 = load i32, i32* %39
%300 = load i32, i32* %41
%301 = load i32, i32* %45
%302 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %289, i32 %290, i32 %291, i32 %292, i32 %293, i32 %294, i32 %295, i32 %296, i32 %297, i32 %298, i32 %299, i32 %300, i32 %301)
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds double, double* %288, i64 %303
%305 = load double, double* %304
%306 = fmul double %287, %305
%307 = fneg double %306
%308 = call double @llvm.fmuladd.f64(double %261, double %279, double %307)
%309 = fmul double %253, %308
%310 = load i32, i32* %40
%311 = load i32, i32* %41
%312 = mul nsw i32 %310, %311
%313 = sitofp i32 %312 to double
%314 = fdiv double %309, %313
%315 = load double*, double** %24
%316 = load i32, i32* %48
%317 = load i32, i32* %47
%318 = load i32, i32* %49
%319 = load i32, i32* %45
%320 = load i32, i32* %46
%321 = load i32, i32* %42
%322 = call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 0, i32 %316, i32 %317, i32 %318, i32 %319, i32 %320, i32 %321)
%323 = sext i32 %322 to i64
%324 = getelementptr inbounds double, double* %315, i64 %323
%325 = load double, double* %324
%326 = fadd double %325, %314
store double %326, double* %324
%327 = load double*, double** %30
%328 = load i32, i32* %57
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds double, double* %327, i64 %329
%331 = load double, double* %330
%332 = load double*, double** %36
%333 = load i32, i32* %50
%334 = load i32, i32* %47
%335 = load i32, i32* %46
%336 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %333, i32 %334, i32 %335)
%337 = sext i32 %336 to i64
%338 = getelementptr inbounds double, double* %332, i64 %337
%339 = load double, double* %338
%340 = load double*, double** %59
%341 = load i32, i32* %49
%342 = load i32, i32* %51
%343 = load i32, i32* %52
%344 = load i32, i32* %55
%345 = load i32, i32* %56
%346 = load i32, i32* %50
%347 = load i32, i32* %53
%348 = load i32, i32* %54
%349 = load i32, i32* %48
%350 = load i32, i32* %38
%351 = load i32, i32* %39
%352 = load i32, i32* %41
%353 = load i32, i32* %45
%354 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %341, i32 %342, i32 %343, i32 %344, i32 %345, i32 %346, i32 %347, i32 %348, i32 %349, i32 %350, i32 %351, i32 %352, i32 %353)
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds double, double* %340, i64 %355
%357 = load double, double* %356
%358 = load double*, double** %37
%359 = load i32, i32* %50
%360 = load i32, i32* %47
%361 = load i32, i32* %46
%362 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %359, i32 %360, i32 %361)
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds double, double* %358, i64 %363
%365 = load double, double* %364
%366 = load double*, double** %58
%367 = load i32, i32* %49
%368 = load i32, i32* %51
%369 = load i32, i32* %52
%370 = load i32, i32* %55
%371 = load i32, i32* %56
%372 = load i32, i32* %50
%373 = load i32, i32* %53
%374 = load i32, i32* %54
%375 = load i32, i32* %48
%376 = load i32, i32* %38
%377 = load i32, i32* %39
%378 = load i32, i32* %41
%379 = load i32, i32* %45
%380 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %367, i32 %368, i32 %369, i32 %370, i32 %371, i32 %372, i32 %373, i32 %374, i32 %375, i32 %376, i32 %377, i32 %378, i32 %379)
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds double, double* %366, i64 %381
%383 = load double, double* %382
%384 = fmul double %365, %383
%385 = fneg double %384
%386 = call double @llvm.fmuladd.f64(double %339, double %357, double %385)
%387 = fmul double %331, %386
%388 = load i32, i32* %40
%389 = load i32, i32* %41
%390 = mul nsw i32 %388, %389
%391 = sitofp i32 %390 to double
%392 = fdiv double %387, %391
%393 = load double*, double** %25
%394 = load i32, i32* %48
%395 = load i32, i32* %47
%396 = load i32, i32* %49
%397 = load i32, i32* %45
%398 = load i32, i32* %46
%399 = load i32, i32* %42
%400 = call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 0, i32 %394, i32 %395, i32 %396, i32 %397, i32 %398, i32 %399)
%401 = sext i32 %400 to i64
%402 = getelementptr inbounds double, double* %393, i64 %401
%403 = load double, double* %402
%404 = fadd double %403, %392
store double %404, double* %402
br label %405
405: ; preds = %248
%406 = load i32, i32* %50
%407 = add nsw i32 %406, 1
store i32 %407, i32* %50
br label %244
408: ; preds = %244
br label %409
409: ; preds = %408
%410 = load i32, i32* %49
%411 = add nsw i32 %410, 1
store i32 %411, i32* %49
br label %239
412: ; preds = %239
br label %413
413: ; preds = %412
%414 = load i32, i32* %47
%415 = add nsw i32 %414, 1
store i32 %415, i32* %47
br label %234
416: ; preds = %234
br label %417
417: ; preds = %416
%418 = load i32, i32* %48
%419 = add nsw i32 %418, 1
store i32 %419, i32* %48
br label %229
420: ; preds = %229
br label %421
421: ; preds = %420
%422 = load i32, i32* %57
%423 = add nsw i32 %422, 1
store i32 %423, i32* %57
br label %182
424: ; preds = %182
store i32 0, i32* %57
br label %425
425: ; preds = %664, %424
%426 = load i32, i32* %57
%427 = load i32, i32* %43
%428 = icmp slt i32 %426, %427
br i1 %428, label %429, label %667
429: ; preds = %425
%430 = load i32*, i32** %31
%431 = load i32, i32* %57
%432 = load i32, i32* %44
%433 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %431, i32 0, i32 %432)
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds i32, i32* %430, i64 %434
%436 = load i32, i32* %435
store i32 %436, i32* %51
%437 = load i32*, i32** %32
%438 = load i32, i32* %57
%439 = load i32, i32* %44
%440 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %438, i32 0, i32 %439)
%441 = sext i32 %440 to i64
%442 = getelementptr inbounds i32, i32* %437, i64 %441
%443 = load i32, i32* %442
store i32 %443, i32* %52
%444 = load i32*, i32** %31
%445 = load i32, i32* %57
%446 = load i32, i32* %44
%447 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %445, i32 1, i32 %446)
%448 = sext i32 %447 to i64
%449 = getelementptr inbounds i32, i32* %444, i64 %448
%450 = load i32, i32* %449
store i32 %450, i32* %53
%451 = load i32*, i32** %32
%452 = load i32, i32* %57
%453 = load i32, i32* %44
%454 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %452, i32 1, i32 %453)
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds i32, i32* %451, i64 %455
%457 = load i32, i32* %456
store i32 %457, i32* %54
%458 = load i32*, i32** %31
%459 = load i32, i32* %57
%460 = load i32, i32* %44
%461 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %459, i32 2, i32 %460)
%462 = sext i32 %461 to i64
%463 = getelementptr inbounds i32, i32* %458, i64 %462
%464 = load i32, i32* %463
store i32 %464, i32* %55
%465 = load i32*, i32** %32
%466 = load i32, i32* %57
%467 = load i32, i32* %44
%468 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %466, i32 2, i32 %467)
%469 = sext i32 %468 to i64
%470 = getelementptr inbounds i32, i32* %465, i64 %469
%471 = load i32, i32* %470
store i32 %471, i32* %56
store i32 0, i32* %48
br label %472
472: ; preds = %660, %429
%473 = load i32, i32* %48
%474 = load i32, i32* %45
%475 = icmp slt i32 %473, %474
br i1 %475, label %476, label %663
476: ; preds = %472
store i32 0, i32* %47
br label %477
477: ; preds = %656, %476
%478 = load i32, i32* %47
%479 = load i32, i32* %46
%480 = icmp slt i32 %478, %479
br i1 %480, label %481, label %659
481: ; preds = %477
store i32 0, i32* %49
br label %482
482: ; preds = %652, %481
%483 = load i32, i32* %49
%484 = load i32, i32* %42
%485 = icmp slt i32 %483, %484
br i1 %485, label %486, label %655
486: ; preds = %482
store i32 0, i32* %50
br label %487
487: ; preds = %648, %486
%488 = load i32, i32* %50
%489 = load i32, i32* %41
%490 = icmp slt i32 %488, %489
br i1 %490, label %491, label %651
491: ; preds = %487
%492 = load double*, double** %33
%493 = load i32, i32* %57
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double, double* %492, i64 %494
%496 = load double, double* %495
%497 = load double*, double** %36
%498 = load i32, i32* %50
%499 = load i32, i32* %47
%500 = load i32, i32* %46
%501 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %498, i32 %499, i32 %500)
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds double, double* %497, i64 %502
%504 = load double, double* %503
%505 = load double*, double** %60
%506 = load i32, i32* %49
%507 = load i32, i32* %51
%508 = load i32, i32* %52
%509 = load i32, i32* %55
%510 = load i32, i32* %56
%511 = load i32, i32* %50
%512 = load i32, i32* %53
%513 = load i32, i32* %54
%514 = load i32, i32* %48
%515 = load i32, i32* %38
%516 = load i32, i32* %39
%517 = load i32, i32* %41
%518 = load i32, i32* %45
%519 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %506, i32 %507, i32 %508, i32 %509, i32 %510, i32 %511, i32 %512, i32 %513, i32 %514, i32 %515, i32 %516, i32 %517, i32 %518)
%520 = sext i32 %519 to i64
%521 = getelementptr inbounds double, double* %505, i64 %520
%522 = load double, double* %521
%523 = load double*, double** %37
%524 = load i32, i32* %50
%525 = load i32, i32* %47
%526 = load i32, i32* %46
%527 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %524, i32 %525, i32 %526)
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds double, double* %523, i64 %528
%530 = load double, double* %529
%531 = load double*, double** %61
%532 = load i32, i32* %49
%533 = load i32, i32* %51
%534 = load i32, i32* %52
%535 = load i32, i32* %55
%536 = load i32, i32* %56
%537 = load i32, i32* %50
%538 = load i32, i32* %53
%539 = load i32, i32* %54
%540 = load i32, i32* %48
%541 = load i32, i32* %38
%542 = load i32, i32* %39
%543 = load i32, i32* %41
%544 = load i32, i32* %45
%545 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %532, i32 %533, i32 %534, i32 %535, i32 %536, i32 %537, i32 %538, i32 %539, i32 %540, i32 %541, i32 %542, i32 %543, i32 %544)
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds double, double* %531, i64 %546
%548 = load double, double* %547
%549 = fmul double %530, %548
%550 = fneg double %549
%551 = call double @llvm.fmuladd.f64(double %504, double %522, double %550)
%552 = fmul double %496, %551
%553 = load i32, i32* %40
%554 = load i32, i32* %41
%555 = mul nsw i32 %553, %554
%556 = sitofp i32 %555 to double
%557 = fdiv double %552, %556
%558 = load double*, double** %24
%559 = load i32, i32* %48
%560 = load i32, i32* %47
%561 = load i32, i32* %49
%562 = load i32, i32* %45
%563 = load i32, i32* %46
%564 = load i32, i32* %42
%565 = call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 1, i32 %559, i32 %560, i32 %561, i32 %562, i32 %563, i32 %564)
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds double, double* %558, i64 %566
%568 = load double, double* %567
%569 = fadd double %568, %557
store double %569, double* %567
%570 = load double*, double** %33
%571 = load i32, i32* %57
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds double, double* %570, i64 %572
%574 = load double, double* %573
%575 = load double*, double** %36
%576 = load i32, i32* %50
%577 = load i32, i32* %47
%578 = load i32, i32* %46
%579 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %576, i32 %577, i32 %578)
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds double, double* %575, i64 %580
%582 = load double, double* %581
%583 = load double*, double** %61
%584 = load i32, i32* %49
%585 = load i32, i32* %51
%586 = load i32, i32* %52
%587 = load i32, i32* %55
%588 = load i32, i32* %56
%589 = load i32, i32* %50
%590 = load i32, i32* %53
%591 = load i32, i32* %54
%592 = load i32, i32* %48
%593 = load i32, i32* %38
%594 = load i32, i32* %39
%595 = load i32, i32* %41
%596 = load i32, i32* %45
%597 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %584, i32 %585, i32 %586, i32 %587, i32 %588, i32 %589, i32 %590, i32 %591, i32 %592, i32 %593, i32 %594, i32 %595, i32 %596)
%598 = sext i32 %597 to i64
%599 = getelementptr inbounds double, double* %583, i64 %598
%600 = load double, double* %599
%601 = load double*, double** %37
%602 = load i32, i32* %50
%603 = load i32, i32* %47
%604 = load i32, i32* %46
%605 = call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %602, i32 %603, i32 %604)
%606 = sext i32 %605 to i64
%607 = getelementptr inbounds double, double* %601, i64 %606
%608 = load double, double* %607
%609 = load double*, double** %60
%610 = load i32, i32* %49
%611 = load i32, i32* %51
%612 = load i32, i32* %52
%613 = load i32, i32* %55
%614 = load i32, i32* %56
%615 = load i32, i32* %50
%616 = load i32, i32* %53
%617 = load i32, i32* %54
%618 = load i32, i32* %48
%619 = load i32, i32* %38
%620 = load i32, i32* %39
%621 = load i32, i32* %41
%622 = load i32, i32* %45
%623 = call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %610, i32 %611, i32 %612, i32 %613, i32 %614, i32 %615, i32 %616, i32 %617, i32 %618, i32 %619, i32 %620, i32 %621, i32 %622)
%624 = sext i32 %623 to i64
%625 = getelementptr inbounds double, double* %609, i64 %624
%626 = load double, double* %625
%627 = fmul double %608, %626
%628 = fneg double %627
%629 = call double @llvm.fmuladd.f64(double %582, double %600, double %628)
%630 = fmul double %574, %629
%631 = load i32, i32* %40
%632 = load i32, i32* %41
%633 = mul nsw i32 %631, %632
%634 = sitofp i32 %633 to double
%635 = fdiv double %630, %634
%636 = load double*, double** %25
%637 = load i32, i32* %48
%638 = load i32, i32* %47
%639 = load i32, i32* %49
%640 = load i32, i32* %45
%641 = load i32, i32* %46
%642 = load i32, i32* %42
%643 = call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 1, i32 %637, i32 %638, i32 %639, i32 %640, i32 %641, i32 %642)
%644 = sext i32 %643 to i64
%645 = getelementptr inbounds double, double* %636, i64 %644
%646 = load double, double* %645
%647 = fadd double %646, %635
store double %647, double* %645
br label %648
648: ; preds = %491
%649 = load i32, i32* %50
%650 = add nsw i32 %649, 1
store i32 %650, i32* %50
br label %487
651: ; preds = %487
br label %652
652: ; preds = %651
%653 = load i32, i32* %49
%654 = add nsw i32 %653, 1
store i32 %654, i32* %49
br label %482
655: ; preds = %482
br label %656
656: ; preds = %655
%657 = load i32, i32* %47
%658 = add nsw i32 %657, 1
store i32 %658, i32* %47
br label %477
659: ; preds = %477
br label %660
660: ; preds = %659
%661 = load i32, i32* %48
%662 = add nsw i32 %661, 1
store i32 %662, i32* %48
br label %472
663: ; preds = %472
br label %664
664: ; preds = %663
%665 = load i32, i32* %57
%666 = add nsw i32 %665, 1
store i32 %666, i32* %57
br label %425
667: ; preds = %425
%668 = load double*, double** %58
%669 = bitcast double* %668 to i8*
%670 = load double*, double** %59
%671 = bitcast double* %670 to i8*
%672 = load double*, double** %60
%673 = bitcast double* %672 to i8*
%674 = load double*, double** %61
%675 = bitcast double* %674 to i8*
ret void
}

LLVM IR (-O2):
define void @make_nucleon_2pt(double* nocapture %0, double* nocapture %1, double* %2, double* %3, i32* %4, i32* %5, double* %6, i32* %7, i32* %8, double* %9, double* %10, double* %11, double* nocapture %12, double* nocapture %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21, i32 %22) {
%24 = mul i32 %15, %14
%25 = mul i32 %24, %24
%26 = mul i32 %25, %24
%27 = mul i32 %26, %17
%28 = mul i32 %27, %18
%29 = mul i32 %28, %21
%30 = sext i32 %29 to i64
%31 = shl nsw i64 %30, 3
%32 = tail call i8* @malloc(i64 %31)
%33 = bitcast i8* %32 to double*
%34 = tail call i8* @malloc(i64 %31)
%35 = bitcast i8* %34 to double*
%36 = tail call i8* @malloc(i64 %31)
%37 = bitcast i8* %36 to double*
%38 = tail call i8* @malloc(i64 %31)
%39 = bitcast i8* %38 to double*
%40 = tail call i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @make_local_block to i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(double* %33, double* %35, double* %2, double* %3, i32* %4, i32* %5, double* %6, double* %10, double* %11, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21)
%41 = tail call i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @make_local_block to i32 (double*, double*, double*, double*, i32*, i32*, double*, double*, double*, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(double* %37, double* %39, double* %2, double* %3, i32* %7, i32* %8, double* %9, double* %10, double* %11, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32 %19, i32 %20, i32 %21)
%42 = icmp sgt i32 %19, 0
br i1 %42, label %43, label %270
43: ; preds = %23
%44 = icmp sgt i32 %21, 0
%45 = icmp sgt i32 %22, 0
%46 = icmp sgt i32 %18, 0
%47 = icmp sgt i32 %17, 0
%48 = mul nsw i32 %17, %16
%49 = sitofp i32 %48 to double
%50 = zext i32 %19 to i64
br label %60
51: ; preds = %162
br i1 %42, label %52, label %270
52: ; preds = %51
%53 = icmp sgt i32 %21, 0
%54 = icmp sgt i32 %22, 0
%55 = icmp sgt i32 %18, 0
%56 = icmp sgt i32 %17, 0
%57 = mul nsw i32 %17, %16
%58 = sitofp i32 %57 to double
%59 = zext i32 %19 to i64
br label %165
60: ; preds = %43, %162
%61 = phi i64 [ 0, %43 ], [ %163, %162 ]
%62 = trunc i64 %61 to i32
%63 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 0, i32 %20)
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds i32, i32* %4, i64 %64
%66 = load i32, i32* %65
%67 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 0, i32 %20)
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i32, i32* %5, i64 %68
%70 = load i32, i32* %69
%71 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 1, i32 %20)
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds i32, i32* %4, i64 %72
%74 = load i32, i32* %73
%75 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 1, i32 %20)
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i32, i32* %5, i64 %76
%78 = load i32, i32* %77
%79 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 2, i32 %20)
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds i32, i32* %4, i64 %80
%82 = load i32, i32* %81
%83 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %62, i32 2, i32 %20)
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i32, i32* %5, i64 %84
%86 = load i32, i32* %85
br i1 %44, label %87, label %162
87: ; preds = %60
%88 = getelementptr inbounds double, double* %6, i64 %61
br label %89
89: ; preds = %87, %159
%90 = phi i32 [ 0, %87 ], [ %160, %159 ]
br i1 %45, label %91, label %159
91: ; preds = %89, %156
%92 = phi i32 [ %157, %156 ], [ 0, %89 ]
br i1 %46, label %93, label %156
93: ; preds = %91, %153
%94 = phi i32 [ %154, %153 ], [ 0, %91 ]
br i1 %47, label %95, label %153
95: ; preds = %93, %95
%96 = phi i32 [ %151, %95 ], [ 0, %93 ]
%97 = load double, double* %88
%98 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %96, i32 %92, i32 %22)
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds double, double* %12, i64 %99
%101 = load double, double* %100
%102 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %94, i32 %66, i32 %70, i32 %82, i32 %86, i32 %96, i32 %74, i32 %78, i32 %90, i32 %14, i32 %15, i32 %17, i32 %21)
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds double, double* %33, i64 %103
%105 = load double, double* %104
%106 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %96, i32 %92, i32 %22)
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds double, double* %13, i64 %107
%109 = load double, double* %108
%110 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %94, i32 %66, i32 %70, i32 %82, i32 %86, i32 %96, i32 %74, i32 %78, i32 %90, i32 %14, i32 %15, i32 %17, i32 %21)
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds double, double* %35, i64 %111
%113 = load double, double* %112
%114 = fneg double %109
%115 = fmul double %113, %114
%116 = tail call double @llvm.fmuladd.f64(double %101, double %105, double %115)
%117 = fmul double %97, %116
%118 = fdiv double %117, %49
%119 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 0, i32 %90, i32 %92, i32 %94, i32 %21, i32 %22, i32 %18)
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds double, double* %0, i64 %120
%122 = load double, double* %121
%123 = fadd double %122, %118
store double %123, double* %121
%124 = load double, double* %88
%125 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %96, i32 %92, i32 %22)
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds double, double* %12, i64 %126
%128 = load double, double* %127
%129 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %94, i32 %66, i32 %70, i32 %82, i32 %86, i32 %96, i32 %74, i32 %78, i32 %90, i32 %14, i32 %15, i32 %17, i32 %21)
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds double, double* %35, i64 %130
%132 = load double, double* %131
%133 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %96, i32 %92, i32 %22)
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds double, double* %13, i64 %134
%136 = load double, double* %135
%137 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %94, i32 %66, i32 %70, i32 %82, i32 %86, i32 %96, i32 %74, i32 %78, i32 %90, i32 %14, i32 %15, i32 %17, i32 %21)
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds double, double* %33, i64 %138
%140 = load double, double* %139
%141 = fneg double %136
%142 = fmul double %140, %141
%143 = tail call double @llvm.fmuladd.f64(double %128, double %132, double %142)
%144 = fmul double %124, %143
%145 = fdiv double %144, %49
%146 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 0, i32 %90, i32 %92, i32 %94, i32 %21, i32 %22, i32 %18)
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %1, i64 %147
%149 = load double, double* %148
%150 = fadd double %149, %145
store double %150, double* %148
%151 = add nuw nsw i32 %96, 1
%152 = icmp eq i32 %151, %17
br i1 %152, label %153, label %95
153: ; preds = %95, %93
%154 = add nuw nsw i32 %94, 1
%155 = icmp eq i32 %154, %18
br i1 %155, label %156, label %93
156: ; preds = %153, %91
%157 = add nuw nsw i32 %92, 1
%158 = icmp eq i32 %157, %22
br i1 %158, label %159, label %91
159: ; preds = %156, %89
%160 = add nuw nsw i32 %90, 1
%161 = icmp eq i32 %160, %21
br i1 %161, label %162, label %89
162: ; preds = %159, %60
%163 = add nuw nsw i64 %61, 1
%164 = icmp eq i64 %163, %50
br i1 %164, label %51, label %60
165: ; preds = %52, %267
%166 = phi i64 [ 0, %52 ], [ %268, %267 ]
%167 = trunc i64 %166 to i32
%168 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 0, i32 %20)
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds i32, i32* %7, i64 %169
%171 = load i32, i32* %170
%172 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 0, i32 %20)
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds i32, i32* %8, i64 %173
%175 = load i32, i32* %174
%176 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 1, i32 %20)
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds i32, i32* %7, i64 %177
%179 = load i32, i32* %178
%180 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 1, i32 %20)
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds i32, i32* %8, i64 %181
%183 = load i32, i32* %182
%184 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 2, i32 %20)
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i32, i32* %7, i64 %185
%187 = load i32, i32* %186
%188 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %167, i32 2, i32 %20)
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i32, i32* %8, i64 %189
%191 = load i32, i32* %190
br i1 %53, label %192, label %267
192: ; preds = %165
%193 = getelementptr inbounds double, double* %9, i64 %166
br label %194
194: ; preds = %192, %264
%195 = phi i32 [ 0, %192 ], [ %265, %264 ]
br i1 %54, label %196, label %264
196: ; preds = %194, %261
%197 = phi i32 [ %262, %261 ], [ 0, %194 ]
br i1 %55, label %198, label %261
198: ; preds = %196, %258
%199 = phi i32 [ %259, %258 ], [ 0, %196 ]
br i1 %56, label %200, label %258
200: ; preds = %198, %200
%201 = phi i32 [ %256, %200 ], [ 0, %198 ]
%202 = load double, double* %193
%203 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %201, i32 %197, i32 %22)
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds double, double* %12, i64 %204
%206 = load double, double* %205
%207 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %199, i32 %171, i32 %175, i32 %187, i32 %191, i32 %201, i32 %179, i32 %183, i32 %195, i32 %14, i32 %15, i32 %17, i32 %21)
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds double, double* %37, i64 %208
%210 = load double, double* %209
%211 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %201, i32 %197, i32 %22)
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds double, double* %13, i64 %212
%214 = load double, double* %213
%215 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %199, i32 %171, i32 %175, i32 %187, i32 %191, i32 %201, i32 %179, i32 %183, i32 %195, i32 %14, i32 %15, i32 %17, i32 %21)
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds double, double* %39, i64 %216
%218 = load double, double* %217
%219 = fneg double %214
%220 = fmul double %218, %219
%221 = tail call double @llvm.fmuladd.f64(double %206, double %210, double %220)
%222 = fmul double %202, %221
%223 = fdiv double %222, %58
%224 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 1, i32 %195, i32 %197, i32 %199, i32 %21, i32 %22, i32 %18)
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds double, double* %0, i64 %225
%227 = load double, double* %226
%228 = fadd double %227, %223
store double %228, double* %226
%229 = load double, double* %193
%230 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %201, i32 %197, i32 %22)
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds double, double* %12, i64 %231
%233 = load double, double* %232
%234 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %199, i32 %171, i32 %175, i32 %187, i32 %191, i32 %201, i32 %179, i32 %183, i32 %195, i32 %14, i32 %15, i32 %17, i32 %21)
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds double, double* %39, i64 %235
%237 = load double, double* %236
%238 = tail call i32 (i32, i32, i32, ...) bitcast (i32 (...)* @index_2d to i32 (i32, i32, i32, ...)*)(i32 %201, i32 %197, i32 %22)
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds double, double* %13, i64 %239
%241 = load double, double* %240
%242 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @Blocal_index to i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 %199, i32 %171, i32 %175, i32 %187, i32 %191, i32 %201, i32 %179, i32 %183, i32 %195, i32 %14, i32 %15, i32 %17, i32 %21)
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds double, double* %37, i64 %243
%245 = load double, double* %244
%246 = fneg double %241
%247 = fmul double %245, %246
%248 = tail call double @llvm.fmuladd.f64(double %233, double %237, double %247)
%249 = fmul double %229, %248
%250 = fdiv double %249, %58
%251 = tail call i32 (i32, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @index_4d to i32 (i32, i32, i32, i32, i32, i32, i32, ...)*)(i32 1, i32 %195, i32 %197, i32 %199, i32 %21, i32 %22, i32 %18)
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds double, double* %1, i64 %252
%254 = load double, double* %253
%255 = fadd double %254, %250
store double %255, double* %253
%256 = add nuw nsw i32 %201, 1
%257 = icmp eq i32 %256, %17
br i1 %257, label %258, label %200
258: ; preds = %200, %198
%259 = add nuw nsw i32 %199, 1
%260 = icmp eq i32 %259, %18
br i1 %260, label %261, label %198
261: ; preds = %258, %196
%262 = add nuw nsw i32 %197, 1
%263 = icmp eq i32 %262, %22
br i1 %263, label %264, label %196
264: ; preds = %261, %194
%265 = add nuw nsw i32 %195, 1
%266 = icmp eq i32 %265, %21
br i1 %266, label %267, label %194
267: ; preds = %264, %165
%268 = add nuw nsw i64 %166, 1
%269 = icmp eq i64 %268, %59
br i1 %269, label %270, label %165
270: ; preds = %267, %23, %51
tail call void @free(i8* %32)
tail call void @free(i8* %34)
tail call void @free(i8* %36)
tail call void @free(i8* %38)
ret void
}