#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 EXIT_SUCCESS;
int /*<<< orphan*/ printf(char *, ...);
int main(int argc, char **argv) {
  int i, j;
  int diagonal[15][15];
  for (i = 0; i < 15; i++) {
    for (j = 0; j < 15; j++)
      if (i == j)
        printf("%3d", diagonal[i][j] = 1);
      else
        printf("%3d", diagonal[i][j] = 0);
    printf("\n");
  }
  printf("\n");
  for (i = 0; i < 15; i++) {
    for (j = 0; j < 15; j++)
      if (i + j == 15 - 1)
        printf("%3d", diagonal[i][j] = 1);
      else
        printf("%3d", diagonal[i][j] = 0);
    printf("\n");
  }
  printf("\n");
  for (i = 0; i < 15; i++) {
    for (j = 0; j < 15; j++)
      if (i == j || i + j == 15 - 1)
        printf("%3d", diagonal[i][j] = 1);
      else
        printf("%3d", diagonal[i][j] = 0);
    printf("\n");
  }
  printf("\n");
  for (i = 0; i < 15; i++) {
    for (j = 0; j < 15; j++) {
      if (i == 0 || i == 15 - 1 || j == 0 || j == 15 - 1)
        printf("%3d", diagonal[i][j] = 1);
      else
        printf("%3d", diagonal[i][j] = 0);
    }
    printf("\n");
  }
  printf("\n");
  for (i = 0; i < 15; i++) {
    for (j = 0; j < 15; j++) {
      if (i == 0 || i == 15 - 1 || j == 0 || j == 15 - 1 || i == j ||
          i + j == 15 - 1)
        printf("%3d", diagonal[i][j] = 1);
      else
        printf("%3d", diagonal[i][j] = 0);
    }
    printf("\n");
  }
  return (EXIT_SUCCESS);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3a0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0xf,-0x14(%rbp)
jge    11e8 <main+0xd8>
movl   $0x0,-0x18(%rbp)
cmpl   $0xf,-0x18(%rbp)
jge    11cc <main+0xbc>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jne    118c <main+0x7c>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
lea    0xe85(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11b9 <main+0xa9>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
lea    0xe50(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11be <main+0xae>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1141 <main+0x31>
lea    0xe31(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1130 <main+0x20>
lea    0xe15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xf,-0x14(%rbp)
jge    12b8 <main+0x1a8>
movl   $0x0,-0x18(%rbp)
cmpl   $0xf,-0x18(%rbp)
jge    129c <main+0x18c>
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
cmp    $0xe,%eax
jne    125c <main+0x14c>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
lea    0xdb5(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1289 <main+0x179>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
lea    0xd80(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    128e <main+0x17e>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    120e <main+0xfe>
lea    0xd61(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11fd <main+0xed>
lea    0xd45(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xf,-0x14(%rbp)
jge    1394 <main+0x284>
movl   $0x0,-0x18(%rbp)
cmpl   $0xf,-0x18(%rbp)
jge    1378 <main+0x268>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     1303 <main+0x1f3>
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
cmp    $0xe,%eax
jne    1338 <main+0x228>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
lea    0xcd9(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1365 <main+0x255>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
lea    0xca4(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    136a <main+0x25a>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    12de <main+0x1ce>
lea    0xc85(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12cd <main+0x1bd>
lea    0xc69(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xf,-0x14(%rbp)
jge    147d <main+0x36d>
movl   $0x0,-0x18(%rbp)
cmpl   $0xf,-0x18(%rbp)
jge    1461 <main+0x351>
cmpl   $0x0,-0x14(%rbp)
je     13ec <main+0x2dc>
cmpl   $0xe,-0x14(%rbp)
je     13ec <main+0x2dc>
cmpl   $0x0,-0x18(%rbp)
je     13ec <main+0x2dc>
cmpl   $0xe,-0x18(%rbp)
jne    1421 <main+0x311>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
lea    0xbf0(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    144e <main+0x33e>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
lea    0xbbb(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1453 <main+0x343>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    13ba <main+0x2aa>
lea    0xb9c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13a9 <main+0x299>
lea    0xb80(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xf,-0x14(%rbp)
jge    1581 <main+0x471>
movl   $0x0,-0x18(%rbp)
cmpl   $0xf,-0x18(%rbp)
jge    1565 <main+0x455>
cmpl   $0x0,-0x14(%rbp)
je     14f0 <main+0x3e0>
cmpl   $0xe,-0x14(%rbp)
je     14f0 <main+0x3e0>
cmpl   $0x0,-0x18(%rbp)
je     14f0 <main+0x3e0>
cmpl   $0xe,-0x18(%rbp)
je     14f0 <main+0x3e0>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     14f0 <main+0x3e0>
mov    -0x14(%rbp),%eax
add    -0x18(%rbp),%eax
cmp    $0xe,%eax
jne    1525 <main+0x415>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
lea    0xaec(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1552 <main+0x442>
movslq -0x14(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
imul   $0x3c,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
lea    0xab7(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1557 <main+0x447>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    14a3 <main+0x393>
lea    0xa98(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1492 <main+0x382>
mov    0x2a58(%rip),%rax
mov    (%rax),%eax
add    $0x3a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    $0xe,%r15d
lea    0xec5(%rip),%r14
jmp    121f <main+0xff>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebx,%ebx
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%r15d
cmp    $0xe,%r15d
je     1140 <main+0x20>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0xd,%r15d
je     1151 <main+0x31>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0xc,%r15d
je     115f <main+0x3f>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0xb,%r15d
je     116d <main+0x4d>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0xa,%r15d
je     117b <main+0x5b>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0x9,%r15d
je     1189 <main+0x69>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0x8,%r15d
je     1197 <main+0x77>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0x7,%r15d
je     11a5 <main+0x85>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0x6,%r15d
je     11b3 <main+0x93>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0x5,%r15d
je     11c1 <main+0xa1>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0x4,%r15d
je     11cf <main+0xaf>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0x3,%r15d
je     11dd <main+0xbd>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebx
cmp    $0x2,%r15d
je     11eb <main+0xcb>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%ebp
cmp    $0x1,%r15d
je     11f9 <main+0xd9>
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
test   %r15d,%r15d
jne    1205 <main+0xe5>
lea    0xc5c(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %ebp,%ebp
nopl   0x0(%rax)
xor    %esi,%esi
cmp    $0xfffffff2,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff3,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff4,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff5,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff6,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff7,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff8,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffff9,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffffa,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffffb,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffffc,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffffd,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xfffffffe,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0xffffffff,%ebp
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
sub    $0x1,%ebp
setb   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
cmp    $0xfffffff1,%ebp
jne    13d0 <main+0x2b0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xaef(%rip),%rbx
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
test   %r12d,%r12d
sete   %al
cmp    $0xe,%r12d
sete   %cl
or     %al,%cl
movzbl %cl,%esi
mov    %esi,0x14(%rsp)
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x1,%r12d
sete   %al
cmp    $0xd,%r12d
sete   %cl
or     %al,%cl
movzbl %cl,%esi
mov    %esi,0x10(%rsp)
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%r12d
sete   %al
cmp    $0xc,%r12d
sete   %cl
or     %al,%cl
movzbl %cl,%esi
mov    %esi,0xc(%rsp)
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r12d,%eax
and    $0x7ffffff7,%eax
xor    %ebp,%ebp
cmp    $0x3,%eax
sete   %bpl
mov    %rbx,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x4,%r12d
sete   %al
cmp    $0xa,%r12d
sete   %cl
or     %al,%cl
movzbl %cl,%r13d
mov    %rbx,%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    -0x5(%r12),%eax
xor    %r14d,%r14d
test   $0xfffffffb,%eax
sete   %r14b
mov    %rbx,%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    -0x6(%r12),%eax
xor    %r15d,%r15d
test   $0xfffffffd,%eax
sete   %r15b
mov    %rbx,%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %esi,%esi
cmp    $0x7,%r12d
sete   %sil
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    0xc(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    0x10(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    0x14(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%r12d
cmp    $0xf,%r12d
jne    1520 <main+0x400>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xf,%r15d
lea    0x964(%rip),%r14
nopl   0x0(%rax)
cmp    $0xf,%r15d
sete   %al
cmp    $0x1,%r15d
sete   %bl
or     %al,%bl
mov    %r14,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
movzbl %bl,%ebp
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%r15d
jne    16a0 <main+0x580>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x86e(%rip),%r14
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
test   %ebp,%ebp
sete   %al
cmp    $0xe,%ebp
sete   %r15b
or     %al,%r15b
mov    $0xe,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rax,%rbp,1),%esi
cmp    $0xe,%eax
sete   %dl
or     %r15b,%dl
mov    %eax,%ebx
sub    $0x1,%ebx
setb   %cl
or     %dl,%cl
cmp    $0xe,%esi
sete   %dl
cmp    %eax,%ebp
sete   %al
or     %dl,%al
or     %cl,%al
movzbl %al,%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
cmp    $0xffffffff,%ebx
jne    17c0 <main+0x6a0>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    $0xf,%ebp
jne    17a0 <main+0x680>
mov    0x27ce(%rip),%rax
mov    (%rax),%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%3d\00"
@.str.1 = [2 x i8] c"\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca [15 x [15 x i32]]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %6
br label %9
9: ; preds = %42, %2
%10 = load i32, i32* %6
%11 = icmp slt i32 %10, 15
br i1 %11, label %12, label %45
12: ; preds = %9
store i32 0, i32* %7
br label %13
13: ; preds = %37, %12
%14 = load i32, i32* %7
%15 = icmp slt i32 %14, 15
br i1 %15, label %16, label %40
16: ; preds = %13
%17 = load i32, i32* %6
%18 = load i32, i32* %7
%19 = icmp eq i32 %17, %18
br i1 %19, label %20, label %28
20: ; preds = %16
%21 = load i32, i32* %6
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %22
%24 = load i32, i32* %7
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [15 x i32], [15 x i32]* %23, i64 0, i64 %25
store i32 1, i32* %26
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 1)
br label %36
28: ; preds = %16
%29 = load i32, i32* %6
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %30
%32 = load i32, i32* %7
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [15 x i32], [15 x i32]* %31, i64 0, i64 %33
store i32 0, i32* %34
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 0)
br label %36
36: ; preds = %28, %20
br label %37
37: ; preds = %36
%38 = load i32, i32* %7
%39 = add nsw i32 %38, 1
store i32 %39, i32* %7
br label %13
40: ; preds = %13
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %42
42: ; preds = %40
%43 = load i32, i32* %6
%44 = add nsw i32 %43, 1
store i32 %44, i32* %6
br label %9
45: ; preds = %9
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %6
br label %47
47: ; preds = %81, %45
%48 = load i32, i32* %6
%49 = icmp slt i32 %48, 15
br i1 %49, label %50, label %84
50: ; preds = %47
store i32 0, i32* %7
br label %51
51: ; preds = %76, %50
%52 = load i32, i32* %7
%53 = icmp slt i32 %52, 15
br i1 %53, label %54, label %79
54: ; preds = %51
%55 = load i32, i32* %6
%56 = load i32, i32* %7
%57 = add nsw i32 %55, %56
%58 = icmp eq i32 %57, 14
br i1 %58, label %59, label %67
59: ; preds = %54
%60 = load i32, i32* %6
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %61
%63 = load i32, i32* %7
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [15 x i32], [15 x i32]* %62, i64 0, i64 %64
store i32 1, i32* %65
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 1)
br label %75
67: ; preds = %54
%68 = load i32, i32* %6
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %69
%71 = load i32, i32* %7
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds [15 x i32], [15 x i32]* %70, i64 0, i64 %72
store i32 0, i32* %73
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 0)
br label %75
75: ; preds = %67, %59
br label %76
76: ; preds = %75
%77 = load i32, i32* %7
%78 = add nsw i32 %77, 1
store i32 %78, i32* %7
br label %51
79: ; preds = %51
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %81
81: ; preds = %79
%82 = load i32, i32* %6
%83 = add nsw i32 %82, 1
store i32 %83, i32* %6
br label %47
84: ; preds = %47
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %6
br label %86
86: ; preds = %124, %84
%87 = load i32, i32* %6
%88 = icmp slt i32 %87, 15
br i1 %88, label %89, label %127
89: ; preds = %86
store i32 0, i32* %7
br label %90
90: ; preds = %119, %89
%91 = load i32, i32* %7
%92 = icmp slt i32 %91, 15
br i1 %92, label %93, label %122
93: ; preds = %90
%94 = load i32, i32* %6
%95 = load i32, i32* %7
%96 = icmp eq i32 %94, %95
br i1 %96, label %102, label %97
97: ; preds = %93
%98 = load i32, i32* %6
%99 = load i32, i32* %7
%100 = add nsw i32 %98, %99
%101 = icmp eq i32 %100, 14
br i1 %101, label %102, label %110
102: ; preds = %97, %93
%103 = load i32, i32* %6
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %104
%106 = load i32, i32* %7
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [15 x i32], [15 x i32]* %105, i64 0, i64 %107
store i32 1, i32* %108
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 1)
br label %118
110: ; preds = %97
%111 = load i32, i32* %6
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %112
%114 = load i32, i32* %7
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [15 x i32], [15 x i32]* %113, i64 0, i64 %115
store i32 0, i32* %116
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 0)
br label %118
118: ; preds = %110, %102
br label %119
119: ; preds = %118
%120 = load i32, i32* %7
%121 = add nsw i32 %120, 1
store i32 %121, i32* %7
br label %90
122: ; preds = %90
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %124
124: ; preds = %122
%125 = load i32, i32* %6
%126 = add nsw i32 %125, 1
store i32 %126, i32* %6
br label %86
127: ; preds = %86
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %6
br label %129
129: ; preds = %170, %127
%130 = load i32, i32* %6
%131 = icmp slt i32 %130, 15
br i1 %131, label %132, label %173
132: ; preds = %129
store i32 0, i32* %7
br label %133
133: ; preds = %165, %132
%134 = load i32, i32* %7
%135 = icmp slt i32 %134, 15
br i1 %135, label %136, label %168
136: ; preds = %133
%137 = load i32, i32* %6
%138 = icmp eq i32 %137, 0
br i1 %138, label %148, label %139
139: ; preds = %136
%140 = load i32, i32* %6
%141 = icmp eq i32 %140, 14
br i1 %141, label %148, label %142
142: ; preds = %139
%143 = load i32, i32* %7
%144 = icmp eq i32 %143, 0
br i1 %144, label %148, label %145
145: ; preds = %142
%146 = load i32, i32* %7
%147 = icmp eq i32 %146, 14
br i1 %147, label %148, label %156
148: ; preds = %145, %142, %139, %136
%149 = load i32, i32* %6
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %150
%152 = load i32, i32* %7
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds [15 x i32], [15 x i32]* %151, i64 0, i64 %153
store i32 1, i32* %154
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 1)
br label %164
156: ; preds = %145
%157 = load i32, i32* %6
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %158
%160 = load i32, i32* %7
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [15 x i32], [15 x i32]* %159, i64 0, i64 %161
store i32 0, i32* %162
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 0)
br label %164
164: ; preds = %156, %148
br label %165
165: ; preds = %164
%166 = load i32, i32* %7
%167 = add nsw i32 %166, 1
store i32 %167, i32* %7
br label %133
168: ; preds = %133
%169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %170
170: ; preds = %168
%171 = load i32, i32* %6
%172 = add nsw i32 %171, 1
store i32 %172, i32* %6
br label %129
173: ; preds = %129
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %6
br label %175
175: ; preds = %225, %173
%176 = load i32, i32* %6
%177 = icmp slt i32 %176, 15
br i1 %177, label %178, label %228
178: ; preds = %175
store i32 0, i32* %7
br label %179
179: ; preds = %220, %178
%180 = load i32, i32* %7
%181 = icmp slt i32 %180, 15
br i1 %181, label %182, label %223
182: ; preds = %179
%183 = load i32, i32* %6
%184 = icmp eq i32 %183, 0
br i1 %184, label %203, label %185
185: ; preds = %182
%186 = load i32, i32* %6
%187 = icmp eq i32 %186, 14
br i1 %187, label %203, label %188
188: ; preds = %185
%189 = load i32, i32* %7
%190 = icmp eq i32 %189, 0
br i1 %190, label %203, label %191
191: ; preds = %188
%192 = load i32, i32* %7
%193 = icmp eq i32 %192, 14
br i1 %193, label %203, label %194
194: ; preds = %191
%195 = load i32, i32* %6
%196 = load i32, i32* %7
%197 = icmp eq i32 %195, %196
br i1 %197, label %203, label %198
198: ; preds = %194
%199 = load i32, i32* %6
%200 = load i32, i32* %7
%201 = add nsw i32 %199, %200
%202 = icmp eq i32 %201, 14
br i1 %202, label %203, label %211
203: ; preds = %198, %194, %191, %188, %185, %182
%204 = load i32, i32* %6
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %205
%207 = load i32, i32* %7
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds [15 x i32], [15 x i32]* %206, i64 0, i64 %208
store i32 1, i32* %209
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 1)
br label %219
211: ; preds = %198
%212 = load i32, i32* %6
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [15 x [15 x i32]], [15 x [15 x i32]]* %8, i64 0, i64 %213
%215 = load i32, i32* %7
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds [15 x i32], [15 x i32]* %214, i64 0, i64 %216
store i32 0, i32* %217
%218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 0)
br label %219
219: ; preds = %211, %203
br label %220
220: ; preds = %219
%221 = load i32, i32* %7
%222 = add nsw i32 %221, 1
store i32 %222, i32* %7
br label %179
223: ; preds = %179
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %225
225: ; preds = %223
%226 = load i32, i32* %6
%227 = add nsw i32 %226, 1
store i32 %227, i32* %6
br label %175
228: ; preds = %175
%229 = load i32, i32* @EXIT_SUCCESS
ret i32 %229
}

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