#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*/ f(int, int);
void testTortureExecute(void) {
  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);
  return;
}


x86 assembly (clang, -O0):
<testTortureExecute>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x7,-0x4(%rbp)
movl   $0x6,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x2,-0x14(%rbp)
mov    $0x1,%al
cmpl   $0x0,-0x4(%rbp)
mov    %al,-0x15(%rbp)
jne    115a <testTortureExecute+0x4a>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x0,%edx
setne  %al
mov    %al,-0x15(%rbp)
mov    -0x15(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x4(%rbp)
je     1185 <testTortureExecute+0x75>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,-0x1c(%rbp)
jmp    118f <testTortureExecute+0x7f>
xor    %eax,%eax
mov    %eax,-0x1c(%rbp)
jmp    118f <testTortureExecute+0x7f>
mov    -0x1c(%rbp),%edi
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%edi
mov    %edi,-0x4(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%edi
imul   -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    $0x4,%esi
call   1030 <f@plt>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
mov    -0x4(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,%edi
mov    %edi,-0x4(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
mov    -0x4(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x4(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    -0x8(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%edi
add    -0x4(%rbp),%edi
mov    %edi,-0x4(%rbp)
mov    $0x2,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x1d(%rbp)
jne    124c <testTortureExecute+0x13c>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x1e(%rbp)
je     1246 <testTortureExecute+0x136>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x1e(%rbp)
mov    -0x1e(%rbp),%al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x10(%rbp)
je     1291 <testTortureExecute+0x181>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x1f(%rbp)
je     1281 <testTortureExecute+0x171>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x1f(%rbp)
mov    -0x1f(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x24(%rbp)
jmp    129b <testTortureExecute+0x18b>
xor    %eax,%eax
mov    %eax,-0x24(%rbp)
jmp    129b <testTortureExecute+0x18b>
mov    -0x24(%rbp),%edi
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x25(%rbp)
je     12c1 <testTortureExecute+0x1b1>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x26(%rbp)
je     12ef <testTortureExecute+0x1df>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x26(%rbp)
mov    -0x26(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
imul   -0x10(%rbp),%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x27(%rbp)
je     1321 <testTortureExecute+0x211>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x27(%rbp)
mov    -0x27(%rbp),%al
and    $0x1,%al
movzbl %al,%ecx
mov    -0x10(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x10(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x28(%rbp)
je     1354 <testTortureExecute+0x244>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x28(%rbp)
mov    -0x28(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
add    -0x10(%rbp),%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
xor    %eax,%eax
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x29(%rbp)
je     1385 <testTortureExecute+0x275>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    -0x10(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0x10(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0x10(%rbp)
mov    %al,-0x2a(%rbp)
jne    13c4 <testTortureExecute+0x2b4>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x2a(%rbp)
jne    13c4 <testTortureExecute+0x2b4>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x1,%esi
call   1030 <f@plt>
cmpl   $0x0,-0x10(%rbp)
je     1409 <testTortureExecute+0x2f9>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x2b(%rbp)
jne    13f9 <testTortureExecute+0x2e9>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x30(%rbp)
jmp    1413 <testTortureExecute+0x303>
xor    %eax,%eax
mov    %eax,-0x30(%rbp)
jmp    1413 <testTortureExecute+0x303>
mov    -0x30(%rbp),%edi
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x31(%rbp)
jne    1436 <testTortureExecute+0x326>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x31(%rbp)
mov    -0x31(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x32(%rbp)
jne    1464 <testTortureExecute+0x354>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x32(%rbp)
mov    -0x32(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
imul   -0x10(%rbp),%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x33(%rbp)
jne    1496 <testTortureExecute+0x386>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x33(%rbp)
mov    -0x33(%rbp),%al
and    $0x1,%al
movzbl %al,%ecx
mov    -0x10(%rbp),%eax
cltd
idiv   %ecx
mov    %edx,%edi
mov    %edi,-0x10(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x34(%rbp)
jne    14c9 <testTortureExecute+0x3b9>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x34(%rbp)
mov    -0x34(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
add    -0x10(%rbp),%edi
mov    %edi,-0x10(%rbp)
mov    $0x1,%esi
call   1030 <f@plt>
mov    $0x1,%al
cmpl   $0x0,-0xc(%rbp)
mov    %al,-0x35(%rbp)
jne    14fa <testTortureExecute+0x3ea>
cmpl   $0x0,-0x14(%rbp)
setne  %al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    -0x10(%rbp),%edi
sub    %eax,%edi
mov    %edi,-0x10(%rbp)
xor    %esi,%esi
call   1030 <f@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<testTortureExecute>:
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
pop    %rax
jmp    1030 <f@plt>

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

LLVM IR (-O2):
define void @testTortureExecute() {
%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)
ret void
}