void dist_3v_allt_v3(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 verbose) {
  int i12, i3;
  int **ovdi_single_transcript;
  int running_entries = 0;
  int errorcode = 0;
  int n123_tr = 0;
  int transcript = 0;
  int curr_tr12, curr_tr3;
  int **ovdi12_p;
  int *m3p;
  char *m3s;
  int max_transcript_occurrences = 10000;
  int max_n_ovdi_single_transcript = 50000;
  int n123;
  int n123_stop = 0;
  int i, j;
  int curr_n12, curr_n3;
  if (verbose)
    printf(
        "dist_3v_allt_v3\tn12=%d\tn3=%d\tmin_dist=%d\tmax_dist=%d\tn_"
        "transcripts=%d\tmax_n_transcripts=%d\tmax_n_ovdi=%d\tpos_format=%d\n",
        n12, n3, min_dist, max_dist, n_transcripts, max_n_transcripts,
        max_n_ovdi, pos_format);
  i12 = 1;
  curr_tr12 = ovdi12[i12][1];
  i3 = 1;
  curr_tr3 = m3_t[i3];
  ovdi12_p = imatrix(1, max_n_ovdi_single_transcript, 1, 6);
  m3p = ivector(1, max_transcript_occurrences);
  m3s = cvector(1, max_transcript_occurrences);
  ovdi_single_transcript = imatrix(1, max_n_ovdi_single_transcript, 1, 9);
  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 (verbose) {
          printf("\ntranscript=%d\n", transcript);
          printf("moitf 3 (%d): ", curr_n3);
          for (i = 1; i <= curr_n3; i++)
            printf("%d %d,", m3p[i], m3s[i]);
          printf("\n");
        }
        if (order_constraint == 0) {
          dist_3v_unordered_v3(ovdi12_p, m3p, m3s, curr_n12, curr_n3,
                               ovdi_single_transcript, n, min_dist, max_dist,
                               max_n_ovdi_single_transcript, ml, get_positions,
                               verbose);
        } else {
          dist_3v_ordered_v3(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, verbose);
        }
        n123 = n[0];
        errorcode += n[1];
        if (verbose)
          printf("\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("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)) {
            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;
  }
  free_imatrix(ovdi12_p, 1, max_n_ovdi_single_transcript, 1, 6);
  free_ivector(m3p, 1, max_transcript_occurrences);
  free_cvector(m3s, 1, max_transcript_occurrences);
  free_imatrix(ovdi_single_transcript, 1, max_n_ovdi_single_transcript, 1, 9);
}


x86 assembly (clang, -O0):
<dist_3v_allt_v3>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
mov    0x68(%rbp),%eax
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,-0x64(%rbp)
movl   $0x0,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x0,-0x70(%rbp)
movl   $0x2710,-0x94(%rbp)
movl   $0xc350,-0x98(%rbp)
movl   $0x0,-0xa0(%rbp)
cmpl   $0x0,0x68(%rbp)
je     125e <dist_3v_allt_v3+0xce>
mov    -0x4c(%rbp),%esi
mov    -0x50(%rbp),%edx
mov    0x20(%rbp),%ecx
mov    0x28(%rbp),%r8d
mov    0x30(%rbp),%r9d
mov    0x50(%rbp),%r11d
mov    0x58(%rbp),%r10d
mov    0x60(%rbp),%eax
lea    0xdb6(%rip),%rdi
mov    %r11d,(%rsp)
mov    %r10d,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x54(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x74(%rbp)
movl   $0x1,-0x58(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x78(%rbp)
mov    -0x98(%rbp),%esi
mov    $0x1,%edx
mov    $0x6,%ecx
mov    %edx,%edi
mov    $0x0,%al
call   1030 <imatrix@plt>
cltq
mov    %rax,-0x80(%rbp)
mov    -0x94(%rbp),%esi
mov    $0x1,%edi
mov    $0x0,%al
call   10b0 <ivector@plt>
cltq
mov    %rax,-0x88(%rbp)
mov    -0x94(%rbp),%esi
mov    $0x1,%edi
mov    $0x0,%al
call   1060 <cvector@plt>
cltq
mov    %rax,-0x90(%rbp)
mov    -0x98(%rbp),%esi
mov    $0x1,%edx
mov    $0x9,%ecx
mov    %edx,%edi
mov    $0x0,%al
call   1030 <imatrix@plt>
cltq
mov    %rax,-0x60(%rbp)
cmpl   $0x0,0x50(%rbp)
jge    1313 <dist_3v_allt_v3+0x183>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,0x50(%rbp)
jmp    1318 <dist_3v_allt_v3+0x188>
mov    -0x70(%rbp),%eax
cmp    0x30(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x6c(%rbp),%ecx
cmp    0x50(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1a28 <dist_3v_allt_v3+0x898>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,-0x74(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x78(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
cmp    $0x0,%eax
je     1376 <dist_3v_allt_v3+0x1e6>
mov    0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    137b <dist_3v_allt_v3+0x1eb>
mov    -0x74(%rbp),%eax
cmp    -0x70(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x74(%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     13d2 <dist_3v_allt_v3+0x242>
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,-0x74(%rbp)
jmp    137b <dist_3v_allt_v3+0x1eb>
mov    -0x74(%rbp),%eax
cmp    -0x70(%rbp),%eax
jne    1a23 <dist_3v_allt_v3+0x893>
movl   $0x0,-0xac(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x70(%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     1511 <dist_3v_allt_v3+0x381>
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xac(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    -0x80(%rbp),%rax
movslq -0xac(%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    -0x80(%rbp),%rax
movslq -0xac(%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    -0x80(%rbp),%rax
movslq -0xac(%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    -0x80(%rbp),%rax
movslq -0xac(%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    -0x80(%rbp),%rax
movslq -0xac(%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    -0x80(%rbp),%rax
movslq -0xac(%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     150c <dist_3v_allt_v3+0x37c>
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x74(%rbp)
jmp    13e8 <dist_3v_allt_v3+0x258>
mov    -0x54(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x54(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x70(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x78(%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     1573 <dist_3v_allt_v3+0x3e3>
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,-0x78(%rbp)
jmp    1520 <dist_3v_allt_v3+0x390>
mov    -0x78(%rbp),%eax
cmp    -0x70(%rbp),%eax
jne    1a1e <dist_3v_allt_v3+0x88e>
movl   $0x0,-0xb0(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x70(%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     1620 <dist_3v_allt_v3+0x490>
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x88(%rbp),%rax
movslq -0xb0(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x90(%rbp),%rax
movslq -0xb0(%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     161b <dist_3v_allt_v3+0x48b>
mov    -0x38(%rbp),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x78(%rbp)
jmp    1589 <dist_3v_allt_v3+0x3f9>
mov    -0x58(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x0,0x68(%rbp)
je     16cd <dist_3v_allt_v3+0x53d>
mov    -0x70(%rbp),%esi
lea    0xa35(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0xb0(%rbp),%esi
lea    0xa31(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
cmp    -0xb0(%rbp),%eax
jg     16bf <dist_3v_allt_v3+0x52f>
mov    -0x88(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    -0x90(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
lea    0x9f3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    1668 <dist_3v_allt_v3+0x4d8>
lea    0xa2d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,0x48(%rbp)
jne    1743 <dist_3v_allt_v3+0x5b3>
mov    -0x80(%rbp),%rdi
mov    -0x88(%rbp),%rsi
mov    -0x90(%rbp),%rdx
mov    -0xac(%rbp),%ecx
mov    -0xb0(%rbp),%r8d
mov    -0x60(%rbp),%r9
mov    0x18(%rbp),%r12
mov    0x20(%rbp),%r15d
mov    0x28(%rbp),%r14d
mov    -0x98(%rbp),%ebx
mov    0x38(%rbp),%r11
mov    0x40(%rbp),%r10d
mov    0x68(%rbp),%eax
mov    %r12,(%rsp)
mov    %r15d,0x8(%rsp)
mov    %r14d,0x10(%rsp)
mov    %ebx,0x18(%rsp)
mov    %r11,0x20(%rsp)
mov    %r10d,0x28(%rsp)
mov    %eax,0x30(%rsp)
mov    $0x0,%al
call   10a0 <dist_3v_unordered_v3@plt>
jmp    17b5 <dist_3v_allt_v3+0x625>
mov    -0x80(%rbp),%rdi
mov    -0x88(%rbp),%rsi
mov    -0x90(%rbp),%rdx
mov    -0xac(%rbp),%ecx
mov    -0xb0(%rbp),%r8d
mov    -0x60(%rbp),%r9
mov    0x18(%rbp),%r13
mov    0x20(%rbp),%r12d
mov    0x28(%rbp),%r15d
mov    -0x98(%rbp),%r14d
mov    0x38(%rbp),%rbx
mov    0x40(%rbp),%r11d
mov    0x60(%rbp),%r10d
mov    0x68(%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    %r10d,0x30(%rsp)
mov    %eax,0x38(%rsp)
mov    $0x0,%al
call   1050 <dist_3v_ordered_v3@plt>
mov    0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x9c(%rbp)
mov    0x18(%rbp),%rax
mov    0x4(%rax),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x0,0x68(%rbp)
je     17fa <dist_3v_allt_v3+0x66a>
mov    -0x9c(%rbp),%esi
mov    0x18(%rbp),%rax
mov    0x4(%rax),%edx
mov    -0x68(%rbp),%ecx
mov    -0x64(%rbp),%r8d
lea    0x8ab(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,-0x9c(%rbp)
jle    1810 <dist_3v_allt_v3+0x680>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x1,0x40(%rbp)
jne    1a0d <dist_3v_allt_v3+0x87d>
mov    -0x64(%rbp),%eax
add    -0x9c(%rbp),%eax
cmp    0x58(%rbp),%eax
jle    1878 <dist_3v_allt_v3+0x6e8>
movl   $0x0,0x40(%rbp)
mov    -0x68(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x68(%rbp)
mov    -0x64(%rbp),%esi
lea    0x876(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x9c(%rbp),%esi
lea    0x876(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x871(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x64(%rbp),%eax
mov    %eax,-0xa0(%rbp)
movl   $0x0,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
cmp    -0x9c(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x64(%rbp),%ecx
cmp    0x58(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1a08 <dist_3v_allt_v3+0x878>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    -0x70(%rbp),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x10(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x14(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x14(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x18(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x1c(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x1c(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x20(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x20(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x24(%rax)
mov    -0x60(%rbp),%rax
movslq -0xa4(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x24(%rax),%ecx
mov    0x10(%rbp),%rax
movslq -0x64(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x28(%rax)
jmp    1882 <dist_3v_allt_v3+0x6f2>
jmp    1a19 <dist_3v_allt_v3+0x889>
mov    -0x9c(%rbp),%eax
add    -0x64(%rbp),%eax
mov    %eax,-0x64(%rbp)
jmp    1a1e <dist_3v_allt_v3+0x88e>
jmp    1a23 <dist_3v_allt_v3+0x893>
jmp    1318 <dist_3v_allt_v3+0x188>
mov    -0x64(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x6c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x68(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0x8(%rax)
cmpl   $0x0,-0x68(%rbp)
jge    1a77 <dist_3v_allt_v3+0x8e7>
cmpl   $0x0,-0xa0(%rbp)
jg     1a65 <dist_3v_allt_v3+0x8d5>
mov    -0x64(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    1a81 <dist_3v_allt_v3+0x8f1>
mov    -0x64(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x80(%rbp),%rdi
mov    -0x98(%rbp),%edx
mov    $0x1,%ecx
mov    $0x6,%r8d
mov    %ecx,%esi
mov    $0x0,%al
call   1070 <free_imatrix@plt>
mov    -0x88(%rbp),%rdi
mov    -0x94(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1090 <free_ivector@plt>
mov    -0x90(%rbp),%rdi
mov    -0x94(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1080 <free_cvector@plt>
mov    -0x60(%rbp),%rdi
mov    -0x98(%rbp),%edx
mov    $0x1,%ecx
mov    $0x9,%r8d
mov    %ecx,%esi
mov    $0x0,%al
call   1070 <free_imatrix@plt>
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_3v_allt_v3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
mov    %r8d,%ebp
mov    %rcx,0xc8(%rsp)
mov    %rdx,0xc0(%rsp)
mov    0x178(%rsp),%eax
mov    0x170(%rsp),%r12d
mov    0x168(%rsp),%ebx
mov    0x160(%rsp),%ecx
mov    %rcx,0x50(%rsp)
mov    0x158(%rsp),%ecx
mov    %ecx,0x84(%rsp)
mov    0x150(%rsp),%ecx
mov    %rcx,0x60(%rsp)
mov    0x148(%rsp),%rcx
mov    %rcx,0xa0(%rsp)
mov    0x140(%rsp),%r15d
mov    0x138(%rsp),%r13d
mov    0x130(%rsp),%r14d
mov    0x128(%rsp),%rcx
mov    %rcx,0x38(%rsp)
mov    0x120(%rsp),%rcx
mov    %rcx,0xb0(%rsp)
mov    %rax,0xa8(%rsp)
test   %eax,%eax
mov    %rsi,0x30(%rsp)
mov    %rdi,0x28(%rsp)
mov    %r9d,0x18(%rsp)
je     12a5 <dist_3v_allt_v3+0xf5>
sub    $0x8,%rsp
lea    0xd85(%rip),%rdi
mov    %ebp,%esi
mov    %r9d,%edx
mov    %r14d,%ecx
mov    %r13d,%r8d
mov    %r15d,%r9d
xor    %eax,%eax
push   %r12
push   %rbx
push   0x68(%rsp)
call   1060 <printf@plt>
mov    0x48(%rsp),%rdi
mov    0x50(%rsp),%rsi
add    $0x20,%rsp
mov    %r12,0xd0(%rsp)
mov    %r14,0x90(%rsp)
mov    %r13,0x98(%rsp)
mov    %rbx,0x88(%rsp)
mov    %ebp,0xc(%rsp)
mov    0x8(%rdi),%rax
mov    0x4(%rax),%ebp
mov    0x4(%rsi),%ebx
xor    %r13d,%r13d
mov    $0x1,%edi
mov    $0xc350,%esi
mov    $0x1,%edx
mov    $0x6,%ecx
xor    %eax,%eax
call   1040 <imatrix@plt>
cltq
mov    %rax,0x20(%rsp)
mov    $0x1,%edi
mov    $0x2710,%esi
xor    %eax,%eax
call   10d0 <ivector@plt>
cltq
mov    %rax,0x48(%rsp)
mov    $0x1,%edi
mov    $0x2710,%esi
xor    %eax,%eax
call   1080 <cvector@plt>
cltq
mov    %rax,0x40(%rsp)
mov    $0x1,%edi
mov    $0xc350,%esi
mov    $0x1,%edx
mov    $0x9,%ecx
xor    %eax,%eax
call   1040 <imatrix@plt>
cltq
mov    %rax,0x68(%rsp)
lea    0x1(%r15),%eax
mov    0x50(%rsp),%rcx
test   %ecx,%ecx
cmovns %ecx,%eax
mov    %r15,0x10(%rsp)
test   %r15d,%r15d
jle    18ea <dist_3v_allt_v3+0x73a>
mov    %eax,%r15d
test   %eax,%eax
js     18ea <dist_3v_allt_v3+0x73a>
mov    0xc(%rsp),%r9d
movslq %r9d,%rax
mov    %rax,0x50(%rsp)
movslq 0x18(%rsp),%rax
mov    %rax,0x70(%rsp)
movslq 0x88(%rsp),%rax
mov    %rax,0xd8(%rsp)
mov    0x30(%rsp),%r10
lea    0x4(%r10),%rax
mov    %rax,0xb8(%rsp)
mov    $0x1,%r14d
movl   $0x0,0x5c(%rsp)
mov    $0x1,%r12d
xor    %r13d,%r13d
movl   $0x0,0x8(%rsp)
movl   $0x0,0x1c(%rsp)
xor    %r8d,%r8d
mov    0x28(%rsp),%r11
mov    0x10(%rsp),%rdi
mov    %r15d,(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %ebx,%eax
or     %ebp,%eax
mov    %r8d,%eax
cmovs  %edi,%eax
lea    0x1(%rax),%ecx
mov    %ecx,0x4(%rsp)
xor    %ecx,%ecx
cmp    %eax,%ebp
setle  %cl
mov    %ebp,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    %r9d,%r14d
setl   %cl
test   %ecx,%edx
je     145b <dist_3v_allt_v3+0x2ab>
movslq %r14d,%rcx
add    $0x1,%rcx
mov    0x50(%rsp),%r8
nopl   0x0(%rax)
mov    (%r11,%rcx,8),%rdx
mov    0x4(%rdx),%ebp
xor    %edx,%edx
cmp    %eax,%ebp
setle  %dl
mov    %ebp,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %r8,%rcx
setl   %dl
add    $0x1,%r14d
add    $0x1,%rcx
test   %edx,%esi
jne    1430 <dist_3v_allt_v3+0x280>
mov    0x4(%rsp),%r8d
cmp    %r8d,%ebp
jne    18b4 <dist_3v_allt_v3+0x704>
xor    %r15d,%r15d
cmp    %r9d,%r14d
jg     14d8 <dist_3v_allt_v3+0x328>
movslq %r14d,%rcx
mov    $0x1,%edx
mov    0x20(%rsp),%rbp
xchg   %ax,%ax
mov    %rdx,%r15
mov    (%r11,%rcx,8),%rdx
mov    0x8(%rdx),%esi
mov    0x0(%rbp,%r15,8),%rdi
mov    %esi,0x4(%rdi)
mov    0xc(%rdx),%esi
mov    %esi,0x8(%rdi)
mov    0x10(%rdx),%esi
mov    %esi,0xc(%rdi)
mov    0x14(%rdx),%esi
mov    %esi,0x10(%rdi)
mov    0x18(%rdx),%esi
mov    %esi,0x14(%rdi)
mov    0x1c(%rdx),%edx
mov    %edx,0x18(%rdi)
mov    0x50(%rsp),%rdi
cmp    %rdi,%rcx
jge    14d5 <dist_3v_allt_v3+0x325>
mov    0x8(%r11,%rcx,8),%rdx
cmp    %r8d,0x4(%rdx)
jne    14d5 <dist_3v_allt_v3+0x325>
lea    0x1(%r15),%rdx
lea    0x1(%rcx),%rsi
cmp    %rdi,%rcx
mov    %rsi,%rcx
jl     1480 <dist_3v_allt_v3+0x2d0>
add    %r15d,%r14d
mov    0x70(%rsp),%rdi
xor    %ecx,%ecx
cmp    %eax,%ebx
setle  %cl
mov    %ebx,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    0x18(%rsp),%r12d
setl   %cl
test   %ecx,%edx
je     1538 <dist_3v_allt_v3+0x388>
movslq %r12d,%rcx
add    $0x1,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%r10,%rcx,4),%ebx
xor    %edx,%edx
cmp    %eax,%ebx
setle  %dl
mov    %ebx,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %rdi,%rcx
setl   %dl
add    $0x1,%r12d
add    $0x1,%rcx
test   %edx,%esi
jne    1510 <dist_3v_allt_v3+0x360>
add    $0xffffffff,%r14d
cmp    %r8d,%ebx
jne    1560 <dist_3v_allt_v3+0x3b0>
xor    %ebp,%ebp
cmp    0x18(%rsp),%r12d
mov    %r13,0x78(%rsp)
jle    1568 <dist_3v_allt_v3+0x3b8>
mov    0x48(%rsp),%r8
mov    0x40(%rsp),%rdx
mov    0x38(%rsp),%r10
jmp    15dd <dist_3v_allt_v3+0x42d>
mov    %r8d,%ebp
jmp    18ab <dist_3v_allt_v3+0x6fb>
movslq %r12d,%rax
mov    0xc0(%rsp),%rcx
lea    (%rcx,%rax,4),%r9
mov    0xc8(%rsp),%rdx
lea    (%rdx,%rax,1),%rcx
mov    0xb8(%rsp),%rdx
lea    (%rdx,%rax,4),%rsi
xor    %ebx,%ebx
mov    0x48(%rsp),%r8
mov    0x40(%rsp),%rdx
mov    0x38(%rsp),%r10
mov    %rbx,%rbp
lea    (%rax,%rbx,1),%rdi
mov    (%r9,%rbx,4),%ebx
mov    %ebx,0x4(%r8,%rbp,4)
movzbl (%rcx,%rbp,1),%ebx
mov    %bl,0x1(%rdx,%rbp,1)
cmp    0x70(%rsp),%rdi
jge    15d3 <dist_3v_allt_v3+0x423>
mov    0x4(%rsp),%ebx
cmp    %ebx,(%rsi,%rbp,4)
jne    15d3 <dist_3v_allt_v3+0x423>
lea    0x1(%rbp),%rbx
cmp    0x70(%rsp),%rdi
jl     15a0 <dist_3v_allt_v3+0x3f0>
add    %ebp,%r12d
add    $0x1,%r12d
add    $0x1,%ebp
mov    0xa8(%rsp),%r13
test   %r13d,%r13d
je     167c <dist_3v_allt_v3+0x4cc>
lea    0xa83(%rip),%rdi
mov    0x4(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xa81(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1060 <printf@plt>
test   %ebp,%ebp
lea    0xa7e(%rip),%rbx
je     165b <dist_3v_allt_v3+0x4ab>
lea    0x1(%rbp),%eax
mov    %rax,0xe0(%rsp)
mov    $0x1,%r13d
nopl   0x0(%rax)
mov    0x48(%rsp),%rax
mov    (%rax,%r13,4),%esi
mov    0x40(%rsp),%rax
movsbl (%rax,%r13,1),%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
add    $0x1,%r13
cmp    %r13,0xe0(%rsp)
jne    1630 <dist_3v_allt_v3+0x480>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x38(%rsp),%r10
mov    0xa8(%rsp),%r13
mov    0x48(%rsp),%r8
mov    0x40(%rsp),%rdx
cmpl   $0x0,0x84(%rsp)
je     16ce <dist_3v_allt_v3+0x51e>
mov    0x20(%rsp),%rdi
mov    %r8,%rsi
mov    %r15d,%ecx
mov    %ebp,%r8d
mov    0x68(%rsp),%r9
xor    %eax,%eax
push   %r13
push   0xd8(%rsp)
push   0x70(%rsp)
push   0xb8(%rsp)
push   $0xc350
push   0xc0(%rsp)
push   0xc0(%rsp)
push   %r10
mov    %r10,%rbx
call   1070 <dist_3v_ordered_v3@plt>
jmp    1711 <dist_3v_allt_v3+0x561>
sub    $0x8,%rsp
mov    0x28(%rsp),%rdi
mov    %r8,%rsi
mov    %r15d,%ecx
mov    %ebp,%r8d
mov    0x70(%rsp),%r9
xor    %eax,%eax
push   %r13
push   0x70(%rsp)
push   0xb8(%rsp)
push   $0xc350
push   0xc0(%rsp)
push   0xc0(%rsp)
push   %r10
mov    %r10,%rbx
call   10c0 <dist_3v_unordered_v3@plt>
add    $0x40,%rsp
mov    (%rbx),%r15d
mov    0x4(%rbx),%edx
mov    0x8(%rsp),%ecx
add    %edx,%ecx
test   %r13d,%r13d
mov    0x78(%rsp),%rbp
je     1745 <dist_3v_allt_v3+0x595>
lea    0x96c(%rip),%rdi
mov    %r15d,%esi
mov    %ebp,%r8d
xor    %eax,%eax
mov    %ecx,%r13d
call   1060 <printf@plt>
mov    %r13d,%ecx
add    $0xffffffff,%r12d
xor    %eax,%eax
test   %r15d,%r15d
setg   %al
add    %eax,0x1c(%rsp)
lea    (%r15,%rbp,1),%eax
cmpl   $0x1,0x60(%rsp)
jne    17c4 <dist_3v_allt_v3+0x614>
mov    $0x1,%ebp
mov    0x88(%rsp),%r13
cmp    %r13d,%eax
jle    17ea <dist_3v_allt_v3+0x63a>
add    $0xffffffff,%ecx
mov    %ecx,0x8(%rsp)
xor    %ebp,%ebp
lea    0x93a(%rip),%rdi
mov    0x78(%rsp),%rbx
mov    %ebx,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x939(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x931(%rip),%rdi
call   1050 <puts@plt>
mov    %ebx,%eax
mov    %ebx,0x5c(%rsp)
mov    0xc(%rsp),%r9d
mov    0x30(%rsp),%r10
mov    0x28(%rsp),%r11
jmp    1802 <dist_3v_allt_v3+0x652>
mov    %ecx,0x8(%rsp)
mov    0x4(%rsp),%r8d
mov    %r8d,%ebp
mov    %r8d,%ebx
mov    %eax,%r13d
mov    0xc(%rsp),%r9d
mov    0x30(%rsp),%r10
mov    0x28(%rsp),%r11
jmp    18ab <dist_3v_allt_v3+0x6fb>
mov    %ecx,0x8(%rsp)
mov    0xc(%rsp),%r9d
mov    0x30(%rsp),%r10
mov    0x28(%rsp),%r11
mov    0x78(%rsp),%rbx
mov    0x4(%rsp),%r8d
cmp    %r13d,%ebx
mov    %rbx,%r13
mov    %rbp,0x60(%rsp)
jge    18a5 <dist_3v_allt_v3+0x6f5>
test   %r15d,%r15d
jle    18a5 <dist_3v_allt_v3+0x6f5>
movslq %r13d,%rax
mov    0xb0(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
mov    $0x1,%edx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rax,%rdx,1),%rsi
mov    (%rcx,%rdx,8),%rdi
mov    %r8d,0x4(%rdi)
mov    0x68(%rsp),%rbx
mov    (%rbx,%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),%ebp
mov    %ebp,0x28(%rdi)
add    $0x1,%r13d
cmp    0xd8(%rsp),%rsi
jge    18a5 <dist_3v_allt_v3+0x6f5>
lea    0x1(%rdx),%rsi
cmp    %r15,%rdx
mov    %rsi,%rdx
jb     1840 <dist_3v_allt_v3+0x690>
mov    %r8d,%ebp
mov    %r8d,%ebx
mov    0x10(%rsp),%rdi
mov    (%rsp),%r15d
cmp    %edi,%r8d
jge    18c4 <dist_3v_allt_v3+0x714>
cmp    %r15d,0x1c(%rsp)
jle    13f0 <dist_3v_allt_v3+0x240>
mov    0x38(%rsp),%rax
mov    %r13d,(%rax)
mov    0x1c(%rsp),%ecx
mov    %ecx,0x4(%rax)
mov    0x8(%rsp),%ecx
mov    %ecx,0x8(%rax)
test   %ecx,%ecx
jns    18fd <dist_3v_allt_v3+0x74d>
mov    0x5c(%rsp),%ecx
test   %ecx,%ecx
cmovg  %ecx,%r13d
jmp    18fd <dist_3v_allt_v3+0x74d>
mov    0x38(%rsp),%rax
movq   $0x0,(%rax)
movl   $0x0,0x8(%rax)
mov    0x20(%rsp),%rdi
mov    %r13d,0xc(%rax)
mov    $0x1,%esi
mov    $0xc350,%edx
mov    $0x1,%ecx
mov    $0x6,%r8d
xor    %eax,%eax
call   1090 <free_imatrix@plt>
mov    0x48(%rsp),%rdi
mov    $0x1,%esi
mov    $0x2710,%edx
xor    %eax,%eax
call   10b0 <free_ivector@plt>
mov    0x40(%rsp),%rdi
mov    $0x1,%esi
mov    $0x2710,%edx
xor    %eax,%eax
call   10a0 <free_cvector@plt>
mov    0x68(%rsp),%rdi
mov    $0x1,%esi
mov    $0xc350,%edx
mov    $0x1,%ecx
mov    $0x9,%r8d
xor    %eax,%eax
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1090 <free_imatrix@plt>

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

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