#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ crm_4motifs(int *, int *, int *, int *, int, int, int, int,
                               int, int, int, int, int, int *, int **);
int /*<<< orphan*/ free_imatrix(int **, int, int, int, int);
int /*<<< orphan*/ free_ivector(int *, int, int);
int **imatrix(int, int, int, int);
int *ivector(int, int);
int /*<<< orphan*/ printf(char *, int);
void crm_4motifs_allt(int *m1_t, int *m2_t, int *m3_t, int *m4_t, int *m1_p,
                      int *m2_p, int *m3_p, int *m4_p, int n1, int n2, int n3,
                      int n4, int max_n_transcripts, int max_crm_positions,
                      int N, int dw, int bin_size, int n_transcripts,
                      int report_all, int *n, int **crm_positions) {
  int **crm_positions_transcript;
  int *m1p;
  int *m2p;
  int *m3p;
  int *m4p;
  int curr_n1, curr_n2, curr_n3, curr_n4;
  int curr_tr1, curr_tr2, curr_tr3, curr_tr4;
  int ec = 0;
  int errorcode = 0;
  int i;
  int i1, i2, i3, i4;
  int max_crm_positions_transcript = 1000;
  int max_transcript_occurrences = 1000;
  int n1234;
  int n1234_tr = 0;
  int n_crms;
  int n_crms_reported;
  int output[2];
  int running_entries = 0;
  int running_entries_reported;
  int transcript = 0;
  i1 = 1;
  curr_tr1 = m1_t[i1];
  i2 = 1;
  curr_tr2 = m2_t[i2];
  i3 = 1;
  curr_tr3 = m3_t[i3];
  i3 = 4;
  curr_tr4 = m4_t[i4];
  m1p = ivector(1, max_transcript_occurrences);
  m2p = ivector(1, max_transcript_occurrences);
  m3p = ivector(1, max_transcript_occurrences);
  m4p = ivector(1, max_transcript_occurrences);
  if (report_all == 1)
    crm_positions_transcript = imatrix(1, max_crm_positions_transcript, 1, 2);
  if (max_n_transcripts < 0)
    max_n_transcripts = n_transcripts + 1;
  while ((transcript < n_transcripts) & (n1234_tr <= max_n_transcripts)) {
    transcript++;
    while ((curr_tr1 < transcript) & (curr_tr1 >= 0) & (i1 < n1)) {
      i1++;
      curr_tr1 = m1_t[i1];
    }
    curr_n1 = 0;
    if (curr_tr1 == transcript) {
      while ((curr_tr1 == transcript) & (i1 <= n1)) {
        curr_n1++;
        m1p[curr_n1] = m1_p[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];
    }
    curr_n2 = 0;
    if (curr_tr2 == transcript) {
      while ((curr_tr2 == transcript) & (i2 <= n2)) {
        curr_n2++;
        m2p[curr_n2] = m2_p[i2];
        i2++;
        if (i2 <= n2)
          curr_tr2 = m2_t[i2];
      }
      i2--;
      curr_tr2 = transcript;
    }
    while ((curr_tr3 < transcript) & (curr_tr3 >= 0) & (i3 < n3)) {
      i3++;
      curr_tr3 = m3_t[i3];
    }
    curr_n3 = 0;
    if (curr_tr3 == transcript) {
      while ((curr_tr3 == transcript) & (i3 <= n3)) {
        curr_n3++;
        m3p[curr_n3] = m3_p[i3];
        i3++;
        if (i3 <= n3)
          curr_tr3 = m3_t[i3];
      }
      i3--;
      curr_tr3 = transcript;
    }
    while ((curr_tr4 < transcript) & (curr_tr4 >= 0) & (i4 < n4)) {
      i4++;
      curr_tr4 = m4_t[i4];
    }
    curr_n4 = 0;
    if (curr_tr4 == transcript) {
      while ((curr_tr4 == transcript) & (i4 <= n4)) {
        curr_n4++;
        m4p[curr_n4] = m4_p[i4];
        i4++;
        if (i4 <= n4)
          curr_tr4 = m4_t[i4];
      }
      i4--;
      curr_tr4 = transcript;
    }
    if ((curr_n1 + curr_n2 + curr_n3 + curr_n4) >= N) {
      crm_4motifs(m1p, m2p, m3p, m4p, curr_n1, curr_n2, curr_n3, curr_n4, N, dw,
                  max_crm_positions, bin_size, report_all, output,
                  crm_positions_transcript);
      n_crms = output[0];
      errorcode = output[1];
      n_crms_reported = n_crms - errorcode;
    } else {
      n_crms = 0;
      n_crms_reported = 0;
    }
    if (n_crms > 0)
      n1234_tr++;
    if (report_all == 1) {
      if ((running_entries + n_crms) > max_crm_positions) {
        ec--;
        running_entries_reported = running_entries;
        printf("running_entries=%d\n", running_entries);
        printf("running_entries_reported=%d\n", running_entries_reported);
      } else {
        for (i = 1; i <= n_crms_reported; i++) {
          running_entries++;
          crm_positions[running_entries][1] = transcript;
          crm_positions[running_entries][2] = crm_positions_transcript[i][1];
          crm_positions[running_entries][3] = crm_positions_transcript[i][2];
        }
      }
    }
  }
  n[0] = running_entries;
  n[1] = n1234_tr;
  n[2] = ec;
  if (errorcode < 0) {
    n[3] = running_entries_reported;
  } else {
    n[3] = running_entries;
  }
  free_ivector(m1p, 1, max_transcript_occurrences);
  free_ivector(m2p, 1, max_transcript_occurrences);
  free_ivector(m3p, 1, max_transcript_occurrences);
  free_ivector(m4p, 1, max_transcript_occurrences);
  if (report_all == 1)
    free_imatrix(crm_positions_transcript, 1, max_crm_positions_transcript, 1,
                 2);
}


x86 assembly (clang, -O0):
<crm_4motifs_allt>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x118,%rsp
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),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
movl   $0x0,-0xa4(%rbp)
movl   $0x0,-0xa8(%rbp)
movl   $0x3e8,-0xc0(%rbp)
movl   $0x3e8,-0xc4(%rbp)
movl   $0x0,-0xcc(%rbp)
movl   $0x0,-0xe0(%rbp)
movl   $0x0,-0xe8(%rbp)
movl   $0x1,-0xb0(%rbp)
mov    -0x30(%rbp),%rax
movslq -0xb0(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x94(%rbp)
movl   $0x1,-0xb4(%rbp)
mov    -0x38(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x98(%rbp)
movl   $0x1,-0xb8(%rbp)
mov    -0x40(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x9c(%rbp)
movl   $0x4,-0xb8(%rbp)
mov    -0x48(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xc4(%rbp),%esi
mov    $0x1,%edi
call   1080 <ivector@plt>
mov    %rax,-0x68(%rbp)
mov    -0xc4(%rbp),%esi
mov    $0x1,%edi
call   1080 <ivector@plt>
mov    %rax,-0x70(%rbp)
mov    -0xc4(%rbp),%esi
mov    $0x1,%edi
call   1080 <ivector@plt>
mov    %rax,-0x78(%rbp)
mov    -0xc4(%rbp),%esi
mov    $0x1,%edi
call   1080 <ivector@plt>
mov    %rax,-0x80(%rbp)
cmpl   $0x1,0x70(%rbp)
jne    12f3 <crm_4motifs_allt+0x193>
mov    -0xc0(%rbp),%esi
mov    $0x1,%edx
mov    $0x2,%ecx
mov    %edx,%edi
call   1030 <imatrix@plt>
mov    %rax,-0x60(%rbp)
cmpl   $0x0,0x40(%rbp)
jge    1306 <crm_4motifs_allt+0x1a6>
mov    0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,0x40(%rbp)
jmp    130b <crm_4motifs_allt+0x1ab>
mov    -0xe8(%rbp),%eax
cmp    0x68(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xcc(%rbp),%ecx
cmp    0x40(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1a6b <crm_4motifs_allt+0x90b>
mov    -0xe8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe8(%rbp)
mov    -0x94(%rbp),%eax
cmp    -0xe8(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x94(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0xb0(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13b3 <crm_4motifs_allt+0x253>
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
mov    -0x30(%rbp),%rax
movslq -0xb0(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x94(%rbp)
jmp    1348 <crm_4motifs_allt+0x1e8>
movl   $0x0,-0x84(%rbp)
mov    -0x94(%rbp),%eax
cmp    -0xe8(%rbp),%eax
jne    1482 <crm_4motifs_allt+0x322>
jmp    13d4 <crm_4motifs_allt+0x274>
mov    -0x94(%rbp),%eax
cmp    -0xe8(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xb0(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1467 <crm_4motifs_allt+0x307>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x50(%rbp),%rax
movslq -0xb0(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x68(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     1462 <crm_4motifs_allt+0x302>
mov    -0x30(%rbp),%rax
movslq -0xb0(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x94(%rbp)
jmp    13d4 <crm_4motifs_allt+0x274>
mov    -0xb0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0x94(%rbp)
jmp    1487 <crm_4motifs_allt+0x327>
mov    -0x98(%rbp),%eax
cmp    -0xe8(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x98(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0xb4(%rbp),%ecx
cmp    0x28(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14f2 <crm_4motifs_allt+0x392>
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
mov    -0x38(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x98(%rbp)
jmp    1487 <crm_4motifs_allt+0x327>
movl   $0x0,-0x88(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0xe8(%rbp),%eax
jne    15c1 <crm_4motifs_allt+0x461>
jmp    1513 <crm_4motifs_allt+0x3b3>
mov    -0x98(%rbp),%eax
cmp    -0xe8(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xb4(%rbp),%ecx
cmp    0x28(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     15a6 <crm_4motifs_allt+0x446>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x58(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x70(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    0x28(%rbp),%eax
jg     15a1 <crm_4motifs_allt+0x441>
mov    -0x38(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x98(%rbp)
jmp    1513 <crm_4motifs_allt+0x3b3>
mov    -0xb4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0x98(%rbp)
jmp    15c6 <crm_4motifs_allt+0x466>
mov    -0x9c(%rbp),%eax
cmp    -0xe8(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0x9c(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0xb8(%rbp),%ecx
cmp    0x30(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1631 <crm_4motifs_allt+0x4d1>
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
mov    -0x40(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x9c(%rbp)
jmp    15c6 <crm_4motifs_allt+0x466>
movl   $0x0,-0x8c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0xe8(%rbp),%eax
jne    1700 <crm_4motifs_allt+0x5a0>
jmp    1652 <crm_4motifs_allt+0x4f2>
mov    -0x9c(%rbp),%eax
cmp    -0xe8(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xb8(%rbp),%ecx
cmp    0x30(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     16e5 <crm_4motifs_allt+0x585>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    0x10(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x78(%rbp),%rax
movslq -0x8c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    0x30(%rbp),%eax
jg     16e0 <crm_4motifs_allt+0x580>
mov    -0x40(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x9c(%rbp)
jmp    1652 <crm_4motifs_allt+0x4f2>
mov    -0xb8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0x9c(%rbp)
jmp    1705 <crm_4motifs_allt+0x5a5>
mov    -0xa0(%rbp),%eax
cmp    -0xe8(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x0,-0xa0(%rbp)
setge  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0xbc(%rbp),%ecx
cmp    0x38(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1770 <crm_4motifs_allt+0x610>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
mov    -0x48(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa0(%rbp)
jmp    1705 <crm_4motifs_allt+0x5a5>
movl   $0x0,-0x90(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0xe8(%rbp),%eax
jne    183f <crm_4motifs_allt+0x6df>
jmp    1791 <crm_4motifs_allt+0x631>
mov    -0xa0(%rbp),%eax
cmp    -0xe8(%rbp),%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0xbc(%rbp),%ecx
cmp    0x38(%rbp),%ecx
setle  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1824 <crm_4motifs_allt+0x6c4>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x90(%rbp)
mov    0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x80(%rbp),%rax
movslq -0x90(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    0x38(%rbp),%eax
jg     181f <crm_4motifs_allt+0x6bf>
mov    -0x48(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa0(%rbp)
jmp    1791 <crm_4motifs_allt+0x631>
mov    -0xbc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xbc(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
add    -0x88(%rbp),%eax
add    -0x8c(%rbp),%eax
add    -0x90(%rbp),%eax
cmp    0x50(%rbp),%eax
jl     1921 <crm_4motifs_allt+0x7c1>
mov    -0x68(%rbp),%rdi
mov    -0x70(%rbp),%rsi
mov    -0x78(%rbp),%rdx
mov    -0x80(%rbp),%rcx
mov    -0x84(%rbp),%r8d
mov    -0x88(%rbp),%r9d
mov    -0x8c(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x90(%rbp),%r13d
mov    0x50(%rbp),%r12d
mov    0x58(%rbp),%r15d
mov    0x48(%rbp),%r14d
mov    0x60(%rbp),%ebx
mov    0x70(%rbp),%r11d
lea    -0xdc(%rbp),%r10
mov    -0x60(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf4(%rbp),%eax
mov    %eax,(%rsp)
mov    -0xf0(%rbp),%rax
mov    %r13d,0x8(%rsp)
mov    %r12d,0x10(%rsp)
mov    %r15d,0x18(%rsp)
mov    %r14d,0x20(%rsp)
mov    %ebx,0x28(%rsp)
mov    %r11d,0x30(%rsp)
mov    %r10,0x38(%rsp)
mov    %rax,0x40(%rsp)
call   1050 <crm_4motifs@plt>
mov    -0xdc(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd8(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xd0(%rbp),%eax
sub    -0xa8(%rbp),%eax
mov    %eax,-0xd4(%rbp)
jmp    1935 <crm_4motifs_allt+0x7d5>
movl   $0x0,-0xd0(%rbp)
movl   $0x0,-0xd4(%rbp)
cmpl   $0x0,-0xd0(%rbp)
jle    1951 <crm_4motifs_allt+0x7f1>
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
cmpl   $0x1,0x70(%rbp)
jne    1a66 <crm_4motifs_allt+0x906>
mov    -0xe0(%rbp),%eax
add    -0xd0(%rbp),%eax
cmp    0x48(%rbp),%eax
jle    19b4 <crm_4motifs_allt+0x854>
mov    -0xa4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa4(%rbp)
mov    -0xe0(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe0(%rbp),%esi
lea    0x668(%rip),%rdi
call   1040 <printf@plt>
mov    -0xe4(%rbp),%esi
lea    0x66a(%rip),%rdi
call   1040 <printf@plt>
jmp    1a61 <crm_4motifs_allt+0x901>
movl   $0x1,-0xac(%rbp)
mov    -0xac(%rbp),%eax
cmp    -0xd4(%rbp),%eax
jg     1a5c <crm_4motifs_allt+0x8fc>
mov    -0xe0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe0(%rbp)
mov    -0xe8(%rbp),%ecx
mov    0x80(%rbp),%rax
movslq -0xe0(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    -0x60(%rbp),%rax
movslq -0xac(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%ecx
mov    0x80(%rbp),%rax
movslq -0xe0(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    -0x60(%rbp),%rax
movslq -0xac(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%ecx
mov    0x80(%rbp),%rax
movslq -0xe0(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xac(%rbp)
jmp    19be <crm_4motifs_allt+0x85e>
jmp    1a61 <crm_4motifs_allt+0x901>
jmp    1a66 <crm_4motifs_allt+0x906>
jmp    130b <crm_4motifs_allt+0x1ab>
mov    -0xe0(%rbp),%ecx
mov    0x78(%rbp),%rax
mov    %ecx,(%rax)
mov    -0xcc(%rbp),%ecx
mov    0x78(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0xa4(%rbp),%ecx
mov    0x78(%rbp),%rax
mov    %ecx,0x8(%rax)
cmpl   $0x0,-0xa8(%rbp)
jge    1ab0 <crm_4motifs_allt+0x950>
mov    -0xe4(%rbp),%ecx
mov    0x78(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    1abd <crm_4motifs_allt+0x95d>
mov    -0xe0(%rbp),%ecx
mov    0x78(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x68(%rbp),%rdi
mov    -0xc4(%rbp),%edx
mov    $0x1,%esi
call   1070 <free_ivector@plt>
mov    -0x70(%rbp),%rdi
mov    -0xc4(%rbp),%edx
mov    $0x1,%esi
call   1070 <free_ivector@plt>
mov    -0x78(%rbp),%rdi
mov    -0xc4(%rbp),%edx
mov    $0x1,%esi
call   1070 <free_ivector@plt>
mov    -0x80(%rbp),%rdi
mov    -0xc4(%rbp),%edx
mov    $0x1,%esi
call   1070 <free_ivector@plt>
cmpl   $0x1,0x70(%rbp)
jne    1b33 <crm_4motifs_allt+0x9d3>
mov    -0x60(%rbp),%rdi
mov    -0xc0(%rbp),%edx
mov    $0x1,%ecx
mov    $0x2,%r8d
mov    %ecx,%esi
call   1060 <free_imatrix@plt>
add    $0x118,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<crm_4motifs_allt>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
mov    %r9,0xe0(%rsp)
mov    %r8,0x40(%rsp)
mov    0x180(%rsp),%ebx
mov    0x178(%rsp),%r12d
mov    0x150(%rsp),%r15d
mov    %rdi,0x28(%rsp)
mov    0x4(%rdi),%ebp
mov    %rsi,0x90(%rsp)
mov    0x4(%rsi),%eax
mov    %eax,0x1c(%rsp)
mov    %rdx,0x98(%rsp)
mov    0x4(%rdx),%r14d
mov    %rcx,0x78(%rsp)
mov    (%rcx),%eax
mov    %eax,0x18(%rsp)
mov    $0x1,%edi
mov    $0x3e8,%esi
call   1080 <ivector@plt>
mov    %rax,0x70(%rsp)
mov    $0x1,%edi
mov    $0x3e8,%esi
call   1080 <ivector@plt>
mov    %rax,0x20(%rsp)
mov    $0x1,%edi
mov    $0x3e8,%esi
call   1080 <ivector@plt>
mov    %rax,0xa8(%rsp)
mov    $0x1,%edi
mov    $0x3e8,%esi
call   1080 <ivector@plt>
mov    %rax,%rsi
cmp    $0x1,%ebx
mov    %rsi,0xa0(%rsp)
jne    123a <crm_4motifs_allt+0xda>
mov    $0x1,%edi
mov    $0x3e8,%esi
mov    $0x1,%edx
mov    $0x2,%ecx
call   1030 <imatrix@plt>
mov    0x188(%rsp),%rcx
lea    0x1(%r12),%edx
test   %r15d,%r15d
cmovns %r15d,%edx
mov    %edx,0xb4(%rsp)
test   %edx,%edx
mov    %rax,0x68(%rsp)
js     1a64 <crm_4motifs_allt+0x904>
test   %r12d,%r12d
jle    1a64 <crm_4motifs_allt+0x904>
mov    0x190(%rsp),%rcx
movslq 0x130(%rsp),%r8
movslq 0x138(%rsp),%rax
mov    %rax,0x88(%rsp)
movslq 0x140(%rsp),%rax
mov    %rax,0x80(%rsp)
movslq 0x148(%rsp),%rax
mov    %rax,0x58(%rsp)
mov    0x90(%rsp),%rax
add    $0x4,%rax
mov    %rax,0xd8(%rsp)
mov    0x98(%rsp),%rax
add    $0x4,%rax
mov    %rax,0xd0(%rsp)
mov    0x78(%rsp),%rax
add    $0x4,%rax
mov    %rax,0xc8(%rsp)
lea    0x10(%rcx),%rax
mov    %rax,0xc0(%rsp)
mov    $0x1,%r15d
mov    $0x4,%r12d
xor    %r9d,%r9d
xor    %eax,%eax
mov    %rax,0x38(%rsp)
movl   $0x0,0x34(%rsp)
mov    $0x1,%ebx
movl   $0x0,0x64(%rsp)
movl   $0x0,0x60(%rsp)
mov    0x20(%rsp),%r11
mov    0x40(%rsp),%r10
mov    0x28(%rsp),%rdi
mov    %r8,0x48(%rsp)
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0x1(%r9),%eax
mov    %eax,0x8(%rsp)
xor    %ecx,%ecx
cmp    %r9d,%ebp
setle  %cl
mov    %ebp,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    0x130(%rsp),%ebx
setl   %cl
test   %ecx,%edx
je     1397 <crm_4motifs_allt+0x237>
movslq %ebx,%rcx
add    $0x1,%rcx
mov    (%rdi,%rcx,4),%ebp
xor    %edx,%edx
cmp    %r9d,%ebp
setle  %dl
mov    %ebp,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %r8,%rcx
setl   %dl
add    $0x1,%ebx
add    $0x1,%rcx
test   %edx,%esi
jne    1370 <crm_4motifs_allt+0x210>
xor    %r8d,%r8d
mov    %ebp,0xc(%rsp)
cmp    0x8(%rsp),%ebp
mov    %r14d,0x10(%rsp)
jne    13e0 <crm_4motifs_allt+0x280>
xor    %r8d,%r8d
cmp    0x130(%rsp),%ebx
jle    14c0 <crm_4motifs_allt+0x360>
mov    0x8(%rsp),%r14d
add    $0xffffffff,%ebx
mov    %r14d,0xc(%rsp)
mov    0x90(%rsp),%rdi
mov    0x1c(%rsp),%ebp
mov    0x88(%rsp),%rax
jmp    13f9 <crm_4motifs_allt+0x299>
nopl   0x0(%rax)
mov    0x90(%rsp),%rdi
mov    0x1c(%rsp),%ebp
mov    0x88(%rsp),%rax
mov    0x8(%rsp),%r14d
xor    %ecx,%ecx
cmp    %r9d,%ebp
setle  %cl
mov    %ebp,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    0x138(%rsp),%r15d
setl   %cl
test   %ecx,%edx
je     1458 <crm_4motifs_allt+0x2f8>
movslq %r15d,%rcx
add    $0x1,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%rdi,%rcx,4),%ebp
xor    %edx,%edx
cmp    %r9d,%ebp
setle  %dl
mov    %ebp,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %rax,%rcx
setl   %dl
add    $0x1,%r15d
add    $0x1,%rcx
test   %edx,%esi
jne    1430 <crm_4motifs_allt+0x2d0>
cmp    %r14d,%ebp
jne    1490 <crm_4motifs_allt+0x330>
cmp    0x138(%rsp),%r15d
jle    1530 <crm_4motifs_allt+0x3d0>
xor    %eax,%eax
mov    %rax,0x50(%rsp)
mov    0x10(%rsp),%r14d
mov    0x160(%rsp),%ebp
jmp    15a2 <crm_4motifs_allt+0x442>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %eax,%eax
mov    %rax,0x50(%rsp)
mov    %ebp,0x1c(%rsp)
mov    0x78(%rsp),%r10
mov    0x98(%rsp),%rdi
mov    0x10(%rsp),%r14d
mov    0x160(%rsp),%ebp
jmp    15bb <crm_4motifs_allt+0x45b>
nopl   0x0(%rax)
movslq %ebx,%rcx
add    $0x1,%ebx
mov    $0x1,%edx
mov    %ebx,%esi
mov    0x70(%rsp),%rbp
mov    0x8(%rsp),%r14d
nopw   0x0(%rax,%rax,1)
mov    %esi,%ebx
mov    %rdx,%r8
mov    (%r10,%rcx,4),%edx
mov    %edx,0x0(%rbp,%r8,4)
cmp    0x48(%rsp),%rcx
jge    13be <crm_4motifs_allt+0x25e>
cmp    %r14d,0x4(%rdi,%rcx,4)
jne    13be <crm_4motifs_allt+0x25e>
lea    0x1(%rbx),%esi
lea    0x1(%r8),%rdx
lea    0x1(%rcx),%rdi
cmp    0x48(%rsp),%rcx
mov    %rdi,%rcx
mov    0x28(%rsp),%rdi
jl     14e0 <crm_4motifs_allt+0x380>
jmp    13be <crm_4motifs_allt+0x25e>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %r15d,%rdx
mov    0xe0(%rsp),%rcx
lea    (%rcx,%rdx,4),%r10
mov    0xd8(%rsp),%rax
lea    (%rax,%rdx,4),%rax
xor    %esi,%esi
mov    0x10(%rsp),%r14d
mov    0x160(%rsp),%ebp
nopl   0x0(%rax)
mov    %rsi,%rcx
lea    (%rdx,%rsi,1),%rdi
mov    (%r10,%rsi,4),%esi
mov    %esi,0x4(%r11,%rcx,4)
cmp    0x88(%rsp),%rdi
jge    1591 <crm_4motifs_allt+0x431>
mov    0x8(%rsp),%esi
cmp    %esi,(%rax,%rcx,4)
jne    1591 <crm_4motifs_allt+0x431>
lea    0x1(%rcx),%rsi
cmp    0x88(%rsp),%rdi
jl     1560 <crm_4motifs_allt+0x400>
mov    %ecx,%eax
add    $0x1,%eax
mov    %rax,0x50(%rsp)
add    %ecx,%r15d
add    $0x1,%r15d
add    $0xffffffff,%r15d
mov    0x8(%rsp),%eax
mov    %eax,0x1c(%rsp)
mov    0x78(%rsp),%r10
mov    0x98(%rsp),%rdi
mov    0x80(%rsp),%rax
xor    %ecx,%ecx
cmp    %r9d,%r14d
setle  %cl
mov    %r14d,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    0x140(%rsp),%r12d
setl   %cl
test   %ecx,%edx
je     161a <crm_4motifs_allt+0x4ba>
movslq %r12d,%rcx
add    $0x1,%rcx
nopl   (%rax)
mov    (%rdi,%rcx,4),%r14d
xor    %edx,%edx
cmp    %r9d,%r14d
setle  %dl
mov    %r14d,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %rax,%rcx
setl   %dl
add    $0x1,%r12d
add    $0x1,%rcx
test   %edx,%esi
jne    15f0 <crm_4motifs_allt+0x490>
cmp    0x8(%rsp),%r14d
jne    1650 <crm_4motifs_allt+0x4f0>
cmp    0x140(%rsp),%r12d
jle    1670 <crm_4motifs_allt+0x510>
xor    %eax,%eax
mov    %rax,0x10(%rsp)
mov    0x18(%rsp),%edi
mov    0x58(%rsp),%rax
mov    0x8(%rsp),%r14d
jmp    16f5 <crm_4motifs_allt+0x595>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %eax,%eax
mov    %rax,0x10(%rsp)
mov    0x18(%rsp),%edi
mov    0x58(%rsp),%rax
jmp    16f9 <crm_4motifs_allt+0x599>
cs nopw 0x0(%rax,%rax,1)
nop
movslq %r12d,%rdx
mov    0x120(%rsp),%rcx
lea    (%rcx,%rdx,4),%r11
mov    0xd0(%rsp),%rax
lea    (%rax,%rdx,4),%rax
xor    %esi,%esi
mov    0x8(%rsp),%r14d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %rsi,%rcx
lea    (%rdx,%rsi,1),%rdi
mov    (%r11,%rsi,4),%esi
mov    0xa8(%rsp),%r10
mov    %esi,0x4(%r10,%rcx,4)
cmp    0x80(%rsp),%rdi
jge    16d6 <crm_4motifs_allt+0x576>
cmp    %r14d,(%rax,%rcx,4)
jne    16d6 <crm_4motifs_allt+0x576>
lea    0x1(%rcx),%rsi
cmp    0x80(%rsp),%rdi
jl     16a0 <crm_4motifs_allt+0x540>
mov    %ecx,%eax
add    $0x1,%eax
mov    %rax,0x10(%rsp)
add    %ecx,%r12d
add    $0x1,%r12d
mov    0x78(%rsp),%r10
mov    0x18(%rsp),%edi
mov    0x58(%rsp),%rax
add    $0xffffffff,%r12d
xor    %ecx,%ecx
cmp    %r9d,%edi
setle  %cl
mov    %edi,%edx
not    %edx
shr    $0x1f,%edx
and    %ecx,%edx
xor    %ecx,%ecx
cmp    0x148(%rsp),%r13d
setl   %cl
test   %ecx,%edx
je     1759 <crm_4motifs_allt+0x5f9>
movslq %r13d,%rcx
add    $0x1,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%r10,%rcx,4),%edi
xor    %edx,%edx
cmp    %r9d,%edi
setle  %dl
mov    %edi,%esi
not    %esi
shr    $0x1f,%esi
and    %edx,%esi
xor    %edx,%edx
cmp    %rax,%rcx
setl   %dl
add    $0x1,%r13d
add    $0x1,%rcx
test   %edx,%esi
jne    1730 <crm_4motifs_allt+0x5d0>
xor    %esi,%esi
cmp    0x8(%rsp),%edi
jne    1790 <crm_4motifs_allt+0x630>
xor    %r10d,%r10d
cmp    0x148(%rsp),%r13d
mov    0xa0(%rsp),%r11
jle    17b0 <crm_4motifs_allt+0x650>
mov    0x50(%rsp),%r9
mov    0x10(%rsp),%rax
jmp    181c <crm_4motifs_allt+0x6bc>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %r10d,%r10d
mov    0xa0(%rsp),%r11
mov    0x50(%rsp),%r9
mov    0x10(%rsp),%rax
jmp    1824 <crm_4motifs_allt+0x6c4>
nopw   0x0(%rax,%rax,1)
movslq %r13d,%rax
mov    0x128(%rsp),%rcx
lea    (%rcx,%rax,4),%rsi
mov    0xc8(%rsp),%rcx
lea    (%rcx,%rax,4),%rbp
xor    %edi,%edi
nopl   (%rax)
mov    %rdi,%rdx
lea    (%rax,%rdi,1),%rcx
mov    (%rsi,%rdi,4),%edi
mov    %edi,0x4(%r11,%rdx,4)
cmp    0x58(%rsp),%rcx
jge    17fb <crm_4motifs_allt+0x69b>
mov    0x8(%rsp),%edi
cmp    %edi,0x0(%rbp,%rdx,4)
jne    17fb <crm_4motifs_allt+0x69b>
lea    0x1(%rdx),%rdi
cmp    0x58(%rsp),%rcx
jl     17d0 <crm_4motifs_allt+0x670>
mov    %edx,%r10d
add    $0x1,%r10d
add    %edx,%r13d
add    $0x1,%r13d
mov    0x160(%rsp),%ebp
mov    0x50(%rsp),%r9
mov    0x10(%rsp),%rax
xor    %esi,%esi
add    $0xffffffff,%r13d
mov    0x8(%rsp),%edi
lea    (%r9,%r8,1),%ecx
add    %eax,%ecx
add    %r10d,%ecx
cmp    %ebp,%ecx
mov    %edi,0x18(%rsp)
jge    1840 <crm_4motifs_allt+0x6e0>
xor    %eax,%eax
jmp    18b8 <crm_4motifs_allt+0x758>
nopl   0x0(%rax)
sub    $0x8,%rsp
mov    0x78(%rsp),%rdi
mov    0x28(%rsp),%rsi
mov    0xb0(%rsp),%rdx
mov    %r11,%rcx
push   0x70(%rsp)
mov    %rax,%r11
lea    0xc8(%rsp),%rax
push   %rax
mov    0x198(%rsp),%eax
push   %rax
mov    0x190(%rsp),%eax
push   %rax
mov    0x180(%rsp),%eax
push   %rax
mov    0x198(%rsp),%eax
push   %rax
push   %rbp
push   %r10
push   %r11
call   1050 <crm_4motifs@plt>
add    $0x50,%rsp
mov    0xb8(%rsp),%eax
mov    0xbc(%rsp),%ecx
mov    %eax,%esi
mov    %ecx,0x64(%rsp)
sub    %ecx,%esi
xor    %ecx,%ecx
test   %eax,%eax
setg   %cl
add    %ecx,0x34(%rsp)
mov    0x180(%rsp),%ecx
cmp    $0x1,%ecx
jne    19f0 <crm_4motifs_allt+0x890>
mov    0x38(%rsp),%rbp
add    %ebp,%eax
mov    0x158(%rsp),%ecx
cmp    %ecx,%eax
jle    1910 <crm_4motifs_allt+0x7b0>
addl   $0xffffffff,0x60(%rsp)
lea    0x71a(%rip),%rdi
mov    %ebp,%esi
call   1040 <printf@plt>
lea    0x720(%rip),%rdi
mov    %ebp,%esi
call   1040 <printf@plt>
mov    %ebp,%eax
mov    %ebp,0xb0(%rsp)
jmp    19f0 <crm_4motifs_allt+0x890>
nopl   0x0(%rax)
test   %esi,%esi
jle    19f0 <crm_4motifs_allt+0x890>
movslq %ebp,%rbp
mov    %esi,%r8d
mov    $0x1,%edx
cmp    $0x1,%esi
mov    %rbp,0x38(%rsp)
je     1993 <crm_4motifs_allt+0x833>
mov    %r8d,%r9d
and    $0xfffffffe,%r9d
mov    0xc0(%rsp),%rax
lea    (%rax,%rbp,8),%r10
xor    %edx,%edx
mov    0x68(%rsp),%rsi
mov    0x8(%rsp),%ebp
nopl   0x0(%rax,%rax,1)
mov    -0x8(%r10,%rdx,8),%rdi
mov    %ebp,0x4(%rdi)
mov    0x8(%rsi,%rdx,8),%rax
mov    0x4(%rax),%ecx
mov    %ecx,0x8(%rdi)
mov    0x8(%rax),%eax
mov    %eax,0xc(%rdi)
mov    (%r10,%rdx,8),%rax
mov    %ebp,0x4(%rax)
mov    0x10(%rsi,%rdx,8),%rcx
mov    0x4(%rcx),%edi
mov    %edi,0x8(%rax)
mov    0x8(%rcx),%ecx
mov    %ecx,0xc(%rax)
add    $0x2,%rdx
cmp    %rdx,%r9
jne    1950 <crm_4motifs_allt+0x7f0>
add    %rdx,0x38(%rsp)
add    $0x1,%rdx
mov    0x20(%rsp),%r11
mov    0x40(%rsp),%r10
mov    0x28(%rsp),%rdi
test   $0x1,%r8b
je     19ff <crm_4motifs_allt+0x89f>
mov    0x190(%rsp),%rax
mov    0x38(%rsp),%rcx
mov    0x8(%rax,%rcx,8),%rax
add    $0x1,%rcx
mov    %rcx,0x38(%rsp)
mov    0x8(%rsp),%ecx
mov    %ecx,0x4(%rax)
mov    0x68(%rsp),%rcx
mov    (%rcx,%rdx,8),%rcx
mov    0x4(%rcx),%edx
mov    %edx,0x8(%rax)
mov    0x8(%rcx),%ecx
mov    %ecx,0xc(%rax)
jmp    19ff <crm_4motifs_allt+0x89f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x20(%rsp),%r11
mov    0x40(%rsp),%r10
mov    0x28(%rsp),%rdi
mov    0xc(%rsp),%ebp
mov    0x48(%rsp),%r8
mov    0x34(%rsp),%eax
cmp    0xb4(%rsp),%eax
jg     1a2b <crm_4motifs_allt+0x8cb>
mov    0x8(%rsp),%eax
mov    %eax,%r9d
mov    0x178(%rsp),%ecx
cmp    %ecx,%eax
jl     1340 <crm_4motifs_allt+0x1e0>
mov    0x188(%rsp),%rcx
mov    0x38(%rsp),%rax
mov    %eax,(%rcx)
mov    0x34(%rsp),%edx
mov    %edx,0x4(%rcx)
mov    0x60(%rsp),%edx
mov    %edx,0x8(%rcx)
cmpl   $0x0,0x64(%rsp)
mov    0x180(%rsp),%ebx
mov    0x70(%rsp),%rdi
mov    0xb0(%rsp),%edx
jns    1a79 <crm_4motifs_allt+0x919>
jmp    1a7b <crm_4motifs_allt+0x91b>
movq   $0x0,(%rcx)
movl   $0x0,0x8(%rcx)
xor    %eax,%eax
mov    0x70(%rsp),%rdi
mov    %eax,%edx
mov    %edx,0xc(%rcx)
mov    $0x1,%esi
mov    $0x3e8,%edx
call   1070 <free_ivector@plt>
mov    0x20(%rsp),%rdi
mov    $0x1,%esi
mov    $0x3e8,%edx
call   1070 <free_ivector@plt>
mov    0xa8(%rsp),%rdi
mov    $0x1,%esi
mov    $0x3e8,%edx
call   1070 <free_ivector@plt>
mov    0xa0(%rsp),%rdi
mov    $0x1,%esi
mov    $0x3e8,%edx
call   1070 <free_ivector@plt>
cmp    $0x1,%ebx
jne    1af3 <crm_4motifs_allt+0x993>
mov    0x68(%rsp),%rdi
mov    $0x1,%esi
mov    $0x3e8,%edx
mov    $0x1,%ecx
mov    $0x2,%r8d
call   1060 <free_imatrix@plt>
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [20 x i8] c"running_entries=%d\0A\00"
@.str.1 = [29 x i8] c"running_entries_reported=%d\0A\00"
define void @crm_4motifs_allt(i32* nocapture %0, i32* nocapture %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4, i32* nocapture %5, i32* nocapture %6, i32* nocapture %7, i32 %8, i32 %9, i32 %10, i32 %11, i32 %12, i32 %13, i32 %14, i32 %15, i32 %16, i32 %17, i32 %18, i32* nocapture writeonly %19, i32** nocapture %20) {
%22 = alloca [2 x i32]
%23 = bitcast [2 x i32]* %22 to i8*
%24 = getelementptr inbounds i32, i32* %0, i64 1
%25 = load i32, i32* %24
%26 = getelementptr inbounds i32, i32* %1, i64 1
%27 = load i32, i32* %26
%28 = getelementptr inbounds i32, i32* %2, i64 1
%29 = load i32, i32* %28
%30 = load i32, i32* %3
%31 = tail call i32* @ivector(i32 1, i32 1000)
%32 = tail call i32* @ivector(i32 1, i32 1000)
%33 = tail call i32* @ivector(i32 1, i32 1000)
%34 = tail call i32* @ivector(i32 1, i32 1000)
%35 = icmp eq i32 %18, 1
br i1 %35, label %36, label %38
36: ; preds = %21
%37 = tail call i32** @imatrix(i32 1, i32 1000, i32 1, i32 2)
br label %38
38: ; preds = %36, %21
%39 = phi i32** [ %37, %36 ], [ undef, %21 ]
%40 = icmp slt i32 %12, 0
%41 = add nsw i32 %17, 1
%42 = select i1 %40, i32 %41, i32 %12
%43 = icmp sgt i32 %17, 0
%44 = icmp sgt i32 %42, -1
%45 = and i1 %44, %43
br i1 %45, label %49, label %46
46: ; preds = %38
store i32 0, i32* %19
%47 = getelementptr inbounds i32, i32* %19, i64 1
store i32 0, i32* %47
%48 = getelementptr inbounds i32, i32* %19, i64 2
store i32 0, i32* %48
br label %409
49: ; preds = %38
%50 = getelementptr inbounds [2 x i32], [2 x i32]* %22, i64 0, i64 0
%51 = getelementptr inbounds [2 x i32], [2 x i32]* %22, i64 0, i64 1
%52 = sext i32 %8 to i64
%53 = sext i32 %9 to i64
%54 = sext i32 %10 to i64
%55 = sext i32 %11 to i64
br label %56
56: ; preds = %49, %398
%57 = phi i32 [ 0, %49 ], [ %71, %398 ]
%58 = phi i32 [ undef, %49 ], [ %401, %398 ]
%59 = phi i32 [ 0, %49 ], [ %400, %398 ]
%60 = phi i32 [ 0, %49 ], [ %328, %398 ]
%61 = phi i32 [ undef, %49 ], [ %311, %398 ]
%62 = phi i32 [ 4, %49 ], [ %251, %398 ]
%63 = phi i32 [ 1, %49 ], [ %191, %398 ]
%64 = phi i32 [ 1, %49 ], [ %130, %398 ]
%65 = phi i32 [ 0, %49 ], [ %327, %398 ]
%66 = phi i32 [ 0, %49 ], [ %399, %398 ]
%67 = phi i32 [ %30, %49 ], [ %310, %398 ]
%68 = phi i32 [ %29, %49 ], [ %250, %398 ]
%69 = phi i32 [ %27, %49 ], [ %190, %398 ]
%70 = phi i32 [ %25, %49 ], [ %129, %398 ]
%71 = add nuw nsw i32 %57, 1
%72 = icmp sle i32 %70, %57
%73 = zext i1 %72 to i32
%74 = xor i32 %70, -1
%75 = lshr i32 %74, 31
%76 = and i32 %75, %73
%77 = icmp slt i32 %64, %8
%78 = zext i1 %77 to i32
%79 = and i32 %76, %78
%80 = icmp eq i32 %79, 0
br i1 %80, label %99, label %81
81: ; preds = %56
%82 = sext i32 %64 to i64
br label %83
83: ; preds = %81, %83
%84 = phi i64 [ %82, %81 ], [ %85, %83 ]
%85 = add i64 %84, 1
%86 = getelementptr inbounds i32, i32* %0, i64 %85
%87 = load i32, i32* %86
%88 = icmp sle i32 %87, %57
%89 = zext i1 %88 to i32
%90 = xor i32 %87, -1
%91 = lshr i32 %90, 31
%92 = and i32 %91, %89
%93 = icmp slt i64 %85, %52
%94 = zext i1 %93 to i32
%95 = and i32 %92, %94
%96 = icmp eq i32 %95, 0
br i1 %96, label %97, label %83
97: ; preds = %83
%98 = trunc i64 %85 to i32
br label %99
99: ; preds = %97, %56
%100 = phi i32 [ %70, %56 ], [ %87, %97 ]
%101 = phi i32 [ %64, %56 ], [ %98, %97 ]
%102 = icmp eq i32 %100, %71
br i1 %102, label %103, label %128
103: ; preds = %99
%104 = icmp sgt i32 %101, %8
br i1 %104, label %124, label %105
105: ; preds = %103
%106 = sext i32 %101 to i64
br label %107
107: ; preds = %105, %116
%108 = phi i64 [ %106, %105 ], [ %114, %116 ]
%109 = phi i64 [ 0, %105 ], [ %110, %116 ]
%110 = add nuw nsw i64 %109, 1
%111 = getelementptr inbounds i32, i32* %4, i64 %108
%112 = load i32, i32* %111
%113 = getelementptr inbounds i32, i32* %31, i64 %110
store i32 %112, i32* %113
%114 = add nsw i64 %108, 1
%115 = icmp slt i64 %108, %52
br i1 %115, label %116, label %121
116: ; preds = %107
%117 = getelementptr inbounds i32, i32* %0, i64 %114
%118 = load i32, i32* %117
%119 = icmp eq i32 %118, %71
%120 = and i1 %119, %115
br i1 %120, label %107, label %121
121: ; preds = %107, %116
%122 = trunc i64 %114 to i32
%123 = trunc i64 %110 to i32
br label %124
124: ; preds = %121, %103
%125 = phi i32 [ %101, %103 ], [ %122, %121 ]
%126 = phi i32 [ 0, %103 ], [ %123, %121 ]
%127 = add nsw i32 %125, -1
br label %128
128: ; preds = %124, %99
%129 = phi i32 [ %71, %124 ], [ %100, %99 ]
%130 = phi i32 [ %127, %124 ], [ %101, %99 ]
%131 = phi i32 [ %126, %124 ], [ 0, %99 ]
%132 = icmp sle i32 %69, %57
%133 = zext i1 %132 to i32
%134 = xor i32 %69, -1
%135 = lshr i32 %134, 31
%136 = and i32 %135, %133
%137 = icmp slt i32 %63, %9
%138 = zext i1 %137 to i32
%139 = and i32 %136, %138
%140 = icmp eq i32 %139, 0
br i1 %140, label %159, label %141
141: ; preds = %128
%142 = sext i32 %63 to i64
br label %143
143: ; preds = %141, %143
%144 = phi i64 [ %142, %141 ], [ %145, %143 ]
%145 = add i64 %144, 1
%146 = getelementptr inbounds i32, i32* %1, i64 %145
%147 = load i32, i32* %146
%148 = icmp sle i32 %147, %57
%149 = zext i1 %148 to i32
%150 = xor i32 %147, -1
%151 = lshr i32 %150, 31
%152 = and i32 %151, %149
%153 = icmp slt i64 %145, %53
%154 = zext i1 %153 to i32
%155 = and i32 %152, %154
%156 = icmp eq i32 %155, 0
br i1 %156, label %157, label %143
157: ; preds = %143
%158 = trunc i64 %145 to i32
br label %159
159: ; preds = %157, %128
%160 = phi i32 [ %69, %128 ], [ %147, %157 ]
%161 = phi i32 [ %63, %128 ], [ %158, %157 ]
%162 = icmp eq i32 %160, %71
br i1 %162, label %163, label %188
163: ; preds = %159
%164 = icmp sgt i32 %161, %9
br i1 %164, label %184, label %165
165: ; preds = %163
%166 = sext i32 %161 to i64
br label %167
167: ; preds = %165, %176
%168 = phi i64 [ 0, %165 ], [ %170, %176 ]
%169 = phi i64 [ %166, %165 ], [ %174, %176 ]
%170 = add nuw nsw i64 %168, 1
%171 = getelementptr inbounds i32, i32* %5, i64 %169
%172 = load i32, i32* %171
%173 = getelementptr inbounds i32, i32* %32, i64 %170
store i32 %172, i32* %173
%174 = add nsw i64 %169, 1
%175 = icmp slt i64 %169, %53
br i1 %175, label %176, label %181
176: ; preds = %167
%177 = getelementptr inbounds i32, i32* %1, i64 %174
%178 = load i32, i32* %177
%179 = icmp eq i32 %178, %71
%180 = and i1 %179, %175
br i1 %180, label %167, label %181
181: ; preds = %167, %176
%182 = trunc i64 %170 to i32
%183 = trunc i64 %174 to i32
br label %184
184: ; preds = %181, %163
%185 = phi i32 [ 0, %163 ], [ %182, %181 ]
%186 = phi i32 [ %161, %163 ], [ %183, %181 ]
%187 = add nsw i32 %186, -1
br label %188
188: ; preds = %184, %159
%189 = phi i32 [ %185, %184 ], [ 0, %159 ]
%190 = phi i32 [ %71, %184 ], [ %160, %159 ]
%191 = phi i32 [ %187, %184 ], [ %161, %159 ]
%192 = icmp sle i32 %68, %57
%193 = zext i1 %192 to i32
%194 = xor i32 %68, -1
%195 = lshr i32 %194, 31
%196 = and i32 %195, %193
%197 = icmp slt i32 %62, %10
%198 = zext i1 %197 to i32
%199 = and i32 %196, %198
%200 = icmp eq i32 %199, 0
br i1 %200, label %219, label %201
201: ; preds = %188
%202 = sext i32 %62 to i64
br label %203
203: ; preds = %201, %203
%204 = phi i64 [ %202, %201 ], [ %205, %203 ]
%205 = add i64 %204, 1
%206 = getelementptr inbounds i32, i32* %2, i64 %205
%207 = load i32, i32* %206
%208 = icmp sle i32 %207, %57
%209 = zext i1 %208 to i32
%210 = xor i32 %207, -1
%211 = lshr i32 %210, 31
%212 = and i32 %211, %209
%213 = icmp slt i64 %205, %54
%214 = zext i1 %213 to i32
%215 = and i32 %212, %214
%216 = icmp eq i32 %215, 0
br i1 %216, label %217, label %203
217: ; preds = %203
%218 = trunc i64 %205 to i32
br label %219
219: ; preds = %217, %188
%220 = phi i32 [ %68, %188 ], [ %207, %217 ]
%221 = phi i32 [ %62, %188 ], [ %218, %217 ]
%222 = icmp eq i32 %220, %71
br i1 %222, label %223, label %248
223: ; preds = %219
%224 = icmp sgt i32 %221, %10
br i1 %224, label %244, label %225
225: ; preds = %223
%226 = sext i32 %221 to i64
br label %227
227: ; preds = %225, %236
%228 = phi i64 [ 0, %225 ], [ %230, %236 ]
%229 = phi i64 [ %226, %225 ], [ %234, %236 ]
%230 = add nuw nsw i64 %228, 1
%231 = getelementptr inbounds i32, i32* %6, i64 %229
%232 = load i32, i32* %231
%233 = getelementptr inbounds i32, i32* %33, i64 %230
store i32 %232, i32* %233
%234 = add nsw i64 %229, 1
%235 = icmp slt i64 %229, %54
br i1 %235, label %236, label %241
236: ; preds = %227
%237 = getelementptr inbounds i32, i32* %2, i64 %234
%238 = load i32, i32* %237
%239 = icmp eq i32 %238, %71
%240 = and i1 %239, %235
br i1 %240, label %227, label %241
241: ; preds = %227, %236
%242 = trunc i64 %230 to i32
%243 = trunc i64 %234 to i32
br label %244
244: ; preds = %241, %223
%245 = phi i32 [ 0, %223 ], [ %242, %241 ]
%246 = phi i32 [ %221, %223 ], [ %243, %241 ]
%247 = add nsw i32 %246, -1
br label %248
248: ; preds = %244, %219
%249 = phi i32 [ %245, %244 ], [ 0, %219 ]
%250 = phi i32 [ %71, %244 ], [ %220, %219 ]
%251 = phi i32 [ %247, %244 ], [ %221, %219 ]
%252 = icmp sle i32 %67, %57
%253 = zext i1 %252 to i32
%254 = xor i32 %67, -1
%255 = lshr i32 %254, 31
%256 = and i32 %255, %253
%257 = icmp slt i32 %61, %11
%258 = zext i1 %257 to i32
%259 = and i32 %256, %258
%260 = icmp eq i32 %259, 0
br i1 %260, label %279, label %261
261: ; preds = %248
%262 = sext i32 %61 to i64
br label %263
263: ; preds = %261, %263
%264 = phi i64 [ %262, %261 ], [ %265, %263 ]
%265 = add i64 %264, 1
%266 = getelementptr inbounds i32, i32* %3, i64 %265
%267 = load i32, i32* %266
%268 = icmp sle i32 %267, %57
%269 = zext i1 %268 to i32
%270 = xor i32 %267, -1
%271 = lshr i32 %270, 31
%272 = and i32 %271, %269
%273 = icmp slt i64 %265, %55
%274 = zext i1 %273 to i32
%275 = and i32 %272, %274
%276 = icmp eq i32 %275, 0
br i1 %276, label %277, label %263
277: ; preds = %263
%278 = trunc i64 %265 to i32
br label %279
279: ; preds = %277, %248
%280 = phi i32 [ %67, %248 ], [ %267, %277 ]
%281 = phi i32 [ %61, %248 ], [ %278, %277 ]
%282 = icmp eq i32 %280, %71
br i1 %282, label %283, label %308
283: ; preds = %279
%284 = icmp sgt i32 %281, %11
br i1 %284, label %304, label %285
285: ; preds = %283
%286 = sext i32 %281 to i64
br label %287
287: ; preds = %285, %296
%288 = phi i64 [ 0, %285 ], [ %290, %296 ]
%289 = phi i64 [ %286, %285 ], [ %294, %296 ]
%290 = add nuw nsw i64 %288, 1
%291 = getelementptr inbounds i32, i32* %7, i64 %289
%292 = load i32, i32* %291
%293 = getelementptr inbounds i32, i32* %34, i64 %290
store i32 %292, i32* %293
%294 = add nsw i64 %289, 1
%295 = icmp slt i64 %289, %55
br i1 %295, label %296, label %301
296: ; preds = %287
%297 = getelementptr inbounds i32, i32* %3, i64 %294
%298 = load i32, i32* %297
%299 = icmp eq i32 %298, %71
%300 = and i1 %299, %295
br i1 %300, label %287, label %301
301: ; preds = %287, %296
%302 = trunc i64 %290 to i32
%303 = trunc i64 %294 to i32
br label %304
304: ; preds = %301, %283
%305 = phi i32 [ 0, %283 ], [ %302, %301 ]
%306 = phi i32 [ %281, %283 ], [ %303, %301 ]
%307 = add nsw i32 %306, -1
br label %308
308: ; preds = %304, %279
%309 = phi i32 [ %305, %304 ], [ 0, %279 ]
%310 = phi i32 [ %71, %304 ], [ %280, %279 ]
%311 = phi i32 [ %307, %304 ], [ %281, %279 ]
%312 = add nuw nsw i32 %189, %131
%313 = add nuw nsw i32 %312, %249
%314 = add nuw nsw i32 %313, %309
%315 = icmp slt i32 %314, %14
br i1 %315, label %324, label %316
316: ; preds = %308
%317 = call i32 @crm_4motifs(i32* %31, i32* %32, i32* %33, i32* %34, i32 %131, i32 %189, i32 %249, i32 %309, i32 %14, i32 %15, i32 %13, i32 %16, i32 %18, i32* %50, i32** %39)
%318 = load i32, i32* %50
%319 = load i32, i32* %51
%320 = sub nsw i32 %318, %319
%321 = icmp sgt i32 %318, 0
%322 = zext i1 %321 to i32
%323 = add nsw i32 %60, %322
br label %324
324: ; preds = %316, %308
%325 = phi i32 [ 0, %308 ], [ %320, %316 ]
%326 = phi i32 [ 0, %308 ], [ %318, %316 ]
%327 = phi i32 [ %65, %308 ], [ %319, %316 ]
%328 = phi i32 [ %60, %308 ], [ %323, %316 ]
br i1 %35, label %329, label %398
329: ; preds = %324
%330 = add nsw i32 %326, %59
%331 = icmp sgt i32 %330, %13
br i1 %331, label %341, label %332
332: ; preds = %329
%333 = icmp slt i32 %325, 1
br i1 %333, label %398, label %334
334: ; preds = %332
%335 = sext i32 %59 to i64
%336 = zext i32 %325 to i64
%337 = and i64 %336, 1
%338 = icmp eq i32 %325, 1
br i1 %338, label %377, label %339
339: ; preds = %334
%340 = and i64 %336, 4294967294
br label %345
341: ; preds = %329
%342 = add nsw i32 %66, -1
%343 = call i32 @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 %59)
%344 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.1, i64 0, i64 0), i32 %59)
br label %398
345: ; preds = %345, %339
%346 = phi i64 [ 1, %339 ], [ %374, %345 ]
%347 = phi i64 [ %335, %339 ], [ %362, %345 ]
%348 = phi i64 [ 0, %339 ], [ %375, %345 ]
%349 = add nsw i64 %347, 1
%350 = getelementptr inbounds i32*, i32** %20, i64 %349
%351 = load i32*, i32** %350
%352 = getelementptr inbounds i32, i32* %351, i64 1
store i32 %71, i32* %352
%353 = getelementptr inbounds i32*, i32** %39, i64 %346
%354 = load i32*, i32** %353
%355 = getelementptr inbounds i32, i32* %354, i64 1
%356 = load i32, i32* %355
%357 = getelementptr inbounds i32, i32* %351, i64 2
store i32 %356, i32* %357
%358 = getelementptr inbounds i32, i32* %354, i64 2
%359 = load i32, i32* %358
%360 = getelementptr inbounds i32, i32* %351, i64 3
store i32 %359, i32* %360
%361 = add nuw nsw i64 %346, 1
%362 = add nsw i64 %347, 2
%363 = getelementptr inbounds i32*, i32** %20, i64 %362
%364 = load i32*, i32** %363
%365 = getelementptr inbounds i32, i32* %364, i64 1
store i32 %71, i32* %365
%366 = getelementptr inbounds i32*, i32** %39, i64 %361
%367 = load i32*, i32** %366
%368 = getelementptr inbounds i32, i32* %367, i64 1
%369 = load i32, i32* %368
%370 = getelementptr inbounds i32, i32* %364, i64 2
store i32 %369, i32* %370
%371 = getelementptr inbounds i32, i32* %367, i64 2
%372 = load i32, i32* %371
%373 = getelementptr inbounds i32, i32* %364, i64 3
store i32 %372, i32* %373
%374 = add nuw nsw i64 %346, 2
%375 = add i64 %348, 2
%376 = icmp eq i64 %375, %340
br i1 %376, label %377, label %345
377: ; preds = %345, %334
%378 = phi i64 [ undef, %334 ], [ %362, %345 ]
%379 = phi i64 [ 1, %334 ], [ %374, %345 ]
%380 = phi i64 [ %335, %334 ], [ %362, %345 ]
%381 = icmp eq i64 %337, 0
br i1 %381, label %395, label %382
382: ; preds = %377
%383 = add nsw i64 %380, 1
%384 = getelementptr inbounds i32*, i32** %20, i64 %383
%385 = load i32*, i32** %384
%386 = getelementptr inbounds i32, i32* %385, i64 1
store i32 %71, i32* %386
%387 = getelementptr inbounds i32*, i32** %39, i64 %379
%388 = load i32*, i32** %387
%389 = getelementptr inbounds i32, i32* %388, i64 1
%390 = load i32, i32* %389
%391 = getelementptr inbounds i32, i32* %385, i64 2
store i32 %390, i32* %391
%392 = getelementptr inbounds i32, i32* %388, i64 2
%393 = load i32, i32* %392
%394 = getelementptr inbounds i32, i32* %385, i64 3
store i32 %393, i32* %394
br label %395
395: ; preds = %377, %382
%396 = phi i64 [ %378, %377 ], [ %383, %382 ]
%397 = trunc i64 %396 to i32
br label %398
398: ; preds = %395, %332, %341, %324
%399 = phi i32 [ %342, %341 ], [ %66, %324 ], [ %66, %332 ], [ %66, %395 ]
%400 = phi i32 [ %59, %341 ], [ %59, %324 ], [ %59, %332 ], [ %397, %395 ]
%401 = phi i32 [ %59, %341 ], [ %58, %324 ], [ %58, %332 ], [ %58, %395 ]
%402 = icmp slt i32 %71, %17
%403 = icmp sle i32 %328, %42
%404 = and i1 %403, %402
br i1 %404, label %56, label %405
405: ; preds = %398
store i32 %400, i32* %19
%406 = getelementptr inbounds i32, i32* %19, i64 1
store i32 %328, i32* %406
%407 = getelementptr inbounds i32, i32* %19, i64 2
store i32 %399, i32* %407
%408 = icmp slt i32 %327, 0
br i1 %408, label %411, label %409
409: ; preds = %46, %405
%410 = phi i32 [ 0, %46 ], [ %400, %405 ]
br label %411
411: ; preds = %405, %409
%412 = phi i32 [ %410, %409 ], [ %401, %405 ]
%413 = getelementptr inbounds i32, i32* %19, i64 3
store i32 %412, i32* %413
%414 = call i32 @free_ivector(i32* %31, i32 1, i32 1000)
%415 = call i32 @free_ivector(i32* %32, i32 1, i32 1000)
%416 = call i32 @free_ivector(i32* %33, i32 1, i32 1000)
%417 = call i32 @free_ivector(i32* %34, i32 1, i32 1000)
br i1 %35, label %418, label %420
418: ; preds = %411
%419 = call i32 @free_imatrix(i32** %39, i32 1, i32 1000, i32 1, i32 2)
br label %420
420: ; preds = %418, %411
ret void
}