void dist_3v_allt_v4(int **ovdi12, int *m3_t, int *m3_p, char *m3_s, int n12,
                     int n3, 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 **ovdi12_p, int **ovdi123, int **all_ovdi, int *m3p,
                     char *m3s, int *m12_p, char *m12_s, int verbose) {
  int i12, i3;
  int running_entries = 0;
  int errorcode = 0;
  int n123_tr = 0;
  int transcript = 0;
  int curr_tr12, curr_tr3;
  int max_n_ovdi_single_transcript = 50000;
  int n123;
  int n123_stop = 0;
  int i, j;
  int curr_n12, curr_n3;
  i12 = 1;
  curr_tr12 = ovdi12[i12][1];
  i3 = 1;
  curr_tr3 = m3_t[i3];
  if (max_n_transcripts < 0)
    max_n_transcripts = n_transcripts + 1;
  while ((transcript < n_transcripts) & (n123_tr <= max_n_transcripts)) {
    transcript++;
    if ((curr_tr12 < 0) | (curr_tr3 < 0))
      transcript = n_transcripts + 1;
    while ((curr_tr12 < transcript) & (curr_tr12 >= 0) & (i12 < n12)) {
      i12++;
      curr_tr12 = ovdi12[i12][1];
    }
    if (curr_tr12 == transcript) {
      curr_n12 = 0;
      while ((curr_tr12 == transcript) & (i12 <= n12)) {
        curr_n12++;
        ovdi12_p[curr_n12][1] = ovdi12[i12][2];
        ovdi12_p[curr_n12][2] = ovdi12[i12][3];
        ovdi12_p[curr_n12][3] = ovdi12[i12][4];
        ovdi12_p[curr_n12][4] = ovdi12[i12][5];
        ovdi12_p[curr_n12][5] = ovdi12[i12][6];
        ovdi12_p[curr_n12][6] = ovdi12[i12][7];
        i12++;
        if (i12 <= n12)
          curr_tr12 = ovdi12[i12][1];
      }
      i12--;
      curr_tr12 = transcript;
      while ((curr_tr3 < transcript) & (curr_tr3 >= 0) & (i3 < n3)) {
        i3++;
        curr_tr3 = m3_t[i3];
      }
      if (curr_tr3 == transcript) {
        curr_n3 = 0;
        while ((curr_tr3 == transcript) & (i3 <= n3)) {
          curr_n3++;
          m3p[curr_n3] = m3_p[i3];
          m3s[curr_n3] = m3_s[i3];
          i3++;
          if (i3 <= n3)
            curr_tr3 = m3_t[i3];
        }
        i3--;
        curr_tr3 = transcript;
        if (order_constraint < 0) {
          dist_3v_unordered_nostrand_v2(ovdi12_p, m3p, curr_n12, curr_n3,
                                        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_3v_unordered_v4(ovdi12_p, m3p, m3s, curr_n12, curr_n3,
                                 ovdi_single_transcript, n, min_dist, max_dist,
                                 max_n_ovdi_single_transcript, ml,
                                 get_positions, temp_ovdi, verbose);
          } else {
            dist_3v_ordered_v4(ovdi12_p, m3p, m3s, curr_n12, curr_n3,
                               ovdi_single_transcript, n, min_dist, max_dist,
                               max_n_ovdi_single_transcript, ml, get_positions,
                               pos_format, ovdi123, temp_ovdi, all_ovdi, m12_p,
                               m12_s, verbose);
          }
        }
        n123 = n[0];
        errorcode += n[1];
        if (verbose)
          printf("\tdist_3v_allt_v3\tn123=%d\tn[1]=%d\terrorcode=%d\trunning_"
                 "entries=%d\n",
                 n123, n[1], errorcode, running_entries);
        if (n123 > 0)
          n123_tr++;
        if (get_positions == 1) {
          if ((running_entries + n123) > max_n_ovdi) {
            get_positions = 0;
            errorcode--;
            printf("dist_3v_allt_v4\n");
            printf("transcript=%d (n_transcripts=%d)\n", transcript,
                   n_transcripts);
            printf("running_entries=%d\n", running_entries);
            printf("n123=%d\n", n123);
            printf("setting get_positions to 0\n");
            n123_stop = running_entries;
          }
          i = 0;
          while ((i < n123) & (running_entries < max_n_ovdi)) {
            if (verbose)
              printf("%d\t%d\t%d\t%d\n", transcript,
                     ovdi_single_transcript[i][1], ovdi_single_transcript[i][2],
                     ovdi_single_transcript[i][2]);
            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];
          }
        } else {
          running_entries += n123;
        }
      }
    }
  }
  n[0] = running_entries;
  n[1] = n123_tr;
  n[2] = errorcode;
  if (errorcode < 0) {
    if (n123_stop <= 0)
      n123_stop = running_entries;
    n[3] = n123_stop;
  } else {
    n[3] = running_entries;
  }
}


x86 assembly (clang, -O0):
<dist_3v_allt_v4>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%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_3v_allt_v4+0xf7>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,0x50(%rbp)
jmp    123c <dist_3v_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     19e3 <dist_3v_allt_v4+0x8a3>
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_3v_allt_v4+0x15a>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    129f <dist_3v_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_3v_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_3v_allt_v4+0x15f>
mov    -0x6c(%rbp),%eax
cmp    -0x68(%rbp),%eax
jne    19de <dist_3v_allt_v4+0x89e>
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     1435 <dist_3v_allt_v4+0x2f5>
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    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jg     1430 <dist_3v_allt_v4+0x2f0>
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x6c(%rbp)
jmp    130c <dist_3v_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     1497 <dist_3v_allt_v4+0x357>
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    1444 <dist_3v_allt_v4+0x304>
mov    -0x70(%rbp),%eax
cmp    -0x68(%rbp),%eax
jne    19d9 <dist_3v_allt_v4+0x899>
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     1544 <dist_3v_allt_v4+0x404>
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     153f <dist_3v_allt_v4+0x3ff>
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
jmp    14ad <dist_3v_allt_v4+0x36d>
mov    -0x58(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x58(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,0x48(%rbp)
jge    15c7 <dist_3v_allt_v4+0x487>
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_3v_unordered_nostrand_v2@plt>
jmp    173e <dist_3v_allt_v4+0x5fe>
cmpl   $0x0,0x48(%rbp)
jne    1648 <dist_3v_allt_v4+0x508>
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),%r13
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    %r13,(%rsp)
mov    %r12d,0x8(%rsp)
mov    %r15d,0x10(%rsp)
mov    %r14d,0x18(%rsp)
mov    %rbx,0x20(%rsp)
mov    %r11d,0x28(%rsp)
mov    %r10,0x30(%rsp)
mov    %eax,0x38(%rsp)
mov    $0x0,%al
call   1030 <dist_3v_unordered_v4@plt>
jmp    1739 <dist_3v_allt_v4+0x5f9>
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),%rax
mov    %rax,-0x98(%rbp)
mov    0x40(%rbp),%r13d
mov    0x60(%rbp),%r12d
mov    0x80(%rbp),%r15
mov    0x70(%rbp),%r14
mov    0x88(%rbp),%rbx
mov    0xa0(%rbp),%r11
mov    0xa8(%rbp),%r10
mov    0xb0(%rbp),%eax
mov    %eax,-0x90(%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    %rax,0x20(%rsp)
mov    -0x90(%rbp),%eax
mov    %r13d,0x28(%rsp)
mov    %r12d,0x30(%rsp)
mov    %r15,0x38(%rsp)
mov    %r14,0x40(%rsp)
mov    %rbx,0x48(%rsp)
mov    %r11,0x50(%rsp)
mov    %r10,0x58(%rsp)
mov    %eax,0x60(%rsp)
mov    $0x0,%al
call   1060 <dist_3v_ordered_v4@plt>
jmp    173e <dist_3v_allt_v4+0x5fe>
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,0xb0(%rbp)
je     1780 <dist_3v_allt_v4+0x640>
mov    -0x78(%rbp),%esi
mov    0x18(%rbp),%rax
mov    0x4(%rax),%edx
mov    -0x60(%rbp),%ecx
mov    -0x5c(%rbp),%r8d
lea    0x887(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,-0x78(%rbp)
jle    1793 <dist_3v_allt_v4+0x653>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
cmpl   $0x1,0x40(%rbp)
jne    19cb <dist_3v_allt_v4+0x88b>
mov    -0x5c(%rbp),%eax
add    -0x78(%rbp),%eax
cmp    0x58(%rbp),%eax
jle    1814 <dist_3v_allt_v4+0x6d4>
movl   $0x0,0x40(%rbp)
mov    -0x60(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x60(%rbp)
lea    0x87f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x68(%rbp),%esi
mov    0x30(%rbp),%edx
lea    0x87c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x5c(%rbp),%esi
lea    0x846(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x78(%rbp),%esi
lea    0x87c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x877(%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     19c6 <dist_3v_allt_v4+0x886>
cmpl   $0x0,0xb0(%rbp)
je     188f <dist_3v_allt_v4+0x74f>
mov    -0x68(%rbp),%esi
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%edx
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x68(%rbp),%rax
movslq -0x80(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x8(%rax),%r8d
lea    0x812(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
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)
jmp    181b <dist_3v_allt_v4+0x6db>
jmp    19d4 <dist_3v_allt_v4+0x894>
mov    -0x78(%rbp),%eax
add    -0x5c(%rbp),%eax
mov    %eax,-0x5c(%rbp)
jmp    19d9 <dist_3v_allt_v4+0x899>
jmp    19de <dist_3v_allt_v4+0x89e>
jmp    123c <dist_3v_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    1a29 <dist_3v_allt_v4+0x8e9>
cmpl   $0x0,-0x7c(%rbp)
jg     1a1a <dist_3v_allt_v4+0x8da>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    1a33 <dist_3v_allt_v4+0x8f3>
mov    -0x5c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_3v_allt_v4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r9d,0x18(%rsp)
mov    %r8d,0x1c(%rsp)
mov    %rcx,0x60(%rsp)
mov    %rdx,0x58(%rsp)
mov    %rdi,%r15
mov    0xd0(%rsp),%edx
mov    0xb8(%rsp),%rcx
mov    0xf0(%rsp),%eax
lea    0x1(%rdx),%edi
test   %eax,%eax
cmovns %eax,%edi
mov    %edi,0x44(%rsp)
test   %edi,%edi
js     17ea <dist_3v_allt_v4+0x69a>
mov    %rdx,%rax
test   %eax,%eax
jle    17ea <dist_3v_allt_v4+0x69a>
mov    0x150(%rsp),%r10d
mov    0x108(%rsp),%r9
mov    0xe0(%rsp),%eax
mov    %rax,0x20(%rsp)
mov    0x8(%r15),%rax
mov    0x4(%rax),%ebx
mov    0xd0(%rsp),%eax
lea    0x4(%rsi),%rcx
mov    %rcx,0x50(%rsp)
mov    %rsi,0x48(%rsp)
mov    0x4(%rsi),%r8d
movslq 0x1c(%rsp),%r12
movslq 0x18(%rsp),%r11
movslq 0xf8(%rsp),%rcx
mov    %rcx,0x68(%rsp)
mov    $0x1,%r14d
movl   $0x0,0x34(%rsp)
xor    %edi,%edi
xor    %ebp,%ebp
movl   $0x0,0x14(%rsp)
xor    %ecx,%ecx
mov    %rcx,0x8(%rsp)
mov    $0x1,%r13d
mov    %r11,0x28(%rsp)
nopl   0x0(%rax)
mov    %r8d,%edx
or     %ebx,%edx
mov    %edi,%edx
cmovs  %eax,%edx
lea    0x1(%rdx),%ecx
mov    %ecx,(%rsp)
xor    %esi,%esi
cmp    %edx,%ebx
setle  %sil
mov    %ebx,%edi
not    %edi
shr    $0x1f,%edi
and    %esi,%edi
xor    %esi,%esi
cmp    0x1c(%rsp),%r14d
setl   %sil
test   %esi,%edi
je     129d <dist_3v_allt_v4+0x14d>
movslq %r14d,%rsi
add    $0x1,%rsi
nopw   0x0(%rax,%rax,1)
mov    (%r15,%rsi,8),%rcx
mov    0x4(%rcx),%ebx
xor    %edi,%edi
cmp    %edx,%ebx
setle  %dil
mov    %ebx,%ecx
not    %ecx
shr    $0x1f,%ecx
and    %edi,%ecx
xor    %edi,%edi
cmp    %r12,%rsi
setl   %dil
add    $0x1,%r14d
add    $0x1,%rsi
test   %edi,%ecx
jne    1270 <dist_3v_allt_v4+0x120>
mov    (%rsp),%edi
cmp    %edi,%ebx
jne    17b4 <dist_3v_allt_v4+0x664>
xor    %ecx,%ecx
cmp    0x1c(%rsp),%r14d
mov    %ebp,0x4(%rsp)
jg     1324 <dist_3v_allt_v4+0x1d4>
movslq %r14d,%rsi
mov    $0x1,%edi
mov    0x118(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rdi,%rcx
mov    (%r15,%rsi,8),%rdi
mov    0x8(%rdi),%ebx
mov    (%rax,%rcx,8),%rbp
mov    %ebx,0x4(%rbp)
mov    0xc(%rdi),%ebx
mov    %ebx,0x8(%rbp)
mov    0x10(%rdi),%ebx
mov    %ebx,0xc(%rbp)
mov    0x14(%rdi),%ebx
mov    %ebx,0x10(%rbp)
mov    0x18(%rdi),%ebx
mov    %ebx,0x14(%rbp)
mov    0x1c(%rdi),%edi
mov    %edi,0x18(%rbp)
cmp    %r12,%rsi
jge    1321 <dist_3v_allt_v4+0x1d1>
mov    0x8(%r15,%rsi,8),%rdi
mov    (%rsp),%ebx
cmp    %ebx,0x4(%rdi)
jne    1321 <dist_3v_allt_v4+0x1d1>
lea    0x1(%rcx),%rdi
lea    0x1(%rsi),%rbp
cmp    %r12,%rsi
mov    %rbp,%rsi
jl     12d0 <dist_3v_allt_v4+0x180>
add    %ecx,%r14d
mov    0x48(%rsp),%rbx
xor    %esi,%esi
cmp    %edx,%r8d
setle  %sil
mov    %r8d,%edi
not    %edi
shr    $0x1f,%edi
xor    %ebp,%ebp
cmp    0x18(%rsp),%r13d
setl   %bpl
and    %edi,%ebp
test   %esi,%ebp
je     138c <dist_3v_allt_v4+0x23c>
movslq %r13d,%rsi
add    $0x1,%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%rbx,%rsi,4),%r8d
xor    %edi,%edi
cmp    %edx,%r8d
setle  %dil
mov    %r8d,%eax
not    %eax
shr    $0x1f,%eax
xor    %ebp,%ebp
cmp    %r11,%rsi
setl   %bpl
and    %eax,%ebp
add    $0x1,%r13d
add    $0x1,%rsi
test   %edi,%ebp
jne    1360 <dist_3v_allt_v4+0x210>
add    $0xffffffff,%r14d
mov    (%rsp),%edi
cmp    %edi,%r8d
jne    14c0 <dist_3v_allt_v4+0x370>
xor    %r8d,%r8d
cmp    0x18(%rsp),%r13d
jg     141a <dist_3v_allt_v4+0x2ca>
movslq %r13d,%rax
mov    0x58(%rsp),%rdx
lea    (%rdx,%rax,4),%rdx
mov    0x60(%rsp),%rsi
add    %rax,%rsi
mov    0x50(%rsp),%rdi
lea    (%rdi,%rax,4),%r11
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rbx,%r8
lea    (%rax,%rbx,1),%rbp
mov    (%rdx,%rbx,4),%ebx
mov    0x130(%rsp),%rdi
mov    %ebx,0x4(%rdi,%r8,4)
movzbl (%rsi,%r8,1),%ebx
mov    0x138(%rsp),%rdi
mov    %bl,0x1(%rdi,%r8,1)
cmp    0x28(%rsp),%rbp
jge    140f <dist_3v_allt_v4+0x2bf>
jge    140f <dist_3v_allt_v4+0x2bf>
lea    0x1(%r8),%rbx
mov    (%rsp),%edi
cmp    %edi,(%r11,%r8,4)
je     13d0 <dist_3v_allt_v4+0x280>
add    %r8d,%r13d
add    $0x1,%r13d
add    $0x1,%r8d
cmpl   $0x0,0xe8(%rsp)
mov    0x118(%rsp),%rdi
js     14ce <dist_3v_allt_v4+0x37e>
je     1522 <dist_3v_allt_v4+0x3d2>
sub    $0x8,%rsp
mov    0x138(%rsp),%rsi
mov    0x140(%rsp),%rdx
xor    %eax,%eax
push   %r10
push   0x158(%rsp)
push   0x158(%rsp)
push   0x148(%rsp)
push   0x138(%rsp)
push   0x150(%rsp)
mov    0x138(%rsp),%ebp
push   %rbp
push   0x60(%rsp)
push   0x120(%rsp)
push   $0xc350
mov    0x120(%rsp),%ebp
push   %rbp
mov    0x120(%rsp),%ebp
push   %rbp
mov    0x120(%rsp),%rbx
push   %rbx
mov    %r10,%rbp
call   1070 <dist_3v_ordered_v4@plt>
add    $0x70,%rsp
jmp    1572 <dist_3v_allt_v4+0x422>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %edi,%ebx
mov    0xd0(%rsp),%eax
jmp    17b0 <dist_3v_allt_v4+0x660>
sub    $0x8,%rsp
mov    0x138(%rsp),%rsi
mov    %ecx,%edx
mov    %r8d,%ecx
mov    %r9,%r8
mov    0xc0(%rsp),%rbx
mov    %rbx,%r9
xor    %eax,%eax
push   %r10
push   0x120(%rsp)
push   0x38(%rsp)
push   0xf8(%rsp)
push   $0xc350
mov    0xf8(%rsp),%ebp
push   %rbp
mov    0xf8(%rsp),%ebp
push   %rbp
mov    %r10,%rbp
call   1060 <dist_3v_unordered_nostrand_v2@plt>
jmp    156e <dist_3v_allt_v4+0x41e>
mov    0x130(%rsp),%rsi
mov    0x138(%rsp),%rdx
xor    %eax,%eax
push   %r10
push   0x118(%rsp)
push   0x30(%rsp)
push   0xf0(%rsp)
push   $0xc350
mov    0xf0(%rsp),%ebp
push   %rbp
mov    0xf0(%rsp),%ebp
push   %rbp
mov    0xf0(%rsp),%rbx
push   %rbx
mov    %r10,%rbp
call   1040 <dist_3v_unordered_v4@plt>
add    $0x40,%rsp
mov    (%rbx),%esi
mov    0x4(%rbx),%edx
mov    0x14(%rsp),%ebx
add    %edx,%ebx
test   %ebp,%ebp
mov    %rbp,%r10
mov    0x8(%rsp),%rbp
mov    %rsi,0x38(%rsp)
je     15b5 <dist_3v_allt_v4+0x465>
lea    0xa6b(%rip),%rdi
mov    %ebx,%ecx
mov    0x8(%rsp),%r8
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x38(%rsp),%rsi
mov    0x8(%rsp),%rbp
mov    0x150(%rsp),%r10d
add    $0xffffffff,%r13d
xor    %eax,%eax
test   %esi,%esi
setg   %al
add    %eax,0x4(%rsp)
lea    (%rsi,%rbp,1),%eax
cmpl   $0x1,0x20(%rsp)
jne    165d <dist_3v_allt_v4+0x50d>
cmp    0xf8(%rsp),%eax
jle    1687 <dist_3v_allt_v4+0x537>
add    $0xffffffff,%ebx
mov    %ebx,0x14(%rsp)
lea    0xa8d(%rip),%rdi
mov    %rsi,%rbp
call   1030 <puts@plt>
xor    %eax,%eax
mov    %rax,0x20(%rsp)
lea    0xa3f(%rip),%rdi
mov    (%rsp),%esi
mov    0xd0(%rsp),%ebx
mov    %ebx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xa11(%rip),%rdi
mov    0x8(%rsp),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xa34(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xa4a(%rip),%rdi
call   1030 <puts@plt>
mov    0x8(%rsp),%rbp
mov    0x150(%rsp),%r10d
mov    %rbx,%rax
mov    %ebp,%ecx
mov    %ebp,0x34(%rsp)
jmp    169c <dist_3v_allt_v4+0x54c>
mov    %ebx,0x14(%rsp)
mov    %rax,0x8(%rsp)
mov    (%rsp),%edi
mov    %edi,%ebx
mov    %edi,%r8d
mov    0xd0(%rsp),%eax
mov    0x108(%rsp),%r9
mov    0x28(%rsp),%r11
jmp    17b0 <dist_3v_allt_v4+0x660>
mov    %ebx,0x14(%rsp)
mov    $0x1,%eax
mov    %rax,0x20(%rsp)
mov    0xd0(%rsp),%eax
mov    0x108(%rsp),%r9
mov    0x28(%rsp),%r11
cmp    0xf8(%rsp),%ebp
jge    17a8 <dist_3v_allt_v4+0x658>
mov    0x38(%rsp),%r8
test   %r8d,%r8d
mov    (%rsp),%edi
jle    17ab <dist_3v_allt_v4+0x65b>
movslq %ebp,%rcx
mov    0xb0(%rsp),%rax
mov    %rcx,0x8(%rsp)
lea    (%rax,%rcx,8),%rax
mov    %rax,0x70(%rsp)
mov    $0x1,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
test   %r10d,%r10d
je     1731 <dist_3v_allt_v4+0x5e1>
mov    -0x8(%r9,%rbx,8),%rax
mov    0x4(%rax),%edx
mov    0x8(%rax),%ecx
lea    0x966(%rip),%rdi
mov    (%rsp),%esi
mov    %ecx,%r8d
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x38(%rsp),%r8
mov    (%rsp),%edi
mov    0x28(%rsp),%r11
mov    0x108(%rsp),%r9
mov    0x150(%rsp),%r10d
mov    0x8(%rsp),%rax
add    %rbx,%rax
mov    0x70(%rsp),%rcx
mov    (%rcx,%rbx,8),%rcx
mov    %edi,0x4(%rcx)
mov    (%r9,%rbx,8),%rdx
mov    0x4(%rdx),%esi
mov    %esi,0x8(%rcx)
mov    0x8(%rdx),%esi
mov    %esi,0xc(%rcx)
mov    0xc(%rdx),%esi
mov    %esi,0x10(%rcx)
mov    0x10(%rdx),%esi
mov    %esi,0x14(%rcx)
mov    0x14(%rdx),%esi
mov    %esi,0x18(%rcx)
mov    0x18(%rdx),%esi
mov    %esi,0x1c(%rcx)
mov    0x1c(%rdx),%esi
mov    %esi,0x20(%rcx)
mov    0x20(%rdx),%esi
mov    %esi,0x24(%rcx)
mov    0x24(%rdx),%edx
mov    %edx,0x28(%rcx)
add    $0x1,%ebp
cmp    0x68(%rsp),%rax
jge    1799 <dist_3v_allt_v4+0x649>
lea    0x1(%rbx),%rax
cmp    %r8,%rbx
mov    %rax,%rbx
jb     16f0 <dist_3v_allt_v4+0x5a0>
mov    %rbp,0x8(%rsp)
mov    %edi,%ebx
mov    %edi,%r8d
jmp    14c2 <dist_3v_allt_v4+0x372>
mov    (%rsp),%edi
mov    %edi,%ebx
mov    %edi,%r8d
mov    0x4(%rsp),%ebp
cmp    0x44(%rsp),%ebp
jg     17c2 <dist_3v_allt_v4+0x672>
cmp    %eax,%edi
jl     1230 <dist_3v_allt_v4+0xe0>
mov    0xb8(%rsp),%rcx
mov    0x8(%rsp),%rax
mov    %eax,(%rcx)
mov    %ebp,0x4(%rcx)
mov    0x14(%rsp),%edx
mov    %edx,0x8(%rcx)
test   %edx,%edx
jns    17fa <dist_3v_allt_v4+0x6aa>
mov    0x34(%rsp),%edx
test   %edx,%edx
cmovg  %edx,%eax
jmp    17fa <dist_3v_allt_v4+0x6aa>
movq   $0x0,(%rcx)
movl   $0x0,0x8(%rcx)
xor    %eax,%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 = [66 x i8] c"\09dist_3v_allt_v3\09n123=%d\09n[1]=%d\09errorcode=%d\09running_entries=%d\0A\00"
@.str.1 = [17 x i8] c"dist_3v_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 = [9 x i8] c"n123=%d\0A\00"
@.str.5 = [28 x i8] c"setting get_positions to 0\0A\00"
@.str.6 = [13 x i8] c"%d\09%d\09%d\09%d\0A\00"
define void @dist_3v_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 = %610, %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 %611
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 %610
143: ; preds = %139
store i32 0, i32* %68
br label %144
144: ; preds = %249, %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 %250
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* %55
%237 = add nsw i32 %236, 1
store i32 %237, i32* %55
%238 = load i32, i32* %55
%239 = load i32, i32* %32
%240 = icmp sle i32 %238, %239
br i1 %240, label %241, label %249
241: ; preds = %155
%242 = load i32**, i32*** %28
%243 = load i32, i32* %55
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds i32*, i32** %242, i64 %244
%246 = load i32*, i32** %245
%247 = getelementptr inbounds i32, i32* %246, i64 1
%248 = load i32, i32* %247
store i32 %248, i32* %61
br label %249
249: ; preds = %241, %155
br label %144
250: ; preds = %144
%251 = load i32, i32* %55
%252 = add nsw i32 %251, -1
store i32 %252, i32* %55
%253 = load i32, i32* %60
store i32 %253, i32* %61
br label %254
254: ; preds = %269, %250
%255 = load i32, i32* %62
%256 = load i32, i32* %60
%257 = icmp slt i32 %255, %256
%258 = zext i1 %257 to i32
%259 = load i32, i32* %62
%260 = icmp sge i32 %259, 0
%261 = zext i1 %260 to i32
%262 = and i32 %258, %261
%263 = load i32, i32* %56
%264 = load i32, i32* %33
%265 = icmp slt i32 %263, %264
%266 = zext i1 %265 to i32
%267 = and i32 %262, %266
%268 = icmp ne i32 %267, 0
br i1 %268, label %269, label %277
269: ; preds = %254
%270 = load i32, i32* %56
%271 = add nsw i32 %270, 1
store i32 %271, i32* %56
%272 = load i32*, i32** %29
%273 = load i32, i32* %56
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds i32, i32* %272, i64 %274
%276 = load i32, i32* %275
store i32 %276, i32* %62
br label %254
277: ; preds = %254
%278 = load i32, i32* %62
%279 = load i32, i32* %60
%280 = icmp eq i32 %278, %279
br i1 %280, label %281, label %609
281: ; preds = %277
store i32 0, i32* %69
br label %282
282: ; preds = %325, %281
%283 = load i32, i32* %62
%284 = load i32, i32* %60
%285 = icmp eq i32 %283, %284
%286 = zext i1 %285 to i32
%287 = load i32, i32* %56
%288 = load i32, i32* %33
%289 = icmp sle i32 %287, %288
%290 = zext i1 %289 to i32
%291 = and i32 %286, %290
%292 = icmp ne i32 %291, 0
br i1 %292, label %293, label %326
293: ; preds = %282
%294 = load i32, i32* %69
%295 = add nsw i32 %294, 1
store i32 %295, i32* %69
%296 = load i32*, i32** %30
%297 = load i32, i32* %56
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds i32, i32* %296, i64 %298
%300 = load i32, i32* %299
%301 = load i32*, i32** %50
%302 = load i32, i32* %69
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds i32, i32* %301, i64 %303
store i32 %300, i32* %304
%305 = load i8*, i8** %31
%306 = load i32, i32* %56
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds i8, i8* %305, i64 %307
%309 = load i8, i8* %308
%310 = load i8*, i8** %51
%311 = load i32, i32* %69
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds i8, i8* %310, i64 %312
store i8 %309, i8* %313
%314 = load i32, i32* %56
%315 = add nsw i32 %314, 1
store i32 %315, i32* %56
%316 = load i32, i32* %56
%317 = load i32, i32* %33
%318 = icmp sle i32 %316, %317
br i1 %318, label %319, label %325
319: ; preds = %293
%320 = load i32*, i32** %29
%321 = load i32, i32* %56
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds i32, i32* %320, i64 %322
%324 = load i32, i32* %323
store i32 %324, i32* %62
br label %325
325: ; preds = %319, %293
br label %282
326: ; preds = %282
%327 = load i32, i32* %56
%328 = add nsw i32 %327, -1
store i32 %328, i32* %56
%329 = load i32, i32* %60
store i32 %329, i32* %62
%330 = load i32, i32* %41
%331 = icmp slt i32 %330, 0
br i1 %331, label %332, label %347
332: ; preds = %326
%333 = load i32**, i32*** %47
%334 = load i32*, i32** %50
%335 = load i32, i32* %68
%336 = load i32, i32* %69
%337 = load i32**, i32*** %45
%338 = load i32*, i32** %35
%339 = load i32, i32* %36
%340 = load i32, i32* %37
%341 = load i32, i32* %63
%342 = load i32*, i32** %39
%343 = load i32, i32* %40
%344 = load i32**, i32*** %46
%345 = load i32, i32* %54
%346 = call i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...) bitcast (i32 (...)* @dist_3v_unordered_nostrand_v2 to i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...)*)(i32** %333, i32* %334, i32 %335, i32 %336, i32** %337, i32* %338, i32 %339, i32 %340, i32 %341, i32* %342, i32 %343, i32** %344, i32 %345)
br label %388
347: ; preds = %326
%348 = load i32, i32* %41
%349 = icmp eq i32 %348, 0
br i1 %349, label %350, label %366
350: ; preds = %347
%351 = load i32**, i32*** %47
%352 = load i32*, i32** %50
%353 = load i8*, i8** %51
%354 = load i32, i32* %68
%355 = load i32, i32* %69
%356 = load i32**, i32*** %45
%357 = load i32*, i32** %35
%358 = load i32, i32* %36
%359 = load i32, i32* %37
%360 = load i32, i32* %63
%361 = load i32*, i32** %39
%362 = load i32, i32* %40
%363 = load i32**, i32*** %46
%364 = load i32, i32* %54
%365 = call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...) bitcast (i32 (...)* @dist_3v_unordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...)*)(i32** %351, i32* %352, i8* %353, i32 %354, i32 %355, i32** %356, i32* %357, i32 %358, i32 %359, i32 %360, i32* %361, i32 %362, i32** %363, i32 %364)
br label %387
366: ; preds = %347
%367 = load i32**, i32*** %47
%368 = load i32*, i32** %50
%369 = load i8*, i8** %51
%370 = load i32, i32* %68
%371 = load i32, i32* %69
%372 = load i32**, i32*** %45
%373 = load i32*, i32** %35
%374 = load i32, i32* %36
%375 = load i32, i32* %37
%376 = load i32, i32* %63
%377 = load i32*, i32** %39
%378 = load i32, i32* %40
%379 = load i32, i32* %44
%380 = load i32**, i32*** %48
%381 = load i32**, i32*** %46
%382 = load i32**, i32*** %49
%383 = load i32*, i32** %52
%384 = load i8*, i8** %53
%385 = load i32, i32* %54
%386 = call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32**, i32**, i32**, i32*, i8*, i32, ...) bitcast (i32 (...)* @dist_3v_ordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32**, i32**, i32**, i32*, i8*, i32, ...)*)(i32** %367, i32* %368, i8* %369, i32 %370, i32 %371, i32** %372, i32* %373, i32 %374, i32 %375, i32 %376, i32* %377, i32 %378, i32 %379, i32** %380, i32** %381, i32** %382, i32* %383, i8* %384, i32 %385)
br label %387
387: ; preds = %366, %350
br label %388
388: ; preds = %387, %332
%389 = load i32*, i32** %35
%390 = getelementptr inbounds i32, i32* %389, i64 0
%391 = load i32, i32* %390
store i32 %391, i32* %64
%392 = load i32*, i32** %35
%393 = getelementptr inbounds i32, i32* %392, i64 1
%394 = load i32, i32* %393
%395 = load i32, i32* %58
%396 = add nsw i32 %395, %394
store i32 %396, i32* %58
%397 = load i32, i32* %54
%398 = icmp ne i32 %397, 0
br i1 %398, label %399, label %407
399: ; preds = %388
%400 = load i32, i32* %64
%401 = load i32*, i32** %35
%402 = getelementptr inbounds i32, i32* %401, i64 1
%403 = load i32, i32* %402
%404 = load i32, i32* %58
%405 = load i32, i32* %57
%406 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0), i32 %400, i32 %403, i32 %404, i32 %405)
br label %407
407: ; preds = %399, %388
%408 = load i32, i32* %64
%409 = icmp sgt i32 %408, 0
br i1 %409, label %410, label %413
410: ; preds = %407
%411 = load i32, i32* %59
%412 = add nsw i32 %411, 1
store i32 %412, i32* %59
br label %413
413: ; preds = %410, %407
%414 = load i32, i32* %40
%415 = icmp eq i32 %414, 1
br i1 %415, label %416, label %604
416: ; preds = %413
%417 = load i32, i32* %57
%418 = load i32, i32* %64
%419 = add nsw i32 %417, %418
%420 = load i32, i32* %43
%421 = icmp sgt i32 %419, %420
br i1 %421, label %422, label %435
422: ; preds = %416
store i32 0, i32* %40
%423 = load i32, i32* %58
%424 = add nsw i32 %423, -1
store i32 %424, i32* %58
%425 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0))
%426 = load i32, i32* %60
%427 = load i32, i32* %38
%428 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.2, i64 0, i64 0), i32 %426, i32 %427)
%429 = load i32, i32* %57
%430 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0), i32 %429)
%431 = load i32, i32* %64
%432 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %431)
%433 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.5, i64 0, i64 0))
%434 = load i32, i32* %57
store i32 %434, i32* %65
br label %435
435: ; preds = %422, %416
store i32 0, i32* %66
br label %436
436: ; preds = %474, %435
%437 = load i32, i32* %66
%438 = load i32, i32* %64
%439 = icmp slt i32 %437, %438
%440 = zext i1 %439 to i32
%441 = load i32, i32* %57
%442 = load i32, i32* %43
%443 = icmp slt i32 %441, %442
%444 = zext i1 %443 to i32
%445 = and i32 %440, %444
%446 = icmp ne i32 %445, 0
br i1 %446, label %447, label %603
447: ; preds = %436
%448 = load i32, i32* %54
%449 = icmp ne i32 %448, 0
br i1 %449, label %450, label %474
450: ; preds = %447
%451 = load i32, i32* %60
%452 = load i32**, i32*** %45
%453 = load i32, i32* %66
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds i32*, i32** %452, i64 %454
%456 = load i32*, i32** %455
%457 = getelementptr inbounds i32, i32* %456, i64 1
%458 = load i32, i32* %457
%459 = load i32**, i32*** %45
%460 = load i32, i32* %66
%461 = sext i32 %460 to i64
%462 = getelementptr inbounds i32*, i32** %459, i64 %461
%463 = load i32*, i32** %462
%464 = getelementptr inbounds i32, i32* %463, i64 2
%465 = load i32, i32* %464
%466 = load i32**, i32*** %45
%467 = load i32, i32* %66
%468 = sext i32 %467 to i64
%469 = getelementptr inbounds i32*, i32** %466, i64 %468
%470 = load i32*, i32** %469
%471 = getelementptr inbounds i32, i32* %470, i64 2
%472 = load i32, i32* %471
%473 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), i32 %451, i32 %458, i32 %465, i32 %472)
br label %474
474: ; preds = %450, %447
%475 = load i32, i32* %66
%476 = add nsw i32 %475, 1
store i32 %476, i32* %66
%477 = load i32, i32* %57
%478 = add nsw i32 %477, 1
store i32 %478, i32* %57
%479 = load i32, i32* %60
%480 = load i32**, i32*** %34
%481 = load i32, i32* %57
%482 = sext i32 %481 to i64
%483 = getelementptr inbounds i32*, i32** %480, i64 %482
%484 = load i32*, i32** %483
%485 = getelementptr inbounds i32, i32* %484, i64 1
store i32 %479, i32* %485
%486 = load i32**, i32*** %45
%487 = load i32, i32* %66
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds i32*, i32** %486, i64 %488
%490 = load i32*, i32** %489
%491 = getelementptr inbounds i32, i32* %490, i64 1
%492 = load i32, i32* %491
%493 = load i32**, i32*** %34
%494 = load i32, i32* %57
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds i32*, i32** %493, i64 %495
%497 = load i32*, i32** %496
%498 = getelementptr inbounds i32, i32* %497, i64 2
store i32 %492, i32* %498
%499 = load i32**, i32*** %45
%500 = load i32, i32* %66
%501 = sext i32 %500 to i64
%502 = getelementptr inbounds i32*, i32** %499, i64 %501
%503 = load i32*, i32** %502
%504 = getelementptr inbounds i32, i32* %503, i64 2
%505 = load i32, i32* %504
%506 = load i32**, i32*** %34
%507 = load i32, i32* %57
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds i32*, i32** %506, i64 %508
%510 = load i32*, i32** %509
%511 = getelementptr inbounds i32, i32* %510, i64 3
store i32 %505, i32* %511
%512 = load i32**, i32*** %45
%513 = load i32, i32* %66
%514 = sext i32 %513 to i64
%515 = getelementptr inbounds i32*, i32** %512, i64 %514
%516 = load i32*, i32** %515
%517 = getelementptr inbounds i32, i32* %516, i64 3
%518 = load i32, i32* %517
%519 = load i32**, i32*** %34
%520 = load i32, i32* %57
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds i32*, i32** %519, i64 %521
%523 = load i32*, i32** %522
%524 = getelementptr inbounds i32, i32* %523, i64 4
store i32 %518, i32* %524
%525 = load i32**, i32*** %45
%526 = load i32, i32* %66
%527 = sext i32 %526 to i64
%528 = getelementptr inbounds i32*, i32** %525, i64 %527
%529 = load i32*, i32** %528
%530 = getelementptr inbounds i32, i32* %529, i64 4
%531 = load i32, i32* %530
%532 = load i32**, i32*** %34
%533 = load i32, i32* %57
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds i32*, i32** %532, i64 %534
%536 = load i32*, i32** %535
%537 = getelementptr inbounds i32, i32* %536, i64 5
store i32 %531, i32* %537
%538 = load i32**, i32*** %45
%539 = load i32, i32* %66
%540 = sext i32 %539 to i64
%541 = getelementptr inbounds i32*, i32** %538, i64 %540
%542 = load i32*, i32** %541
%543 = getelementptr inbounds i32, i32* %542, i64 5
%544 = load i32, i32* %543
%545 = load i32**, i32*** %34
%546 = load i32, i32* %57
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds i32*, i32** %545, i64 %547
%549 = load i32*, i32** %548
%550 = getelementptr inbounds i32, i32* %549, i64 6
store i32 %544, i32* %550
%551 = load i32**, i32*** %45
%552 = load i32, i32* %66
%553 = sext i32 %552 to i64
%554 = getelementptr inbounds i32*, i32** %551, i64 %553
%555 = load i32*, i32** %554
%556 = getelementptr inbounds i32, i32* %555, i64 6
%557 = load i32, i32* %556
%558 = load i32**, i32*** %34
%559 = load i32, i32* %57
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds i32*, i32** %558, i64 %560
%562 = load i32*, i32** %561
%563 = getelementptr inbounds i32, i32* %562, i64 7
store i32 %557, i32* %563
%564 = load i32**, i32*** %45
%565 = load i32, i32* %66
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds i32*, i32** %564, i64 %566
%568 = load i32*, i32** %567
%569 = getelementptr inbounds i32, i32* %568, i64 7
%570 = load i32, i32* %569
%571 = load i32**, i32*** %34
%572 = load i32, i32* %57
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds i32*, i32** %571, i64 %573
%575 = load i32*, i32** %574
%576 = getelementptr inbounds i32, i32* %575, i64 8
store i32 %570, i32* %576
%577 = load i32**, i32*** %45
%578 = load i32, i32* %66
%579 = sext i32 %578 to i64
%580 = getelementptr inbounds i32*, i32** %577, i64 %579
%581 = load i32*, i32** %580
%582 = getelementptr inbounds i32, i32* %581, i64 8
%583 = load i32, i32* %582
%584 = load i32**, i32*** %34
%585 = load i32, i32* %57
%586 = sext i32 %585 to i64
%587 = getelementptr inbounds i32*, i32** %584, i64 %586
%588 = load i32*, i32** %587
%589 = getelementptr inbounds i32, i32* %588, i64 9
store i32 %583, i32* %589
%590 = load i32**, i32*** %45
%591 = load i32, i32* %66
%592 = sext i32 %591 to i64
%593 = getelementptr inbounds i32*, i32** %590, i64 %592
%594 = load i32*, i32** %593
%595 = getelementptr inbounds i32, i32* %594, i64 9
%596 = load i32, i32* %595
%597 = load i32**, i32*** %34
%598 = load i32, i32* %57
%599 = sext i32 %598 to i64
%600 = getelementptr inbounds i32*, i32** %597, i64 %599
%601 = load i32*, i32** %600
%602 = getelementptr inbounds i32, i32* %601, i64 10
store i32 %596, i32* %602
br label %436
603: ; preds = %436
br label %608
604: ; preds = %413
%605 = load i32, i32* %64
%606 = load i32, i32* %57
%607 = add nsw i32 %606, %605
store i32 %607, i32* %57
br label %608
608: ; preds = %604, %603
br label %609
609: ; preds = %608, %277
br label %610
610: ; preds = %609, %139
br label %88
611: ; preds = %88
%612 = load i32, i32* %57
%613 = load i32*, i32** %35
%614 = getelementptr inbounds i32, i32* %613, i64 0
store i32 %612, i32* %614
%615 = load i32, i32* %59
%616 = load i32*, i32** %35
%617 = getelementptr inbounds i32, i32* %616, i64 1
store i32 %615, i32* %617
%618 = load i32, i32* %58
%619 = load i32*, i32** %35
%620 = getelementptr inbounds i32, i32* %619, i64 2
store i32 %618, i32* %620
%621 = load i32, i32* %58
%622 = icmp slt i32 %621, 0
br i1 %622, label %623, label %632
623: ; preds = %611
%624 = load i32, i32* %65
%625 = icmp sle i32 %624, 0
br i1 %625, label %626, label %628
626: ; preds = %623
%627 = load i32, i32* %57
store i32 %627, i32* %65
br label %628
628: ; preds = %626, %623
%629 = load i32, i32* %65
%630 = load i32*, i32** %35
%631 = getelementptr inbounds i32, i32* %630, i64 3
store i32 %629, i32* %631
br label %636
632: ; preds = %611
%633 = load i32, i32* %57
%634 = load i32*, i32** %35
%635 = getelementptr inbounds i32, i32* %634, i64 3
store i32 %633, i32* %635
br label %636
636: ; preds = %632, %628
ret void
}

LLVM IR (-O2):
@.str = [66 x i8] c"\09dist_3v_allt_v3\09n123=%d\09n[1]=%d\09errorcode=%d\09running_entries=%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 = [9 x i8] c"n123=%d\0A\00"
@.str.6 = [13 x i8] c"%d\09%d\09%d\09%d\0A\00"
@str = [16 x i8] c"dist_3v_allt_v4\00"
@str.7 = [27 x i8] c"setting get_positions to 0\00"
define void @dist_3v_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 %312
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 slt i32 %13, 0
%45 = icmp eq i32 %13, 0
%46 = getelementptr inbounds i32, i32* %7, i64 1
%47 = icmp eq i32 %26, 0
%48 = sext i32 %4 to i64
%49 = sext i32 %5 to i64
%50 = sext i32 %15 to i64
br label %51
51: ; preds = %37, %292
%52 = phi i32 [ %12, %37 ], [ %301, %292 ]
%53 = phi i32 [ 0, %37 ], [ %300, %292 ]
%54 = phi i32 [ 1, %37 ], [ %299, %292 ]
%55 = phi i32 [ %39, %37 ], [ %298, %292 ]
%56 = phi i32 [ %43, %37 ], [ %297, %292 ]
%57 = phi i32 [ 0, %37 ], [ %65, %292 ]
%58 = phi i32 [ 0, %37 ], [ %296, %292 ]
%59 = phi i32 [ 0, %37 ], [ %295, %292 ]
%60 = phi i32 [ 0, %37 ], [ %294, %292 ]
%61 = phi i32 [ 1, %37 ], [ %293, %292 ]
%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 %292
99: ; preds = %95
%100 = icmp sgt i32 %97, %4
br i1 %100, label %141, label %101
101: ; preds = %99
%102 = sext i32 %97 to i64
br label %103
103: ; preds = %101, %131
%104 = phi i64 [ %102, %101 ], [ %129, %131 ]
%105 = phi i64 [ 0, %101 ], [ %106, %131 ]
%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 = add nsw i64 %104, 1
%130 = icmp slt i64 %104, %48
br i1 %130, label %131, label %138
131: ; preds = %103
%132 = getelementptr inbounds i32*, i32** %0, i64 %129
%133 = load i32*, i32** %132
%134 = getelementptr inbounds i32, i32* %133, i64 1
%135 = load i32, i32* %134
%136 = icmp eq i32 %135, %65
%137 = and i1 %136, %130
br i1 %137, label %103, label %138
138: ; preds = %103, %131
%139 = trunc i64 %129 to i32
%140 = trunc i64 %106 to i32
br label %141
141: ; preds = %138, %99
%142 = phi i32 [ %97, %99 ], [ %139, %138 ]
%143 = phi i32 [ 0, %99 ], [ %140, %138 ]
%144 = add nsw i32 %142, -1
%145 = icmp sle i32 %55, %64
%146 = zext i1 %145 to i32
%147 = xor i32 %55, -1
%148 = lshr i32 %147, 31
%149 = icmp slt i32 %61, %5
%150 = zext i1 %149 to i32
%151 = and i32 %148, %150
%152 = and i32 %151, %146
%153 = icmp eq i32 %152, 0
br i1 %153, label %172, label %154
154: ; preds = %141
%155 = sext i32 %61 to i64
br label %156
156: ; preds = %154, %156
%157 = phi i64 [ %155, %154 ], [ %158, %156 ]
%158 = add i64 %157, 1
%159 = getelementptr inbounds i32, i32* %1, i64 %158
%160 = load i32, i32* %159
%161 = icmp sle i32 %160, %64
%162 = zext i1 %161 to i32
%163 = xor i32 %160, -1
%164 = lshr i32 %163, 31
%165 = icmp slt i64 %158, %49
%166 = zext i1 %165 to i32
%167 = and i32 %164, %166
%168 = and i32 %167, %162
%169 = icmp eq i32 %168, 0
br i1 %169, label %170, label %156
170: ; preds = %156
%171 = trunc i64 %158 to i32
br label %172
172: ; preds = %170, %141
%173 = phi i32 [ %61, %141 ], [ %171, %170 ]
%174 = phi i32 [ %55, %141 ], [ %160, %170 ]
%175 = icmp eq i32 %174, %65
br i1 %175, label %176, label %292
176: ; preds = %172
%177 = icmp sgt i32 %173, %5
br i1 %177, label %200, label %178
178: ; preds = %176
%179 = sext i32 %173 to i64
br label %180
180: ; preds = %178, %192
%181 = phi i64 [ %179, %178 ], [ %190, %192 ]
%182 = phi i64 [ 0, %178 ], [ %183, %192 ]
%183 = add nuw nsw i64 %182, 1
%184 = getelementptr inbounds i32, i32* %2, i64 %181
%185 = load i32, i32* %184
%186 = getelementptr inbounds i32, i32* %22, i64 %183
store i32 %185, i32* %186
%187 = getelementptr inbounds i8, i8* %3, i64 %181
%188 = load i8, i8* %187
%189 = getelementptr inbounds i8, i8* %23, i64 %183
store i8 %188, i8* %189
%190 = add nsw i64 %181, 1
%191 = icmp slt i64 %181, %49
br i1 %191, label %192, label %197
192: ; preds = %180
%193 = getelementptr inbounds i32, i32* %1, i64 %190
%194 = load i32, i32* %193
%195 = icmp eq i32 %194, %65
%196 = and i1 %191, %195
br i1 %196, label %180, label %197
197: ; preds = %180, %192
%198 = trunc i64 %190 to i32
%199 = trunc i64 %183 to i32
br label %200
200: ; preds = %197, %176
%201 = phi i32 [ %173, %176 ], [ %198, %197 ]
%202 = phi i32 [ 0, %176 ], [ %199, %197 ]
%203 = add nsw i32 %201, -1
br i1 %44, label %204, label %206
204: ; preds = %200
%205 = tail call i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...) bitcast (i32 (...)* @dist_3v_unordered_nostrand_v2 to i32 (i32**, i32*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...)*)(i32** %19, i32* %22, i32 %143, i32 %202, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32** %18, i32 %26)
br label %211
206: ; preds = %200
br i1 %45, label %207, label %209
207: ; preds = %206
%208 = tail call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...) bitcast (i32 (...)* @dist_3v_unordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32**, i32, ...)*)(i32** %19, i32* %22, i8* %23, i32 %143, i32 %202, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32** %18, i32 %26)
br label %211
209: ; preds = %206
%210 = tail call i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32**, i32**, i32**, i32*, i8*, i32, ...) bitcast (i32 (...)* @dist_3v_ordered_v4 to i32 (i32**, i32*, i8*, i32, i32, i32**, i32*, i32, i32, i32, i32*, i32, i32, i32**, i32**, i32**, i32*, i8*, i32, ...)*)(i32** %19, i32* %22, i8* %23, i32 %143, i32 %202, i32** %17, i32* %7, i32 %8, i32 %9, i32 50000, i32* %11, i32 %52, i32 %16, i32** %20, i32** %18, i32** %21, i32* %24, i8* %25, i32 %26)
br label %211
211: ; preds = %207, %209, %204
%212 = load i32, i32* %7
%213 = load i32, i32* %46
%214 = add nsw i32 %213, %59
br i1 %47, label %217, label %215
215: ; preds = %211
%216 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str, i64 0, i64 0), i32 %212, i32 %213, i32 %214, i32 %60)
br label %217
217: ; preds = %215, %211
%218 = icmp sgt i32 %212, 0
%219 = zext i1 %218 to i32
%220 = add nsw i32 %58, %219
%221 = icmp eq i32 %52, 1
%222 = add nsw i32 %212, %60
br i1 %221, label %223, label %292
223: ; preds = %217
%224 = icmp sgt i32 %222, %15
br i1 %224, label %225, label %232
225: ; preds = %223
%226 = add nsw i32 %214, -1
%227 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str, i64 0, i64 0))
%228 = 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)
%229 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.3, i64 0, i64 0), i32 %60)
%230 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %212)
%231 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.7, i64 0, i64 0))
br label %232
232: ; preds = %225, %223
%233 = phi i32 [ %226, %225 ], [ %214, %223 ]
%234 = phi i32 [ %60, %225 ], [ %53, %223 ]
%235 = phi i32 [ 0, %225 ], [ 1, %223 ]
%236 = icmp slt i32 %60, %15
%237 = and i1 %236, %218
br i1 %237, label %238, label %292
238: ; preds = %232
%239 = zext i32 %212 to i64
%240 = sext i32 %60 to i64
br label %241
241: ; preds = %238, %252
%242 = phi i64 [ %240, %238 ], [ %254, %252 ]
%243 = phi i64 [ 0, %238 ], [ %253, %252 ]
br i1 %47, label %252, label %244
244: ; preds = %241
%245 = getelementptr inbounds i32*, i32** %17, i64 %243
%246 = load i32*, i32** %245
%247 = getelementptr inbounds i32, i32* %246, i64 1
%248 = load i32, i32* %247
%249 = getelementptr inbounds i32, i32* %246, i64 2
%250 = load i32, i32* %249
%251 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), i32 %65, i32 %248, i32 %250, i32 %250)
br label %252
252: ; preds = %244, %241
%253 = add nuw nsw i64 %243, 1
%254 = add nsw i64 %242, 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 = icmp ult i64 %253, %239
%288 = icmp slt i64 %254, %50
%289 = and i1 %288, %287
br i1 %289, label %241, label %290
290: ; preds = %252
%291 = trunc i64 %254 to i32
br label %292
292: ; preds = %217, %290, %232, %172, %95
%293 = phi i32 [ %173, %172 ], [ %61, %95 ], [ %203, %232 ], [ %203, %290 ], [ %203, %217 ]
%294 = phi i32 [ %60, %172 ], [ %60, %95 ], [ %60, %232 ], [ %291, %290 ], [ %222, %217 ]
%295 = phi i32 [ %59, %172 ], [ %59, %95 ], [ %233, %232 ], [ %233, %290 ], [ %214, %217 ]
%296 = phi i32 [ %58, %172 ], [ %58, %95 ], [ %220, %232 ], [ %220, %290 ], [ %220, %217 ]
%297 = phi i32 [ %65, %172 ], [ %96, %95 ], [ %65, %232 ], [ %65, %290 ], [ %65, %217 ]
%298 = phi i32 [ %174, %172 ], [ %55, %95 ], [ %65, %232 ], [ %65, %290 ], [ %65, %217 ]
%299 = phi i32 [ %144, %172 ], [ %97, %95 ], [ %144, %232 ], [ %144, %290 ], [ %144, %217 ]
%300 = phi i32 [ %53, %172 ], [ %53, %95 ], [ %234, %232 ], [ %234, %290 ], [ %53, %217 ]
%301 = phi i32 [ %52, %172 ], [ %52, %95 ], [ %235, %232 ], [ %235, %290 ], [ %52, %217 ]
%302 = icmp slt i32 %65, %10
%303 = icmp sle i32 %296, %30
%304 = and i1 %303, %302
br i1 %304, label %51, label %305
305: ; preds = %292
store i32 %294, i32* %7
%306 = getelementptr inbounds i32, i32* %7, i64 1
store i32 %296, i32* %306
%307 = getelementptr inbounds i32, i32* %7, i64 2
store i32 %295, i32* %307
%308 = icmp slt i32 %295, 0
br i1 %308, label %309, label %312
309: ; preds = %305
%310 = icmp slt i32 %300, 1
%311 = select i1 %310, i32 %294, i32 %300
br label %312
312: ; preds = %305, %34, %309
%313 = phi i32 [ %311, %309 ], [ 0, %34 ], [ %294, %305 ]
%314 = getelementptr inbounds i32, i32* %7, i64 3
store i32 %313, i32* %314
ret void
}