#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*/ count_motif(int *, int, int, int, int, int *);
void crm_4motifs(int *m1_p, int *m2_p, int *m3_p, int *m4_p, int n1, int n2,
                 int n3, int n4, int N, int dw, int max_crm_positions,
                 int bin_size, int report_all, int *output,
                 int **crm_positions) {
  int min_pos = 20000;
  int max_pos = -20000;
  int n_crm = 0;
  int pos;
  int upper_border;
  int init_index1 = 1;
  int init_index2 = 1;
  int init_index3 = 1;
  int init_index4 = 1;
  int out[2];
  int n_cooc;
  int errorcode = 0;
  int i;
  if (n1 > 0) {
    if (m1_p[1] < min_pos)
      min_pos = m1_p[1];
    if (m1_p[n1] > max_pos)
      max_pos = m1_p[n1];
  }
  if (n2 > 0) {
    if (m2_p[1] < min_pos)
      min_pos = m2_p[1];
    if (m2_p[n2] > max_pos)
      max_pos = m2_p[n2];
  }
  if (n3 > 0) {
    if (m3_p[1] < min_pos)
      min_pos = m3_p[1];
    if (m3_p[n3] > max_pos)
      max_pos = m3_p[n3];
  }
  if (n4 > 0) {
    if (m4_p[1] < min_pos)
      min_pos = m4_p[1];
    if (m4_p[n4] > max_pos)
      max_pos = m4_p[n4];
  }
  max_pos = max_pos - dw + bin_size;
  pos = min_pos;
  if (report_all == 1) {
    while (pos <= max_pos) {
      upper_border = pos + dw;
      n_cooc = 0;
      if (init_index1 <= n1) {
        count_motif(m1_p, n1, init_index1, pos, upper_border, out);
        n_cooc += out[0];
        init_index1 = out[1];
      }
      if (init_index2 <= n2) {
        count_motif(m2_p, n2, init_index2, pos, upper_border, out);
        n_cooc += out[0];
        init_index2 = out[1];
      }
      if (init_index3 <= n3) {
        count_motif(m3_p, n3, init_index3, pos, upper_border, out);
        n_cooc += out[0];
        init_index3 = out[1];
      }
      if (init_index4 <= n4) {
        count_motif(m4_p, n4, init_index4, pos, upper_border, out);
        n_cooc += out[0];
        init_index4 = out[1];
      }
      if (n_cooc >= N) {
        n_crm++;
        if (n_crm < max_crm_positions) {
          crm_positions[n_crm][1] = pos;
          crm_positions[n_crm][2] = n_cooc;
        } else {
          errorcode++;
        }
        pos += dw;
      } else {
        pos += bin_size;
      }
    }
  } else {
    while (pos <= max_pos) {
      upper_border = pos + dw;
      n_cooc = 0;
      if (init_index1 <= n1) {
        count_motif(m1_p, n1, init_index1, pos, upper_border, out);
        n_cooc += out[0];
        init_index1 = out[1];
      }
      if (init_index2 <= n2) {
        count_motif(m2_p, n2, init_index2, pos, upper_border, out);
        n_cooc += out[0];
        init_index2 = out[1];
      }
      if (init_index3 <= n3) {
        count_motif(m3_p, n3, init_index3, pos, upper_border, out);
        n_cooc += out[0];
        init_index3 = out[1];
      }
      if (init_index4 <= n4) {
        count_motif(m4_p, n4, init_index4, pos, upper_border, out);
        n_cooc += out[0];
        init_index4 = out[1];
      }
      if (n_cooc >= N) {
        n_crm++;
        pos += dw;
      } else {
        pos += bin_size;
      }
    }
  }
  output[0] = n_crm;
  output[1] = errorcode;
}


x86 assembly (clang, -O0):
<crm_4motifs>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
movl   $0x4e20,-0x2c(%rbp)
movl   $0xffffb1e0,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
movl   $0x1,-0x40(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x1,-0x48(%rbp)
movl   $0x1,-0x4c(%rbp)
movl   $0x0,-0x5c(%rbp)
cmpl   $0x0,-0x24(%rbp)
jle    11d0 <crm_4motifs+0xc0>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
cmp    -0x2c(%rbp),%eax
jge    11a9 <crm_4motifs+0x99>
mov    -0x8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
jle    11cb <crm_4motifs+0xbb>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
jmp    11d0 <crm_4motifs+0xc0>
cmpl   $0x0,-0x28(%rbp)
jle    121b <crm_4motifs+0x10b>
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
cmp    -0x2c(%rbp),%eax
jge    11f4 <crm_4motifs+0xe4>
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
jle    1216 <crm_4motifs+0x106>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
jmp    121b <crm_4motifs+0x10b>
cmpl   $0x0,0x10(%rbp)
jle    1266 <crm_4motifs+0x156>
mov    -0x18(%rbp),%rax
mov    0x4(%rax),%eax
cmp    -0x2c(%rbp),%eax
jge    123f <crm_4motifs+0x12f>
mov    -0x18(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
movslq 0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
jle    1261 <crm_4motifs+0x151>
mov    -0x18(%rbp),%rax
movslq 0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
jmp    1266 <crm_4motifs+0x156>
cmpl   $0x0,0x18(%rbp)
jle    12b1 <crm_4motifs+0x1a1>
mov    -0x20(%rbp),%rax
mov    0x4(%rax),%eax
cmp    -0x2c(%rbp),%eax
jge    128a <crm_4motifs+0x17a>
mov    -0x20(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
movslq 0x18(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x30(%rbp),%eax
jle    12ac <crm_4motifs+0x19c>
mov    -0x20(%rbp),%rax
movslq 0x18(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
jmp    12b1 <crm_4motifs+0x1a1>
mov    -0x30(%rbp),%eax
sub    0x28(%rbp),%eax
add    0x38(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x1,0x40(%rbp)
jne    1436 <crm_4motifs+0x326>
jmp    12d2 <crm_4motifs+0x1c2>
mov    -0x38(%rbp),%eax
cmp    -0x30(%rbp),%eax
jg     1431 <crm_4motifs+0x321>
mov    -0x38(%rbp),%eax
add    0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movl   $0x0,-0x58(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     1323 <crm_4motifs+0x213>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     1358 <crm_4motifs+0x248>
mov    -0x10(%rbp),%rdi
mov    -0x28(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x48(%rbp),%eax
cmp    0x10(%rbp),%eax
jg     138d <crm_4motifs+0x27d>
mov    -0x18(%rbp),%rdi
mov    0x10(%rbp),%esi
mov    -0x48(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     13c2 <crm_4motifs+0x2b2>
mov    -0x20(%rbp),%rdi
mov    0x18(%rbp),%esi
mov    -0x4c(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x20(%rbp),%eax
jl     1423 <crm_4motifs+0x313>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x30(%rbp),%eax
jge    140c <crm_4motifs+0x2fc>
mov    -0x38(%rbp),%ecx
mov    0x50(%rbp),%rax
movslq -0x34(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    -0x58(%rbp),%ecx
mov    0x50(%rbp),%rax
movslq -0x34(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
jmp    1415 <crm_4motifs+0x305>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    0x28(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    142c <crm_4motifs+0x31c>
mov    0x38(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    12d2 <crm_4motifs+0x1c2>
jmp    1561 <crm_4motifs+0x451>
jmp    143b <crm_4motifs+0x32b>
mov    -0x38(%rbp),%eax
cmp    -0x30(%rbp),%eax
jg     155c <crm_4motifs+0x44c>
mov    -0x38(%rbp),%eax
add    0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movl   $0x0,-0x58(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x24(%rbp),%eax
jg     148c <crm_4motifs+0x37c>
mov    -0x8(%rbp),%rdi
mov    -0x24(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     14c1 <crm_4motifs+0x3b1>
mov    -0x10(%rbp),%rdi
mov    -0x28(%rbp),%esi
mov    -0x44(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x48(%rbp),%eax
cmp    0x10(%rbp),%eax
jg     14f6 <crm_4motifs+0x3e6>
mov    -0x18(%rbp),%rdi
mov    0x10(%rbp),%esi
mov    -0x48(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     152b <crm_4motifs+0x41b>
mov    -0x20(%rbp),%rdi
mov    0x18(%rbp),%esi
mov    -0x4c(%rbp),%edx
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%r8d
lea    -0x54(%rbp),%r9
call   1030 <count_motif@plt>
mov    -0x54(%rbp),%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x20(%rbp),%eax
jl     154e <crm_4motifs+0x43e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    0x28(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    1557 <crm_4motifs+0x447>
mov    0x38(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    143b <crm_4motifs+0x32b>
jmp    1561 <crm_4motifs+0x451>
mov    -0x34(%rbp),%ecx
mov    0x48(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x5c(%rbp),%ecx
mov    0x48(%rbp),%rax
mov    %ecx,0x4(%rax)
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<crm_4motifs>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9d,0x1c(%rsp)
mov    %rcx,0x38(%rsp)
mov    %rdx,0x30(%rsp)
mov    %rsi,0x28(%rsp)
test   %r8d,%r8d
jle    115e <crm_4motifs+0x4e>
mov    0x4(%rdi),%eax
cmp    $0x4e20,%eax
mov    $0x4e20,%r15d
cmovl  %eax,%r15d
mov    %r8d,%eax
mov    (%rdi,%rax,4),%eax
cmp    $0xffffb1e1,%eax
mov    $0xffffb1e0,%esi
cmovge %eax,%esi
jmp    1169 <crm_4motifs+0x59>
mov    $0x4e20,%r15d
mov    $0xffffb1e0,%esi
mov    0x80(%rsp),%edx
mov    0x1c(%rsp),%ecx
test   %ecx,%ecx
jle    1198 <crm_4motifs+0x88>
mov    0x28(%rsp),%rdx
mov    0x4(%rdx),%eax
cmp    %r15d,%eax
cmovl  %eax,%r15d
mov    %ecx,%eax
mov    (%rdx,%rax,4),%eax
mov    0x80(%rsp),%edx
cmp    %esi,%eax
cmovg  %eax,%esi
mov    0x88(%rsp),%ecx
test   %edx,%edx
jle    11c3 <crm_4motifs+0xb3>
mov    0x30(%rsp),%rcx
mov    0x4(%rcx),%eax
cmp    %r15d,%eax
cmovl  %eax,%r15d
mov    %edx,%eax
mov    (%rcx,%rax,4),%eax
mov    0x88(%rsp),%ecx
cmp    %esi,%eax
cmovg  %eax,%esi
mov    0xb0(%rsp),%eax
test   %ecx,%ecx
jle    11e9 <crm_4motifs+0xd9>
mov    %ecx,%ebp
mov    0x38(%rsp),%rdx
mov    0x4(%rdx),%ecx
cmp    %r15d,%ecx
cmovl  %ecx,%r15d
mov    %ebp,%ecx
mov    (%rdx,%rcx,4),%ecx
cmp    %esi,%ecx
cmovg  %ecx,%esi
mov    %rdi,0x40(%rsp)
mov    0x98(%rsp),%ecx
sub    %ecx,%esi
add    0xa8(%rsp),%esi
cmp    $0x1,%eax
mov    %r8d,0x24(%rsp)
mov    %esi,0x20(%rsp)
jne    138a <crm_4motifs+0x27a>
xor    %r12d,%r12d
movl   $0x0,0x18(%rsp)
cmp    %esi,%r15d
jg     14ce <crm_4motifs+0x3be>
mov    $0x1,%ebx
movl   $0x0,0x18(%rsp)
movl   $0x1,0x14(%rsp)
movl   $0x1,0x10(%rsp)
mov    $0x1,%r13d
xor    %r12d,%r12d
jmp    1266 <crm_4motifs+0x156>
nopl   0x0(%rax)
add    0xa8(%rsp),%r15d
mov    %r15d,%ebp
mov    %ebp,%r15d
cmp    %ecx,%ebp
jg     14ce <crm_4motifs+0x3be>
mov    0x98(%rsp),%eax
lea    (%r15,%rax,1),%ebp
cmp    %r8d,%r13d
jle    1280 <crm_4motifs+0x170>
xor    %r14d,%r14d
jmp    12a5 <crm_4motifs+0x195>
nopl   0x0(%rax,%rax,1)
mov    0x40(%rsp),%rdi
mov    %r8d,%esi
mov    %r13d,%edx
mov    %r15d,%ecx
mov    %ebp,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
mov    0x8(%rsp),%r14d
mov    0xc(%rsp),%r13d
mov    0x1c(%rsp),%esi
mov    0x10(%rsp),%eax
cmp    %esi,%eax
jg     12d1 <crm_4motifs+0x1c1>
mov    0x28(%rsp),%rdi
mov    %eax,%edx
mov    %r15d,%ecx
mov    %ebp,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r14d
mov    0xc(%rsp),%eax
mov    0x80(%rsp),%esi
mov    0x14(%rsp),%edx
cmp    %esi,%edx
mov    %eax,0x10(%rsp)
jg     1302 <crm_4motifs+0x1f2>
mov    0x30(%rsp),%rdi
mov    %r15d,%ecx
mov    %ebp,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r14d
mov    0xc(%rsp),%edx
mov    0x88(%rsp),%esi
cmp    %esi,%ebx
mov    %edx,0x14(%rsp)
jg     1331 <crm_4motifs+0x221>
mov    0x38(%rsp),%rdi
mov    %ebx,%edx
mov    %r15d,%ecx
mov    %ebp,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r14d
mov    0xc(%rsp),%ebx
mov    0x24(%rsp),%r8d
mov    0x20(%rsp),%ecx
cmp    0x90(%rsp),%r14d
jl     1250 <crm_4motifs+0x140>
add    $0x1,%r12d
cmp    0xa0(%rsp),%r12d
jge    1380 <crm_4motifs+0x270>
movslq %r12d,%rax
mov    0xc0(%rsp),%rdx
mov    (%rdx,%rax,8),%rax
mov    %r15d,0x4(%rax)
mov    %r14d,0x8(%rax)
jmp    125b <crm_4motifs+0x14b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
addl   $0x1,0x18(%rsp)
jmp    125b <crm_4motifs+0x14b>
xor    %r12d,%r12d
movl   $0x0,0x18(%rsp)
cmp    %esi,%r15d
jg     14ce <crm_4motifs+0x3be>
xor    %r12d,%r12d
mov    $0x1,%ebx
movl   $0x1,0x14(%rsp)
movl   $0x1,0x10(%rsp)
mov    $0x1,%ebp
jmp    13f1 <crm_4motifs+0x2e1>
nopl   (%rax)
mov    0x24(%rsp),%r8d
mov    0x20(%rsp),%ecx
add    0xa8(%rsp),%r15d
xor    %eax,%eax
cmp    0x90(%rsp),%r13d
setge  %al
cmovl  %r15d,%r14d
add    %eax,%r12d
mov    %r14d,%r15d
cmp    %ecx,%r14d
jg     14c6 <crm_4motifs+0x3b6>
mov    0x98(%rsp),%eax
lea    (%r15,%rax,1),%r14d
cmp    %r8d,%ebp
jle    1410 <crm_4motifs+0x300>
xor    %r13d,%r13d
jmp    1433 <crm_4motifs+0x323>
cs nopw 0x0(%rax,%rax,1)
mov    0x40(%rsp),%rdi
mov    %r8d,%esi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
mov    0x8(%rsp),%r13d
mov    0xc(%rsp),%ebp
mov    0x1c(%rsp),%esi
mov    0x10(%rsp),%edx
cmp    %esi,%edx
jg     1461 <crm_4motifs+0x351>
mov    0x28(%rsp),%rdi
mov    %r15d,%ecx
mov    %r14d,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r13d
mov    0xc(%rsp),%eax
mov    %eax,0x10(%rsp)
mov    0x80(%rsp),%esi
mov    0x14(%rsp),%edx
cmp    %esi,%edx
jg     1492 <crm_4motifs+0x382>
mov    0x30(%rsp),%rdi
mov    %r15d,%ecx
mov    %r14d,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r13d
mov    0xc(%rsp),%eax
mov    %eax,0x14(%rsp)
mov    0x88(%rsp),%esi
cmp    %esi,%ebx
jg     13c0 <crm_4motifs+0x2b0>
mov    0x38(%rsp),%rdi
mov    %ebx,%edx
mov    %r15d,%ecx
mov    %r14d,%r8d
lea    0x8(%rsp),%r9
call   1030 <count_motif@plt>
add    0x8(%rsp),%r13d
mov    0xc(%rsp),%ebx
jmp    13c0 <crm_4motifs+0x2b0>
movl   $0x0,0x18(%rsp)
mov    0xb8(%rsp),%rax
mov    %r12d,(%rax)
mov    0x18(%rsp),%ecx
mov    %ecx,0x4(%rax)
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @crm_4motifs(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* nocapture writeonly %13, i32** nocapture %14) {
%16 = alloca [2 x i32]
%17 = bitcast [2 x i32]* %16 to i8*
%18 = icmp sgt i32 %4, 0
br i1 %18, label %19, label %29
19: ; preds = %15
%20 = getelementptr inbounds i32, i32* %0, i64 1
%21 = load i32, i32* %20
%22 = icmp slt i32 %21, 20000
%23 = select i1 %22, i32 %21, i32 20000
%24 = zext i32 %4 to i64
%25 = getelementptr inbounds i32, i32* %0, i64 %24
%26 = load i32, i32* %25
%27 = icmp sgt i32 %26, -20000
%28 = select i1 %27, i32 %26, i32 -20000
br label %29
29: ; preds = %19, %15
%30 = phi i32 [ -20000, %15 ], [ %28, %19 ]
%31 = phi i32 [ 20000, %15 ], [ %23, %19 ]
%32 = icmp sgt i32 %5, 0
br i1 %32, label %33, label %43
33: ; preds = %29
%34 = getelementptr inbounds i32, i32* %1, i64 1
%35 = load i32, i32* %34
%36 = icmp slt i32 %35, %31
%37 = select i1 %36, i32 %35, i32 %31
%38 = zext i32 %5 to i64
%39 = getelementptr inbounds i32, i32* %1, i64 %38
%40 = load i32, i32* %39
%41 = icmp sgt i32 %40, %30
%42 = select i1 %41, i32 %40, i32 %30
br label %43
43: ; preds = %33, %29
%44 = phi i32 [ %30, %29 ], [ %42, %33 ]
%45 = phi i32 [ %31, %29 ], [ %37, %33 ]
%46 = icmp sgt i32 %6, 0
br i1 %46, label %47, label %57
47: ; preds = %43
%48 = getelementptr inbounds i32, i32* %2, i64 1
%49 = load i32, i32* %48
%50 = icmp slt i32 %49, %45
%51 = select i1 %50, i32 %49, i32 %45
%52 = zext i32 %6 to i64
%53 = getelementptr inbounds i32, i32* %2, i64 %52
%54 = load i32, i32* %53
%55 = icmp sgt i32 %54, %44
%56 = select i1 %55, i32 %54, i32 %44
br label %57
57: ; preds = %47, %43
%58 = phi i32 [ %44, %43 ], [ %56, %47 ]
%59 = phi i32 [ %45, %43 ], [ %51, %47 ]
%60 = icmp sgt i32 %7, 0
br i1 %60, label %61, label %71
61: ; preds = %57
%62 = getelementptr inbounds i32, i32* %3, i64 1
%63 = load i32, i32* %62
%64 = icmp slt i32 %63, %59
%65 = select i1 %64, i32 %63, i32 %59
%66 = zext i32 %7 to i64
%67 = getelementptr inbounds i32, i32* %3, i64 %66
%68 = load i32, i32* %67
%69 = icmp sgt i32 %68, %58
%70 = select i1 %69, i32 %68, i32 %58
br label %71
71: ; preds = %61, %57
%72 = phi i32 [ %58, %57 ], [ %70, %61 ]
%73 = phi i32 [ %59, %57 ], [ %65, %61 ]
%74 = sub nsw i32 %72, %9
%75 = add nsw i32 %74, %11
%76 = icmp eq i32 %12, 1
%77 = icmp sgt i32 %73, %75
br i1 %76, label %82, label %78
78: ; preds = %71
br i1 %77, label %199, label %79
79: ; preds = %78
%80 = getelementptr inbounds [2 x i32], [2 x i32]* %16, i64 0, i64 0
%81 = getelementptr inbounds [2 x i32], [2 x i32]* %16, i64 0, i64 1
br label %149
82: ; preds = %71
br i1 %77, label %199, label %83
83: ; preds = %82
%84 = getelementptr inbounds [2 x i32], [2 x i32]* %16, i64 0, i64 0
%85 = getelementptr inbounds [2 x i32], [2 x i32]* %16, i64 0, i64 1
br label %86
86: ; preds = %83, %144
%87 = phi i32 [ 0, %83 ], [ %147, %144 ]
%88 = phi i32 [ 1, %83 ], [ %128, %144 ]
%89 = phi i32 [ 1, %83 ], [ %119, %144 ]
%90 = phi i32 [ 1, %83 ], [ %110, %144 ]
%91 = phi i32 [ 1, %83 ], [ %101, %144 ]
%92 = phi i32 [ %73, %83 ], [ %146, %144 ]
%93 = phi i32 [ 0, %83 ], [ %145, %144 ]
%94 = add nsw i32 %92, %9
%95 = icmp sgt i32 %91, %4
br i1 %95, label %100, label %96
96: ; preds = %86
%97 = call i32 @count_motif(i32* %0, i32 %4, i32 %91, i32 %92, i32 %94, i32* %84)
%98 = load i32, i32* %84
%99 = load i32, i32* %85
br label %100
100: ; preds = %96, %86
%101 = phi i32 [ %99, %96 ], [ %91, %86 ]
%102 = phi i32 [ %98, %96 ], [ 0, %86 ]
%103 = icmp sgt i32 %90, %5
br i1 %103, label %109, label %104
104: ; preds = %100
%105 = call i32 @count_motif(i32* %1, i32 %5, i32 %90, i32 %92, i32 %94, i32* %84)
%106 = load i32, i32* %84
%107 = add nsw i32 %106, %102
%108 = load i32, i32* %85
br label %109
109: ; preds = %104, %100
%110 = phi i32 [ %108, %104 ], [ %90, %100 ]
%111 = phi i32 [ %107, %104 ], [ %102, %100 ]
%112 = icmp sgt i32 %89, %6
br i1 %112, label %118, label %113
113: ; preds = %109
%114 = call i32 @count_motif(i32* %2, i32 %6, i32 %89, i32 %92, i32 %94, i32* %84)
%115 = load i32, i32* %84
%116 = add nsw i32 %115, %111
%117 = load i32, i32* %85
br label %118
118: ; preds = %113, %109
%119 = phi i32 [ %117, %113 ], [ %89, %109 ]
%120 = phi i32 [ %116, %113 ], [ %111, %109 ]
%121 = icmp sgt i32 %88, %7
br i1 %121, label %127, label %122
122: ; preds = %118
%123 = call i32 @count_motif(i32* %3, i32 %7, i32 %88, i32 %92, i32 %94, i32* %84)
%124 = load i32, i32* %84
%125 = add nsw i32 %124, %120
%126 = load i32, i32* %85
br label %127
127: ; preds = %122, %118
%128 = phi i32 [ %126, %122 ], [ %88, %118 ]
%129 = phi i32 [ %125, %122 ], [ %120, %118 ]
%130 = icmp slt i32 %129, %8
br i1 %130, label %142, label %131
131: ; preds = %127
%132 = add nsw i32 %93, 1
%133 = icmp slt i32 %132, %10
br i1 %133, label %134, label %140
134: ; preds = %131
%135 = sext i32 %132 to i64
%136 = getelementptr inbounds i32*, i32** %14, i64 %135
%137 = load i32*, i32** %136
%138 = getelementptr inbounds i32, i32* %137, i64 1
store i32 %92, i32* %138
%139 = getelementptr inbounds i32, i32* %137, i64 2
store i32 %129, i32* %139
br label %144
140: ; preds = %131
%141 = add nsw i32 %87, 1
br label %144
142: ; preds = %127
%143 = add nsw i32 %92, %11
br label %144
144: ; preds = %134, %140, %142
%145 = phi i32 [ %93, %142 ], [ %132, %140 ], [ %132, %134 ]
%146 = phi i32 [ %143, %142 ], [ %94, %140 ], [ %94, %134 ]
%147 = phi i32 [ %87, %142 ], [ %141, %140 ], [ %87, %134 ]
%148 = icmp sgt i32 %146, %75
br i1 %148, label %199, label %86
149: ; preds = %79, %189
%150 = phi i32 [ 1, %79 ], [ %190, %189 ]
%151 = phi i32 [ 1, %79 ], [ %181, %189 ]
%152 = phi i32 [ 1, %79 ], [ %172, %189 ]
%153 = phi i32 [ 1, %79 ], [ %163, %189 ]
%154 = phi i32 [ %73, %79 ], [ %197, %189 ]
%155 = phi i32 [ 0, %79 ], [ %196, %189 ]
%156 = add nsw i32 %154, %9
%157 = icmp sgt i32 %153, %4
br i1 %157, label %162, label %158
158: ; preds = %149
%159 = call i32 @count_motif(i32* %0, i32 %4, i32 %153, i32 %154, i32 %156, i32* %80)
%160 = load i32, i32* %80
%161 = load i32, i32* %81
br label %162
162: ; preds = %158, %149
%163 = phi i32 [ %161, %158 ], [ %153, %149 ]
%164 = phi i32 [ %160, %158 ], [ 0, %149 ]
%165 = icmp sgt i32 %152, %5
br i1 %165, label %171, label %166
166: ; preds = %162
%167 = call i32 @count_motif(i32* %1, i32 %5, i32 %152, i32 %154, i32 %156, i32* %80)
%168 = load i32, i32* %80
%169 = add nsw i32 %168, %164
%170 = load i32, i32* %81
br label %171
171: ; preds = %166, %162
%172 = phi i32 [ %170, %166 ], [ %152, %162 ]
%173 = phi i32 [ %169, %166 ], [ %164, %162 ]
%174 = icmp sgt i32 %151, %6
br i1 %174, label %180, label %175
175: ; preds = %171
%176 = call i32 @count_motif(i32* %2, i32 %6, i32 %151, i32 %154, i32 %156, i32* %80)
%177 = load i32, i32* %80
%178 = add nsw i32 %177, %173
%179 = load i32, i32* %81
br label %180
180: ; preds = %175, %171
%181 = phi i32 [ %179, %175 ], [ %151, %171 ]
%182 = phi i32 [ %178, %175 ], [ %173, %171 ]
%183 = icmp sgt i32 %150, %7
br i1 %183, label %189, label %184
184: ; preds = %180
%185 = call i32 @count_motif(i32* %3, i32 %7, i32 %150, i32 %154, i32 %156, i32* %80)
%186 = load i32, i32* %80
%187 = add nsw i32 %186, %182
%188 = load i32, i32* %81
br label %189
189: ; preds = %184, %180
%190 = phi i32 [ %188, %184 ], [ %150, %180 ]
%191 = phi i32 [ %187, %184 ], [ %182, %180 ]
%192 = icmp slt i32 %191, %8
%193 = add nsw i32 %154, %11
%194 = xor i1 %192, true
%195 = zext i1 %194 to i32
%196 = add nuw nsw i32 %155, %195
%197 = select i1 %192, i32 %193, i32 %156
%198 = icmp sgt i32 %197, %75
br i1 %198, label %199, label %149
199: ; preds = %189, %144, %78, %82
%200 = phi i32 [ 0, %82 ], [ 0, %78 ], [ %145, %144 ], [ %196, %189 ]
%201 = phi i32 [ 0, %82 ], [ 0, %78 ], [ %147, %144 ], [ 0, %189 ]
store i32 %200, i32* %13
%202 = getelementptr inbounds i32, i32* %13, i64 1
store i32 %201, i32* %202
ret void
}