void dist_2v_allt_v4(int *m1_t, int *m2_t, int *m1_p, int *m2_p, char *m1_s,
                     char *m2_s, int n1, int n2, 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 *m1p,
                     char *m1s, int *m2p, char *m2s, int verbose) {
  int curr_n1, curr_n2;
  int curr_tr1, curr_tr2;
  int errorcode = 0;
  int i, j;
  int i1, i2;
  int max_n_ovdi_single_transcript = 50000;
  int n12;
  int n12_stop = 0;
  int n12_tr = 0;
  int running_entries = 0;
  int transcript = 0;
  i1 = 1;
  curr_tr1 = m1_t[i1];
  i2 = 1;
  curr_tr2 = m2_t[i2];
  if (max_n_transcripts < 0)
    max_n_transcripts = n_transcripts + 1;
  while ((transcript < n_transcripts) & (n12_tr <= max_n_transcripts)) {
    transcript++;
    if ((curr_tr1 < 0) | (curr_tr2 < 0))
      transcript = n_transcripts + 1;
    while ((curr_tr1 < transcript) & (curr_tr1 >= 0) & (i1 < n1)) {
      i1++;
      curr_tr1 = m1_t[i1];
    }
    if (curr_tr1 == transcript) {
      curr_n1 = 0;
      while ((curr_tr1 == transcript) & (i1 <= n1)) {
        curr_n1++;
        m1p[curr_n1] = m1_p[i1];
        m1s[curr_n1] = m1_s[i1];
        i1++;
        if (i1 <= n1)
          curr_tr1 = m1_t[i1];
      }
      i1--;
      curr_tr1 = transcript;
      while ((curr_tr2 < transcript) & (curr_tr2 >= 0) & (i2 < n2)) {
        i2++;
        curr_tr2 = m2_t[i2];
      }
      if (curr_tr2 == transcript) {
        curr_n2 = 0;
        while ((curr_tr2 == transcript) & (i2 <= n2)) {
          curr_n2++;
          m2p[curr_n2] = m2_p[i2];
          m2s[curr_n2] = m2_s[i2];
          i2++;
          if (i2 <= n2)
            curr_tr2 = m2_t[i2];
        }
        i2--;
        curr_tr2 = transcript;
        if (verbose) {
          printf("transcript=%d\n", transcript);
          printf("motif 1 (%d): ", curr_n1);
          for (i = 1; i <= curr_n1; i++)
            printf("%d %d,", m1p[i], m1s[i]);
          printf("\n");
          printf("motif 2 (%d): ", curr_n2);
          for (i = 1; i <= curr_n2; i++)
            printf("%d %d,", m2p[i], m2s[i]);
          printf("\n");
        }
        if (order_constraint < 0) {
          dist_2v_unordered_nostrand_v2(m1p, m2p, curr_n1, curr_n2,
                                        ovdi_single_transcript, n, min_dist,
                                        max_dist, max_n_ovdi_single_transcript,
                                        ml, get_positions, temp_ovdi);
        } else {
          if (order_constraint == 1) {
            dist_2v_ordered_v4(m1p, m2p, m1s, m2s, curr_n1, curr_n2,
                               ovdi_single_transcript, n, min_dist, max_dist,
                               max_n_ovdi_single_transcript, ml, get_positions,
                               pos_format, temp_ovdi, 0);
          } else {
            dist_2v_unordered_v4(m1p, m2p, m1s, m2s, curr_n1, curr_n2,
                                 ovdi_single_transcript, n, min_dist, max_dist,
                                 max_n_ovdi_single_transcript, ml,
                                 get_positions, temp_ovdi);
          }
        }
        n12 = n[0];
        errorcode += n[1];
        if (verbose) {
          printf("ovdi_single_transcript (%d)\n", n12);
          for (i = 1; i <= n12; i++)
            printf("%d %d %d %d\n", ovdi_single_transcript[i][1],
                   ovdi_single_transcript[i][2], ovdi_single_transcript[i][3],
                   ovdi_single_transcript[i][4]);
        }
        if (n12 > 0)
          n12_tr++;
        if (get_positions == 1) {
          if ((running_entries + n12) > max_n_ovdi) {
            get_positions = 0;
            errorcode--;
            n12_stop = running_entries;
            printf("dist_2v_allt_v4\n");
            printf("transcript=%d (n_transcripts=%d)\n", transcript,
                   n_transcripts);
            printf("running_entries=%d\n", running_entries);
            printf("n12=%d\n", n12);
            printf("setting get_positions to 0\n");
          } else {
            for (i = 1; i <= n12; 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];
            }
          }
        } else {
          running_entries += n12;
        }
      }
    }
  }
  n[0] = running_entries;
  n[1] = n12_tr;
  n[2] = errorcode;
  if (errorcode < 0) {
    if (n12_stop <= 0)
      n12_stop = running_entries;
    n[3] = n12_stop;
  } else {
    n[3] = running_entries;
  }
}


x86 assembly (clang, -O0):
<dist_2v_allt_v4>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
mov    0xa8(%rbp),%eax
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),%eax
mov    0x68(%rbp),%eax
mov    0x60(%rbp),%eax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0xc350,-0x80(%rbp)
movl   $0x0,-0x88(%rbp)
movl   $0x0,-0x8c(%rbp)
movl   $0x0,-0x90(%rbp)
movl   $0x0,-0x94(%rbp)
movl   $0x1,-0x78(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x64(%rbp)
movl   $0x1,-0x7c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x0,0x60(%rbp)
jge    1236 <dist_2v_allt_v4+0xf6>
mov    0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,0x60(%rbp)
jmp    123b <dist_2v_allt_v4+0xfb>
mov    -0x94(%rbp),%eax
cmp    0x40(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x8c(%rbp),%ecx
cmp    0x60(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     19f0 <dist_2v_allt_v4+0x8b0>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
cmpl   $0x0,-0x64(%rbp)
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x68(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
cmp    $0x0,%eax
je     12a8 <dist_2v_allt_v4+0x168>
mov    0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    12ad <dist_2v_allt_v4+0x16d>
mov    -0x64(%rbp),%eax
cmp    -0x94(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x64(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x78(%rbp),%ecx
cmp    0x10(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1303 <dist_2v_allt_v4+0x1c3>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x64(%rbp)
jmp    12ad <dist_2v_allt_v4+0x16d>
mov    -0x64(%rbp),%eax
cmp    -0x94(%rbp),%eax
jne    19eb <dist_2v_allt_v4+0x8ab>
movl   $0x0,-0x5c(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x94(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x78(%rbp),%ecx
cmp    0x10(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13a7 <dist_2v_allt_v4+0x267>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x88(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    0x90(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
cmp    0x10(%rbp),%eax
jg     13a2 <dist_2v_allt_v4+0x262>
mov    -0x30(%rbp),%rax
movslq -0x78(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x64(%rbp)
jmp    1319 <dist_2v_allt_v4+0x1d9>
mov    -0x78(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x78(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x94(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x68(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x7c(%rbp),%ecx
cmp    0x18(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     140f <dist_2v_allt_v4+0x2cf>
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
jmp    13b9 <dist_2v_allt_v4+0x279>
mov    -0x68(%rbp),%eax
cmp    -0x94(%rbp),%eax
jne    19e6 <dist_2v_allt_v4+0x8a6>
movl   $0x0,-0x60(%rbp)
mov    -0x68(%rbp),%eax
cmp    -0x94(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x7c(%rbp),%ecx
cmp    0x18(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14b3 <dist_2v_allt_v4+0x373>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x98(%rbp),%rax
movslq -0x60(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x58(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    0xa0(%rbp),%rax
movslq -0x60(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     14ae <dist_2v_allt_v4+0x36e>
mov    -0x38(%rbp),%rax
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
jmp    1425 <dist_2v_allt_v4+0x2e5>
mov    -0x7c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x0,0xa8(%rbp)
je     15bc <dist_2v_allt_v4+0x47c>
mov    -0x94(%rbp),%esi
lea    0xb21(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x5c(%rbp),%esi
lea    0xb1f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jg     1543 <dist_2v_allt_v4+0x403>
mov    0x88(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    0x90(%rbp),%rax
movslq -0x70(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
lea    0xaf0(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    14fe <dist_2v_allt_v4+0x3be>
lea    0xb05(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x60(%rbp),%esi
lea    0xaca(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x60(%rbp),%eax
jg     15ae <dist_2v_allt_v4+0x46e>
mov    0x98(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    0xa0(%rbp),%rax
movslq -0x70(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
lea    0xa85(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    1569 <dist_2v_allt_v4+0x429>
lea    0xa9a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,0x58(%rbp)
jge    1624 <dist_2v_allt_v4+0x4e4>
mov    0x88(%rbp),%rdi
mov    0x98(%rbp),%rsi
mov    -0x5c(%rbp),%edx
mov    -0x60(%rbp),%ecx
mov    0x78(%rbp),%r8
mov    0x28(%rbp),%r9
mov    0x30(%rbp),%r15d
mov    0x38(%rbp),%r14d
mov    -0x80(%rbp),%ebx
mov    0x48(%rbp),%r11
mov    0x50(%rbp),%r10d
mov    0x80(%rbp),%rax
mov    %r15d,(%rsp)
mov    %r14d,0x8(%rsp)
mov    %ebx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10d,0x20(%rsp)
mov    %rax,0x28(%rsp)
mov    $0x0,%al
call   1050 <dist_2v_unordered_nostrand_v2@plt>
jmp    174f <dist_2v_allt_v4+0x60f>
cmpl   $0x1,0x58(%rbp)
jne    16d7 <dist_2v_allt_v4+0x597>
mov    0x88(%rbp),%rdi
mov    0x98(%rbp),%rsi
mov    0x90(%rbp),%rdx
mov    0xa0(%rbp),%rcx
mov    -0x5c(%rbp),%r8d
mov    -0x60(%rbp),%r9d
mov    0x78(%rbp),%rax
mov    %rax,-0xa8(%rbp)
mov    0x28(%rbp),%r13
mov    0x30(%rbp),%r12d
mov    0x38(%rbp),%r15d
mov    -0x80(%rbp),%r14d
mov    0x48(%rbp),%rbx
mov    0x50(%rbp),%r11d
mov    0x70(%rbp),%r10d
mov    0x80(%rbp),%rax
mov    %rax,-0xa0(%rbp)
xor    %eax,%eax
mov    -0xa8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0xa0(%rbp),%rax
mov    %r13,0x8(%rsp)
mov    %r12d,0x10(%rsp)
mov    %r15d,0x18(%rsp)
mov    %r14d,0x20(%rsp)
mov    %rbx,0x28(%rsp)
mov    %r11d,0x30(%rsp)
mov    %r10d,0x38(%rsp)
mov    %rax,0x40(%rsp)
movl   $0x0,0x48(%rsp)
mov    $0x0,%al
call   1060 <dist_2v_ordered_v4@plt>
jmp    174a <dist_2v_allt_v4+0x60a>
mov    0x88(%rbp),%rdi
mov    0x98(%rbp),%rsi
mov    0x90(%rbp),%rdx
mov    0xa0(%rbp),%rcx
mov    -0x5c(%rbp),%r8d
mov    -0x60(%rbp),%r9d
mov    0x78(%rbp),%r13
mov    0x28(%rbp),%r12
mov    0x30(%rbp),%r15d
mov    0x38(%rbp),%r14d
mov    -0x80(%rbp),%ebx
mov    0x48(%rbp),%r11
mov    0x50(%rbp),%r10d
mov    0x80(%rbp),%rax
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15d,0x10(%rsp)
mov    %r14d,0x18(%rsp)
mov    %ebx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10d,0x30(%rsp)
mov    %rax,0x38(%rsp)
mov    $0x0,%al
call   1030 <dist_2v_unordered_v4@plt>
jmp    174f <dist_2v_allt_v4+0x60f>
mov    0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x84(%rbp)
mov    0x28(%rbp),%rax
mov    0x4(%rax),%eax
add    -0x6c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x0,0xa8(%rbp)
je     17fd <dist_2v_allt_v4+0x6bd>
mov    -0x84(%rbp),%esi
lea    0x8b2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x84(%rbp),%eax
jg     17f8 <dist_2v_allt_v4+0x6b8>
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%esi
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%edx
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x10(%rax),%r8d
lea    0x86e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    1790 <dist_2v_allt_v4+0x650>
jmp    17fd <dist_2v_allt_v4+0x6bd>
cmpl   $0x0,-0x84(%rbp)
jle    1819 <dist_2v_allt_v4+0x6d9>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
cmpl   $0x1,0x50(%rbp)
jne    19cf <dist_2v_allt_v4+0x88f>
mov    -0x90(%rbp),%eax
add    -0x84(%rbp),%eax
cmp    0x68(%rbp),%eax
jle    18b4 <dist_2v_allt_v4+0x774>
movl   $0x0,0x50(%rbp)
mov    -0x6c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x88(%rbp)
lea    0x803(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x94(%rbp),%esi
mov    0x40(%rbp),%edx
lea    0x7fd(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x90(%rbp),%esi
lea    0x80b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x84(%rbp),%esi
lea    0x80b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x805(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    19ca <dist_2v_allt_v4+0x88a>
movl   $0x1,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x84(%rbp),%eax
jg     19c5 <dist_2v_allt_v4+0x885>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x90(%rbp)
mov    -0x94(%rbp),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x10(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x14(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x14(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x18(%rax)
mov    0x78(%rbp),%rax
movslq -0x70(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rax),%ecx
mov    0x20(%rbp),%rax
movslq -0x90(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x1c(%rax)
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    18bb <dist_2v_allt_v4+0x77b>
jmp    19ca <dist_2v_allt_v4+0x88a>
jmp    19e1 <dist_2v_allt_v4+0x8a1>
mov    -0x84(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x90(%rbp)
jmp    19e6 <dist_2v_allt_v4+0x8a6>
jmp    19eb <dist_2v_allt_v4+0x8ab>
jmp    123b <dist_2v_allt_v4+0xfb>
mov    -0x90(%rbp),%ecx
mov    0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8c(%rbp),%ecx
mov    0x28(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x6c(%rbp),%ecx
mov    0x28(%rbp),%rax
mov    %ecx,0x8(%rax)
cmpl   $0x0,-0x6c(%rbp)
jge    1a48 <dist_2v_allt_v4+0x908>
cmpl   $0x0,-0x88(%rbp)
jg     1a36 <dist_2v_allt_v4+0x8f6>
mov    -0x90(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%ecx
mov    0x28(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    1a55 <dist_2v_allt_v4+0x915>
mov    -0x90(%rbp),%ecx
mov    0x28(%rbp),%rax
mov    %ecx,0xc(%rax)
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_2v_allt_v4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa8,%rsp
mov    %r9,0x88(%rsp)
mov    %r8,0xa0(%rsp)
mov    %rcx,0x80(%rsp)
mov    %rdx,0x98(%rsp)
mov    0x110(%rsp),%r8d
mov    0xf8(%rsp),%rdx
mov    0x130(%rsp),%eax
lea    0x1(%r8),%ecx
test   %eax,%eax
cmovns %eax,%ecx
mov    %ecx,0x6c(%rsp)
test   %ecx,%ecx
js     196f <dist_2v_allt_v4+0x80f>
test   %r8d,%r8d
jle    196f <dist_2v_allt_v4+0x80f>
mov    %rsi,%r9
mov    0x168(%rsp),%rsi
mov    0x160(%rsp),%r13
mov    0x120(%rsp),%eax
mov    %rax,0x28(%rsp)
mov    0xf0(%rsp),%rax
add    $0x8,%rax
mov    %rax,0x70(%rsp)
lea    0x4(%r9),%rax
mov    %rax,0x78(%rsp)
mov    0x4(%r9),%r15d
lea    0x4(%rdi),%rax
mov    %rax,0x90(%rsp)
mov    0x4(%rdi),%ebp
movslq 0xe0(%rsp),%r10
movslq 0xe8(%rsp),%r11
mov    $0x1,%r14d
xor    %ecx,%ecx
xor    %eax,%eax
mov    %rax,0x58(%rsp)
movl   $0x0,0x14(%rsp)
movl   $0x0,0x4c(%rsp)
mov    $0x1,%r12d
movl   $0x0,0x10(%rsp)
mov    %r9,0x50(%rsp)
mov    %rdi,0x40(%rsp)
mov    %r10,0x20(%rsp)
mov    %r11,0x38(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r15d,%edx
or     %ebp,%edx
mov    %ecx,%edx
cmovs  %r8d,%edx
lea    0x1(%rdx),%eax
mov    %eax,0xc(%rsp)
xor    %eax,%eax
cmp    %edx,%ebp
setle  %al
mov    %ebp,%ecx
not    %ecx
shr    $0x1f,%ecx
and    %eax,%ecx
xor    %eax,%eax
cmp    0xe0(%rsp),%r12d
setl   %al
test   %eax,%ecx
je     12d7 <dist_2v_allt_v4+0x177>
movslq %r12d,%rbx
add    $0x1,%rbx
nopw   0x0(%rax,%rax,1)
mov    (%rdi,%rbx,4),%ebp
xor    %eax,%eax
cmp    %edx,%ebp
setle  %al
mov    %ebp,%ecx
not    %ecx
shr    $0x1f,%ecx
and    %eax,%ecx
xor    %eax,%eax
cmp    %r10,%rbx
setl   %al
add    $0x1,%r12d
add    $0x1,%rbx
test   %eax,%ecx
jne    12b0 <dist_2v_allt_v4+0x150>
mov    0xc(%rsp),%ecx
cmp    %ecx,%ebp
jne    1930 <dist_2v_allt_v4+0x7d0>
xor    %ecx,%ecx
cmp    0xe0(%rsp),%r12d
mov    0x158(%rsp),%rbx
jg     1393 <dist_2v_allt_v4+0x233>
mov    %r9,%rsi
movslq %r12d,%r11
mov    0x98(%rsp),%rcx
lea    (%rcx,%r11,4),%r8
mov    0xa0(%rsp),%rcx
lea    (%rcx,%r11,1),%r10
mov    0x90(%rsp),%rax
lea    (%rax,%r11,4),%r9
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
mov    %rdi,%rax
lea    (%r11,%rdi,1),%rbp
mov    (%r8,%rdi,4),%edi
mov    %edi,0x4(%rbx,%rax,4)
movzbl (%r10,%rax,1),%ecx
mov    %cl,0x1(%r13,%rax,1)
cmp    0x20(%rsp),%rbp
jge    1365 <dist_2v_allt_v4+0x205>
mov    0xc(%rsp),%ecx
cmp    %ecx,(%r9,%rax,4)
jne    1365 <dist_2v_allt_v4+0x205>
lea    0x1(%rax),%rdi
cmp    0x20(%rsp),%rbp
jl     1330 <dist_2v_allt_v4+0x1d0>
mov    %eax,%ecx
add    $0x1,%ecx
add    %eax,%r12d
add    $0x1,%r12d
mov    0x40(%rsp),%rdi
mov    0x110(%rsp),%r8d
mov    0x20(%rsp),%r10
mov    0x38(%rsp),%r11
mov    %rsi,%r9
mov    0x168(%rsp),%rsi
mov    %rcx,0x60(%rsp)
xor    %ecx,%ecx
cmp    %edx,%r15d
setle  %cl
mov    %r15d,%eax
not    %eax
shr    $0x1f,%eax
and    %ecx,%eax
xor    %ecx,%ecx
cmp    0xe8(%rsp),%r14d
setl   %cl
test   %ecx,%eax
je     13fc <dist_2v_allt_v4+0x29c>
movslq %r14d,%rcx
add    $0x1,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%r9,%rcx,4),%r15d
xor    %ebp,%ebp
cmp    %edx,%r15d
setle  %bpl
mov    %r15d,%eax
not    %eax
shr    $0x1f,%eax
and    %ebp,%eax
xor    %ebp,%ebp
cmp    %r11,%rcx
setl   %bpl
add    $0x1,%r14d
add    $0x1,%rcx
test   %ebp,%eax
jne    13d0 <dist_2v_allt_v4+0x270>
add    $0xffffffff,%r12d
mov    0xc(%rsp),%ecx
cmp    %ecx,%r15d
jne    1430 <dist_2v_allt_v4+0x2d0>
xor    %eax,%eax
mov    %rax,0x30(%rsp)
cmp    0xe8(%rsp),%r14d
jle    1437 <dist_2v_allt_v4+0x2d7>
mov    0x170(%rsp),%rcx
mov    %rbx,%rbp
jmp    14b8 <dist_2v_allt_v4+0x358>
nopw   0x0(%rax,%rax,1)
mov    %ecx,%ebp
jmp    1930 <dist_2v_allt_v4+0x7d0>
movslq %r14d,%rax
mov    0x80(%rsp),%rcx
lea    (%rcx,%rax,4),%r8
mov    0x88(%rsp),%rcx
lea    (%rcx,%rax,1),%rbx
mov    0x78(%rsp),%rcx
lea    (%rcx,%rax,4),%r9
xor    %edx,%edx
mov    0x170(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rdx,%rdi
lea    (%rax,%rdx,1),%rbp
mov    (%r8,%rdx,4),%edx
mov    %edx,0x4(%rsi,%rdi,4)
movzbl (%rbx,%rdi,1),%edx
mov    %dl,0x1(%rcx,%rdi,1)
cmp    %r11,%rbp
jge    149f <dist_2v_allt_v4+0x33f>
mov    0xc(%rsp),%edx
cmp    %edx,(%r9,%rdi,4)
jne    149f <dist_2v_allt_v4+0x33f>
lea    0x1(%rdi),%rdx
cmp    %r11,%rbp
jl     1470 <dist_2v_allt_v4+0x310>
mov    %edi,%eax
add    $0x1,%eax
mov    %rax,0x30(%rsp)
add    %edi,%r14d
add    $0x1,%r14d
mov    0x158(%rsp),%rbp
cmpl   $0x0,0x178(%rsp)
mov    0x60(%rsp),%rbx
je     15be <dist_2v_allt_v4+0x45e>
lea    0xb2e(%rip),%rdi
mov    0xc(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xb2b(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1060 <printf@plt>
test   %ebx,%ebx
lea    0xb28(%rip),%r15
je     152e <dist_2v_allt_v4+0x3ce>
mov    %r13,%rbx
mov    %rbp,%r13
mov    0x60(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x18(%rsp)
mov    $0x1,%ebp
mov    0x0(%r13,%rbp,4),%esi
movsbl (%rbx,%rbp,1),%edx
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,0x18(%rsp)
jne    1510 <dist_2v_allt_v4+0x3b0>
mov    $0xa,%edi
call   1040 <putchar@plt>
lea    0xae6(%rip),%rdi
mov    0x30(%rsp),%rbx
mov    %ebx,%esi
xor    %eax,%eax
call   1060 <printf@plt>
test   %ebx,%ebx
mov    0x168(%rsp),%r13
je     1594 <dist_2v_allt_v4+0x434>
mov    0x30(%rsp),%rax
lea    0x1(%rax),%ebx
mov    $0x1,%ebp
cs nopw 0x0(%rax,%rax,1)
mov    0x0(%r13,%rbp,4),%esi
mov    0x170(%rsp),%rax
movsbl (%rax,%rbp,1),%edx
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1570 <dist_2v_allt_v4+0x410>
mov    $0xa,%edi
call   1040 <putchar@plt>
mov    0x170(%rsp),%rcx
mov    %r13,%rsi
mov    0x160(%rsp),%r13
mov    0x158(%rsp),%rbp
mov    0x60(%rsp),%rbx
mov    0x128(%rsp),%eax
test   %eax,%eax
mov    0xf8(%rsp),%r15
mov    %rbp,%rdi
js     1634 <dist_2v_allt_v4+0x4d4>
mov    %r13,%rdx
mov    %ebx,%r8d
cmp    $0x1,%eax
jne    167d <dist_2v_allt_v4+0x51d>
mov    0x30(%rsp),%r9
xor    %eax,%eax
push   $0x0
push   0x158(%rsp)
mov    0x150(%rsp),%ebp
push   %rbp
push   0x40(%rsp)
push   0x138(%rsp)
push   $0xc350
mov    0x138(%rsp),%ebp
push   %rbp
mov    0x138(%rsp),%ebp
push   %rbp
push   %r15
mov    0x190(%rsp),%rbx
push   %rbx
call   1080 <dist_2v_ordered_v4@plt>
add    $0x50,%rsp
jmp    16bf <dist_2v_allt_v4+0x55f>
mov    %ebx,%edx
mov    0x30(%rsp),%rcx
mov    0x148(%rsp),%rbx
mov    %rbx,%r8
mov    %r15,%r9
xor    %eax,%eax
push   0x150(%rsp)
push   0x30(%rsp)
push   0x128(%rsp)
push   $0xc350
mov    0x128(%rsp),%ebp
push   %rbp
mov    0x128(%rsp),%ebp
push   %rbp
call   1070 <dist_2v_unordered_nostrand_v2@plt>
add    $0x30,%rsp
jmp    16bf <dist_2v_allt_v4+0x55f>
mov    0x30(%rsp),%r9
xor    %eax,%eax
push   0x150(%rsp)
push   0x30(%rsp)
push   0x128(%rsp)
push   $0xc350
mov    0x128(%rsp),%ebp
push   %rbp
mov    0x128(%rsp),%ebp
push   %rbp
push   %r15
mov    0x180(%rsp),%rbx
push   %rbx
call   1030 <dist_2v_unordered_v4@plt>
add    $0x40,%rsp
mov    0x10(%rsp),%eax
add    0x4(%r15),%eax
mov    %eax,0x10(%rsp)
mov    (%r15),%eax
mov    %rax,0x18(%rsp)
cmpl   $0x0,0x178(%rsp)
lea    0x96f(%rip),%rbp
je     1734 <dist_2v_allt_v4+0x5d4>
lea    0x949(%rip),%rdi
mov    0x18(%rsp),%r15
mov    %r15d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
test   %r15d,%r15d
jle    1734 <dist_2v_allt_v4+0x5d4>
mov    0x18(%rsp),%rax
lea    0x1(%rax),%r13
mov    $0x1,%r15d
xchg   %ax,%ax
mov    (%rbx,%r15,8),%rax
mov    0x4(%rax),%esi
mov    0x8(%rax),%edx
mov    0xc(%rax),%ecx
mov    0x10(%rax),%r8d
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
add    $0x1,%r15
cmp    %r15,%r13
jne    1710 <dist_2v_allt_v4+0x5b0>
add    $0xffffffff,%r14d
xor    %eax,%eax
mov    0x18(%rsp),%rcx
test   %ecx,%ecx
setg   %al
mov    0x14(%rsp),%r13d
add    %eax,%r13d
mov    0x58(%rsp),%r15
lea    (%rcx,%r15,1),%edx
cmpl   $0x1,0x28(%rsp)
mov    %r13d,0x14(%rsp)
jne    1804 <dist_2v_allt_v4+0x6a4>
cmp    0x138(%rsp),%edx
jle    1845 <dist_2v_allt_v4+0x6e5>
addl   $0xffffffff,0x10(%rsp)
lea    0x91e(%rip),%rdi
call   1050 <puts@plt>
xor    %eax,%eax
mov    %rax,0x28(%rsp)
lea    0x8cd(%rip),%rdi
mov    0xc(%rsp),%ebx
mov    %ebx,%esi
mov    0x110(%rsp),%ebp
mov    %ebp,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x8d2(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x8d5(%rip),%rdi
mov    0x18(%rsp),%rsi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x8da(%rip),%rdi
call   1050 <puts@plt>
mov    %ebx,%ecx
mov    %rbp,%r8
mov    %ebx,%ebp
mov    %r15,%rax
mov    %ebx,%r15d
mov    %eax,0x4c(%rsp)
mov    0x40(%rsp),%rdi
mov    0x168(%rsp),%rsi
mov    0x160(%rsp),%r13
mov    0x50(%rsp),%r9
jmp    1836 <dist_2v_allt_v4+0x6d6>
mov    0xc(%rsp),%ecx
mov    %ecx,%ebp
mov    %ecx,%r15d
mov    %edx,%eax
mov    %rax,0x58(%rsp)
mov    0x50(%rsp),%r9
mov    0x40(%rsp),%rdi
mov    0x110(%rsp),%r8d
mov    0x168(%rsp),%rsi
mov    0x160(%rsp),%r13
mov    0x20(%rsp),%r10
mov    0x38(%rsp),%r11
jmp    1930 <dist_2v_allt_v4+0x7d0>
mov    $0x1,%eax
mov    %rax,0x28(%rsp)
mov    0x18(%rsp),%r13
test   %r13d,%r13d
jle    18ed <dist_2v_allt_v4+0x78d>
movslq %r15d,%rax
mov    0x70(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
xor    %eax,%eax
mov    0x40(%rsp),%rdi
mov    0x110(%rsp),%r8d
mov    0x20(%rsp),%r10
mov    0x38(%rsp),%r11
mov    0xc(%rsp),%r9d
nopw   0x0(%rax,%rax,1)
mov    (%rcx,%rax,8),%rdx
mov    %r9d,0x4(%rdx)
mov    0x8(%rbx,%rax,8),%rsi
mov    0x4(%rsi),%ebp
mov    %ebp,0x8(%rdx)
mov    0x8(%rsi),%ebp
mov    %ebp,0xc(%rdx)
mov    0xc(%rsi),%ebp
mov    %ebp,0x10(%rdx)
mov    0x10(%rsi),%ebp
mov    %ebp,0x14(%rdx)
mov    0x14(%rsi),%ebp
mov    %ebp,0x18(%rdx)
mov    0x18(%rsi),%esi
mov    %esi,0x1c(%rdx)
add    $0x1,%rax
cmp    %rax,%r13
jne    1890 <dist_2v_allt_v4+0x730>
add    %eax,%r15d
mov    %r15,0x58(%rsp)
mov    %r9d,%ebp
mov    %r9d,%r15d
mov    0x168(%rsp),%rsi
mov    0x160(%rsp),%r13
mov    %r9d,%ecx
jmp    191d <dist_2v_allt_v4+0x7bd>
mov    0xc(%rsp),%ecx
mov    %ecx,%ebp
mov    %ecx,%r15d
mov    0x40(%rsp),%rdi
mov    0x110(%rsp),%r8d
mov    0x168(%rsp),%rsi
mov    0x160(%rsp),%r13
mov    0x20(%rsp),%r10
mov    0x38(%rsp),%r11
mov    0x50(%rsp),%r9
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x14(%rsp),%eax
cmp    0x6c(%rsp),%eax
jg     1943 <dist_2v_allt_v4+0x7e3>
cmp    %r8d,%ecx
jl     1270 <dist_2v_allt_v4+0x110>
mov    0x58(%rsp),%rax
mov    0xf8(%rsp),%rdx
mov    %eax,(%rdx)
mov    0x14(%rsp),%ecx
mov    %ecx,0x4(%rdx)
mov    0x10(%rsp),%ecx
mov    %ecx,0x8(%rdx)
test   %ecx,%ecx
jns    197f <dist_2v_allt_v4+0x81f>
mov    0x4c(%rsp),%ecx
test   %ecx,%ecx
cmovg  %ecx,%eax
jmp    197f <dist_2v_allt_v4+0x81f>
movq   $0x0,(%rdx)
movl   $0x0,0x8(%rdx)
xor    %eax,%eax
mov    %eax,0xc(%rdx)
add    $0xa8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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