#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
scalar_t__ colinear(int, int, int, int, int **);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, int, int, int, int,
                           int, int, int, int, int, int, int, int);
int inter_line(int, int, int, int, int, int **);
int is_desargue_quick(int n, int **inc_tab, FILE *fichier) {
  int o = 0, p, q, r, P, Q, R, a, b, g;
  int countp = 0, countq = 0, countr = 0, countP = 0, countQ = 0, countR = 0,
      count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0, count6 = 0;
  for (p = 0; p < n; p++) {
    countp++;
    for (q = 0; q < n; q++) {
      countq++;
      if (!colinear(o, p, q, n, inc_tab)) {
        count1++;
        for (r = 0; r < n; r++) {
          countr++;
          if (!colinear(o, p, r, n, inc_tab) &&
              !colinear(o, q, r, n, inc_tab) &&
              !colinear(p, q, r, n, inc_tab)) {
            count2++;
            for (P = 0; P < n; P++) {
              countP++;
              if (colinear(o, p, P, n, inc_tab)) {
                count3++;
                for (Q = 0; Q < n; Q++) {
                  countQ++;
                  if (colinear(o, q, Q, n, inc_tab)) {
                    count4++;
                    for (R = 0; R < n; R++) {
                      countR++;
                      if (colinear(o, r, R, n, inc_tab) &&
                          !colinear(P, Q, R, n, inc_tab)) {
                        count5++;
                        if ((p == P && q != Q && r != R) ||
                            (p != P && q == Q && r != R) ||
                            (p != P && q != Q && r == R) ||
                            (p != P && q != Q && r != R)) {
                          count6++;
                          a = inter_line(p, q, P, Q, n, inc_tab);
                          b = inter_line(p, r, P, R, n, inc_tab);
                          g = inter_line(q, r, Q, R, n, inc_tab);
                          if (!colinear(a, b, g, n, inc_tab)) {
                            return 0;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  fprintf(fichier,
          "passage p:%d\n \npassage q:%d\n \nif(!col(o,p,q)):%d\n \npassage "
          "r:%d\n \nif( !col(o,p,r) && !col(o,q,r) && !col(p,q,r) ):%d\n "
          "\npassage P:%d\n \nif( col(o,p,P) ):%d\n \npassage Q:%d\n \nif( "
          "col(o,q,Q) ):%d\n \npassage R:%d\n \nif( col(o,r,R) && !col(P,Q,R) "
          "):%d\n \ndeux distinction min:%d\n",
          countp, countq, count1, countr, count2, countP, count3, countQ,
          count4, countR, count5, count6);
  return 1;
}


x86 assembly (clang, -O0):
<is_desargue_quick>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
mov    %edi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x0,-0x70(%rbp)
movl   $0x0,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x0,-0x80(%rbp)
movl   $0x0,-0x84(%rbp)
movl   $0x0,-0x88(%rbp)
movl   $0x0,-0x8c(%rbp)
movl   $0x0,-0x90(%rbp)
movl   $0x0,-0x94(%rbp)
movl   $0x0,-0x98(%rbp)
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    1555 <is_desargue_quick+0x425>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    1542 <is_desargue_quick+0x412>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
mov    -0x44(%rbp),%edi
mov    -0x48(%rbp),%esi
mov    -0x4c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    152f <is_desargue_quick+0x3ff>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    152a <is_desargue_quick+0x3fa>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
mov    -0x44(%rbp),%edi
mov    -0x48(%rbp),%esi
mov    -0x50(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    1517 <is_desargue_quick+0x3e7>
mov    -0x44(%rbp),%edi
mov    -0x4c(%rbp),%esi
mov    -0x50(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    1517 <is_desargue_quick+0x3e7>
mov    -0x48(%rbp),%edi
mov    -0x4c(%rbp),%esi
mov    -0x50(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    1517 <is_desargue_quick+0x3e7>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    1512 <is_desargue_quick+0x3e2>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
mov    -0x44(%rbp),%edi
mov    -0x48(%rbp),%esi
mov    -0x54(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
je     14ff <is_desargue_quick+0x3cf>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    14fa <is_desargue_quick+0x3ca>
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x44(%rbp),%edi
mov    -0x4c(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
je     14e7 <is_desargue_quick+0x3b7>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    14e2 <is_desargue_quick+0x3b2>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
mov    -0x44(%rbp),%edi
mov    -0x50(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
je     14cf <is_desargue_quick+0x39f>
mov    -0x54(%rbp),%edi
mov    -0x58(%rbp),%esi
mov    -0x5c(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    14cf <is_desargue_quick+0x39f>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
jne    13cb <is_desargue_quick+0x29b>
mov    -0x4c(%rbp),%eax
cmp    -0x58(%rbp),%eax
je     13cb <is_desargue_quick+0x29b>
mov    -0x50(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    1437 <is_desargue_quick+0x307>
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
je     13ef <is_desargue_quick+0x2bf>
mov    -0x4c(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    13ef <is_desargue_quick+0x2bf>
mov    -0x50(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    1437 <is_desargue_quick+0x307>
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
je     1413 <is_desargue_quick+0x2e3>
mov    -0x4c(%rbp),%eax
cmp    -0x58(%rbp),%eax
je     1413 <is_desargue_quick+0x2e3>
mov    -0x50(%rbp),%eax
cmp    -0x5c(%rbp),%eax
je     1437 <is_desargue_quick+0x307>
mov    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
je     14ca <is_desargue_quick+0x39a>
mov    -0x4c(%rbp),%eax
cmp    -0x58(%rbp),%eax
je     14ca <is_desargue_quick+0x39a>
mov    -0x50(%rbp),%eax
cmp    -0x5c(%rbp),%eax
je     14ca <is_desargue_quick+0x39a>
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
mov    -0x48(%rbp),%edi
mov    -0x4c(%rbp),%esi
mov    -0x54(%rbp),%edx
mov    -0x58(%rbp),%ecx
mov    -0x30(%rbp),%r8d
mov    -0x38(%rbp),%r9
call   1030 <inter_line@plt>
mov    %eax,-0x60(%rbp)
mov    -0x48(%rbp),%edi
mov    -0x50(%rbp),%esi
mov    -0x54(%rbp),%edx
mov    -0x5c(%rbp),%ecx
mov    -0x30(%rbp),%r8d
mov    -0x38(%rbp),%r9
call   1030 <inter_line@plt>
mov    %eax,-0x64(%rbp)
mov    -0x4c(%rbp),%edi
mov    -0x50(%rbp),%esi
mov    -0x58(%rbp),%edx
mov    -0x5c(%rbp),%ecx
mov    -0x30(%rbp),%r8d
mov    -0x38(%rbp),%r9
call   1030 <inter_line@plt>
mov    %eax,-0x68(%rbp)
mov    -0x60(%rbp),%edi
mov    -0x64(%rbp),%esi
mov    -0x68(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x38(%rbp),%r8
call   1040 <colinear@plt>
cmp    $0x0,%rax
jne    14c5 <is_desargue_quick+0x395>
movl   $0x0,-0x2c(%rbp)
jmp    15cf <is_desargue_quick+0x49f>
jmp    14ca <is_desargue_quick+0x39a>
jmp    14cf <is_desargue_quick+0x39f>
jmp    14d4 <is_desargue_quick+0x3a4>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1345 <is_desargue_quick+0x215>
jmp    14e7 <is_desargue_quick+0x3b7>
jmp    14ec <is_desargue_quick+0x3bc>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    12fb <is_desargue_quick+0x1cb>
jmp    14ff <is_desargue_quick+0x3cf>
jmp    1504 <is_desargue_quick+0x3d4>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    12b1 <is_desargue_quick+0x181>
jmp    1517 <is_desargue_quick+0x3e7>
jmp    151c <is_desargue_quick+0x3ec>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1229 <is_desargue_quick+0xf9>
jmp    152f <is_desargue_quick+0x3ff>
jmp    1534 <is_desargue_quick+0x404>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    11df <is_desargue_quick+0xaf>
jmp    1547 <is_desargue_quick+0x417>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    11c3 <is_desargue_quick+0x93>
mov    -0x40(%rbp),%rdi
mov    -0x6c(%rbp),%edx
mov    -0x70(%rbp),%ecx
mov    -0x84(%rbp),%r8d
mov    -0x74(%rbp),%r9d
mov    -0x88(%rbp),%r13d
mov    -0x78(%rbp),%r12d
mov    -0x8c(%rbp),%r15d
mov    -0x7c(%rbp),%r14d
mov    -0x90(%rbp),%ebx
mov    -0x80(%rbp),%r11d
mov    -0x94(%rbp),%r10d
mov    -0x98(%rbp),%eax
lea    0xa62(%rip),%rsi
mov    %r13d,(%rsp)
mov    %r12d,0x8(%rsp)
mov    %r15d,0x10(%rsp)
mov    %r14d,0x18(%rsp)
mov    %ebx,0x20(%rsp)
mov    %r11d,0x28(%rsp)
mov    %r10d,0x30(%rsp)
mov    %eax,0x38(%rsp)
call   1050 <fprintf@plt>
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_desargue_quick>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
test   %edi,%edi
jle    14d0 <is_desargue_quick+0x3a0>
mov    %rsi,0x10(%rsp)
mov    %rdx,0x78(%rsp)
mov    %edi,0x8(%rsp)
mov    %edi,%eax
imul   %edi,%eax
mov    %eax,0x6c(%rsp)
xor    %r14d,%r14d
xor    %r13d,%r13d
xor    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x50(%rsp)
xor    %eax,%eax
mov    %rax,0x38(%rsp)
movl   $0x0,0x30(%rsp)
xor    %ebx,%ebx
xor    %eax,%eax
mov    %rax,0x48(%rsp)
xor    %r15d,%r15d
movl   $0x0,0x34(%rsp)
xor    %eax,%eax
mov    %r15,0x40(%rsp)
mov    %rax,0x20(%rsp)
add    $0x1,%eax
mov    %eax,0x70(%rsp)
xor    %edx,%edx
mov    0x8(%rsp),%ebp
jmp    11d3 <is_desargue_quick+0xa3>
mov    0x28(%rsp),%r14
mov    0x60(%rsp),%r12
mov    0x58(%rsp),%rbx
nopl   (%rax)
mov    0x4(%rsp),%edx
add    $0x1,%edx
mov    0x8(%rsp),%ebp
cmp    %ebp,%edx
je     1491 <is_desargue_quick+0x361>
xor    %edi,%edi
mov    0x20(%rsp),%rsi
mov    %edx,0x4(%rsp)
mov    %ebp,%ecx
mov    0x10(%rsp),%r8
call   1040 <colinear@plt>
test   %rax,%rax
jne    11c0 <is_desargue_quick+0x90>
mov    %rbx,0x58(%rsp)
mov    %r12,0x60(%rsp)
addl   $0x1,0x30(%rsp)
add    %ebp,0x34(%rsp)
xor    %ebx,%ebx
mov    %r14,0x28(%rsp)
mov    %ebp,%r12d
mov    0x20(%rsp),%r14
jmp    122c <is_desargue_quick+0xfc>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x18(%rsp),%ebx
add    $0x1,%ebx
cmp    %r12d,%ebx
je     11ae <is_desargue_quick+0x7e>
xor    %edi,%edi
mov    %r14d,%esi
mov    %ebx,%edx
mov    %r12d,%ecx
mov    0x10(%rsp),%rbp
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
mov    %ebx,0x18(%rsp)
jne    1220 <is_desargue_quick+0xf0>
xor    %edi,%edi
mov    0x4(%rsp),%r15d
mov    %r15d,%esi
mov    %ebx,%edx
mov    %r12d,%ecx
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
jne    1220 <is_desargue_quick+0xf0>
mov    %r14d,%edi
mov    %r15d,%esi
mov    %ebx,%edx
mov    %r12d,%ecx
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
jne    1220 <is_desargue_quick+0xf0>
mov    0x38(%rsp),%rbx
add    $0x1,%ebx
mov    0x40(%rsp),%rax
add    %r12d,%eax
mov    %rax,0x40(%rsp)
xor    %ebp,%ebp
mov    %rbx,0x38(%rsp)
jmp    12af <is_desargue_quick+0x17f>
mov    0x20(%rsp),%r14
add    $0x1,%ebp
cmp    %r12d,%ebp
je     1220 <is_desargue_quick+0xf0>
xor    %edi,%edi
mov    %r14d,%esi
mov    %ebp,%edx
mov    %r12d,%ecx
mov    0x10(%rsp),%r8
call   1040 <colinear@plt>
test   %rax,%rax
je     12a3 <is_desargue_quick+0x173>
mov    0x50(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x50(%rsp)
mov    0x48(%rsp),%rax
add    %r12d,%eax
mov    %rax,0x48(%rsp)
xor    %ebx,%ebx
mov    0x4(%rsp),%r14d
mov    %ebp,0x1c(%rsp)
jmp    130a <is_desargue_quick+0x1da>
nop
mov    %r14,0x28(%rsp)
mov    0x4(%rsp),%r14d
mov    0x1c(%rsp),%ebp
mov    0xc(%rsp),%ebx
add    $0x1,%ebx
cmp    %r12d,%ebx
je     129e <is_desargue_quick+0x16e>
xor    %edi,%edi
mov    %r14d,%esi
mov    %ebx,%edx
mov    %r12d,%ecx
mov    0x10(%rsp),%r8
call   1040 <colinear@plt>
test   %rax,%rax
je     1302 <is_desargue_quick+0x1d2>
cmp    %ebp,0x20(%rsp)
sete   %cl
setne  %dl
mov    0x60(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x60(%rsp)
mov    %ebx,0xc(%rsp)
cmp    %ebx,%r14d
setne  %bl
sete   %al
or     %al,%dl
mov    %dl,0x3(%rsp)
or     %cl,%bl
mov    %bl,0x2(%rsp)
or     %al,%cl
mov    %cl,0x1(%rsp)
mov    0x58(%rsp),%rax
add    %r12d,%eax
mov    %rax,0x58(%rsp)
xor    %r15d,%r15d
mov    0x18(%rsp),%ebx
mov    0x10(%rsp),%rbp
mov    0x28(%rsp),%r14
jmp    138d <is_desargue_quick+0x25d>
nopl   0x0(%rax)
add    $0x1,%r15d
cmp    %r15d,%r12d
je     12f0 <is_desargue_quick+0x1c0>
xor    %edi,%edi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r12d,%ecx
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
je     1380 <is_desargue_quick+0x250>
mov    0x1c(%rsp),%edi
mov    0xc(%rsp),%esi
mov    %r15d,%edx
mov    %r12d,%ecx
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
jne    1380 <is_desargue_quick+0x250>
add    $0x1,%r13d
cmp    %r15d,%ebx
setne  %cl
sete   %al
movzbl 0x3(%rsp),%edx
or     %al,%dl
cmp    $0x1,%dl
jne    13ed <is_desargue_quick+0x2bd>
movzbl 0x2(%rsp),%edx
or     %al,%dl
je     13ed <is_desargue_quick+0x2bd>
or     0x1(%rsp),%cl
je     13ed <is_desargue_quick+0x2bd>
or     0x1(%rsp),%al
jne    1380 <is_desargue_quick+0x250>
mov    %r14,0x28(%rsp)
mov    %r13,0x80(%rsp)
mov    0x20(%rsp),%r14
mov    %r14d,%edi
mov    0x4(%rsp),%esi
mov    0x1c(%rsp),%r13d
mov    %r13d,%edx
mov    0xc(%rsp),%ecx
mov    %r12d,%r8d
mov    %rbp,%r9
call   1030 <inter_line@plt>
mov    %eax,0x74(%rsp)
mov    %r14d,%edi
mov    0x18(%rsp),%ebx
mov    %ebx,%esi
mov    %r13d,%edx
mov    %r15d,%ecx
mov    %r12d,%r8d
mov    %rbp,%r9
call   1030 <inter_line@plt>
mov    %eax,%ebp
mov    0x4(%rsp),%edi
mov    %ebx,%esi
mov    0xc(%rsp),%edx
mov    %r15d,%ecx
mov    0x8(%rsp),%r8d
mov    0x10(%rsp),%r9
call   1030 <inter_line@plt>
mov    0x74(%rsp),%edi
mov    %ebp,%esi
mov    0x8(%rsp),%r12d
mov    0x10(%rsp),%rbp
mov    %eax,%edx
mov    %r12d,%ecx
mov    %rbp,%r8
call   1040 <colinear@plt>
test   %rax,%rax
je     14cc <is_desargue_quick+0x39c>
mov    0x28(%rsp),%r14
add    $0x1,%r14d
mov    0x80(%rsp),%r13
jmp    1380 <is_desargue_quick+0x250>
mov    0x70(%rsp),%ecx
mov    %ecx,%eax
cmp    %ebp,%ecx
mov    0x40(%rsp),%r15
jne    1195 <is_desargue_quick+0x65>
mov    0x78(%rsp),%rdx
mov    0x50(%rsp),%rax
mov    0x48(%rsp),%r10
mov    0x6c(%rsp),%ecx
mov    0x34(%rsp),%r9d
mov    0x30(%rsp),%r8d
mov    0x8(%rsp),%ebp
mov    0x38(%rsp),%r11
jmp    14f0 <is_desargue_quick+0x3c0>
xor    %eax,%eax
jmp    1518 <is_desargue_quick+0x3e8>
xor    %ebp,%ebp
xor    %ecx,%ecx
xor    %r9d,%r9d
xor    %r15d,%r15d
xor    %r10d,%r10d
xor    %ebx,%ebx
xor    %r8d,%r8d
xor    %r11d,%r11d
xor    %eax,%eax
xor    %r12d,%r12d
xor    %r13d,%r13d
xor    %r14d,%r14d
lea    0xb09(%rip),%rsi
mov    %rdx,%rdi
mov    %ebp,%edx
push   %r14
push   %r13
push   %rbx
push   %r12
push   %r10
push   %rax
push   %r15
push   %r11
call   1050 <fprintf@plt>
add    $0x40,%rsp
mov    $0x1,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [270 x i8] c"passage p:%d\0A \0Apassage q:%d\0A \0Aif(!col(o,p,q)):%d\0A \0Apassage r:%d\0A \0Aif( !col(o,p,r) && !col(o,q,r) && !col(p,q,r) ):%d\0A \0Apassage P:%d\0A \0Aif( col(o,p,P) ):%d\0A \0Apassage Q:%d\0A \0Aif( col(o,q,Q) ):%d\0A \0Apassage R:%d\0A \0Aif( col(o,r,R) && !col(P,Q,R) ):%d\0A \0Adeux distinction min:%d\0A\00"
define i32 @is_desargue_quick(i32 %0, i32** %1, i32* nocapture %2) {
%4 = icmp sgt i32 %0, 0
br i1 %4, label %5, label %163
5: ; preds = %3
%6 = mul i32 %0, %0
br label %7
7: ; preds = %161, %5
%8 = phi i32 [ 0, %5 ], [ %158, %161 ]
%9 = phi i32 [ 0, %5 ], [ %157, %161 ]
%10 = phi i32 [ 0, %5 ], [ %156, %161 ]
%11 = phi i32 [ 0, %5 ], [ %155, %161 ]
%12 = phi i32 [ 0, %5 ], [ %154, %161 ]
%13 = phi i32 [ 0, %5 ], [ %153, %161 ]
%14 = phi i32 [ 0, %5 ], [ %152, %161 ]
%15 = phi i32 [ 0, %5 ], [ %151, %161 ]
%16 = phi i32 [ 0, %5 ], [ %150, %161 ]
%17 = phi i32 [ 0, %5 ], [ %149, %161 ]
%18 = phi i32 [ 0, %5 ], [ %19, %161 ]
%19 = add nuw nsw i32 %18, 1
br label %20
20: ; preds = %7, %148
%21 = phi i32 [ %158, %148 ], [ %8, %7 ]
%22 = phi i32 [ %157, %148 ], [ %9, %7 ]
%23 = phi i32 [ %156, %148 ], [ %10, %7 ]
%24 = phi i32 [ %155, %148 ], [ %11, %7 ]
%25 = phi i32 [ %154, %148 ], [ %12, %7 ]
%26 = phi i32 [ %153, %148 ], [ %13, %7 ]
%27 = phi i32 [ %152, %148 ], [ %14, %7 ]
%28 = phi i32 [ %151, %148 ], [ %15, %7 ]
%29 = phi i32 [ %150, %148 ], [ %16, %7 ]
%30 = phi i32 [ %149, %148 ], [ %17, %7 ]
%31 = phi i32 [ %159, %148 ], [ 0, %7 ]
%32 = tail call i64 @colinear(i32 0, i32 %18, i32 %31, i32 %0, i32** %1)
%33 = icmp eq i64 %32, 0
br i1 %33, label %34, label %148
34: ; preds = %20
%35 = add nsw i32 %26, 1
%36 = add i32 %30, %0
br label %37
37: ; preds = %34, %137
%38 = phi i32 [ %145, %137 ], [ %21, %34 ]
%39 = phi i32 [ %144, %137 ], [ %22, %34 ]
%40 = phi i32 [ %143, %137 ], [ %23, %34 ]
%41 = phi i32 [ %142, %137 ], [ %24, %34 ]
%42 = phi i32 [ %141, %137 ], [ %25, %34 ]
%43 = phi i32 [ %140, %137 ], [ %27, %34 ]
%44 = phi i32 [ %139, %137 ], [ %28, %34 ]
%45 = phi i32 [ %138, %137 ], [ %29, %34 ]
%46 = phi i32 [ %146, %137 ], [ 0, %34 ]
%47 = tail call i64 @colinear(i32 0, i32 %18, i32 %46, i32 %0, i32** %1)
%48 = icmp eq i64 %47, 0
br i1 %48, label %49, label %137
49: ; preds = %37
%50 = tail call i64 @colinear(i32 0, i32 %31, i32 %46, i32 %0, i32** %1)
%51 = icmp eq i64 %50, 0
br i1 %51, label %52, label %137
52: ; preds = %49
%53 = tail call i64 @colinear(i32 %18, i32 %31, i32 %46, i32 %0, i32** %1)
%54 = icmp eq i64 %53, 0
br i1 %54, label %55, label %137
55: ; preds = %52
%56 = add nsw i32 %42, 1
%57 = add i32 %45, %0
br label %58
58: ; preds = %55, %128
%59 = phi i32 [ %134, %128 ], [ %38, %55 ]
%60 = phi i32 [ %133, %128 ], [ %39, %55 ]
%61 = phi i32 [ %132, %128 ], [ %40, %55 ]
%62 = phi i32 [ %131, %128 ], [ %41, %55 ]
%63 = phi i32 [ %130, %128 ], [ %43, %55 ]
%64 = phi i32 [ %129, %128 ], [ %44, %55 ]
%65 = phi i32 [ %135, %128 ], [ 0, %55 ]
%66 = tail call i64 @colinear(i32 0, i32 %18, i32 %65, i32 %0, i32** %1)
%67 = icmp eq i64 %66, 0
br i1 %67, label %128, label %68
68: ; preds = %58
%69 = add nsw i32 %62, 1
%70 = icmp ne i32 %18, %65
%71 = icmp eq i32 %18, %65
%72 = add i32 %64, %0
br label %73
73: ; preds = %68, %121
%74 = phi i32 [ %59, %68 ], [ %125, %121 ]
%75 = phi i32 [ %60, %68 ], [ %124, %121 ]
%76 = phi i32 [ %61, %68 ], [ %123, %121 ]
%77 = phi i32 [ %63, %68 ], [ %122, %121 ]
%78 = phi i32 [ 0, %68 ], [ %126, %121 ]
%79 = tail call i64 @colinear(i32 0, i32 %31, i32 %78, i32 %0, i32** %1)
%80 = icmp eq i64 %79, 0
br i1 %80, label %121, label %81
81: ; preds = %73
%82 = add nsw i32 %76, 1
%83 = icmp eq i32 %31, %78
%84 = or i1 %70, %83
%85 = xor i1 %83, true
%86 = or i1 %71, %85
%87 = or i1 %71, %83
%88 = add i32 %77, %0
br label %89
89: ; preds = %81, %116
%90 = phi i32 [ %74, %81 ], [ %118, %116 ]
%91 = phi i32 [ %75, %81 ], [ %117, %116 ]
%92 = phi i32 [ 0, %81 ], [ %119, %116 ]
%93 = tail call i64 @colinear(i32 0, i32 %46, i32 %92, i32 %0, i32** %1)
%94 = icmp eq i64 %93, 0
br i1 %94, label %116, label %95
95: ; preds = %89
%96 = tail call i64 @colinear(i32 %65, i32 %78, i32 %92, i32 %0, i32** %1)
%97 = icmp eq i64 %96, 0
br i1 %97, label %98, label %116
98: ; preds = %95
%99 = add nsw i32 %91, 1
%100 = icmp eq i32 %46, %92
%101 = or i1 %84, %100
%102 = or i1 %86, %100
%103 = select i1 %101, i1 %102, i1 false
%104 = xor i1 %100, true
%105 = or i1 %87, %104
%106 = select i1 %103, i1 %105, i1 false
%107 = or i1 %87, %100
%108 = select i1 %106, i1 %107, i1 false
br i1 %108, label %116, label %109
109: ; preds = %98
%110 = add nsw i32 %90, 1
%111 = tail call i32 @inter_line(i32 %18, i32 %31, i32 %65, i32 %78, i32 %0, i32** %1)
%112 = tail call i32 @inter_line(i32 %18, i32 %46, i32 %65, i32 %92, i32 %0, i32** %1)
%113 = tail call i32 @inter_line(i32 %31, i32 %46, i32 %78, i32 %92, i32 %0, i32** %1)
%114 = tail call i64 @colinear(i32 %111, i32 %112, i32 %113, i32 %0, i32** %1)
%115 = icmp eq i64 %114, 0
br i1 %115, label %177, label %116
116: ; preds = %98, %89, %95, %109
%117 = phi i32 [ %91, %95 ], [ %99, %109 ], [ %91, %89 ], [ %99, %98 ]
%118 = phi i32 [ %90, %95 ], [ %110, %109 ], [ %90, %89 ], [ %90, %98 ]
%119 = add nuw nsw i32 %92, 1
%120 = icmp eq i32 %119, %0
br i1 %120, label %121, label %89
121: ; preds = %116, %73
%122 = phi i32 [ %77, %73 ], [ %88, %116 ]
%123 = phi i32 [ %76, %73 ], [ %82, %116 ]
%124 = phi i32 [ %75, %73 ], [ %117, %116 ]
%125 = phi i32 [ %74, %73 ], [ %118, %116 ]
%126 = add nuw nsw i32 %78, 1
%127 = icmp eq i32 %126, %0
br i1 %127, label %128, label %73
128: ; preds = %121, %58
%129 = phi i32 [ %64, %58 ], [ %72, %121 ]
%130 = phi i32 [ %63, %58 ], [ %122, %121 ]
%131 = phi i32 [ %62, %58 ], [ %69, %121 ]
%132 = phi i32 [ %61, %58 ], [ %123, %121 ]
%133 = phi i32 [ %60, %58 ], [ %124, %121 ]
%134 = phi i32 [ %59, %58 ], [ %125, %121 ]
%135 = add nuw nsw i32 %65, 1
%136 = icmp eq i32 %135, %0
br i1 %136, label %137, label %58
137: ; preds = %128, %37, %49, %52
%138 = phi i32 [ %45, %37 ], [ %45, %49 ], [ %45, %52 ], [ %57, %128 ]
%139 = phi i32 [ %44, %37 ], [ %44, %49 ], [ %44, %52 ], [ %129, %128 ]
%140 = phi i32 [ %43, %37 ], [ %43, %49 ], [ %43, %52 ], [ %130, %128 ]
%141 = phi i32 [ %42, %37 ], [ %42, %49 ], [ %42, %52 ], [ %56, %128 ]
%142 = phi i32 [ %41, %37 ], [ %41, %49 ], [ %41, %52 ], [ %131, %128 ]
%143 = phi i32 [ %40, %37 ], [ %40, %49 ], [ %40, %52 ], [ %132, %128 ]
%144 = phi i32 [ %39, %37 ], [ %39, %49 ], [ %39, %52 ], [ %133, %128 ]
%145 = phi i32 [ %38, %37 ], [ %38, %49 ], [ %38, %52 ], [ %134, %128 ]
%146 = add nuw nsw i32 %46, 1
%147 = icmp eq i32 %146, %0
br i1 %147, label %148, label %37
148: ; preds = %137, %20
%149 = phi i32 [ %30, %20 ], [ %36, %137 ]
%150 = phi i32 [ %29, %20 ], [ %138, %137 ]
%151 = phi i32 [ %28, %20 ], [ %139, %137 ]
%152 = phi i32 [ %27, %20 ], [ %140, %137 ]
%153 = phi i32 [ %26, %20 ], [ %35, %137 ]
%154 = phi i32 [ %25, %20 ], [ %141, %137 ]
%155 = phi i32 [ %24, %20 ], [ %142, %137 ]
%156 = phi i32 [ %23, %20 ], [ %143, %137 ]
%157 = phi i32 [ %22, %20 ], [ %144, %137 ]
%158 = phi i32 [ %21, %20 ], [ %145, %137 ]
%159 = add nuw nsw i32 %31, 1
%160 = icmp eq i32 %159, %0
br i1 %160, label %161, label %20
161: ; preds = %148
%162 = icmp eq i32 %19, %0
br i1 %162, label %163, label %7
163: ; preds = %161, %3
%164 = phi i32 [ 0, %3 ], [ %0, %161 ]
%165 = phi i32 [ 0, %3 ], [ %6, %161 ]
%166 = phi i32 [ 0, %3 ], [ %149, %161 ]
%167 = phi i32 [ 0, %3 ], [ %150, %161 ]
%168 = phi i32 [ 0, %3 ], [ %151, %161 ]
%169 = phi i32 [ 0, %3 ], [ %152, %161 ]
%170 = phi i32 [ 0, %3 ], [ %153, %161 ]
%171 = phi i32 [ 0, %3 ], [ %154, %161 ]
%172 = phi i32 [ 0, %3 ], [ %155, %161 ]
%173 = phi i32 [ 0, %3 ], [ %156, %161 ]
%174 = phi i32 [ 0, %3 ], [ %157, %161 ]
%175 = phi i32 [ 0, %3 ], [ %158, %161 ]
%176 = tail call i32 @fprintf(i32* %2, i8* getelementptr inbounds ([270 x i8], [270 x i8]* @.str, i64 0, i64 0), i32 %164, i32 %165, i32 %170, i32 %166, i32 %171, i32 %167, i32 %172, i32 %168, i32 %173, i32 %169, i32 %174, i32 %175)
br label %177
177: ; preds = %109, %163
%178 = phi i32 [ 1, %163 ], [ 0, %109 ]
ret i32 %178
}