int main() {
  int x;
  x = 0;
  x = x + 2;
  x = x - 1;
  x = x * 6;
  x = x / 2;
  x = x % 2;
  x = x << 2;
  x = x >> 1;
  x = x | 255;
  x = x & 3;
  x = x ^ 1;
  if (x != 2)
    return 1;
  if (!(x == 2))
    return 2;
  if (x == 3)
    return 3;
  if (x != 2)
    return 4;
  if (!(x != 3))
    return 5;
  if (x < 1)
    return 6;
  if (x < 2)
    return 7;
  if (!(x < 3))
    return 8;
  if (!(x > 1))
    return 9;
  if (x > 2)
    return 10;
  if (x > 3)
    return 11;
  if (x <= 1)
    return 12;
  if (!(x <= 2))
    return 13;
  if (!(x <= 3))
    return 14;
  if (!(x >= 1))
    return 15;
  if (!(x >= 2))
    return 16;
  if (x >= 3)
    return 17;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x8(%rbp)
imul   $0x6,-0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x8(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x2,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
or     $0xff,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
and    $0x3,%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
xor    $0x1,%eax
mov    %eax,-0x8(%rbp)
cmpl   $0x2,-0x8(%rbp)
je     118c <main+0x8c>
movl   $0x1,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
je     11a2 <main+0xa2>
movl   $0x2,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jne    11b8 <main+0xb8>
movl   $0x3,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
je     11ce <main+0xce>
movl   $0x4,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jne    11e4 <main+0xe4>
movl   $0x5,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x1,-0x8(%rbp)
jge    11fa <main+0xfa>
movl   $0x6,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
jge    1210 <main+0x110>
movl   $0x7,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jl     1226 <main+0x126>
movl   $0x8,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x1,-0x8(%rbp)
jg     123c <main+0x13c>
movl   $0x9,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
jle    1252 <main+0x152>
movl   $0xa,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jle    1268 <main+0x168>
movl   $0xb,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x1,-0x8(%rbp)
jg     127e <main+0x17e>
movl   $0xc,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
jle    1294 <main+0x194>
movl   $0xd,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jle    12aa <main+0x1aa>
movl   $0xe,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x1,-0x8(%rbp)
jge    12c0 <main+0x1c0>
movl   $0xf,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x2,-0x8(%rbp)
jge    12d6 <main+0x1d6>
movl   $0x10,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
cmpl   $0x3,-0x8(%rbp)
jl     12ec <main+0x1ec>
movl   $0x11,-0x4(%rbp)
jmp    12f3 <main+0x1f3>
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
store i32 0, i32* %2
%3 = load i32, i32* %2
%4 = add nsw i32 %3, 2
store i32 %4, i32* %2
%5 = load i32, i32* %2
%6 = sub nsw i32 %5, 1
store i32 %6, i32* %2
%7 = load i32, i32* %2
%8 = mul nsw i32 %7, 6
store i32 %8, i32* %2
%9 = load i32, i32* %2
%10 = sdiv i32 %9, 2
store i32 %10, i32* %2
%11 = load i32, i32* %2
%12 = srem i32 %11, 2
store i32 %12, i32* %2
%13 = load i32, i32* %2
%14 = shl i32 %13, 2
store i32 %14, i32* %2
%15 = load i32, i32* %2
%16 = ashr i32 %15, 1
store i32 %16, i32* %2
%17 = load i32, i32* %2
%18 = or i32 %17, 255
store i32 %18, i32* %2
%19 = load i32, i32* %2
%20 = and i32 %19, 3
store i32 %20, i32* %2
%21 = load i32, i32* %2
%22 = xor i32 %21, 1
store i32 %22, i32* %2
%23 = load i32, i32* %2
%24 = icmp ne i32 %23, 2
br i1 %24, label %25, label %26
25: ; preds = %0
store i32 1, i32* %1
br label %91
26: ; preds = %0
%27 = load i32, i32* %2
%28 = icmp eq i32 %27, 2
br i1 %28, label %30, label %29
29: ; preds = %26
store i32 2, i32* %1
br label %91
30: ; preds = %26
%31 = load i32, i32* %2
%32 = icmp eq i32 %31, 3
br i1 %32, label %33, label %34
33: ; preds = %30
store i32 3, i32* %1
br label %91
34: ; preds = %30
%35 = load i32, i32* %2
%36 = icmp ne i32 %35, 2
br i1 %36, label %37, label %38
37: ; preds = %34
store i32 4, i32* %1
br label %91
38: ; preds = %34
%39 = load i32, i32* %2
%40 = icmp ne i32 %39, 3
br i1 %40, label %42, label %41
41: ; preds = %38
store i32 5, i32* %1
br label %91
42: ; preds = %38
%43 = load i32, i32* %2
%44 = icmp slt i32 %43, 1
br i1 %44, label %45, label %46
45: ; preds = %42
store i32 6, i32* %1
br label %91
46: ; preds = %42
%47 = load i32, i32* %2
%48 = icmp slt i32 %47, 2
br i1 %48, label %49, label %50
49: ; preds = %46
store i32 7, i32* %1
br label %91
50: ; preds = %46
%51 = load i32, i32* %2
%52 = icmp slt i32 %51, 3
br i1 %52, label %54, label %53
53: ; preds = %50
store i32 8, i32* %1
br label %91
54: ; preds = %50
%55 = load i32, i32* %2
%56 = icmp sgt i32 %55, 1
br i1 %56, label %58, label %57
57: ; preds = %54
store i32 9, i32* %1
br label %91
58: ; preds = %54
%59 = load i32, i32* %2
%60 = icmp sgt i32 %59, 2
br i1 %60, label %61, label %62
61: ; preds = %58
store i32 10, i32* %1
br label %91
62: ; preds = %58
%63 = load i32, i32* %2
%64 = icmp sgt i32 %63, 3
br i1 %64, label %65, label %66
65: ; preds = %62
store i32 11, i32* %1
br label %91
66: ; preds = %62
%67 = load i32, i32* %2
%68 = icmp sle i32 %67, 1
br i1 %68, label %69, label %70
69: ; preds = %66
store i32 12, i32* %1
br label %91
70: ; preds = %66
%71 = load i32, i32* %2
%72 = icmp sle i32 %71, 2
br i1 %72, label %74, label %73
73: ; preds = %70
store i32 13, i32* %1
br label %91
74: ; preds = %70
%75 = load i32, i32* %2
%76 = icmp sle i32 %75, 3
br i1 %76, label %78, label %77
77: ; preds = %74
store i32 14, i32* %1
br label %91
78: ; preds = %74
%79 = load i32, i32* %2
%80 = icmp sge i32 %79, 1
br i1 %80, label %82, label %81
81: ; preds = %78
store i32 15, i32* %1
br label %91
82: ; preds = %78
%83 = load i32, i32* %2
%84 = icmp sge i32 %83, 2
br i1 %84, label %86, label %85
85: ; preds = %82
store i32 16, i32* %1
br label %91
86: ; preds = %82
%87 = load i32, i32* %2
%88 = icmp sge i32 %87, 3
br i1 %88, label %89, label %90
89: ; preds = %86
store i32 17, i32* %1
br label %91
90: ; preds = %86
store i32 0, i32* %1
br label %91
91: ; preds = %90, %89, %85, %81, %77, %73, %69, %65, %61, %57, %53, %49, %45, %41, %37, %33, %29, %25
%92 = load i32, i32* %1
ret i32 %92
}

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