void dist_4v_allt_v4(int **ovdi123, int *m4_t, int *m4_p, char *m4_s, int n123,
                     int n4, int **ovdi, int *n, int min_dist, int max_dist,
                     int n_transcripts, int *ml, int get_positions,
                     int order_constraint, int max_n_transcripts,
                     int max_n_ovdi, int pos_format,
                     int **ovdi_single_transcript, int **temp_ovdi,
                     int **ovdi123_p, int **ovdi1234, int **all_ovdi, int *m4p,
                     char *m4s, int *m123_p, char *m123_s, int verbose) {
  int i123, i4;
  int running_entries = 0;
  int errorcode = 0;
  int n1234_tr = 0;
  int transcript = 0;
  int curr_tr123, curr_tr4;
  int max_n_ovdi_single_transcript = 50000;
  int n1234;
  int n1234_stop = 0;
  int i, j;
  int curr_n123, curr_n4;
  i123 = 1;
  curr_tr123 = ovdi123[i123][1];
  i4 = 1;
  curr_tr4 = m4_t[i4];
  if (max_n_transcripts < 0)
    max_n_transcripts = n_transcripts + 1;
  while ((transcript < n_transcripts) & (n1234_tr <= max_n_transcripts)) {
    transcript++;
    if ((curr_tr123 < 0) | (curr_tr4 < 0))
      transcript = n_transcripts + 1;
    while ((curr_tr123 < transcript) & (curr_tr123 >= 0) & (i123 < n123)) {
      i123++;
      curr_tr123 = ovdi123[i123][1];
    }
    if (curr_tr123 == transcript) {
      curr_n123 = 0;
      while ((curr_tr123 == transcript) & (i123 <= n123)) {
        curr_n123++;
        ovdi123_p[curr_n123][1] = ovdi123[i123][2];
        ovdi123_p[curr_n123][2] = ovdi123[i123][3];
        ovdi123_p[curr_n123][3] = ovdi123[i123][4];
        ovdi123_p[curr_n123][4] = ovdi123[i123][5];
        ovdi123_p[curr_n123][5] = ovdi123[i123][6];
        ovdi123_p[curr_n123][6] = ovdi123[i123][7];
        ovdi123_p[curr_n123][7] = ovdi123[i123][8];
        ovdi123_p[curr_n123][8] = ovdi123[i123][9];
        ovdi123_p[curr_n123][9] = ovdi123[i123][10];
        i123++;
        if (i123 <= n123)
          curr_tr123 = ovdi123[i123][1];
      }
      i123--;
      curr_tr123 = transcript;
      while ((curr_tr4 < transcript) & (curr_tr4 >= 0) & (i4 < n4)) {
        i4++;
        curr_tr4 = m4_t[i4];
      }
      if (curr_tr4 == transcript) {
        curr_n4 = 0;
        while ((curr_tr4 == transcript) & (i4 <= n4)) {
          curr_n4++;
          m4p[curr_n4] = m4_p[i4];
          m4s[curr_n4] = m4_s[i4];
          i4++;
          if (i4 <= n4)
            curr_tr4 = m4_t[i4];
        }
        i4--;
        curr_tr4 = transcript;
        if (verbose)
          printf("dist_4v_allt_v3\ttranscript=%d\n", transcript);
        if (order_constraint < 0) {
          dist_4v_unordered_nostrand_v2(ovdi123_p, m4p, curr_n123, curr_n4,
                                        ovdi_single_transcript, n, min_dist,
                                        max_dist, max_n_ovdi_single_transcript,
                                        ml, get_positions, temp_ovdi, verbose);
        } else {
          if (order_constraint == 0) {
            dist_4v_unordered_v4(ovdi123_p, m4p, m4s, curr_n123, curr_n4,
                                 ovdi_single_transcript, n, min_dist, max_dist,
                                 max_n_ovdi_single_transcript, ml,
                                 get_positions, temp_ovdi);
          } else {
            dist_4v_ordered_v4(ovdi123_p, m4p, m4s, curr_n123, curr_n4,
                               ovdi_single_transcript, n, min_dist, max_dist,
                               max_n_ovdi_single_transcript, ml, get_positions,
                               pos_format, m123_p, m123_s, ovdi1234, temp_ovdi,
                               all_ovdi);
          }
        }
        n1234 = n[0];
        errorcode += n[1];
        if (n1234 > 0)
          n1234_tr++;
        if (get_positions == 1) {
          if ((running_entries + n1234) > max_n_ovdi) {
            get_positions = 0;
            errorcode--;
            printf("dist_4v_allt_v4\n");
            printf("transcript=%d (n_transcripts=%d)\n", transcript,
                   n_transcripts);
            printf("running_entries=%d\n", running_entries);
            printf("n1234=%d\n", n1234);
            printf("setting get_positions to 0\n");
            n1234_stop = running_entries;
          }
          i = 0;
          while ((i < n1234) & (running_entries < max_n_ovdi)) {
            i++;
            running_entries++;
            ovdi[running_entries][1] = transcript;
            ovdi[running_entries][2] = ovdi_single_transcript[i][1];
            ovdi[running_entries][3] = ovdi_single_transcript[i][2];
            ovdi[running_entries][4] = ovdi_single_transcript[i][3];
            ovdi[running_entries][5] = ovdi_single_transcript[i][4];
            ovdi[running_entries][6] = ovdi_single_transcript[i][5];
            ovdi[running_entries][7] = ovdi_single_transcript[i][6];
            ovdi[running_entries][8] = ovdi_single_transcript[i][7];
            ovdi[running_entries][9] = ovdi_single_transcript[i][8];
            ovdi[running_entries][10] = ovdi_single_transcript[i][9];
            ovdi[running_entries][11] = ovdi_single_transcript[i][10];
            ovdi[running_entries][12] = ovdi_single_transcript[i][11];
            ovdi[running_entries][13] = ovdi_single_transcript[i][12];
          }
        } else {
          running_entries += n1234;
        }
      }
    }
  }
  n[0] = running_entries;
  n[1] = n1234_tr;
  n[2] = errorcode;
  if (errorcode < 0) {
    if (n1234_stop <= 0)
      n1234_stop = running_entries;
    n[3] = n1234_stop;
  } else {
    n[3] = running_entries;
  }
}


x86 assembly (clang, -O0):
<dist_4v_allt_v4>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
mov    0xb0(%rbp),%eax
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%eax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
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    %r8d,-0x4c(%rbp)
mov    %r9d,-0x50(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x0,-0x60(%rbp)
movl   $0x0,-0x64(%rbp)
movl   $0x0,-0x68(%rbp)
movl   $0xc350,-0x74(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x1,-0x54(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x6c(%rbp)
movl   $0x1,-0x58(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,0x50(%rbp)
jge    1237 <dist_4v_allt_v4+0xf7>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,0x50(%rbp)
jmp    123c <dist_4v_allt_v4+0xfc>
mov    -0x68(%rbp),%eax
cmp    0x30(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x64(%rbp),%ecx
cmp    0x50(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1a24 <dist_4v_allt_v4+0x8e4>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x0,-0x6c(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x70(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
cmp    $0x0,%eax
je     129a <dist_4v_allt_v4+0x15a>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    129f <dist_4v_allt_v4+0x15f>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x6c(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x54(%rbp),%ecx
cmp    -0x4c(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     12f6 <dist_4v_allt_v4+0x1b6>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x6c(%rbp)
jmp    129f <dist_4v_allt_v4+0x15f>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jne    1a1f <dist_4v_allt_v4+0x8df>
movl   $0x0,-0x88(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x54(%rbp),%ecx
cmp    -0x4c(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1498 <dist_4v_allt_v4+0x358>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x14(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x10(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x14(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x1c(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x18(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x20(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x1c(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x24(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x20(%rax)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x28(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x88(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x24(%rax)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jg     1493 <dist_4v_allt_v4+0x353>
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x6c(%rbp)
jmp    130c <dist_4v_allt_v4+0x1cc>
mov    -0x54(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x54(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x68(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x70(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x58(%rbp),%ecx
cmp    -0x50(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14fa <dist_4v_allt_v4+0x3ba>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
jmp    14a7 <dist_4v_allt_v4+0x367>
mov    -0x70(%rbp),%eax
cmp    -0x68(%rbp),%eax
jne    1a1a <dist_4v_allt_v4+0x8da>
movl   $0x0,-0x8c(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x68(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x58(%rbp),%ecx
cmp    -0x50(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     15a7 <dist_4v_allt_v4+0x467>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x90(%rbp),%rax
movslq -0x8c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    0x98(%rbp),%rax
movslq -0x8c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x50(%rbp),%eax
jg     15a2 <dist_4v_allt_v4+0x462>
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
jmp    1510 <dist_4v_allt_v4+0x3d0>
mov    -0x58(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x58(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,0xb0(%rbp)
je     15d4 <dist_4v_allt_v4+0x494>
mov    -0x68(%rbp),%esi
lea    0xa33(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,0x48(%rbp)
jge    1648 <dist_4v_allt_v4+0x508>
mov    0x78(%rbp),%rdi
mov    0x90(%rbp),%rsi
mov    -0x88(%rbp),%edx
mov    -0x8c(%rbp),%ecx
mov    0x68(%rbp),%r8
mov    0x18(%rbp),%r9
mov    0x20(%rbp),%r12d
mov    0x28(%rbp),%r15d
mov    -0x74(%rbp),%r14d
mov    0x38(%rbp),%rbx
mov    0x40(%rbp),%r11d
mov    0x70(%rbp),%r10
mov    0xb0(%rbp),%eax
mov    %r12d,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %rbx,0x18(%rsp)
mov    %r11d,0x20(%rsp)
mov    %r10,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   1050 <dist_4v_unordered_nostrand_v2@plt>
jmp    179d <dist_4v_allt_v4+0x65d>
cmpl   $0x0,0x48(%rbp)
jne    16bd <dist_4v_allt_v4+0x57d>
mov    0x78(%rbp),%rdi
mov    0x90(%rbp),%rsi
mov    0x98(%rbp),%rdx
mov    -0x88(%rbp),%ecx
mov    -0x8c(%rbp),%r8d
mov    0x68(%rbp),%r9
mov    0x18(%rbp),%r12
mov    0x20(%rbp),%r15d
mov    0x28(%rbp),%r14d
mov    -0x74(%rbp),%ebx
mov    0x38(%rbp),%r11
mov    0x40(%rbp),%r10d
mov    0x70(%rbp),%rax
mov    %r12,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %rax,0x30(%rsp)
mov    $0x0,%al
call   1060 <dist_4v_unordered_v4@plt>
jmp    1798 <dist_4v_allt_v4+0x658>
mov    0x78(%rbp),%rdi
mov    0x90(%rbp),%rsi
mov    0x98(%rbp),%rdx
mov    -0x88(%rbp),%ecx
mov    -0x8c(%rbp),%r8d
mov    0x68(%rbp),%r9
mov    0x18(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    0x20(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    0x28(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    0x38(%rbp),%r13
mov    0x40(%rbp),%r12d
mov    0x60(%rbp),%r15d
mov    0xa0(%rbp),%r14
mov    0xa8(%rbp),%rbx
mov    0x80(%rbp),%r11
mov    0x70(%rbp),%r10
mov    0x88(%rbp),%rax
mov    %rax,-0x98(%rbp)
mov    -0xb0(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xa4(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0xa0(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x9c(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x98(%rbp),%rax
mov    %r13,0x20(%rsp)
mov    %r12d,0x28(%rsp)
mov    %r15d,0x30(%rsp)
mov    %r14,0x38(%rsp)
mov    %rbx,0x40(%rsp)
mov    %r11,0x48(%rsp)
mov    %r10,0x50(%rsp)
mov    %rax,0x58(%rsp)
mov    $0x0,%al
call   1030 <dist_4v_ordered_v4@plt>
jmp    179d <dist_4v_allt_v4+0x65d>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x78(%rbp)
mov    0x18(%rbp),%rax
mov    0x4(%rax),%eax
add    -0x60(%rbp),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x78(%rbp)
jle    17c6 <dist_4v_allt_v4+0x686>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
cmpl   $0x1,0x40(%rbp)
jne    1a0c <dist_4v_allt_v4+0x8cc>
mov    -0x5c(%rbp),%eax
add    -0x78(%rbp),%eax
cmp    0x58(%rbp),%eax
jle    1847 <dist_4v_allt_v4+0x707>
movl   $0x0,0x40(%rbp)
mov    -0x60(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x60(%rbp)
lea    0x829(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x68(%rbp),%esi
mov    0x30(%rbp),%edx
lea    0x826(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x5c(%rbp),%esi
lea    0x837(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x78(%rbp),%esi
lea    0x83a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x836(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
movl   $0x0,-0x80(%rbp)
mov    -0x80(%rbp),%eax
cmp    -0x78(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x5c(%rbp),%ecx
cmp    0x58(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1a07 <dist_4v_allt_v4+0x8c7>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x68(%rbp),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x10(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x14(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x14(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x18(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x1c(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x1c(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x20(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x20(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x24(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x24(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x28(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x28(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x2c(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x2c(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x30(%rax)
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x30(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x5c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x34(%rax)
jmp    184e <dist_4v_allt_v4+0x70e>
jmp    1a15 <dist_4v_allt_v4+0x8d5>
mov    -0x78(%rbp),%eax
add    -0x5c(%rbp),%eax
mov    %eax,-0x5c(%rbp)
jmp    1a1a <dist_4v_allt_v4+0x8da>
jmp    1a1f <dist_4v_allt_v4+0x8df>
jmp    123c <dist_4v_allt_v4+0xfc>
mov    -0x5c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x64(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x60(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0x8(%rax)
cmpl   $0x0,-0x60(%rbp)
jge    1a6a <dist_4v_allt_v4+0x92a>
cmpl   $0x0,-0x7c(%rbp)
jg     1a5b <dist_4v_allt_v4+0x91b>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    1a74 <dist_4v_allt_v4+0x934>
mov    -0x5c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_4v_allt_v4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r9d,0x24(%rsp)
mov    %rcx,0x70(%rsp)
mov    %rdx,0x68(%rsp)
mov    0xd0(%rsp),%r10d
mov    0xb8(%rsp),%rcx
mov    0xf0(%rsp),%eax
lea    0x1(%r10),%edx
test   %eax,%eax
cmovns %eax,%edx
mov    %edx,0x44(%rsp)
test   %edx,%edx
js     178f <dist_4v_allt_v4+0x63f>
test   %r10d,%r10d
jle    178f <dist_4v_allt_v4+0x63f>
mov    %rdi,%r9
mov    0x118(%rsp),%r12
mov    0xe0(%rsp),%eax
mov    %rax,0x28(%rsp)
mov    0x8(%rdi),%rax
mov    0x4(%rax),%ebx
lea    0x4(%rsi),%rax
mov    %rax,0x60(%rsp)
mov    0x4(%rsi),%eax
movslq %r8d,%rbp
movslq 0x24(%rsp),%rcx
mov    %rcx,0x50(%rsp)
movslq 0xf8(%rsp),%rcx
mov    %rcx,0x48(%rsp)
mov    $0x1,%r14d
movl   $0x0,0x40(%rsp)
xor    %r15d,%r15d
xor    %r11d,%r11d
movl   $0x0,0x10(%rsp)
xor    %ecx,%ecx
mov    %rcx,0x18(%rsp)
mov    $0x1,%r13d
mov    %r8d,0xc(%rsp)
mov    %rsi,0x38(%rsp)
mov    %rdi,0x30(%rsp)
mov    %rbp,0x58(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %eax,%ecx
or     %ebx,%ecx
mov    %r15d,%ecx
cmovs  %r10d,%ecx
lea    0x1(%rcx),%edx
mov    %edx,0x8(%rsp)
xor    %edx,%edx
cmp    %ecx,%ebx
setle  %dl
mov    %ebx,%edi
not    %edi
shr    $0x1f,%edi
and    %edx,%edi
xor    %edx,%edx
cmp    %r8d,%r14d
setl   %dl
test   %edx,%edi
je     129d <dist_4v_allt_v4+0x14d>
movslq %r14d,%rbp
add    $0x1,%rbp
mov    0x58(%rsp),%r15
nopw   0x0(%rax,%rax,1)
mov    (%r9,%rbp,8),%rdx
mov    0x4(%rdx),%ebx
xor    %edi,%edi
cmp    %ecx,%ebx
setle  %dil
mov    %ebx,%edx
not    %edx
shr    $0x1f,%edx
and    %edi,%edx
xor    %edi,%edi
cmp    %r15,%rbp
setl   %dil
add    $0x1,%r14d
add    $0x1,%rbp
test   %edi,%edx
jne    1270 <dist_4v_allt_v4+0x120>
mov    0x8(%rsp),%r15d
cmp    %r15d,%ebx
jne    13ca <dist_4v_allt_v4+0x27a>
xor    %r15d,%r15d
cmp    %r8d,%r14d
jg     132c <dist_4v_allt_v4+0x1dc>
movslq %r14d,%rdx
mov    $0x1,%ebx
nopl   0x0(%rax,%rax,1)
mov    %rbx,%r15
mov    (%r9,%rdx,8),%rbx
mov    0x8(%rbx),%edi
mov    (%r12,%r15,8),%rbp
mov    %edi,0x4(%rbp)
mov    0xc(%rbx),%edi
mov    %edi,0x8(%rbp)
mov    0x10(%rbx),%edi
mov    %edi,0xc(%rbp)
mov    0x14(%rbx),%edi
mov    %edi,0x10(%rbp)
mov    0x18(%rbx),%edi
mov    %edi,0x14(%rbp)
mov    0x1c(%rbx),%edi
mov    %edi,0x18(%rbp)
mov    0x20(%rbx),%edi
mov    %edi,0x1c(%rbp)
mov    0x24(%rbx),%edi
mov    %edi,0x20(%rbp)
mov    0x28(%rbx),%edi
mov    %edi,0x24(%rbp)
mov    0x58(%rsp),%rbp
cmp    %rbp,%rdx
jge    1329 <dist_4v_allt_v4+0x1d9>
mov    0x8(%r9,%rdx,8),%rdi
mov    0x8(%rsp),%ebx
cmp    %ebx,0x4(%rdi)
jne    1329 <dist_4v_allt_v4+0x1d9>
lea    0x1(%r15),%rbx
lea    0x1(%rdx),%rdi
cmp    %rbp,%rdx
mov    %rdi,%rdx
jl     12c0 <dist_4v_allt_v4+0x170>
add    %r15d,%r14d
mov    %r11d,0x14(%rsp)
xor    %edx,%edx
cmp    %ecx,%eax
setle  %dl
mov    %eax,%ebp
not    %ebp
shr    $0x1f,%ebp
xor    %edi,%edi
cmp    0x24(%rsp),%r13d
setl   %dil
and    %ebp,%edi
test   %edx,%edi
je     1388 <dist_4v_allt_v4+0x238>
movslq %r13d,%rdx
add    $0x1,%rdx
mov    0x50(%rsp),%r11
nopl   0x0(%rax)
mov    (%rsi,%rdx,4),%eax
xor    %ebx,%ebx
cmp    %ecx,%eax
setle  %bl
mov    %eax,%edi
not    %edi
shr    $0x1f,%edi
xor    %ebp,%ebp
cmp    %r11,%rdx
setl   %bpl
and    %edi,%ebp
add    $0x1,%r13d
add    $0x1,%rdx
test   %ebx,%ebp
jne    1360 <dist_4v_allt_v4+0x210>
add    $0xffffffff,%r14d
mov    0x8(%rsp),%ecx
cmp    %ecx,%eax
jne    13c0 <dist_4v_allt_v4+0x270>
xor    %r12d,%r12d
cmp    0x24(%rsp),%r13d
jle    13e3 <dist_4v_allt_v4+0x293>
mov    0x138(%rsp),%rdx
mov    0x130(%rsp),%rsi
jmp    145a <dist_4v_allt_v4+0x30a>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %ecx,%ebx
mov    0x14(%rsp),%r11d
mov    %ecx,%r15d
cmp    0x44(%rsp),%r11d
jg     17a1 <dist_4v_allt_v4+0x651>
cmp    %r10d,%r15d
jl     1230 <dist_4v_allt_v4+0xe0>
jmp    17a1 <dist_4v_allt_v4+0x651>
movslq %r13d,%rax
mov    0x68(%rsp),%rcx
lea    (%rcx,%rax,4),%r9
mov    0x70(%rsp),%rcx
lea    (%rcx,%rax,1),%r10
mov    0x60(%rsp),%rcx
lea    (%rcx,%rax,4),%r8
xor    %edi,%edi
mov    0x138(%rsp),%rdx
mov    0x130(%rsp),%rsi
mov    0x50(%rsp),%rbx
nopl   0x0(%rax,%rax,1)
mov    %rdi,%r12
add    %rax,%rdi
mov    (%r9,%r12,4),%ebp
mov    %ebp,0x4(%rsi,%r12,4)
movzbl (%r10,%r12,1),%ecx
mov    %cl,0x1(%rdx,%r12,1)
cmp    %rbx,%rdi
jge    144f <dist_4v_allt_v4+0x2ff>
jge    144f <dist_4v_allt_v4+0x2ff>
lea    0x1(%r12),%rdi
mov    0x8(%rsp),%ecx
cmp    %ecx,(%r8,%r12,4)
je     1420 <dist_4v_allt_v4+0x2d0>
add    %r12d,%r13d
add    $0x1,%r13d
add    $0x1,%r12d
mov    0x150(%rsp),%eax
test   %eax,%eax
je     1485 <dist_4v_allt_v4+0x335>
lea    0xb94(%rip),%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
mov    %rdx,%rbx
call   1050 <printf@plt>
mov    %rbx,%rdx
mov    0x130(%rsp),%rsi
cmpl   $0x0,0xe8(%rsp)
js     1516 <dist_4v_allt_v4+0x3c6>
mov    0x108(%rsp),%r9
je     1576 <dist_4v_allt_v4+0x426>
mov    0x118(%rsp),%rdi
mov    %r15d,%ecx
mov    %r12d,%r8d
xor    %eax,%eax
push   0x128(%rsp)
push   0x118(%rsp)
push   0x130(%rsp)
push   0x160(%rsp)
push   0x160(%rsp)
mov    0x128(%rsp),%ebp
push   %rbp
mov    0x58(%rsp),%r15
push   %r15
push   0x110(%rsp)
push   $0xc350
mov    0x110(%rsp),%ebp
push   %rbp
mov    0x110(%rsp),%ebp
push   %rbp
mov    0x110(%rsp),%rbx
push   %rbx
call   1040 <dist_4v_ordered_v4@plt>
add    $0x60,%rsp
jmp    15c6 <dist_4v_allt_v4+0x476>
sub    $0x8,%rsp
mov    0x120(%rsp),%rdi
mov    %r15d,%edx
mov    %r12d,%ecx
mov    0x110(%rsp),%r8
mov    0xc0(%rsp),%rbx
mov    %rbx,%r9
xor    %eax,%eax
mov    0x158(%rsp),%ebp
push   %rbp
push   0x120(%rsp)
mov    0x40(%rsp),%r15
push   %r15
push   0xf8(%rsp)
push   $0xc350
mov    0xf8(%rsp),%ebp
push   %rbp
mov    0xf8(%rsp),%ebp
push   %rbp
call   1060 <dist_4v_unordered_nostrand_v2@plt>
jmp    15c2 <dist_4v_allt_v4+0x472>
sub    $0x8,%rsp
mov    0x120(%rsp),%rdi
mov    %r15d,%ecx
mov    %r12d,%r8d
xor    %eax,%eax
push   0x118(%rsp)
mov    0x38(%rsp),%r15
push   %r15
push   0xf0(%rsp)
push   $0xc350
mov    0xf0(%rsp),%ebp
push   %rbp
mov    0xf0(%rsp),%ebp
push   %rbp
mov    0xf0(%rsp),%rbx
push   %rbx
call   1070 <dist_4v_unordered_v4@plt>
add    $0x40,%rsp
add    $0xffffffff,%r13d
mov    (%rbx),%r12d
mov    0x10(%rsp),%edx
add    0x4(%rbx),%edx
xor    %eax,%eax
test   %r12d,%r12d
setg   %al
mov    0x14(%rsp),%r11d
add    %eax,%r11d
mov    0x18(%rsp),%rax
lea    (%r12,%rax,1),%ecx
mov    %r15,0x28(%rsp)
cmp    $0x1,%r15d
mov    0x8(%rsp),%r15d
jne    1689 <dist_4v_allt_v4+0x539>
mov    0xf8(%rsp),%ebx
cmp    %ebx,%ecx
jle    16c9 <dist_4v_allt_v4+0x579>
add    $0xffffffff,%edx
mov    %edx,0x10(%rsp)
lea    0xa41(%rip),%rdi
mov    %r11d,0x14(%rsp)
call   1030 <puts@plt>
xor    %eax,%eax
mov    %rax,0x28(%rsp)
lea    0x9e9(%rip),%rdi
mov    %r15d,%esi
mov    0xd0(%rsp),%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x9f3(%rip),%rdi
mov    0x18(%rsp),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x9f4(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x9fd(%rip),%rdi
call   1030 <puts@plt>
mov    0x14(%rsp),%r11d
mov    0x18(%rsp),%rax
mov    %eax,%ecx
mov    %eax,0x40(%rsp)
jmp    16d7 <dist_4v_allt_v4+0x587>
mov    %edx,0x10(%rsp)
mov    %ecx,%eax
mov    %rax,0x18(%rsp)
mov    %r15d,%ebx
mov    %r15d,%eax
mov    0xc(%rsp),%r8d
mov    0x38(%rsp),%rsi
mov    0x30(%rsp),%r9
mov    0xd0(%rsp),%r10d
mov    0x118(%rsp),%r12
cmp    0x44(%rsp),%r11d
jle    13d5 <dist_4v_allt_v4+0x285>
jmp    17a1 <dist_4v_allt_v4+0x651>
mov    $0x1,%ecx
mov    %rcx,0x28(%rsp)
mov    %edx,0x10(%rsp)
mov    0x108(%rsp),%r8
mov    0x48(%rsp),%r10
cmp    %ebx,%eax
jge    1785 <dist_4v_allt_v4+0x635>
test   %r12d,%r12d
mov    0x8(%rsp),%r15d
jle    1694 <dist_4v_allt_v4+0x544>
movslq %eax,%r9
mov    0xb0(%rsp),%rcx
lea    (%rcx,%r9,8),%rcx
mov    $0x1,%edx
nopw   0x0(%rax,%rax,1)
lea    (%r9,%rdx,1),%rsi
mov    (%rcx,%rdx,8),%rdi
mov    %r15d,0x4(%rdi)
mov    (%r8,%rdx,8),%rbp
mov    0x4(%rbp),%ebx
mov    %ebx,0x8(%rdi)
mov    0x8(%rbp),%ebx
mov    %ebx,0xc(%rdi)
mov    0xc(%rbp),%ebx
mov    %ebx,0x10(%rdi)
mov    0x10(%rbp),%ebx
mov    %ebx,0x14(%rdi)
mov    0x14(%rbp),%ebx
mov    %ebx,0x18(%rdi)
mov    0x18(%rbp),%ebx
mov    %ebx,0x1c(%rdi)
mov    0x1c(%rbp),%ebx
mov    %ebx,0x20(%rdi)
mov    0x20(%rbp),%ebx
mov    %ebx,0x24(%rdi)
mov    0x24(%rbp),%ebx
mov    %ebx,0x28(%rdi)
mov    0x28(%rbp),%ebx
mov    %ebx,0x2c(%rdi)
mov    0x2c(%rbp),%ebx
mov    %ebx,0x30(%rdi)
mov    0x30(%rbp),%ebp
mov    %ebp,0x34(%rdi)
add    $0x1,%eax
cmp    %r10,%rsi
jge    168f <dist_4v_allt_v4+0x53f>
lea    0x1(%rdx),%rsi
cmp    %r12,%rdx
mov    %rsi,%rdx
jb     1710 <dist_4v_allt_v4+0x5c0>
jmp    168f <dist_4v_allt_v4+0x53f>
mov    0x8(%rsp),%r15d
jmp    1694 <dist_4v_allt_v4+0x544>
movq   $0x0,(%rcx)
movl   $0x0,0x8(%rcx)
xor    %eax,%eax
jmp    17c8 <dist_4v_allt_v4+0x678>
mov    0xb8(%rsp),%rcx
mov    0x18(%rsp),%rax
mov    %eax,(%rcx)
mov    %r11d,0x4(%rcx)
mov    0x10(%rsp),%edx
mov    %edx,0x8(%rcx)
test   %edx,%edx
jns    17c8 <dist_4v_allt_v4+0x678>
mov    0x40(%rsp),%edx
test   %edx,%edx
cmovg  %edx,%eax
mov    %eax,0xc(%rcx)
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [31 x i8] c"dist_4v_allt_v3\09transcript=%d\0A\00"
@.str.2 = [34 x i8] c"transcript=%d (n_transcripts=%d)\0A\00"
@.str.3 = [20 x i8] c"running_entries=%d\0A\00"
@.str.4 = [10 x i8] c"n1234=%d\0A\00"
@str = [16 x i8] c"dist_4v_allt_v4\00"
@str.6 = [27 x i8] c"setting get_positions to 0\00"
define void @dist_4v_allt_v4(i32** nocapture %0, i32* nocapture %1, i32* nocapture %2, i8* nocapture %3, i32 %4, i32 %5, i32** nocapture %6, i32* %7, i32 %8, i32 %9, i32 %10, i32* %11, i32 %12, i32 %13, i32 %14, i32 %15, i32 %16, i32** %17, i32** %18, i32** %19, i32** %20, i32** %21, i32* %22, i8* %23, i32* %24, i8* %25, i32 %26) {
%28 = icmp slt i32 %14, 0
%29 = add nsw i32 %10, 1
%30 = select i1 %28, i32 %29, i32 %14
%31 = icmp sgt i32 %10, 0
%32 = icmp sgt i32 %30, -1
%33 = and i1 %32, %31
br i1 %33, label %37, label %34
34: ; preds = %27
store i32 0, i32* %7
%35 = getelementptr inbounds i32, i32* %7, i64 1
store i32 0, i32* %35
%36 = getelementptr inbounds i32, i32* %7, i64 2
store i32 0, i32* %36
br label %321
37: ; preds = %27
%38 = getelementptr inbounds i32, i32* %1, i64 1
%39 = load i32, i32* %38
%40 = getelementptr inbounds i32*, i32** %0, i64 1
%41 = load i32*, i32** %40
%42 = getelementptr inbounds i32, i32* %41, i64 1
%43 = load i32, i32* %42
%44 = icmp eq i32 %26, 0
%45 = icmp slt i32 %13, 0
%46 = icmp eq i32 %13, 0
%47 = getelementptr inbounds i32, i32* %7, i64 1
%48 = sext i32 %4 to i64
%49 = sext i32 %5 to i64
%50 = sext i32 %15 to i64
br label %51
51: ; preds = %37, %301
%52 = phi i32 [ %12, %37 ], [ %310, %301 ]
%53 = phi i32 [ 0, %37 ], [ %309, %301 ]
%54 = phi i32 [ 1, %37 ], [ %308, %301 ]
%55 = phi i32 [ %39, %37 ], [ %307, %301 ]
%56 = phi i32 [ %43, %37 ], [ %306, %301 ]
%57 = phi i32 [ 0, %37 ], [ %65, %301 ]
%58 = phi i32 [ 0, %37 ], [ %305, %301 ]
%59 = phi i32 [ 0, %37 ], [ %304, %301 ]
%60 = phi i32 [ 0, %37 ], [ %303, %301 ]
%61 = phi i32 [ 1, %37 ], [ %302, %301 ]
%62 = or i32 %55, %56
%63 = icmp sgt i32 %62, -1
%64 = select i1 %63, i32 %57, i32 %10
%65 = add nsw i32 %64, 1
%66 = icmp sle i32 %56, %64
%67 = zext i1 %66 to i32
%68 = xor i32 %56, -1
%69 = lshr i32 %68, 31
%70 = and i32 %69, %67
%71 = icmp slt i32 %54, %4
%72 = zext i1 %71 to i32
%73 = and i32 %70, %72
%74 = icmp eq i32 %73, 0
br i1 %74, label %95, label %75
75: ; preds = %51
%76 = sext i32 %54 to i64
br label %77
77: ; preds = %75, %77
%78 = phi i64 [ %76, %75 ], [ %79, %77 ]
%79 = add i64 %78, 1
%80 = getelementptr inbounds i32*, i32** %0, i64 %79
%81 = load i32*, i32** %80
%82 = getelementptr inbounds i32, i32* %81, i64 1
%83 = load i32, i32* %82
%84 = icmp sle i32 %83, %64
%85 = zext i1 %84 to i32
%86 = xor i32 %83, -1
%87 = lshr i32 %86, 31
%88 = and i32 %87, %85
%89 = icmp slt i64 %79, %48
%90 = zext i1 %89 to i32
%91 = and i32 %88, %90
%92 = icmp eq i32 %91, 0
br i1 %92, label %93, label %77
93: ; preds = %77
%94 = trunc i64 %79 to i32
br label %95
95: ; preds = %93, %51
%96 = phi i32 [ %56, %51 ], [ %83, %93 ]
%97 = phi i32 [ %54, %51 ], [ %94, %93 ]
%98 = icmp eq i32 %96, %65
br i1 %98, label %99, label %301
99: ; preds = %95
%100 = icmp sgt i32 %97, %4
br i1 %100, label %150, label %101
101: ; preds = %99
%102 = sext i32 %97 to i64
br label %103
103: ; preds = %101, %140
%104 = phi i64 [ %102, %101 ], [ %138, %140 ]
%105 = phi i64 [ 0, %101 ], [ %106, %140 ]
%106 = add nuw nsw i64 %105, 1
%107 = getelementptr inbounds i32*, i32** %0, i64 %104
%108 = load i32*, i32** %107
%109 = getelementptr inbounds i32, i32* %108, i64 2
%110 = load i32, i32* %109
%111 = getelementptr inbounds i32*, i32** %19, i64 %106
%112 = load i32*, i32** %111
%113 = getelementptr inbounds i32, i32* %112, i64 1
store i32 %110, i32* %113
%114 = getelementptr inbounds i32, i32* %108, i64 3
%115 = load i32, i32* %114
%116 = getelementptr inbounds i32, i32* %112, i64 2
store i32 %115, i32* %116
%117 = getelementptr inbounds i32, i32* %108, i64 4
%118 = load i32, i32* %117
%119 = getelementptr inbounds i32, i32* %112, i64 3
store i32 %118, i32* %119
%120 = getelementptr inbounds i32, i32* %108, i64 5
%121 = load i32, i32* %120
%122 = getelementptr inbounds i32, i32* %112, i64 4
store i32 %121, i32* %122
%123 = getelementptr inbounds i32, i32* %108, i64 6
%124 = load i32, i32* %123
%125 = getelementptr inbounds i32, i32* %112, i64 5
store i32 %124, i32* %125
%126 = getelementptr inbounds i32, i32* %108, i64 7
%127 = load i32, i32* %126
%128 = getelementptr inbounds i32, i32* %112, i64 6
store i32 %127, i32* %128
%129 = getelementptr inbounds i32, i32* %108, i64 8
%130 = load i32, i32* %129
%131 = getelementptr inbounds i32, i32* %112, i64 7
store i32 %130, i32* %131
%132 = getelementptr inbounds i32, i32* %108, i64 9
%133 = load i32, i32* %132
%134 = getelementptr inbounds i32, i32* %112, i64 8
store i32 %133, i32* %134
%135 = getelementptr inbounds i32, i32* %108, i64 10
%136 = load i32, i32* %135
%137 = getelementptr inbounds i32, i32* %112, i64 9
store i32 %136, i32* %137
%138 = add nsw i64 %104, 1
%139 = icmp slt i64 %104, %48
br i1 %139, label %140, label %147
140: ; preds = %103
%141 = getelementptr inbounds i32*, i32** %0, i64 %138
%142 = load i32*, i32** %141
%143 = getelementptr inbounds i32, i32* %142, i64 1
%144 = load i32, i32* %143
%145 = icmp eq i32 %144, %65
%146 = and i1 %145, %139
br i1 %146, label %103, label %147
147: ; preds = %103, %140
%148 = trunc i64 %138 to i32
%149 = trunc i64 %106 to i32
br label %150
150: ; preds = %147, %99
%151 = phi i32 [ %97, %99 ], [ %148, %147 ]
%152 = phi i32 [ 0, %99 ], [ %149, %147 ]
%153 = add nsw i32 %151, -1
%154 = icmp sle i32 %55, %64
%155 = zext i1 %154 to i32
%156 = xor i32 %55, -1
%157 = lshr i32 %156, 31
%158 = icmp slt i32 %61, %5
%159 = zext i1 %158 to i32
%160 = and i32 %157, %159
%161 = and i32 %160, %155
%162 = icmp eq i32 %161, 0
br i1 %162, label %181, label %163
163: ; preds = %150
%164 = sext i32 %61 to i64
br label %165
165: ; preds = %163, %165
%166 = phi i64 [ %164, %163 ], [ %167, %165 ]
%167 = add i64 %166, 1
%168 = getelementptr inbounds i32, i32* %1, i64 %167
%169 = load i32, i32* %168
%170 = icmp sle i32 %169, %64
%171 = zext i1 %170 to i32
%172 = xor i32 %169, -1
%173 = lshr i32 %172, 31
%174 = icmp slt i64 %167, %49
%175 = zext i1 %174 to i32
%176 = and i32 %173, %175
%177 = and i32 %176, %171
%178 = icmp eq i32 %177, 0
br i1 %178, label %179, label %165
179: ; preds = %165
%180 = trunc i64 %167 to i32
br label %181
181: ; preds = %179, %150
%182 = phi i32 [ %61, %150 ], [ %180, %179 ]
%183 = phi i32 [ %55, %150 ], [ %169, %179 ]
%184 = icmp eq i32 %183, %65
br i1 %184, label %185, label %301
185: ; preds = %181
%186 = icmp sgt i32 %182, %5
br i1 %186, label %209, label %187
187: ; preds = %185
%188 = sext i32 %182 to i64
br label %189
189: ; preds = %187, %201
%190 = phi i64 [ %188, %187 ], [ %199, %201 ]
%191 = phi i64 [ 0, %187 ], [ %192, %201 ]
%192 = add nuw nsw i64 %191, 1
%193 = getelementptr inbounds i32, i32* %2, i64 %190
%194 = load i32, i32* %193
%195 = getelementptr inbounds i32, i32* %22, i64 %192
store i32 %194, i32* %195
%196 = getelementptr inbounds i8, i8* %3, i64 %190
%197 = load i8, i8* %196
%198 = getelementptr inbounds i8, i8* %23, i64 %192
store i8 %197, i8* %198
%199 = add nsw i64 %190, 1
%200 = icmp slt i64 %190, %49
br i1 %200, label %201, label %206
201: ; preds = %189
%202 = getelementptr inbounds i32, i32* %1, i64 %199
%203 = load i32, i32* %202
%204 = icmp eq i32 %203, %65
%205 = and i1 %200, %204
br i1 %205, label %189, label %206
206: ; preds = %189, %201
%207 = trunc i64 %199 to i32
%208 = trunc i64 %192 to i32
br label %209
209: ; preds = %206, %185
%210 = phi i32 [ %182, %185 ], [ %207, %206 ]
%211 = phi i32 [ 0, %185 ], [ %208, %206 ]
%212 = add nsw i32 %210, -1
br i1 %44, label %215, label %213
213: ; preds = %209
%214 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0), i32 %65)
br label %215
215: ; preds = %213, %209
br i1 %45, label %216, label %218
216: ; preds = %215
%217 = tail call i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...) bitcast (i32 (...)* @dist_4v_unordered_nostrand_v2 to i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...)*)(i32** %19, i32* %22, i32 %152, i32 %211, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32** %18, i32 %26)
br label %223
218: ; preds = %215
br i1 %46, label %219, label %221
219: ; preds = %218
%220 = tail call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, ...) bitcast (i32 (...)* @dist_4v_unordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, ...)*)(i32** %19, i32* %22, i8* %23, i32 %152, i32 %211, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32** %18)
br label %223
221: ; preds = %218
%222 = tail call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32*, i8*, i32**, i32**, i32**, ...) bitcast (i32 (...)* @dist_4v_ordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32*, i8*, i32**, i32**, i32**, ...)*)(i32** %19, i32* %22, i8* %23, i32 %152, i32 %211, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32 %16, i32* %24, i8* %25, i32** %20, i32** %18, i32** %21)
br label %223
223: ; preds = %219, %221, %216
%224 = load i32, i32* %7
%225 = load i32, i32* %47
%226 = add nsw i32 %225, %59
%227 = icmp sgt i32 %224, 0
%228 = zext i1 %227 to i32
%229 = add nsw i32 %58, %228
%230 = icmp eq i32 %52, 1
%231 = add nsw i32 %224, %60
br i1 %230, label %232, label %301
232: ; preds = %223
%233 = icmp sgt i32 %231, %15
br i1 %233, label %234, label %241
234: ; preds = %232
%235 = add nsw i32 %226, -1
%236 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str, i64 0, i64 0))
%237 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.2, i64 0, i64 0), i32 %65, i32 %10)
%238 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0), i32 %60)
%239 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.4, i64 0, i64 0), i32 %224)
%240 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.6, i64 0, i64 0))
br label %241
241: ; preds = %234, %232
%242 = phi i32 [ %235, %234 ], [ %226, %232 ]
%243 = phi i32 [ %60, %234 ], [ %53, %232 ]
%244 = phi i32 [ 0, %234 ], [ 1, %232 ]
%245 = icmp slt i32 %60, %15
%246 = and i1 %245, %227
br i1 %246, label %247, label %301
247: ; preds = %241
%248 = zext i32 %224 to i64
%249 = sext i32 %60 to i64
br label %250
250: ; preds = %247, %250
%251 = phi i64 [ %249, %247 ], [ %254, %250 ]
%252 = phi i64 [ 0, %247 ], [ %253, %250 ]
%253 = add nuw nsw i64 %252, 1
%254 = add nsw i64 %251, 1
%255 = getelementptr inbounds i32*, i32** %6, i64 %254
%256 = load i32*, i32** %255
%257 = getelementptr inbounds i32, i32* %256, i64 1
store i32 %65, i32* %257
%258 = getelementptr inbounds i32*, i32** %17, i64 %253
%259 = load i32*, i32** %258
%260 = getelementptr inbounds i32, i32* %259, i64 1
%261 = load i32, i32* %260
%262 = getelementptr inbounds i32, i32* %256, i64 2
store i32 %261, i32* %262
%263 = getelementptr inbounds i32, i32* %259, i64 2
%264 = load i32, i32* %263
%265 = getelementptr inbounds i32, i32* %256, i64 3
store i32 %264, i32* %265
%266 = getelementptr inbounds i32, i32* %259, i64 3
%267 = load i32, i32* %266
%268 = getelementptr inbounds i32, i32* %256, i64 4
store i32 %267, i32* %268
%269 = getelementptr inbounds i32, i32* %259, i64 4
%270 = load i32, i32* %269
%271 = getelementptr inbounds i32, i32* %256, i64 5
store i32 %270, i32* %271
%272 = getelementptr inbounds i32, i32* %259, i64 5
%273 = load i32, i32* %272
%274 = getelementptr inbounds i32, i32* %256, i64 6
store i32 %273, i32* %274
%275 = getelementptr inbounds i32, i32* %259, i64 6
%276 = load i32, i32* %275
%277 = getelementptr inbounds i32, i32* %256, i64 7
store i32 %276, i32* %277
%278 = getelementptr inbounds i32, i32* %259, i64 7
%279 = load i32, i32* %278
%280 = getelementptr inbounds i32, i32* %256, i64 8
store i32 %279, i32* %280
%281 = getelementptr inbounds i32, i32* %259, i64 8
%282 = load i32, i32* %281
%283 = getelementptr inbounds i32, i32* %256, i64 9
store i32 %282, i32* %283
%284 = getelementptr inbounds i32, i32* %259, i64 9
%285 = load i32, i32* %284
%286 = getelementptr inbounds i32, i32* %256, i64 10
store i32 %285, i32* %286
%287 = getelementptr inbounds i32, i32* %259, i64 10
%288 = load i32, i32* %287
%289 = getelementptr inbounds i32, i32* %256, i64 11
store i32 %288, i32* %289
%290 = getelementptr inbounds i32, i32* %259, i64 11
%291 = load i32, i32* %290
%292 = getelementptr inbounds i32, i32* %256, i64 12
store i32 %291, i32* %292
%293 = getelementptr inbounds i32, i32* %259, i64 12
%294 = load i32, i32* %293
%295 = getelementptr inbounds i32, i32* %256, i64 13
store i32 %294, i32* %295
%296 = icmp ult i64 %253, %248
%297 = icmp slt i64 %254, %50
%298 = and i1 %297, %296
br i1 %298, label %250, label %299
299: ; preds = %250
%300 = trunc i64 %254 to i32
br label %301
301: ; preds = %223, %299, %241, %181, %95
%302 = phi i32 [ %182, %181 ], [ %61, %95 ], [ %212, %241 ], [ %212, %299 ], [ %212, %223 ]
%303 = phi i32 [ %60, %181 ], [ %60, %95 ], [ %60, %241 ], [ %300, %299 ], [ %231, %223 ]
%304 = phi i32 [ %59, %181 ], [ %59, %95 ], [ %242, %241 ], [ %242, %299 ], [ %226, %223 ]
%305 = phi i32 [ %58, %181 ], [ %58, %95 ], [ %229, %241 ], [ %229, %299 ], [ %229, %223 ]
%306 = phi i32 [ %65, %181 ], [ %96, %95 ], [ %65, %241 ], [ %65, %299 ], [ %65, %223 ]
%307 = phi i32 [ %183, %181 ], [ %55, %95 ], [ %65, %241 ], [ %65, %299 ], [ %65, %223 ]
%308 = phi i32 [ %153, %181 ], [ %97, %95 ], [ %153, %241 ], [ %153, %299 ], [ %153, %223 ]
%309 = phi i32 [ %53, %181 ], [ %53, %95 ], [ %243, %241 ], [ %243, %299 ], [ %53, %223 ]
%310 = phi i32 [ %52, %181 ], [ %52, %95 ], [ %244, %241 ], [ %244, %299 ], [ %52, %223 ]
%311 = icmp slt i32 %65, %10
%312 = icmp sle i32 %305, %30
%313 = and i1 %312, %311
br i1 %313, label %51, label %314
314: ; preds = %301
store i32 %303, i32* %7
%315 = getelementptr inbounds i32, i32* %7, i64 1
store i32 %305, i32* %315
%316 = getelementptr inbounds i32, i32* %7, i64 2
store i32 %304, i32* %316
%317 = icmp slt i32 %304, 0
br i1 %317, label %318, label %321
318: ; preds = %314
%319 = icmp slt i32 %309, 1
%320 = select i1 %319, i32 %303, i32 %309
br label %321
321: ; preds = %314, %34, %318
%322 = phi i32 [ %320, %318 ], [ 0, %34 ], [ %303, %314 ]
%323 = getelementptr inbounds i32, i32* %7, i64 3
store i32 %322, i32* %323
ret void
}