void dist_4v_allt_from_m1234_v2(
    int *m1_t, int *m2_t, int *m3_t, int *m4_t, int *m1_p, int *m2_p, int *m3_p,
    int *m4_p, char *m1_s, char *m2_s, char *m3_s, char *m4_s, int n1, int n2,
    int n3, int n4, int **ovdi, int *n, int min_dist, int max_dist,
    int n_transcripts, int *ml, int get_positions, int order_constraint,
    int max_n_transcripts, int max_n_ovdi, int pos_format,
    int **ovdi_single_transcript6, int **temp_ovdi6,
    int **ovdi_single_transcript9, int **temp_ovdi9, int **all_ovdi6,
    int **ovdi_single_transcript12, int **temp_ovdi12, int *m1p, char *m1s,
    int *m2p, char *m2s, int *m3p, char *m3s, int *m4p, char *m4s, int *m12_p,
    char *m12_s, int *m123_p, char *m123_s, int verbose) {
  int **ovdi12;
  int **ovdi123;
  int max_n_ovdi12 = 500000;
  int max_n_ovdi123 = 100000;
  int nout12[4];
  int nout123[4];
  int nout1234[4];
  int n12;
  int n123;
  int get_positions12 = 1;
  int max_n_transcripts12 = -1;
  int max_n_transcripts123 = -1;
  int errorcode = 0;
  int i, j;
  ovdi12 = imatrix(1, max_n_ovdi12, 1, 7);
  ovdi123 = imatrix(1, max_n_ovdi123, 1, 10);
  if (verbose) {
    printf("dist_4v_allt_from_m1234_v2\tmax_dist=%d\tmin_dist=%d\tmax_n_"
           "transcripts=%d\n",
           max_dist, min_dist, max_n_transcripts);
    printf("motif 1 (%d): ", n1);
    for (i = 1; i <= n1; i++)
      printf("%d %d %d,", m1_t[i], m1_p[i], m1_s[i]);
    printf("\n");
    printf("motif 2 (%d): ", n2);
    for (i = 1; i <= n2; i++)
      printf("%d % d %d,", m2_t[i], m2_p[i], m2_s[i]);
    printf("\n");
  }
  dist_2v_allt_v4(m1_t, m2_t, m1_p, m2_p, m1_s, m2_s, n1, n2, ovdi12, nout12,
                  min_dist, max_dist, n_transcripts, ml, get_positions12,
                  order_constraint, max_n_transcripts12, max_n_ovdi12,
                  pos_format, ovdi_single_transcript6, temp_ovdi6, m1p, m1s,
                  m2p, m2s, 0);
  errorcode += nout12[2];
  if (nout12[2] < 0) {
    n12 = nout12[3];
  } else {
    n12 = nout12[0];
  }
  if (verbose) {
    printf("ovdi12 (%d)\n", n12);
    for (i = 1; i <= n12; i++)
      printf("%d %d %d %d %d\n", ovdi12[i][1], ovdi12[i][2], ovdi12[i][3],
             ovdi12[i][6], ovdi12[i][7]);
    printf("motif 3 (%d): ", n3);
    for (i = 1; i <= n3; i++)
      printf("%d % d %d,", m3_t[i], m3_p[i], m3_s[i]);
    printf("\n");
  }
  dist_3v_allt_v4(ovdi12, m3_t, m3_p, m3_s, n12, n3, ovdi123, nout123, min_dist,
                  max_dist, n_transcripts, ml, get_positions, order_constraint,
                  max_n_transcripts123, max_n_ovdi123, pos_format,
                  ovdi_single_transcript9, temp_ovdi9, ovdi_single_transcript6,
                  temp_ovdi6, all_ovdi6, m3p, m3s, m12_p, m12_s, 0);
  errorcode += nout123[2];
  if (nout123[2] < 0) {
    n123 = nout123[3];
    if (verbose)
      printf("ERROR!\tcooc_single_lib.c\tdist_4v_allt_from_m1234_v1\tdist_3v_"
             "allt_v3\tnout123[2]=%d\tn123=%d\n",
             nout123[2], n123);
  } else {
    n123 = nout123[0];
  }
  if (verbose) {
    printf("ovdi123 (%d)\n", n123);
    for (i = 1; i <= n123; i++)
      printf("%d %d %d %d %d %d %d\n", ovdi123[i][1], ovdi123[i][2],
             ovdi123[i][3], ovdi123[i][4], ovdi123[i][8], ovdi123[i][9],
             ovdi123[i][10]);
    printf("motif 4 (%d): ", n4);
    for (i = 1; i <= n4; i++)
      printf("%d % d %d,", m4_t[i], m4_p[i], m4_s[i]);
    printf("\n");
  }
  dist_4v_allt_v4(ovdi123, m4_t, m4_p, m4_s, n123, n4, ovdi, nout1234, min_dist,
                  max_dist, n_transcripts, ml, get_positions, order_constraint,
                  max_n_transcripts, max_n_ovdi, pos_format,
                  ovdi_single_transcript12, temp_ovdi12,
                  ovdi_single_transcript9, ovdi_single_transcript6, temp_ovdi6,
                  m4p, m4s, m123_p, m123_s, 0);
  n[0] = nout1234[0];
  n[1] = nout1234[1];
  errorcode += nout1234[2];
  n[2] = errorcode;
  n[3] = nout1234[3];
  if (verbose) {
    printf("ovdi1234 (%d)\n", n[0]);
    for (i = 1; i <= n[0]; i++)
      printf("%d %d %d %d %d %d %d %d %d\n", ovdi[i][1], ovdi[i][2], ovdi[i][3],
             ovdi[i][4], ovdi[i][5], ovdi[i][10], ovdi[i][11], ovdi[i][12],
             ovdi[i][13], ovdi[i][14]);
  }
  free_imatrix(ovdi12, 1, max_n_ovdi12, 1, 7);
  free_imatrix(ovdi123, 1, max_n_ovdi123, 1, 10);
}


x86 assembly (clang, -O0):
<dist_4v_allt_from_m1234_v2>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x228,%rsp
mov    0x150(%rbp),%eax
mov    0x148(%rbp),%rax
mov    0x140(%rbp),%rax
mov    0x138(%rbp),%rax
mov    0x130(%rbp),%rax
mov    0x128(%rbp),%rax
mov    0x120(%rbp),%rax
mov    0x118(%rbp),%rax
mov    0x110(%rbp),%rax
mov    0x108(%rbp),%rax
mov    0x100(%rbp),%rax
mov    0xf8(%rbp),%rax
mov    0xf0(%rbp),%rax
mov    0xe8(%rbp),%rax
mov    0xe0(%rbp),%rax
mov    0xd8(%rbp),%rax
mov    0xd0(%rbp),%rax
mov    0xc8(%rbp),%rax
mov    0xc0(%rbp),%rax
mov    0xb8(%rbp),%rax
mov    0xb0(%rbp),%eax
mov    0xa8(%rbp),%eax
mov    0xa0(%rbp),%eax
mov    0x98(%rbp),%eax
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%eax
mov    0x78(%rbp),%eax
mov    0x70(%rbp),%eax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
movl   $0x7a120,-0x6c(%rbp)
movl   $0x186a0,-0x70(%rbp)
movl   $0x1,-0xac(%rbp)
movl   $0xffffffff,-0xb0(%rbp)
ff ff ff
movl   $0xffffffff,-0xb4(%rbp)
ff ff ff
movl   $0x0,-0xb8(%rbp)
mov    -0x6c(%rbp),%esi
mov    $0x1,%edx
mov    $0x7,%ecx
mov    %edx,%edi
mov    $0x0,%al
call   1040 <imatrix@plt>
cltq
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%esi
mov    $0x1,%edx
mov    $0xa,%ecx
mov    %edx,%edi
mov    $0x0,%al
call   1040 <imatrix@plt>
cltq
mov    %rax,-0x68(%rbp)
cmpl   $0x0,0x150(%rbp)
je     1413 <dist_4v_allt_from_m1234_v2+0x2b3>
mov    0x78(%rbp),%esi
mov    0x70(%rbp),%edx
mov    0xa0(%rbp),%ecx
lea    0xcfe(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    0x40(%rbp),%esi
lea    0xd36(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    0x40(%rbp),%eax
jg     1380 <dist_4v_allt_from_m1234_v2+0x220>
mov    -0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    -0x50(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
lea    0xcf3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1324 <dist_4v_allt_from_m1234_v2+0x1c4>
lea    0xd00(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    0x48(%rbp),%esi
lea    0xcca(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    0x48(%rbp),%eax
jg     1405 <dist_4v_allt_from_m1234_v2+0x2a5>
mov    -0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    -0x58(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x28(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
lea    0xc87(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    13a9 <dist_4v_allt_from_m1234_v2+0x249>
lea    0xc7b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
mov    -0x50(%rbp),%rdx
mov    -0x58(%rbp),%rcx
mov    0x20(%rbp),%r8
mov    0x28(%rbp),%r9
mov    0x40(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    0x48(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x100(%rbp)
lea    -0x80(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    0x70(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    0x78(%rbp),%eax
mov    %eax,-0xe8(%rbp)
mov    0x80(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    0x88(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xac(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    0x98(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0x6c(%rbp),%r13d
mov    0xb0(%rbp),%r12d
mov    0xb8(%rbp),%r15
mov    0xc0(%rbp),%r14
mov    0xf0(%rbp),%rbx
mov    0xf8(%rbp),%r11
mov    0x100(%rbp),%r10
mov    0x108(%rbp),%rax
mov    %rax,-0xc8(%rbp)
xor    %eax,%eax
mov    -0x108(%rbp),%eax
mov    %eax,(%rsp)
mov    -0x104(%rbp),%eax
mov    %eax,0x8(%rsp)
mov    -0x100(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0xf8(%rbp),%rax
mov    %rax,0x18(%rsp)
mov    -0xec(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0xe8(%rbp),%eax
mov    %eax,0x28(%rsp)
mov    -0xe4(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0xe0(%rbp),%rax
mov    %rax,0x38(%rsp)
mov    -0xd4(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0xd0(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0xcc(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0xc8(%rbp),%rax
mov    %r13d,0x58(%rsp)
mov    %r12d,0x60(%rsp)
mov    %r15,0x68(%rsp)
mov    %r14,0x70(%rsp)
mov    %rbx,0x78(%rsp)
mov    %r11,0x80(%rsp)
mov    %r10,0x88(%rsp)
mov    %rax,0x90(%rsp)
movl   $0x0,0x98(%rsp)
mov    $0x0,%al
call   1050 <dist_2v_allt_v4@plt>
mov    -0x78(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
cmpl   $0x0,-0x78(%rbp)
jge    15c5 <dist_4v_allt_from_m1234_v2+0x465>
mov    -0x74(%rbp),%eax
mov    %eax,-0xa4(%rbp)
jmp    15ce <dist_4v_allt_from_m1234_v2+0x46e>
mov    -0x80(%rbp),%eax
mov    %eax,-0xa4(%rbp)
cmpl   $0x0,0x150(%rbp)
je     170e <dist_4v_allt_from_m1234_v2+0x5ae>
mov    -0xa4(%rbp),%esi
lea    0xa94(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0xa4(%rbp),%eax
jg     1689 <dist_4v_allt_from_m1234_v2+0x529>
mov    -0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%esi
mov    -0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%edx
mov    -0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    -0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x18(%rax),%r8d
mov    -0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x1c(%rax),%r9d
lea    0xabd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    15f9 <dist_4v_allt_from_m1234_v2+0x499>
mov    0x50(%rbp),%esi
lea    0x9f6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    0x50(%rbp),%eax
jg     1700 <dist_4v_allt_from_m1234_v2+0x5a0>
mov    -0x40(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    0x10(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x30(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
lea    0x98c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    16a4 <dist_4v_allt_from_m1234_v2+0x544>
lea    0x980(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x60(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x30(%rbp),%rcx
mov    -0xa4(%rbp),%r8d
mov    0x50(%rbp),%r9d
mov    -0x68(%rbp),%rax
mov    %rax,-0x158(%rbp)
lea    -0x90(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    0x70(%rbp),%eax
mov    %eax,-0x144(%rbp)
mov    0x78(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    0x80(%rbp),%eax
mov    %eax,-0x13c(%rbp)
mov    0x88(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    0x90(%rbp),%eax
mov    %eax,-0x12c(%rbp)
mov    0x98(%rbp),%eax
mov    %eax,-0x128(%rbp)
mov    -0xb4(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    0xb0(%rbp),%eax
mov    %eax,-0x11c(%rbp)
mov    0xc8(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    0xd0(%rbp),%r13
mov    0xb8(%rbp),%r12
mov    0xc0(%rbp),%r15
mov    0xd8(%rbp),%r14
mov    0x110(%rbp),%rbx
mov    0x118(%rbp),%r11
mov    0x130(%rbp),%r10
mov    0x138(%rbp),%rax
mov    %rax,-0x110(%rbp)
xor    %eax,%eax
mov    -0x158(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x150(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x144(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x140(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x13c(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0x138(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0x12c(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0x128(%rbp),%eax
mov    %eax,0x38(%rsp)
mov    -0x124(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0x120(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0x11c(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0x118(%rbp),%rax
mov    %rax,0x58(%rsp)
mov    -0x110(%rbp),%rax
mov    %r13,0x60(%rsp)
mov    %r12,0x68(%rsp)
mov    %r15,0x70(%rsp)
mov    %r14,0x78(%rsp)
mov    %rbx,0x80(%rsp)
mov    %r11,0x88(%rsp)
mov    %r10,0x90(%rsp)
mov    %rax,0x98(%rsp)
movl   $0x0,0xa0(%rsp)
mov    $0x0,%al
call   1030 <dist_3v_allt_v4@plt>
mov    -0x88(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
cmpl   $0x0,-0x88(%rbp)
jge    1919 <dist_4v_allt_from_m1234_v2+0x7b9>
mov    -0x84(%rbp),%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,0x150(%rbp)
je     1914 <dist_4v_allt_from_m1234_v2+0x7b4>
mov    -0x88(%rbp),%esi
mov    -0xa8(%rbp),%edx
lea    0x78b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1925 <dist_4v_allt_from_m1234_v2+0x7c5>
mov    -0x90(%rbp),%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,0x150(%rbp)
je     1a92 <dist_4v_allt_from_m1234_v2+0x932>
mov    -0xa8(%rbp),%esi
lea    0x7b4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0xa8(%rbp),%eax
jg     1a0d <dist_4v_allt_from_m1234_v2+0x8ad>
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%esi
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%edx
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x10(%rax),%r8d
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x20(%rax),%r9d
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x24(%rax),%r10d
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x28(%rax),%eax
lea    0x73b(%rip),%rdi
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1950 <dist_4v_allt_from_m1234_v2+0x7f0>
mov    0x58(%rbp),%esi
lea    0x6ea(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    0x58(%rbp),%eax
jg     1a84 <dist_4v_allt_from_m1234_v2+0x924>
mov    -0x48(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    0x38(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
lea    0x608(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1a28 <dist_4v_allt_from_m1234_v2+0x8c8>
lea    0x5fc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x68(%rbp),%rdi
mov    -0x48(%rbp),%rsi
mov    0x18(%rbp),%rdx
mov    0x38(%rbp),%rcx
mov    -0xa8(%rbp),%r8d
mov    0x58(%rbp),%r9d
mov    0x60(%rbp),%rax
mov    %rax,-0x1a8(%rbp)
lea    -0xa0(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
mov    0x70(%rbp),%eax
mov    %eax,-0x194(%rbp)
mov    0x78(%rbp),%eax
mov    %eax,-0x190(%rbp)
mov    0x80(%rbp),%eax
mov    %eax,-0x18c(%rbp)
mov    0x88(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    0x90(%rbp),%eax
mov    %eax,-0x17c(%rbp)
mov    0x98(%rbp),%eax
mov    %eax,-0x178(%rbp)
mov    0xa0(%rbp),%eax
mov    %eax,-0x174(%rbp)
mov    0xa8(%rbp),%eax
mov    %eax,-0x170(%rbp)
mov    0xb0(%rbp),%eax
mov    %eax,-0x16c(%rbp)
mov    0xe0(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    0xe8(%rbp),%r13
mov    0xc8(%rbp),%r12
mov    0xb8(%rbp),%r15
mov    0xc0(%rbp),%r14
mov    0x120(%rbp),%rbx
mov    0x128(%rbp),%r11
mov    0x140(%rbp),%r10
mov    0x148(%rbp),%rax
mov    %rax,-0x160(%rbp)
xor    %eax,%eax
mov    -0x1a8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x1a0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x194(%rbp),%eax
mov    %eax,0x10(%rsp)
mov    -0x190(%rbp),%eax
mov    %eax,0x18(%rsp)
mov    -0x18c(%rbp),%eax
mov    %eax,0x20(%rsp)
mov    -0x188(%rbp),%rax
mov    %rax,0x28(%rsp)
mov    -0x17c(%rbp),%eax
mov    %eax,0x30(%rsp)
mov    -0x178(%rbp),%eax
mov    %eax,0x38(%rsp)
mov    -0x174(%rbp),%eax
mov    %eax,0x40(%rsp)
mov    -0x170(%rbp),%eax
mov    %eax,0x48(%rsp)
mov    -0x16c(%rbp),%eax
mov    %eax,0x50(%rsp)
mov    -0x168(%rbp),%rax
mov    %rax,0x58(%rsp)
mov    -0x160(%rbp),%rax
mov    %r13,0x60(%rsp)
mov    %r12,0x68(%rsp)
mov    %r15,0x70(%rsp)
mov    %r14,0x78(%rsp)
mov    %rbx,0x80(%rsp)
mov    %r11,0x88(%rsp)
mov    %r10,0x90(%rsp)
mov    %rax,0x98(%rsp)
movl   $0x0,0xa0(%rsp)
mov    $0x0,%al
call   1080 <dist_4v_allt_v4@plt>
mov    -0xa0(%rbp),%ecx
mov    0x68(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x9c(%rbp),%ecx
mov    0x68(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x98(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%ecx
mov    0x68(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x94(%rbp),%ecx
mov    0x68(%rbp),%rax
mov    %ecx,0xc(%rax)
cmpl   $0x0,0x150(%rbp)
je     1dc1 <dist_4v_allt_from_m1234_v2+0xc61>
mov    0x68(%rbp),%rax
mov    (%rax),%esi
lea    0x468(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
mov    0x68(%rbp),%rcx
cmp    (%rcx),%eax
jg     1dbc <dist_4v_allt_from_m1234_v2+0xc5c>
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%esi
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%edx
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%ecx
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x10(%rax),%r8d
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x14(%rax),%r9d
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x28(%rax),%r14d
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x2c(%rax),%ebx
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x30(%rax),%r11d
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x34(%rax),%r10d
mov    0x60(%rbp),%rax
movslq -0xbc(%rbp),%rdi
mov    (%rax,%rdi,8),%rax
mov    0x38(%rax),%eax
lea    0x394(%rip),%rdi
mov    %r14d,(%rsp)
mov    %ebx,0x8(%rsp)
mov    %r11d,0x10(%rsp)
mov    %r10d,0x18(%rsp)
mov    %eax,0x20(%rsp)
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1cb9 <dist_4v_allt_from_m1234_v2+0xb59>
jmp    1dc1 <dist_4v_allt_from_m1234_v2+0xc61>
mov    -0x60(%rbp),%rdi
mov    -0x6c(%rbp),%edx
mov    $0x1,%ecx
mov    $0x7,%r8d
mov    %ecx,%esi
mov    $0x0,%al
call   1070 <free_imatrix@plt>
mov    -0x68(%rbp),%rdi
mov    -0x70(%rbp),%edx
mov    $0x1,%ecx
mov    $0xa,%r8d
mov    %ecx,%esi
mov    $0x0,%al
call   1070 <free_imatrix@plt>
add    $0x228,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_4v_allt_from_m1234_v2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r9,0x8(%rsp)
mov    %r8,0x20(%rsp)
mov    %rcx,0x38(%rsp)
mov    %rdx,0x10(%rsp)
mov    %rsi,%rbp
mov    %rdi,%r13
mov    0x1b0(%rsp),%r14
mov    0x1a0(%rsp),%r15
mov    0x128(%rsp),%ebx
mov    0x120(%rsp),%r12d
mov    $0x1,%edi
mov    $0x7a120,%esi
mov    $0x1,%edx
mov    $0x7,%ecx
xor    %eax,%eax
call   1050 <imatrix@plt>
cltq
mov    %rax,0x28(%rsp)
mov    $0x1,%edi
mov    $0x186a0,%esi
mov    $0x1,%edx
mov    $0xa,%ecx
xor    %eax,%eax
call   1050 <imatrix@plt>
cmpl   $0x0,0x200(%rsp)
je     1346 <dist_4v_allt_from_m1234_v2+0x1d6>
mov    %eax,0x34(%rsp)
mov    %rbp,0x18(%rsp)
lea    0xdeb(%rip),%rdi
mov    %ebx,%esi
mov    %r12d,%edx
mov    0x150(%rsp),%ecx
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xe1a(%rip),%rdi
mov    0xf0(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
test   %ebx,%ebx
mov    0x20(%rsp),%rbx
mov    0xd0(%rsp),%r14
jle    1290 <dist_4v_allt_from_m1234_v2+0x120>
mov    0xf0(%rsp),%eax
lea    0x1(%rax),%r12d
mov    $0x1,%ebp
lea    0xdf1(%rip),%r15
nopw   0x0(%rax,%rax,1)
mov    0x0(%r13,%rbp,4),%esi
mov    (%rbx,%rbp,4),%edx
movsbl (%r14,%rbp,1),%ecx
mov    %r15,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,%r12
jne    1270 <dist_4v_allt_from_m1234_v2+0x100>
mov    %r13,0x68(%rsp)
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xdbc(%rip),%rdi
mov    0xf8(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
test   %ebx,%ebx
mov    0x8(%rsp),%r15
mov    0xd8(%rsp),%r14
mov    0x18(%rsp),%r13
jle    1311 <dist_4v_allt_from_m1234_v2+0x1a1>
mov    0xf8(%rsp),%eax
lea    0x1(%rax),%ebp
mov    $0x1,%ebx
lea    0xd8f(%rip),%r12
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x0(%r13,%rbx,4),%esi
mov    (%r15,%rbx,4),%edx
movsbl (%r14,%rbx,1),%ecx
mov    %r12,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbx
cmp    %rbx,%rbp
jne    12f0 <dist_4v_allt_from_m1234_v2+0x180>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x120(%rsp),%r12d
mov    0x128(%rsp),%ebx
mov    0x1a0(%rsp),%r15
mov    0x1b0(%rsp),%r14
mov    %r13,%rbp
mov    0x68(%rsp),%r13
mov    0x34(%rsp),%eax
cltq
mov    %rax,0x18(%rsp)
lea    0x70(%rsp),%r10
mov    %r13,%rdi
mov    %rbp,%rsi
mov    0x20(%rsp),%rdx
mov    0x8(%rsp),%rcx
mov    0xd0(%rsp),%r8
mov    0xd8(%rsp),%r9
xor    %eax,%eax
push   $0x0
push   0x1c0(%rsp)
push   %r14
push   0x1c0(%rsp)
push   %r15
push   0x198(%rsp)
push   0x198(%rsp)
mov    0x198(%rsp),%ebp
push   %rbp
push   $0x7a120
push   $0xffffffffffffffff
mov    0x198(%rsp),%ebp
push   %rbp
push   $0x1
push   0x198(%rsp)
mov    0x198(%rsp),%ebp
push   %rbp
push   %rbx
push   %r12
push   %r10
mov    %r10,%rbx
mov    0xb0(%rsp),%r13
push   %r13
mov    0x188(%rsp),%ebp
push   %rbp
mov    0x188(%rsp),%ebp
push   %rbp
call   1060 <dist_2v_allt_v4@plt>
add    $0xa0,%rsp
mov    0x78(%rsp),%r15d
test   %r15d,%r15d
lea    0x7c(%rsp),%rax
cmovns %rbx,%rax
mov    (%rax),%r12d
cmpl   $0x0,0x200(%rsp)
je     14fa <dist_4v_allt_from_m1234_v2+0x38a>
mov    %r15d,0x8(%rsp)
lea    0xc62(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
test   %r12d,%r12d
jle    1469 <dist_4v_allt_from_m1234_v2+0x2f9>
lea    0x1(%r12),%ebx
mov    $0x1,%ebp
lea    0xcf1(%rip),%r14
nopw   0x0(%rax,%rax,1)
mov    0x0(%r13,%rbp,8),%rax
mov    0x4(%rax),%esi
mov    0x8(%rax),%edx
mov    0xc(%rax),%ecx
mov    0x18(%rax),%r8d
mov    0x1c(%rax),%r9d
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1440 <dist_4v_allt_from_m1234_v2+0x2d0>
mov    %r12,0x20(%rsp)
lea    0xc14(%rip),%rdi
mov    0x100(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
test   %ebx,%ebx
mov    0x10(%rsp),%r12
mov    0xe0(%rsp),%r15
mov    0xc0(%rsp),%r13
jle    14e1 <dist_4v_allt_from_m1234_v2+0x371>
mov    0x100(%rsp),%eax
lea    0x1(%rax),%ebx
mov    $0x1,%ebp
lea    0xbbd(%rip),%r14
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%r12,%rbp,4),%esi
mov    0x0(%r13,%rbp,4),%edx
movsbl (%r15,%rbp,1),%ecx
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    14c0 <dist_4v_allt_from_m1234_v2+0x350>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x8(%rsp),%r15d
mov    0x28(%rsp),%r13
mov    0x20(%rsp),%r12
mov    0xc8(%rsp),%r14
sub    $0x8,%rsp
lea    0x58(%rsp),%r10
mov    %r13,%rdi
mov    0x18(%rsp),%rsi
mov    0xc8(%rsp),%rdx
mov    0xe8(%rsp),%rcx
mov    %r12d,%r8d
mov    0x108(%rsp),%r9d
xor    %eax,%eax
push   $0x0
push   0x1f8(%rsp)
push   0x1f8(%rsp)
push   0x1e8(%rsp)
push   0x1e8(%rsp)
push   0x1b8(%rsp)
push   0x1a8(%rsp)
push   0x1a8(%rsp)
push   0x1c8(%rsp)
push   0x1c8(%rsp)
mov    0x1b8(%rsp),%ebp
push   %rbp
push   $0x186a0
push   $0xffffffffffffffff
mov    0x1b8(%rsp),%ebp
push   %rbp
mov    0x1b8(%rsp),%ebp
push   %rbp
push   0x1b8(%rsp)
mov    0x1b8(%rsp),%ebp
push   %rbp
mov    0x1b8(%rsp),%ebp
push   %rbp
mov    0x1b8(%rsp),%ebx
mov    %rbx,%r12
push   %rbx
push   %r10
mov    0xc0(%rsp),%rbx
push   %rbx
call   1040 <dist_3v_allt_v4@plt>
add    $0xb0,%rsp
mov    0x58(%rsp),%esi
add    %esi,%r15d
test   %esi,%esi
js     15e8 <dist_4v_allt_from_m1234_v2+0x478>
mov    0x50(%rsp),%r8d
cmpl   $0x0,0x200(%rsp)
jne    1612 <dist_4v_allt_from_m1234_v2+0x4a2>
jmp    1720 <dist_4v_allt_from_m1234_v2+0x5b0>
mov    0x5c(%rsp),%r8d
cmpl   $0x0,0x200(%rsp)
je     1720 <dist_4v_allt_from_m1234_v2+0x5b0>
lea    0xa96(%rip),%rdi
mov    %r8d,%edx
xor    %eax,%eax
mov    %r8,%rbp
call   1070 <printf@plt>
mov    %rbp,%r8
mov    %r15d,0x8(%rsp)
lea    0xad5(%rip),%rdi
mov    %r8d,%esi
xor    %eax,%eax
mov    %r8,%rbp
call   1070 <printf@plt>
mov    %rbp,0x10(%rsp)
test   %ebp,%ebp
jle    1686 <dist_4v_allt_from_m1234_v2+0x516>
mov    %rbx,%r15
mov    0x10(%rsp),%rax
lea    0x1(%rax),%r12d
mov    $0x1,%ebx
lea    0xad9(%rip),%r13
nopl   0x0(%rax)
mov    (%r15,%rbx,8),%rax
mov    0x4(%rax),%esi
mov    0x8(%rax),%edx
mov    0xc(%rax),%ecx
mov    0x10(%rax),%r8d
mov    0x20(%rax),%r9d
mov    0x24(%rax),%r10d
mov    0x28(%rax),%ebp
mov    %r13,%rdi
xor    %eax,%eax
push   %rbp
push   %r10
call   1070 <printf@plt>
add    $0x10,%rsp
add    $0x1,%rbx
cmp    %rbx,%r12
jne    1650 <dist_4v_allt_from_m1234_v2+0x4e0>
lea    0xa74(%rip),%rdi
mov    0x108(%rsp),%ebx
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
test   %ebx,%ebx
mov    0x38(%rsp),%r13
mov    0xe8(%rsp),%r15
jle    16f1 <dist_4v_allt_from_m1234_v2+0x581>
mov    0x108(%rsp),%eax
lea    0x1(%rax),%ebx
mov    $0x1,%ebp
lea    0x9ad(%rip),%r12
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x0(%r13,%rbp,4),%esi
mov    (%r14,%rbp,4),%edx
movsbl (%r15,%rbp,1),%ecx
mov    %r12,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    16d0 <dist_4v_allt_from_m1234_v2+0x560>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x28(%rsp),%r13
mov    0x120(%rsp),%ebx
mov    %rbx,%r12
mov    0x128(%rsp),%ebp
mov    0x18(%rsp),%rbx
mov    0x8(%rsp),%r15d
mov    0x10(%rsp),%r8
sub    $0x8,%rsp
lea    0x48(%rsp),%r10
mov    %rbx,%rdi
mov    0x40(%rsp),%rsi
mov    %r14,%rdx
mov    0xf0(%rsp),%rcx
mov    0x110(%rsp),%r9d
xor    %eax,%eax
push   $0x0
push   0x208(%rsp)
push   0x208(%rsp)
push   0x1f8(%rsp)
push   0x1f8(%rsp)
push   0x1a0(%rsp)
push   0x1a0(%rsp)
push   0x1b8(%rsp)
push   0x1e0(%rsp)
push   0x1e0(%rsp)
mov    0x1b8(%rsp),%ebx
push   %rbx
mov    0x1b8(%rsp),%ebx
push   %rbx
mov    0x1b8(%rsp),%ebx
push   %rbx
mov    0x1b8(%rsp),%ebx
push   %rbx
mov    0x1b8(%rsp),%ebx
push   %rbx
push   0x1b8(%rsp)
mov    0x1b8(%rsp),%ebx
push   %rbx
push   %rbp
push   %r12
push   %r10
mov    0x1b8(%rsp),%r12
push   %r12
call   1090 <dist_4v_allt_v4@plt>
add    $0xb0,%rsp
mov    0x40(%rsp),%esi
mov    0x118(%rsp),%rbx
mov    %esi,(%rbx)
mov    0x44(%rsp),%eax
mov    %eax,0x4(%rbx)
add    0x48(%rsp),%r15d
mov    %r15d,0x8(%rbx)
mov    0x4c(%rsp),%eax
mov    %eax,0xc(%rbx)
cmpl   $0x0,0x200(%rsp)
je     1890 <dist_4v_allt_from_m1234_v2+0x720>
lea    0x8fd(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
cmpl   $0x0,(%rbx)
jle    1890 <dist_4v_allt_from_m1234_v2+0x720>
lea    0x8f9(%rip),%r14
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
mov    0x8(%r12,%rbp,8),%rax
mov    0x4(%rax),%esi
mov    0x8(%rax),%edx
mov    0xc(%rax),%ecx
mov    0x10(%rax),%r8d
mov    0x14(%rax),%r9d
mov    0x28(%rax),%r10d
mov    0x2c(%rax),%r11d
mov    0x30(%rax),%r15d
mov    0x34(%rax),%r12d
mov    0x38(%rax),%ebx
sub    $0x8,%rsp
mov    %r14,%rdi
xor    %eax,%eax
push   %rbx
push   %r12
mov    0x128(%rsp),%r12
push   %r15
push   %r11
push   %r10
call   1070 <printf@plt>
add    $0x30,%rsp
mov    0x118(%rsp),%rax
movslq (%rax),%rax
add    $0x1,%rbp
cmp    %rax,%rbp
jl     1830 <dist_4v_allt_from_m1234_v2+0x6c0>
mov    %r13,%rdi
mov    $0x1,%esi
mov    $0x7a120,%edx
mov    $0x1,%ecx
mov    $0x7,%r8d
xor    %eax,%eax
call   1080 <free_imatrix@plt>
mov    0x18(%rsp),%rdi
mov    $0x1,%esi
mov    $0x186a0,%edx
mov    $0x1,%ecx
mov    $0xa,%r8d
xor    %eax,%eax
call   1080 <free_imatrix@plt>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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