#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 */
bool gives42(char *s) {
  int o1, o2, o3, o4, r1, r2, r3, r4;
  for (o1 = 0; o1 < 3; o1++) {
    r1 = (o1 == 0) ? s[0] + s[1] : (o1 == 1) ? s[0] - s[1] : s[0] * s[1];
    for (o2 = 0; o2 < 3; o2++) {
      r2 = (o2 == 0) ? r1 + s[2] : (o2 == 1) ? r1 - s[2] : r1 * s[2];
      for (o3 = 0; o3 < 3; o3++) {
        r3 = (o3 == 0) ? r2 + s[3] : (o3 == 1) ? r2 - s[3] : r2 * s[3];
        for (o4 = 0; o4 < 3; o4++) {
          r4 = (o4 == 0) ? r3 + s[4] : (o4 == 1) ? r3 - s[4] : r3 * s[4];
          if (r4 == 42)
            return true;
        }
      }
    }
  }
  return false;
}


x86 assembly (clang, -O0):
<gives42>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x3,-0x14(%rbp)
jge    1326 <gives42+0x226>
cmpl   $0x0,-0x14(%rbp)
jne    113c <gives42+0x3c>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x34(%rbp)
jmp    117a <gives42+0x7a>
cmpl   $0x1,-0x14(%rbp)
jne    115f <gives42+0x5f>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x38(%rbp)
jmp    1174 <gives42+0x74>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
imul   %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x3,-0x18(%rbp)
jge    1313 <gives42+0x213>
cmpl   $0x0,-0x18(%rbp)
jne    11b0 <gives42+0xb0>
mov    -0x24(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x2(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x3c(%rbp)
jmp    11e6 <gives42+0xe6>
cmpl   $0x1,-0x18(%rbp)
jne    11cf <gives42+0xcf>
mov    -0x24(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x2(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x40(%rbp)
jmp    11e0 <gives42+0xe0>
mov    -0x24(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x2(%rcx),%ecx
imul   %ecx,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x3,-0x1c(%rbp)
jge    1300 <gives42+0x200>
cmpl   $0x0,-0x1c(%rbp)
jne    121c <gives42+0x11c>
mov    -0x28(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x3(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x44(%rbp)
jmp    1252 <gives42+0x152>
cmpl   $0x1,-0x1c(%rbp)
jne    123b <gives42+0x13b>
mov    -0x28(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x3(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x48(%rbp)
jmp    124c <gives42+0x14c>
mov    -0x28(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x3(%rcx),%ecx
imul   %ecx,%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x20(%rbp)
cmpl   $0x3,-0x20(%rbp)
jge    12ed <gives42+0x1ed>
cmpl   $0x0,-0x20(%rbp)
jne    1288 <gives42+0x188>
mov    -0x2c(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x4(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x4c(%rbp)
jmp    12be <gives42+0x1be>
cmpl   $0x1,-0x20(%rbp)
jne    12a7 <gives42+0x1a7>
mov    -0x2c(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x4(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x50(%rbp)
jmp    12b8 <gives42+0x1b8>
mov    -0x2c(%rbp),%eax
mov    -0x10(%rbp),%rcx
movsbl 0x4(%rcx),%ecx
imul   %ecx,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x2a,-0x30(%rbp)
jne    12da <gives42+0x1da>
movl   $0x1,-0x4(%rbp)
jmp    132d <gives42+0x22d>
jmp    12df <gives42+0x1df>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    125f <gives42+0x15f>
jmp    12f2 <gives42+0x1f2>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11f3 <gives42+0xf3>
jmp    1305 <gives42+0x205>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1187 <gives42+0x87>
jmp    1318 <gives42+0x218>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    110f <gives42+0xf>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<gives42>:
push   %rbx
movsbl 0x2(%rdi),%r8d
movsbl 0x3(%rdi),%r10d
movsbl 0x4(%rdi),%esi
xor    %r9d,%r9d
cmp    $0x1,%r9d
je     1130 <gives42+0x30>
test   %r9d,%r9d
jne    1140 <gives42+0x40>
movsbl (%rdi),%eax
movsbl 0x1(%rdi),%r11d
add    %eax,%r11d
jmp    114c <gives42+0x4c>
nopw   0x0(%rax,%rax,1)
movsbl (%rdi),%r11d
movsbl 0x1(%rdi),%eax
sub    %eax,%r11d
jmp    114c <gives42+0x4c>
nopl   (%rax)
movsbl (%rdi),%eax
movsbl 0x1(%rdi),%r11d
imul   %eax,%r11d
lea    (%r11,%r8,1),%ecx
lea    (%rcx,%r10,1),%edx
lea    (%rdx,%rsi,1),%ebx
mov    $0x1,%eax
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
mov    %edx,%ebx
sub    %esi,%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
imul   %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
mov    %ecx,%edx
sub    %r10d,%edx
lea    (%rdx,%rsi,1),%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
mov    %edx,%ebx
sub    %esi,%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
imul   %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
imul   %r10d,%ecx
lea    (%rcx,%rsi,1),%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
mov    %ecx,%edx
sub    %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
imul   %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
mov    %r11d,%edx
sub    %r8d,%edx
lea    (%rdx,%r10,1),%ecx
lea    (%rcx,%rsi,1),%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
mov    %ecx,%ebx
sub    %esi,%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
imul   %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
mov    %edx,%ecx
sub    %r10d,%ecx
lea    (%rcx,%rsi,1),%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
mov    %ecx,%ebx
sub    %esi,%ebx
cmp    $0x2a,%ebx
je     12bc <gives42+0x1bc>
imul   %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
imul   %r10d,%edx
lea    (%rdx,%rsi,1),%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
mov    %edx,%ecx
sub    %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
imul   %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
imul   %r8d,%r11d
lea    (%r11,%r10,1),%ecx
lea    (%rcx,%rsi,1),%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
mov    %ecx,%edx
sub    %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
imul   %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
mov    %r11d,%ecx
sub    %r10d,%ecx
lea    (%rcx,%rsi,1),%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
mov    %ecx,%edx
sub    %esi,%edx
cmp    $0x2a,%edx
je     12bc <gives42+0x1bc>
imul   %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
imul   %r10d,%r11d
lea    (%r11,%rsi,1),%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
mov    %r11d,%ecx
sub    %esi,%ecx
cmp    $0x2a,%ecx
je     12bc <gives42+0x1bc>
imul   %esi,%r11d
cmp    $0x2a,%r11d
je     12bc <gives42+0x1bc>
add    $0x1,%r9d
cmp    $0x3,%r9d
jne    1112 <gives42+0x12>
xor    %eax,%eax
pop    %rbx
ret

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

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