#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 fabs(int);
int /*<<< orphan*/ free_imatrix(int **, int, int, int, int);
int **imatrix(int, int, int, int);
int remove_overlaps_v2(int **, int **, int *, int, int);
void dist_4v_unordered_v3(int **ovdi123_p, int *m4_p, char *m4_s, int n123,
                          int n4, int **ovdi, int *n, int min_dist,
                          int max_dist, int max_n_ovdi, int *ml,
                          int get_positions) {
  int i, j;
  int p1, p2, p3, p4;
  char s1, s2, s3, s4;
  int d14, d24, d34;
  int ad14, ad24, ad34;
  int n_ovdi = 0;
  int **all_ovdi;
  int n_cooc;
  if (get_positions == 1)
    all_ovdi = imatrix(1, max_n_ovdi, 1, 12);
  i = 0;
  while ((i < n123) & (n_ovdi < max_n_ovdi)) {
    i++;
    j = 0;
    p1 = ovdi123_p[i][1];
    s1 = ovdi123_p[i][7];
    p2 = ovdi123_p[i][2];
    s2 = ovdi123_p[i][8];
    p3 = ovdi123_p[i][3];
    s3 = ovdi123_p[i][9];
    d14 = 0;
    d24 = 0;
    d34 = 0;
    while ((j < n4) & (n_ovdi < max_n_ovdi) & (d14 < max_dist) &
           (d24 < max_dist) & (d34 < max_dist)) {
      j++;
      p4 = m4_p[j];
      s4 = m4_s[j];
      d14 = 0;
      d24 = 0;
      d34 = 0;
      if (((s3 == 1) & (s4 == 1)) | ((s3 == 0) & (s4 == 0)))
        d14 = p4 - p1;
      ad14 = fabs(d14);
      if ((ad14 > min_dist) & (ad14 < max_dist)) {
        d24 = p4 - p2;
        ad24 = fabs(d24);
        if ((ad24 > min_dist) & (ad24 < max_dist)) {
          d34 = p4 - p3;
          ad34 = fabs(d34);
          if ((ad34 > min_dist) & (ad34 < max_dist)) {
            n_ovdi++;
            if (get_positions == 1) {
              all_ovdi[n_ovdi][1] = p1;
              all_ovdi[n_ovdi][2] = p2;
              all_ovdi[n_ovdi][3] = p3;
              all_ovdi[n_ovdi][4] = p4;
              all_ovdi[n_ovdi][5] = ovdi123_p[i][4];
              all_ovdi[n_ovdi][6] = ovdi123_p[i][5];
              all_ovdi[n_ovdi][7] = ovdi123_p[i][6];
              all_ovdi[n_ovdi][8] = j;
              all_ovdi[n_ovdi][9] = s1;
              all_ovdi[n_ovdi][10] = s2;
              all_ovdi[n_ovdi][11] = s3;
              all_ovdi[n_ovdi][12] = s4;
            }
          }
        }
      }
      if ((d14 > max_dist) | (d24 > max_dist) | (d34 > max_dist))
        j = n4 + 1;
    }
  }
  if ((n_ovdi > 0) & (get_positions == 1)) {
    n_cooc = remove_overlaps_v2(all_ovdi, ovdi, ml, n_ovdi, 4);
  } else {
    n_cooc = n_ovdi;
  }
  if (i < n123) {
    n[1] = -1;
  } else {
    n[1] = 0;
  }
  n[0] = n_cooc;
  if (get_positions == 1)
    free_imatrix(all_ovdi, 1, max_n_ovdi, 1, 12);
}


x86 assembly (clang, -O0):
<dist_4v_unordered_v3>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x0,-0x60(%rbp)
cmpl   $0x1,0x38(%rbp)
jne    119c <dist_4v_unordered_v3+0x5c>
mov    0x28(%rbp),%esi
mov    $0x1,%edx
mov    $0xc,%ecx
mov    %edx,%edi
call   1030 <imatrix@plt>
mov    %rax,-0x68(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x60(%rbp),%ecx
cmp    0x28(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1561 <dist_4v_unordered_v3+0x421>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x1c(%rax),%eax
mov    %al,-0x41(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x20(%rax),%eax
mov    %al,-0x42(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x24(%rax),%eax
mov    %al,-0x43(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x20(%rbp),%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x60(%rbp),%ecx
cmp    0x28(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x48(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x4c(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
mov    -0x50(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     155c <dist_4v_unordered_v3+0x41c>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x44(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
movsbl -0x43(%rbp),%eax
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
movsbl -0x44(%rbp),%ecx
cmp    $0x1,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movsbl -0x43(%rbp),%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
movsbl -0x44(%rbp),%edx
cmp    $0x0,%edx
sete   %dl
and    $0x1,%dl
movzbl %dl,%edx
and    %edx,%ecx
or     %ecx,%eax
cmp    $0x0,%eax
je     1348 <dist_4v_unordered_v3+0x208>
mov    -0x40(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%edi
call   1040 <fabs@plt>
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    0x18(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x54(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1515 <dist_4v_unordered_v3+0x3d5>
mov    -0x40(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%edi
call   1040 <fabs@plt>
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x18(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x58(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1510 <dist_4v_unordered_v3+0x3d0>
mov    -0x40(%rbp),%eax
sub    -0x3c(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%edi
call   1040 <fabs@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    0x18(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x5c(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     150b <dist_4v_unordered_v3+0x3cb>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x1,0x38(%rbp)
jne    1506 <dist_4v_unordered_v3+0x3c6>
mov    -0x34(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
mov    -0x38(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x8(%rax)
mov    -0x3c(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0xc(%rax)
mov    -0x40(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x10(%rax)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x10(%rax),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x14(%rax)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x14(%rax),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x18(%rax)
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rax),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x1c(%rax)
mov    -0x30(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x20(%rax)
movsbl -0x41(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x24(%rax)
movsbl -0x42(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x28(%rax)
movsbl -0x43(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x2c(%rax)
movsbl -0x44(%rbp),%ecx
mov    -0x68(%rbp),%rax
movslq -0x60(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x30(%rax)
jmp    150b <dist_4v_unordered_v3+0x3cb>
jmp    1510 <dist_4v_unordered_v3+0x3d0>
jmp    1515 <dist_4v_unordered_v3+0x3d5>
mov    -0x48(%rbp),%eax
cmp    0x20(%rbp),%eax
setg   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x4c(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
mov    -0x50(%rbp),%ecx
cmp    0x20(%rbp),%ecx
setg   %cl
and    $0x1,%cl
movzbl %cl,%ecx
or     %ecx,%eax
cmp    $0x0,%eax
je     1557 <dist_4v_unordered_v3+0x417>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    125c <dist_4v_unordered_v3+0x11c>
jmp    11a3 <dist_4v_unordered_v3+0x63>
cmpl   $0x0,-0x60(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x1,0x38(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     15a7 <dist_4v_unordered_v3+0x467>
mov    -0x68(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    0x30(%rbp),%rdx
mov    -0x60(%rbp),%ecx
mov    $0x4,%r8d
call   1060 <remove_overlaps_v2@plt>
mov    %eax,-0x6c(%rbp)
jmp    15ad <dist_4v_unordered_v3+0x46d>
mov    -0x60(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    15c9 <dist_4v_unordered_v3+0x489>
mov    0x10(%rbp),%rax
movl   $0xffffffff,0x4(%rax)
jmp    15d4 <dist_4v_unordered_v3+0x494>
mov    0x10(%rbp),%rax
movl   $0x0,0x4(%rax)
mov    -0x6c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
cmpl   $0x1,0x38(%rbp)
jne    1600 <dist_4v_unordered_v3+0x4c0>
mov    -0x68(%rbp),%rdi
mov    0x28(%rbp),%edx
mov    $0x1,%ecx
mov    $0xc,%r8d
mov    %ecx,%esi
call   1050 <free_imatrix@plt>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dist_4v_unordered_v3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r9,0x68(%rsp)
mov    %r8,0x30(%rsp)
mov    %ecx,%r14d
mov    %rdx,0x80(%rsp)
mov    %rsi,0x78(%rsp)
mov    %rdi,0x48(%rsp)
mov    0xe8(%rsp),%ecx
mov    0xe0(%rsp),%rax
mov    %rax,0x60(%rsp)
mov    0xd8(%rsp),%eax
mov    %eax,0x4(%rsp)
mov    0xd0(%rsp),%r12d
mov    0xc8(%rsp),%eax
mov    %eax,0x10(%rsp)
mov    0xc0(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    %ecx,0xc(%rsp)
cmp    $0x1,%ecx
jne    11d5 <dist_4v_unordered_v3+0x95>
mov    $0x1,%edi
mov    0x4(%rsp),%esi
mov    $0x1,%edx
mov    $0xc,%ecx
call   1030 <imatrix@plt>
mov    %rax,0x28(%rsp)
test   %r14d,%r14d
jle    147e <dist_4v_unordered_v3+0x33e>
cmpl   $0x0,0x4(%rsp)
jle    147e <dist_4v_unordered_v3+0x33e>
mov    0x30(%rsp),%rax
lea    0x1(%rax),%edi
mov    %r14d,%eax
mov    %rax,0x20(%rsp)
xor    %ecx,%ecx
xor    %eax,%eax
mov    %edi,(%rsp)
lea    0x1(%rcx),%rdx
test   %r12d,%r12d
mov    %rdx,0x50(%rsp)
jle    13f0 <dist_4v_unordered_v3+0x2b0>
cmpl   $0x0,0x30(%rsp)
jle    13f0 <dist_4v_unordered_v3+0x2b0>
cmp    0x4(%rsp),%eax
jge    13f0 <dist_4v_unordered_v3+0x2b0>
mov    0x48(%rsp),%rdx
mov    0x8(%rdx,%rcx,8),%rdx
mov    0x4(%rdx),%ecx
mov    %ecx,0x1c(%rsp)
mov    0x8(%rdx),%ecx
mov    %ecx,0x18(%rsp)
mov    0xc(%rdx),%ecx
mov    %ecx,0x14(%rsp)
mov    0x24(%rdx),%ecx
movsbl 0x20(%rdx),%esi
mov    %esi,0x40(%rsp)
movsbl 0x1c(%rdx),%edx
mov    %edx,0x3c(%rsp)
movsbl %cl,%edx
mov    %edx,0x38(%rsp)
shl    $0x18,%ecx
mov    %ecx,0x44(%rsp)
xor    %edx,%edx
nopl   0x0(%rax)
mov    %eax,0x8(%rsp)
movslq %edx,%rax
lea    0x1(%rax),%rcx
mov    %rcx,0x58(%rsp)
mov    0x78(%rsp),%rcx
mov    0x4(%rcx,%rax,4),%ebp
mov    0x80(%rsp),%rcx
movsbl 0x1(%rcx,%rax,1),%ebx
mov    %ebp,%r14d
sub    0x1c(%rsp),%r14d
mov    %r14d,%eax
test   %ebx,%ebx
je     12a7 <dist_4v_unordered_v3+0x167>
xor    %eax,%eax
mov    0x44(%rsp),%ecx
test   %ecx,%ecx
mov    $0x0,%edx
cmovne %edx,%eax
cmp    $0x1,%ebx
cmovne %eax,%r14d
cmp    $0x1000000,%ecx
cmovne %eax,%r14d
mov    %r14d,%edi
call   1040 <fabs@plt>
cmp    0x10(%rsp),%eax
jle    13a0 <dist_4v_unordered_v3+0x260>
cmp    %r12d,%eax
jge    13a0 <dist_4v_unordered_v3+0x260>
mov    %ebp,%r13d
sub    0x18(%rsp),%r13d
mov    %r13d,%edi
call   1040 <fabs@plt>
cmp    0x10(%rsp),%eax
jle    13a3 <dist_4v_unordered_v3+0x263>
cmp    %r12d,%eax
jge    13a3 <dist_4v_unordered_v3+0x263>
mov    %ebp,%r15d
sub    0x14(%rsp),%r15d
mov    %r15d,%edi
call   1040 <fabs@plt>
cmp    0x10(%rsp),%eax
jle    13a6 <dist_4v_unordered_v3+0x266>
cmp    %r12d,%eax
mov    0x8(%rsp),%eax
mov    (%rsp),%edi
jge    13ad <dist_4v_unordered_v3+0x26d>
add    $0x1,%eax
cmpl   $0x1,0xc(%rsp)
jne    13ad <dist_4v_unordered_v3+0x26d>
movslq %eax,%rdx
mov    0x28(%rsp),%rcx
mov    (%rcx,%rdx,8),%rsi
mov    0x1c(%rsp),%ecx
mov    %ecx,0x4(%rsi)
mov    0x18(%rsp),%ecx
mov    %ecx,0x8(%rsi)
mov    0x14(%rsp),%ecx
mov    %ecx,0xc(%rsi)
mov    %ebp,0x10(%rsi)
mov    0x48(%rsp),%rcx
mov    0x50(%rsp),%rdx
mov    (%rcx,%rdx,8),%rcx
mov    0x10(%rcx),%edx
mov    %edx,0x14(%rsi)
mov    0x14(%rcx),%edx
mov    %edx,0x18(%rsi)
mov    0x18(%rcx),%ecx
mov    %ecx,0x1c(%rsi)
mov    0x58(%rsp),%rcx
mov    %ecx,0x20(%rsi)
mov    0x3c(%rsp),%ecx
mov    %ecx,0x24(%rsi)
mov    0x40(%rsp),%ecx
mov    %ecx,0x28(%rsi)
mov    0x38(%rsp),%ecx
mov    %ecx,0x2c(%rsi)
mov    %ebx,0x30(%rsi)
jmp    13ad <dist_4v_unordered_v3+0x26d>
xchg   %ax,%ax
xor    %r13d,%r13d
xor    %r15d,%r15d
mov    0x8(%rsp),%eax
mov    (%rsp),%edi
mov    %edi,%edx
cmp    %r12d,%r15d
jg     13bb <dist_4v_unordered_v3+0x27b>
mov    0x58(%rsp),%rcx
mov    %ecx,%edx
mov    %edi,%ecx
cmp    %r12d,%r13d
jg     13c4 <dist_4v_unordered_v3+0x284>
mov    %edx,%ecx
mov    %edi,%edx
cmp    %r12d,%r14d
jg     13cd <dist_4v_unordered_v3+0x28d>
mov    %ecx,%edx
cmp    %r12d,%r15d
jge    13f0 <dist_4v_unordered_v3+0x2b0>
cmp    %r12d,%r13d
jge    13f0 <dist_4v_unordered_v3+0x2b0>
cmp    %r12d,%r14d
jge    13f0 <dist_4v_unordered_v3+0x2b0>
cmp    0x30(%rsp),%edx
jge    13f0 <dist_4v_unordered_v3+0x2b0>
cmp    0x4(%rsp),%eax
jl     1270 <dist_4v_unordered_v3+0x130>
nopl   0x0(%rax)
mov    0x50(%rsp),%rbx
cmp    0x20(%rsp),%rbx
jae    1409 <dist_4v_unordered_v3+0x2c9>
mov    %rbx,%rcx
cmp    0x4(%rsp),%eax
jl     1200 <dist_4v_unordered_v3+0xc0>
cmpl   $0x1,0xc(%rsp)
jne    1430 <dist_4v_unordered_v3+0x2f0>
test   %eax,%eax
jle    1430 <dist_4v_unordered_v3+0x2f0>
mov    0x28(%rsp),%rdi
mov    0x68(%rsp),%rsi
mov    0x60(%rsp),%rdx
mov    %eax,%ecx
mov    $0x4,%r8d
call   1060 <remove_overlaps_v2@plt>
mov    $0xffffffff,%edx
cmp    0x20(%rsp),%rbx
jb     143e <dist_4v_unordered_v3+0x2fe>
xor    %edx,%edx
mov    0x70(%rsp),%rcx
mov    %edx,0x4(%rcx)
mov    %eax,(%rcx)
cmpl   $0x1,0xc(%rsp)
jne    148c <dist_4v_unordered_v3+0x34c>
mov    0x28(%rsp),%rdi
mov    $0x1,%esi
mov    0x4(%rsp),%edx
mov    $0x1,%ecx
mov    $0xc,%r8d
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <free_imatrix@plt>
mov    $0xffffffff,%edx
xor    %eax,%eax
test   %r14d,%r14d
jg     143e <dist_4v_unordered_v3+0x2fe>
jmp    143c <dist_4v_unordered_v3+0x2fc>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @dist_4v_unordered_v3(i32** nocapture %0, i32* nocapture %1, i8* nocapture %2, i32 %3, i32 %4, i32** %5, i32* nocapture writeonly %6, i32 %7, i32 %8, i32 %9, i32* %10, i32 %11) {
%13 = icmp eq i32 %11, 1
br i1 %13, label %14, label %16
14: ; preds = %12
%15 = tail call i32** @imatrix(i32 1, i32 %9, i32 1, i32 12)
br label %16
16: ; preds = %14, %12
%17 = phi i32** [ %15, %14 ], [ undef, %12 ]
%18 = icmp sgt i32 %3, 0
%19 = icmp sgt i32 %9, 0
%20 = and i1 %18, %19
br i1 %20, label %22, label %21
21: ; preds = %16
br i1 %18, label %147, label %145
22: ; preds = %16
%23 = icmp sgt i32 %4, 0
%24 = icmp sgt i32 %8, 0
%25 = add nsw i32 %4, 1
%26 = zext i32 %3 to i64
br label %32
27: ; preds = %120, %32
%28 = phi i32 [ %34, %32 ], [ %123, %120 ]
%29 = icmp ult i64 %35, %26
%30 = icmp slt i32 %28, %9
%31 = and i1 %29, %30
br i1 %31, label %32, label %139
32: ; preds = %22, %27
%33 = phi i64 [ 0, %22 ], [ %35, %27 ]
%34 = phi i32 [ 0, %22 ], [ %28, %27 ]
%35 = add nuw nsw i64 %33, 1
%36 = getelementptr inbounds i32*, i32** %0, i64 %35
%37 = load i32*, i32** %36
%38 = getelementptr inbounds i32, i32* %37, i64 1
%39 = load i32, i32* %38
%40 = getelementptr inbounds i32, i32* %37, i64 2
%41 = load i32, i32* %40
%42 = getelementptr inbounds i32, i32* %37, i64 3
%43 = load i32, i32* %42
%44 = icmp slt i32 %34, %9
%45 = and i1 %23, %44
%46 = and i1 %24, %45
br i1 %46, label %47, label %27
47: ; preds = %32
%48 = getelementptr inbounds i32, i32* %37, i64 9
%49 = load i32, i32* %48
%50 = getelementptr inbounds i32, i32* %37, i64 8
%51 = load i32, i32* %50
%52 = getelementptr inbounds i32, i32* %37, i64 7
%53 = load i32, i32* %52
%54 = shl i32 %49, 24
%55 = ashr exact i32 %54, 24
%56 = icmp eq i32 %54, 16777216
%57 = icmp eq i32 %54, 0
%58 = shl i32 %53, 24
%59 = ashr exact i32 %58, 24
%60 = shl i32 %51, 24
%61 = ashr exact i32 %60, 24
br label %62
62: ; preds = %47, %120
%63 = phi i32 [ %34, %47 ], [ %123, %120 ]
%64 = phi i32 [ 0, %47 ], [ %129, %120 ]
%65 = add nsw i32 %64, 1
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds i32, i32* %1, i64 %66
%68 = load i32, i32* %67
%69 = getelementptr inbounds i8, i8* %2, i64 %66
%70 = load i8, i8* %69
%71 = sext i8 %70 to i32
%72 = icmp eq i8 %70, 1
%73 = and i1 %56, %72
%74 = icmp eq i8 %70, 0
%75 = and i1 %57, %74
%76 = or i1 %73, %75
%77 = sub nsw i32 %68, %39
%78 = select i1 %76, i32 %77, i32 0
%79 = tail call i32 @fabs(i32 %78)
%80 = icmp sgt i32 %79, %7
%81 = icmp slt i32 %79, %8
%82 = and i1 %80, %81
br i1 %82, label %83, label %120
83: ; preds = %62
%84 = sub nsw i32 %68, %41
%85 = tail call i32 @fabs(i32 %84)
%86 = icmp sgt i32 %85, %7
%87 = icmp slt i32 %85, %8
%88 = and i1 %86, %87
br i1 %88, label %89, label %120
89: ; preds = %83
%90 = sub nsw i32 %68, %43
%91 = tail call i32 @fabs(i32 %90)
%92 = icmp sgt i32 %91, %7
%93 = icmp slt i32 %91, %8
%94 = and i1 %92, %93
br i1 %94, label %95, label %120
95: ; preds = %89
%96 = add nsw i32 %63, 1
br i1 %13, label %97, label %120
97: ; preds = %95
%98 = sext i32 %96 to i64
%99 = getelementptr inbounds i32*, i32** %17, i64 %98
%100 = load i32*, i32** %99
%101 = getelementptr inbounds i32, i32* %100, i64 1
store i32 %39, i32* %101
%102 = getelementptr inbounds i32, i32* %100, i64 2
store i32 %41, i32* %102
%103 = getelementptr inbounds i32, i32* %100, i64 3
store i32 %43, i32* %103
%104 = getelementptr inbounds i32, i32* %100, i64 4
store i32 %68, i32* %104
%105 = load i32*, i32** %36
%106 = getelementptr inbounds i32, i32* %105, i64 4
%107 = load i32, i32* %106
%108 = getelementptr inbounds i32, i32* %100, i64 5
store i32 %107, i32* %108
%109 = getelementptr inbounds i32, i32* %105, i64 5
%110 = load i32, i32* %109
%111 = getelementptr inbounds i32, i32* %100, i64 6
store i32 %110, i32* %111
%112 = getelementptr inbounds i32, i32* %105, i64 6
%113 = load i32, i32* %112
%114 = getelementptr inbounds i32, i32* %100, i64 7
store i32 %113, i32* %114
%115 = getelementptr inbounds i32, i32* %100, i64 8
store i32 %65, i32* %115
%116 = getelementptr inbounds i32, i32* %100, i64 9
store i32 %59, i32* %116
%117 = getelementptr inbounds i32, i32* %100, i64 10
store i32 %61, i32* %117
%118 = getelementptr inbounds i32, i32* %100, i64 11
store i32 %55, i32* %118
%119 = getelementptr inbounds i32, i32* %100, i64 12
store i32 %71, i32* %119
br label %120
120: ; preds = %83, %95, %97, %89, %62
%121 = phi i32 [ %84, %97 ], [ %84, %95 ], [ %84, %89 ], [ %84, %83 ], [ 0, %62 ]
%122 = phi i32 [ %90, %97 ], [ %90, %95 ], [ %90, %89 ], [ 0, %83 ], [ 0, %62 ]
%123 = phi i32 [ %96, %97 ], [ %96, %95 ], [ %63, %89 ], [ %63, %83 ], [ %63, %62 ]
%124 = icmp sgt i32 %78, %8
%125 = icmp sgt i32 %121, %8
%126 = or i1 %124, %125
%127 = icmp sgt i32 %122, %8
%128 = or i1 %126, %127
%129 = select i1 %128, i32 %25, i32 %65
%130 = icmp slt i32 %129, %4
%131 = icmp slt i32 %123, %9
%132 = and i1 %130, %131
%133 = icmp slt i32 %78, %8
%134 = and i1 %133, %132
%135 = icmp slt i32 %121, %8
%136 = and i1 %135, %134
%137 = icmp slt i32 %122, %8
%138 = and i1 %137, %136
br i1 %138, label %62, label %27
139: ; preds = %27
%140 = icmp sgt i32 %28, 0
%141 = and i1 %13, %140
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = tail call i32 @remove_overlaps_v2(i32** %17, i32** %5, i32* %10, i32 %28, i32 4)
br i1 %29, label %147, label %145
144: ; preds = %139
br i1 %29, label %147, label %145
145: ; preds = %21, %142, %144
%146 = phi i32 [ %143, %142 ], [ %28, %144 ], [ 0, %21 ]
br label %147
147: ; preds = %144, %142, %21, %145
%148 = phi i32 [ %146, %145 ], [ %143, %142 ], [ %28, %144 ], [ 0, %21 ]
%149 = phi i32 [ 0, %145 ], [ -1, %142 ], [ -1, %144 ], [ -1, %21 ]
%150 = getelementptr inbounds i32, i32* %6, i64 1
store i32 %149, i32* %150
store i32 %148, i32* %6
br i1 %13, label %151, label %153
151: ; preds = %147
%152 = tail call i32 @free_imatrix(i32** %17, i32 1, i32 %9, i32 1, i32 12)
br label %153
153: ; preds = %151, %147
ret void
}