int main(void) {
  int i;
  if (i == 0) {
    i++;
    i++;
    return 1;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
  if (i == 0) {
    i++;
    i++;
  } else {
  }
U:
  if (i == 1) {
  L0:
    if (i < 4)
      goto L0;
  } else if (i == 2) {
  L1:
    if (i < 4)
      goto L1;
  } else if (i == 3) {
  L2:
    if (i < 4)
      goto L2;
  } else if (i == 4) {
  L3:
    if (i < 4)
      goto L3;
  }
  if (i == 1) {
  L10:
    if (i < 4)
      goto L10;
  } else if (i == 2) {
  L11:
    if (i < 4)
      goto L11;
  } else if (i == 3) {
  L12:
    if (i < 4)
      goto L12;
  } else if (i == 4) {
  L13:
    if (i < 4)
      goto L13;
  }
  if (i < 6)
    goto U;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    1133 <main+0x33>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
movl   $0x1,-0x4(%rbp)
jmp    136d <main+0x26d>
jmp    1138 <main+0x38>
cmpl   $0x0,-0x8(%rbp)
jne    1159 <main+0x59>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    115e <main+0x5e>
jmp    115e <main+0x5e>
cmpl   $0x0,-0x8(%rbp)
jne    117f <main+0x7f>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1184 <main+0x84>
jmp    1184 <main+0x84>
cmpl   $0x0,-0x8(%rbp)
jne    11a5 <main+0xa5>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11aa <main+0xaa>
jmp    11aa <main+0xaa>
cmpl   $0x0,-0x8(%rbp)
jne    11cb <main+0xcb>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11d0 <main+0xd0>
jmp    11d0 <main+0xd0>
cmpl   $0x0,-0x8(%rbp)
jne    11f1 <main+0xf1>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11f6 <main+0xf6>
jmp    11f6 <main+0xf6>
cmpl   $0x0,-0x8(%rbp)
jne    1217 <main+0x117>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    121c <main+0x11c>
jmp    121c <main+0x11c>
jmp    1221 <main+0x121>
cmpl   $0x1,-0x8(%rbp)
jne    1244 <main+0x144>
jmp    1230 <main+0x130>
cmpl   $0x4,-0x8(%rbp)
jge    123f <main+0x13f>
jmp    1230 <main+0x130>
jmp    12bc <main+0x1bc>
cmpl   $0x2,-0x8(%rbp)
jne    1267 <main+0x167>
jmp    1253 <main+0x153>
cmpl   $0x4,-0x8(%rbp)
jge    1262 <main+0x162>
jmp    1253 <main+0x153>
jmp    12b7 <main+0x1b7>
cmpl   $0x3,-0x8(%rbp)
jne    128a <main+0x18a>
jmp    1276 <main+0x176>
cmpl   $0x4,-0x8(%rbp)
jge    1285 <main+0x185>
jmp    1276 <main+0x176>
jmp    12b2 <main+0x1b2>
cmpl   $0x4,-0x8(%rbp)
jne    12ad <main+0x1ad>
jmp    1299 <main+0x199>
cmpl   $0x4,-0x8(%rbp)
jge    12a8 <main+0x1a8>
jmp    1299 <main+0x199>
jmp    12ad <main+0x1ad>
jmp    12b2 <main+0x1b2>
jmp    12b7 <main+0x1b7>
jmp    12bc <main+0x1bc>
cmpl   $0x1,-0x8(%rbp)
jne    12df <main+0x1df>
jmp    12cb <main+0x1cb>
cmpl   $0x4,-0x8(%rbp)
jge    12da <main+0x1da>
jmp    12cb <main+0x1cb>
jmp    1357 <main+0x257>
cmpl   $0x2,-0x8(%rbp)
jne    1302 <main+0x202>
jmp    12ee <main+0x1ee>
cmpl   $0x4,-0x8(%rbp)
jge    12fd <main+0x1fd>
jmp    12ee <main+0x1ee>
jmp    1352 <main+0x252>
cmpl   $0x3,-0x8(%rbp)
jne    1325 <main+0x225>
jmp    1311 <main+0x211>
cmpl   $0x4,-0x8(%rbp)
jge    1320 <main+0x220>
jmp    1311 <main+0x211>
jmp    134d <main+0x24d>
cmpl   $0x4,-0x8(%rbp)
jne    1348 <main+0x248>
jmp    1334 <main+0x234>
cmpl   $0x4,-0x8(%rbp)
jge    1343 <main+0x243>
jmp    1334 <main+0x234>
jmp    1348 <main+0x248>
jmp    134d <main+0x24d>
jmp    1352 <main+0x252>
jmp    1357 <main+0x257>
cmpl   $0x6,-0x8(%rbp)
jge    1366 <main+0x266>
jmp    1221 <main+0x121>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @main() {
ret i32 0
}