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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
int main() {
  int i;
  for (i = 0; i < 10; i++) {
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
    if (i == 0) {
      printf("1\n");
    } else {
      printf("2\n");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0xa,-0x8(%rbp)
jge    170d <main+0x5fd>
cmpl   $0x0,-0x8(%rbp)
jne    114b <main+0x3b>
lea    0xebf(%rip),%rdi
call   1030 <printf@plt>
jmp    1157 <main+0x47>
lea    0xeb1(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1172 <main+0x62>
lea    0xe98(%rip),%rdi
call   1030 <printf@plt>
jmp    117e <main+0x6e>
lea    0xe8a(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1199 <main+0x89>
lea    0xe71(%rip),%rdi
call   1030 <printf@plt>
jmp    11a5 <main+0x95>
lea    0xe63(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    11c0 <main+0xb0>
lea    0xe4a(%rip),%rdi
call   1030 <printf@plt>
jmp    11cc <main+0xbc>
lea    0xe3c(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    11e7 <main+0xd7>
lea    0xe23(%rip),%rdi
call   1030 <printf@plt>
jmp    11f3 <main+0xe3>
lea    0xe15(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    120e <main+0xfe>
lea    0xdfc(%rip),%rdi
call   1030 <printf@plt>
jmp    121a <main+0x10a>
lea    0xdee(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1235 <main+0x125>
lea    0xdd5(%rip),%rdi
call   1030 <printf@plt>
jmp    1241 <main+0x131>
lea    0xdc7(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    125c <main+0x14c>
lea    0xdae(%rip),%rdi
call   1030 <printf@plt>
jmp    1268 <main+0x158>
lea    0xda0(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1283 <main+0x173>
lea    0xd87(%rip),%rdi
call   1030 <printf@plt>
jmp    128f <main+0x17f>
lea    0xd79(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    12aa <main+0x19a>
lea    0xd60(%rip),%rdi
call   1030 <printf@plt>
jmp    12b6 <main+0x1a6>
lea    0xd52(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    12d1 <main+0x1c1>
lea    0xd39(%rip),%rdi
call   1030 <printf@plt>
jmp    12dd <main+0x1cd>
lea    0xd2b(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    12f8 <main+0x1e8>
lea    0xd12(%rip),%rdi
call   1030 <printf@plt>
jmp    1304 <main+0x1f4>
lea    0xd04(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    131f <main+0x20f>
lea    0xceb(%rip),%rdi
call   1030 <printf@plt>
jmp    132b <main+0x21b>
lea    0xcdd(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1346 <main+0x236>
lea    0xcc4(%rip),%rdi
call   1030 <printf@plt>
jmp    1352 <main+0x242>
lea    0xcb6(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    136d <main+0x25d>
lea    0xc9d(%rip),%rdi
call   1030 <printf@plt>
jmp    1379 <main+0x269>
lea    0xc8f(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1394 <main+0x284>
lea    0xc76(%rip),%rdi
call   1030 <printf@plt>
jmp    13a0 <main+0x290>
lea    0xc68(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    13bb <main+0x2ab>
lea    0xc4f(%rip),%rdi
call   1030 <printf@plt>
jmp    13c7 <main+0x2b7>
lea    0xc41(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    13e2 <main+0x2d2>
lea    0xc28(%rip),%rdi
call   1030 <printf@plt>
jmp    13ee <main+0x2de>
lea    0xc1a(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1409 <main+0x2f9>
lea    0xc01(%rip),%rdi
call   1030 <printf@plt>
jmp    1415 <main+0x305>
lea    0xbf3(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1430 <main+0x320>
lea    0xbda(%rip),%rdi
call   1030 <printf@plt>
jmp    143c <main+0x32c>
lea    0xbcc(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1457 <main+0x347>
lea    0xbb3(%rip),%rdi
call   1030 <printf@plt>
jmp    1463 <main+0x353>
lea    0xba5(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    147e <main+0x36e>
lea    0xb8c(%rip),%rdi
call   1030 <printf@plt>
jmp    148a <main+0x37a>
lea    0xb7e(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    14a5 <main+0x395>
lea    0xb65(%rip),%rdi
call   1030 <printf@plt>
jmp    14b1 <main+0x3a1>
lea    0xb57(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    14cc <main+0x3bc>
lea    0xb3e(%rip),%rdi
call   1030 <printf@plt>
jmp    14d8 <main+0x3c8>
lea    0xb30(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    14f3 <main+0x3e3>
lea    0xb17(%rip),%rdi
call   1030 <printf@plt>
jmp    14ff <main+0x3ef>
lea    0xb09(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    151a <main+0x40a>
lea    0xaf0(%rip),%rdi
call   1030 <printf@plt>
jmp    1526 <main+0x416>
lea    0xae2(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1541 <main+0x431>
lea    0xac9(%rip),%rdi
call   1030 <printf@plt>
jmp    154d <main+0x43d>
lea    0xabb(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1568 <main+0x458>
lea    0xaa2(%rip),%rdi
call   1030 <printf@plt>
jmp    1574 <main+0x464>
lea    0xa94(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    158f <main+0x47f>
lea    0xa7b(%rip),%rdi
call   1030 <printf@plt>
jmp    159b <main+0x48b>
lea    0xa6d(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    15b6 <main+0x4a6>
lea    0xa54(%rip),%rdi
call   1030 <printf@plt>
jmp    15c2 <main+0x4b2>
lea    0xa46(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    15dd <main+0x4cd>
lea    0xa2d(%rip),%rdi
call   1030 <printf@plt>
jmp    15e9 <main+0x4d9>
lea    0xa1f(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1604 <main+0x4f4>
lea    0xa06(%rip),%rdi
call   1030 <printf@plt>
jmp    1610 <main+0x500>
lea    0x9f8(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    162b <main+0x51b>
lea    0x9df(%rip),%rdi
call   1030 <printf@plt>
jmp    1637 <main+0x527>
lea    0x9d1(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1652 <main+0x542>
lea    0x9b8(%rip),%rdi
call   1030 <printf@plt>
jmp    165e <main+0x54e>
lea    0x9aa(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    1679 <main+0x569>
lea    0x991(%rip),%rdi
call   1030 <printf@plt>
jmp    1685 <main+0x575>
lea    0x983(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    16a0 <main+0x590>
lea    0x96a(%rip),%rdi
call   1030 <printf@plt>
jmp    16ac <main+0x59c>
lea    0x95c(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    16c7 <main+0x5b7>
lea    0x943(%rip),%rdi
call   1030 <printf@plt>
jmp    16d3 <main+0x5c3>
lea    0x935(%rip),%rdi
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
jne    16ee <main+0x5de>
lea    0x91c(%rip),%rdi
call   1030 <printf@plt>
jmp    16fa <main+0x5ea>
lea    0x90e(%rip),%rdi
call   1030 <printf@plt>
jmp    16ff <main+0x5ef>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1126 <main+0x16>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    $0xa,%ebp
lea    0xedf(%rip),%r14
lea    0xed6(%rip),%r15
nopw   0x0(%rax,%rax,1)
cmp    $0xa,%ebp
mov    %r15,%rbx
cmove  %r14,%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
add    $0xffffffff,%ebp
jne    1130 <main+0x20>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@str.38 = [2 x i8] c"2\00"
@str.76 = [2 x i8] c"1\00"
define i32 @main() {
br label %1
1: ; preds = %0, %1
%2 = phi i32 [ 0, %0 ], [ %80, %1 ]
%3 = icmp eq i32 %2, 0
%4 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%5 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%6 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%7 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%8 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%9 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%10 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%11 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%12 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%13 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%14 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%15 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%16 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%17 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%18 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%19 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%20 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%21 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%22 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%23 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%24 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%25 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%26 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%27 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%28 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%29 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%30 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%31 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%32 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%33 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%34 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%35 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%36 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%37 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%38 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%39 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%40 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%41 = select i1 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.76, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0)
%42 = tail call i32 @puts(i8* dereferenceable(1) %4)
%43 = tail call i32 @puts(i8* dereferenceable(1) %5)
%44 = tail call i32 @puts(i8* dereferenceable(1) %6)
%45 = tail call i32 @puts(i8* dereferenceable(1) %7)
%46 = tail call i32 @puts(i8* dereferenceable(1) %8)
%47 = tail call i32 @puts(i8* dereferenceable(1) %9)
%48 = tail call i32 @puts(i8* dereferenceable(1) %10)
%49 = tail call i32 @puts(i8* dereferenceable(1) %11)
%50 = tail call i32 @puts(i8* dereferenceable(1) %12)
%51 = tail call i32 @puts(i8* dereferenceable(1) %13)
%52 = tail call i32 @puts(i8* dereferenceable(1) %14)
%53 = tail call i32 @puts(i8* dereferenceable(1) %15)
%54 = tail call i32 @puts(i8* dereferenceable(1) %16)
%55 = tail call i32 @puts(i8* dereferenceable(1) %17)
%56 = tail call i32 @puts(i8* dereferenceable(1) %18)
%57 = tail call i32 @puts(i8* dereferenceable(1) %19)
%58 = tail call i32 @puts(i8* dereferenceable(1) %20)
%59 = tail call i32 @puts(i8* dereferenceable(1) %21)
%60 = tail call i32 @puts(i8* dereferenceable(1) %22)
%61 = tail call i32 @puts(i8* dereferenceable(1) %23)
%62 = tail call i32 @puts(i8* dereferenceable(1) %24)
%63 = tail call i32 @puts(i8* dereferenceable(1) %25)
%64 = tail call i32 @puts(i8* dereferenceable(1) %26)
%65 = tail call i32 @puts(i8* dereferenceable(1) %27)
%66 = tail call i32 @puts(i8* dereferenceable(1) %28)
%67 = tail call i32 @puts(i8* dereferenceable(1) %29)
%68 = tail call i32 @puts(i8* dereferenceable(1) %30)
%69 = tail call i32 @puts(i8* dereferenceable(1) %31)
%70 = tail call i32 @puts(i8* dereferenceable(1) %32)
%71 = tail call i32 @puts(i8* dereferenceable(1) %33)
%72 = tail call i32 @puts(i8* dereferenceable(1) %34)
%73 = tail call i32 @puts(i8* dereferenceable(1) %35)
%74 = tail call i32 @puts(i8* dereferenceable(1) %36)
%75 = tail call i32 @puts(i8* dereferenceable(1) %37)
%76 = tail call i32 @puts(i8* dereferenceable(1) %38)
%77 = tail call i32 @puts(i8* dereferenceable(1) %39)
%78 = tail call i32 @puts(i8* dereferenceable(1) %40)
%79 = tail call i32 @puts(i8* dereferenceable(1) %41)
%80 = add nuw nsw i32 %2, 1
%81 = icmp eq i32 %80, 10
br i1 %81, label %82, label %1
82: ; preds = %1
ret i32 0
}