#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*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ f(int, int);
int main() {
  int a = 7, b = 6, c = 4, d = 7, e = 2;
  f(a || b % c, 1);
  f(a ? b % c : 0, 2);
  f(a = b % c, 2);
  f(a *= b % c, 4);
  f(a /= b % c, 2);
  f(a %= b % c, 0);
  f(a += b % c, 2);
  f(d || c && e, 1);
  f(d ? c && e : 0, 1);
  f(d = c && e, 1);
  f(d *= c && e, 1);
  f(d %= c && e, 0);
  f(d += c && e, 1);
  f(d -= c && e, 0);
  f(d || c || e, 1);
  f(d ? c || e : 0, 0);
  f(d = c || e, 1);
  f(d *= c || e, 1);
  f(d %= c || e, 0);
  f(d += c || e, 1);
  f(d -= c || e, 0);
  exit(0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x7,-0x8(%rbp)
movl   $0x6,-0xc(%rbp)
movl   $0x4,-0x10(%rbp)
movl   $0x7,-0x14(%rbp)
movl   $0x2,-0x18(%rbp)
mov    $0x1,%al
cmpl   $0x0,-0x8(%rbp)
mov    %al,-0x19(%rbp)
jne    1171 <main+0x51>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
cmp    $0x0,%edx
setne  %al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x8(%rbp)
je     119c <main+0x7c>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x20(%rbp)
jmp    11a6 <main+0x86>
xor    %eax,%eax
mov    %eax,-0x20(%rbp)
jmp    11a6 <main+0x86>
mov    -0x20(%rbp),%edi
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,%edi
mov    %edi,-0x8(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,%edi
imul   -0x8(%rbp),%edi
mov    %edi,-0x8(%rbp)
mov    $0x4,%esi
call   1030 <f@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,%ecx
mov    -0x8(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,%edi
mov    %edi,-0x8(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,%ecx
mov    -0x8(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x8(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,%edi
add    -0x8(%rbp),%edi
mov    %edi,-0x8(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x14(%rbp)
mov    %al,-0x21(%rbp)
jne    1263 <main+0x143>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x22(%rbp)
je     125d <main+0x13d>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x22(%rbp)
mov    -0x22(%rbp),%al
mov    %al,-0x21(%rbp)
mov    -0x21(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x14(%rbp)
je     12a8 <main+0x188>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x23(%rbp)
je     1298 <main+0x178>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x23(%rbp)
mov    -0x23(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x28(%rbp)
jmp    12b2 <main+0x192>
xor    %eax,%eax
mov    %eax,-0x28(%rbp)
jmp    12b2 <main+0x192>
mov    -0x28(%rbp),%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x29(%rbp)
je     12d8 <main+0x1b8>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2a(%rbp)
je     1306 <main+0x1e6>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
imul   -0x14(%rbp),%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2b(%rbp)
je     1338 <main+0x218>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
and    $0x1,%al
movzbl %al,%ecx
mov    -0x14(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x14(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2c(%rbp)
je     136b <main+0x24b>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2c(%rbp)
mov    -0x2c(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
add    -0x14(%rbp),%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2d(%rbp)
je     139c <main+0x27c>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    -0x14(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0x14(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x14(%rbp)
mov    %al,-0x2e(%rbp)
jne    13db <main+0x2bb>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2e(%rbp)
jne    13db <main+0x2bb>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x14(%rbp)
je     1420 <main+0x300>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2f(%rbp)
jne    1410 <main+0x2f0>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x2f(%rbp)
mov    -0x2f(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
jmp    142a <main+0x30a>
xor    %eax,%eax
mov    %eax,-0x34(%rbp)
jmp    142a <main+0x30a>
mov    -0x34(%rbp),%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x35(%rbp)
jne    144d <main+0x32d>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x36(%rbp)
jne    147b <main+0x35b>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x36(%rbp)
mov    -0x36(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
imul   -0x14(%rbp),%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x37(%rbp)
jne    14ad <main+0x38d>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x37(%rbp)
mov    -0x37(%rbp),%al
and    $0x1,%al
movzbl %al,%ecx
mov    -0x14(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x14(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x38(%rbp)
jne    14e0 <main+0x3c0>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x38(%rbp)
mov    -0x38(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
add    -0x14(%rbp),%edi
mov    %edi,-0x14(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x39(%rbp)
jne    1511 <main+0x3f1>
cmpl   $0x0,-0x18(%rbp)
setne  %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    -0x14(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0x14(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<main>:
push   %rax
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x2,%edi
mov    $0x2,%esi
call   1030 <f@plt>
mov    $0x2,%edi
mov    $0x2,%esi
call   1030 <f@plt>
mov    $0x4,%edi
mov    $0x4,%esi
call   1030 <f@plt>
mov    $0x2,%edi
mov    $0x2,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x2,%edi
mov    $0x2,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %edi,%edi
xor    %esi,%esi
call   1030 <f@plt>
xor    %edi,%edi
call   1040 <exit@plt>

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

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 @f(i32 1, i32 1)
%2 = tail call i32 @f(i32 2, i32 2)
%3 = tail call i32 @f(i32 2, i32 2)
%4 = tail call i32 @f(i32 4, i32 4)
%5 = tail call i32 @f(i32 2, i32 2)
%6 = tail call i32 @f(i32 0, i32 0)
%7 = tail call i32 @f(i32 2, i32 2)
%8 = tail call i32 @f(i32 1, i32 1)
%9 = tail call i32 @f(i32 1, i32 1)
%10 = tail call i32 @f(i32 1, i32 1)
%11 = tail call i32 @f(i32 1, i32 1)
%12 = tail call i32 @f(i32 0, i32 0)
%13 = tail call i32 @f(i32 1, i32 1)
%14 = tail call i32 @f(i32 0, i32 0)
%15 = tail call i32 @f(i32 1, i32 1)
%16 = tail call i32 @f(i32 0, i32 0)
%17 = tail call i32 @f(i32 1, i32 1)
%18 = tail call i32 @f(i32 1, i32 1)
%19 = tail call i32 @f(i32 0, i32 0)
%20 = tail call i32 @f(i32 1, i32 1)
%21 = tail call i32 @f(i32 0, i32 0)
%22 = tail call i32 @exit(i32 0)
unreachable
}