#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*/ clang_analyzer_eval(int);
void testRemainderRules(unsigned int a, unsigned int b, int c, int d) {
  clang_analyzer_eval((0 % c) == 0);
  clang_analyzer_eval((10 % a) <= 10);
  if (a <= 30 && b <= 50) {
    clang_analyzer_eval((40 % a) < 30);
    clang_analyzer_eval((a % b) < 50);
    clang_analyzer_eval((b % a) < 30);
    if (a >= 10) {
      clang_analyzer_eval((a % b) >= 10);
      clang_analyzer_eval((4 % a) == 4);
      if (b < 7) {
        clang_analyzer_eval((b % a) < 7);
      }
    }
  }
  if (c > -10) {
    clang_analyzer_eval((d % c) < (int)((~0U) & ((~0U) >> 1)));
    clang_analyzer_eval((d % c) > (int)((~0U) & ~((~0U) >> 1)) + 1);
  }
  if (c >= 10 && c <= 30 && d >= 20 && d <= 50) {
    clang_analyzer_eval((5 % c) == 5);
    clang_analyzer_eval((c % d) <= 30);
    clang_analyzer_eval((c % d) >= 0);
    clang_analyzer_eval((d % c) < 30);
    clang_analyzer_eval((d % c) >= 0);
  }
  if (c >= -30 && c <= -10 && d >= -20 && d <= 50) {
    clang_analyzer_eval((40 % c) < 30);
    clang_analyzer_eval((40 % c) > -30);
    clang_analyzer_eval((-10 % d) < 50);
    clang_analyzer_eval((-20 % d) > -50);
    clang_analyzer_eval((-20 % d) > -20);
    clang_analyzer_eval((c % d) < 50);
    clang_analyzer_eval((d % c) < 30);
    if (a <= 10) {
      clang_analyzer_eval((a % c) < 30);
    }
  }
  unsigned int x = (int)((~0U) & ~((~0U) >> 1));
  if (a >= x && a <= x + 10) {
    clang_analyzer_eval((b % a) < x + 10);
  }
}


x86 assembly (clang, -O0):
<testRemainderRules>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
xor    %eax,%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x0,%edx
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0xa,%eax
xor    %edx,%edx
divl   -0x4(%rbp)
cmp    $0xa,%edx
setbe  %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0x1e,-0x4(%rbp)
ja     121a <testRemainderRules+0x10a>
cmpl   $0x32,-0x8(%rbp)
ja     121a <testRemainderRules+0x10a>
mov    $0x28,%eax
xor    %edx,%edx
divl   -0x4(%rbp)
cmp    $0x1e,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x4(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
cmp    $0x32,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x8(%rbp),%eax
xor    %edx,%edx
divl   -0x4(%rbp)
cmp    $0x1e,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0xa,-0x4(%rbp)
jb     1215 <testRemainderRules+0x105>
mov    -0x4(%rbp),%eax
xor    %edx,%edx
divl   -0x8(%rbp)
cmp    $0xa,%edx
setae  %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x4,%eax
xor    %edx,%edx
divl   -0x4(%rbp)
cmp    $0x4,%edx
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0x7,-0x8(%rbp)
jae    1210 <testRemainderRules+0x100>
mov    -0x8(%rbp),%eax
xor    %edx,%edx
divl   -0x4(%rbp)
cmp    $0x7,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
jmp    1215 <testRemainderRules+0x105>
jmp    121a <testRemainderRules+0x10a>
cmpl   $0xfffffff6,-0xc(%rbp)
jle    1258 <testRemainderRules+0x148>
mov    -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x7fffffff,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x80000001,%edx
setg   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0xa,-0xc(%rbp)
jl     12f5 <testRemainderRules+0x1e5>
cmpl   $0x1e,-0xc(%rbp)
jg     12f5 <testRemainderRules+0x1e5>
cmpl   $0x14,-0x10(%rbp)
jl     12f5 <testRemainderRules+0x1e5>
cmpl   $0x32,-0x10(%rbp)
jg     12f5 <testRemainderRules+0x1e5>
mov    $0x5,%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x5,%edx
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
cmp    $0x1e,%edx
setle  %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
cmp    $0x0,%edx
setge  %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x1e,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x0,%edx
setge  %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0xffffffe2,-0xc(%rbp)
jl     13ef <testRemainderRules+0x2df>
cmpl   $0xfffffff6,-0xc(%rbp)
jg     13ef <testRemainderRules+0x2df>
cmpl   $0xffffffec,-0x10(%rbp)
jl     13ef <testRemainderRules+0x2df>
cmpl   $0x32,-0x10(%rbp)
jg     13ef <testRemainderRules+0x2df>
mov    $0x28,%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x1e,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x28,%eax
cltd
idivl  -0xc(%rbp)
cmp    $0xffffffe2,%edx
setg   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0xfffffff6,%eax
cltd
idivl  -0x10(%rbp)
cmp    $0x32,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0xffffffec,%eax
cltd
idivl  -0x10(%rbp)
cmp    $0xffffffce,%edx
setg   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0xffffffec,%eax
cltd
idivl  -0x10(%rbp)
cmp    $0xffffffec,%edx
setg   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
cmp    $0x32,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
mov    -0x10(%rbp),%eax
cltd
idivl  -0xc(%rbp)
cmp    $0x1e,%edx
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
cmpl   $0xa,-0x4(%rbp)
ja     13ea <testRemainderRules+0x2da>
mov    -0x4(%rbp),%eax
xor    %edx,%edx
divl   -0xc(%rbp)
cmp    $0x1e,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
jmp    13ef <testRemainderRules+0x2df>
movl   $0x80000000,-0x14(%rbp)
mov    -0x4(%rbp),%eax
cmp    -0x14(%rbp),%eax
jb     1430 <testRemainderRules+0x320>
mov    -0x4(%rbp),%eax
mov    -0x14(%rbp),%ecx
add    $0xa,%ecx
cmp    %ecx,%eax
ja     1430 <testRemainderRules+0x320>
mov    -0x8(%rbp),%eax
xor    %edx,%edx
divl   -0x4(%rbp)
mov    -0x14(%rbp),%eax
add    $0xa,%eax
cmp    %eax,%edx
setb   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <clang_analyzer_eval@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<testRemainderRules>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %ecx,%r14d
mov    %edx,%ebp
mov    %esi,%ebx
mov    %edi,%r15d
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
cmp    $0x1e,%r15d
ja     11a5 <testRemainderRules+0x95>
cmp    $0x32,%ebx
ja     11a5 <testRemainderRules+0x95>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
movzbl %bl,%eax
div    %r15b
movzbl %ah,%eax
mov    %eax,%r12d
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
cmp    $0xa,%r15d
jb     11a5 <testRemainderRules+0x95>
movzbl %r15b,%eax
div    %bl
movzbl %ah,%eax
xor    %edi,%edi
cmp    $0xa,%al
setae  %dil
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
cmp    $0x6,%ebx
ja     11a5 <testRemainderRules+0x95>
xor    %edi,%edi
cmp    $0x7,%r12b
setb   %dil
call   1030 <clang_analyzer_eval@plt>
cmp    $0xfffffff7,%ebp
jl     120c <testRemainderRules+0xfc>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
add    $0xfffffff6,%ebp
cmp    $0x14,%ebp
ja     1289 <testRemainderRules+0x179>
add    $0xffffffec,%r14d
cmp    $0x1e,%r14d
ja     1289 <testRemainderRules+0x179>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
jmp    1289 <testRemainderRules+0x179>
add    $0x1e,%ebp
cmp    $0x14,%ebp
ja     1289 <testRemainderRules+0x179>
lea    0x14(%r14),%eax
cmp    $0x46,%eax
ja     1289 <testRemainderRules+0x179>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0xec,%al
cbtw
idiv   %r14b
movsbl %ah,%ebx
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
xor    %edi,%edi
cmp    $0xed,%bl
setge  %dil
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
mov    $0x1,%edi
call   1030 <clang_analyzer_eval@plt>
cmp    $0xb,%r15d
jb     1292 <testRemainderRules+0x182>
cmp    $0x8000000b,%r15d
jl     1292 <testRemainderRules+0x182>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    $0x8000000a,%r15d
jg     1280 <testRemainderRules+0x170>
mov    $0x1,%edi
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <clang_analyzer_eval@plt>

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

LLVM IR (-O2):
define void @testRemainderRules(i32 %0, i32 %1, i32 %2, i32 %3) {
%5 = tail call i32 @clang_analyzer_eval(i32 1)
%6 = tail call i32 @clang_analyzer_eval(i32 1)
%7 = icmp ult i32 %0, 31
%8 = icmp ult i32 %1, 51
%9 = and i1 %7, %8
br i1 %9, label %10, label %29
10: ; preds = %4
%11 = tail call i32 @clang_analyzer_eval(i32 1)
%12 = tail call i32 @clang_analyzer_eval(i32 1)
%13 = trunc i32 %1 to i8
%14 = trunc i32 %0 to i8
%15 = urem i8 %13, %14
%16 = tail call i32 @clang_analyzer_eval(i32 1)
%17 = icmp ugt i32 %0, 9
br i1 %17, label %18, label %29
18: ; preds = %10
%19 = urem i8 %14, %13
%20 = icmp ugt i8 %19, 9
%21 = zext i1 %20 to i32
%22 = tail call i32 @clang_analyzer_eval(i32 %21)
%23 = tail call i32 @clang_analyzer_eval(i32 1)
%24 = icmp ult i32 %1, 7
br i1 %24, label %25, label %29
25: ; preds = %18
%26 = icmp ult i8 %15, 7
%27 = zext i1 %26 to i32
%28 = tail call i32 @clang_analyzer_eval(i32 %27)
br label %29
29: ; preds = %10, %25, %18, %4
%30 = icmp sgt i32 %2, -10
br i1 %30, label %31, label %45
31: ; preds = %29
%32 = tail call i32 @clang_analyzer_eval(i32 1)
%33 = tail call i32 @clang_analyzer_eval(i32 1)
%34 = add nsw i32 %2, -10
%35 = icmp ult i32 %34, 21
%36 = add i32 %3, -20
%37 = icmp ult i32 %36, 31
%38 = and i1 %35, %37
br i1 %38, label %39, label %66
39: ; preds = %31
%40 = tail call i32 @clang_analyzer_eval(i32 1)
%41 = tail call i32 @clang_analyzer_eval(i32 1)
%42 = tail call i32 @clang_analyzer_eval(i32 1)
%43 = tail call i32 @clang_analyzer_eval(i32 1)
%44 = tail call i32 @clang_analyzer_eval(i32 1)
br label %66
45: ; preds = %29
%46 = add nsw i32 %2, 30
%47 = icmp ult i32 %46, 21
%48 = add i32 %3, 20
%49 = icmp ult i32 %48, 71
%50 = and i1 %47, %49
br i1 %50, label %51, label %66
51: ; preds = %45
%52 = tail call i32 @clang_analyzer_eval(i32 1)
%53 = tail call i32 @clang_analyzer_eval(i32 1)
%54 = tail call i32 @clang_analyzer_eval(i32 1)
%55 = trunc i32 %3 to i8
%56 = srem i8 -20, %55
%57 = tail call i32 @clang_analyzer_eval(i32 1)
%58 = icmp sgt i8 %56, -20
%59 = zext i1 %58 to i32
%60 = tail call i32 @clang_analyzer_eval(i32 %59)
%61 = tail call i32 @clang_analyzer_eval(i32 1)
%62 = tail call i32 @clang_analyzer_eval(i32 1)
%63 = icmp ult i32 %0, 11
%64 = icmp slt i32 %0, -2147483637
%65 = or i1 %63, %64
br i1 %65, label %68, label %70
66: ; preds = %31, %39, %45
%67 = icmp slt i32 %0, -2147483637
br i1 %67, label %68, label %70
68: ; preds = %66, %51
%69 = tail call i32 @clang_analyzer_eval(i32 1)
br label %70
70: ; preds = %51, %68, %66
ret void
}