char out_of_bounds(char cell, char dir) {
  char i;
  switch (dir) {
  case 0:
    return cell % 5 == 4;
  case 1:
    i = cell % 10;
    return i == 4 || i == 8 || i == 9 || cell >= 45;
  case 2:
    return cell % 10 == 9 || cell >= 45;
  case 3:
    return cell >= 40;
  case 4:
    return cell % 10 == 0 || cell >= 45;
  case 5:
    i = cell % 10;
    return i == 0 || i == 1 || i == 5 || cell >= 45;
  case 6:
    return cell % 5 == 0;
  case 7:
    i = cell % 10;
    return i == 0 || i == 1 || i == 5 || cell < 5;
  case 8:
    return cell % 10 == 0 || cell < 5;
  case 9:
    return cell < 10;
  case 10:
    return cell % 10 == 9 || cell < 5;
  case 11:
    i = cell % 10;
    return i == 4 || i == 8 || i == 9 || cell < 5;
  default:
    return 0;
  }
}


x86 assembly (clang, -O0):
<out_of_bounds>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %dil,%cl
mov    %cl,-0x2(%rbp)
mov    %al,-0x3(%rbp)
movsbl -0x3(%rbp),%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0xb,%eax
ja     140f <out_of_bounds+0x30f>
mov    -0x10(%rbp),%rax
lea    0xed2(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl -0x2(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x4,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %dl,%al
mov    %al,-0x4(%rbp)
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x4,%ecx
mov    %al,-0x11(%rbp)
je     11aa <out_of_bounds+0xaa>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x8,%ecx
mov    %al,-0x11(%rbp)
je     11aa <out_of_bounds+0xaa>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x11(%rbp)
je     11aa <out_of_bounds+0xaa>
movsbl -0x2(%rbp),%eax
cmp    $0x2d,%eax
setge  %al
mov    %al,-0x11(%rbp)
mov    -0x11(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0x1,%al
cmp    $0x9,%edx
mov    %al,-0x12(%rbp)
je     11e1 <out_of_bounds+0xe1>
movsbl -0x2(%rbp),%eax
cmp    $0x2d,%eax
setge  %al
mov    %al,-0x12(%rbp)
mov    -0x12(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
cmp    $0x28,%eax
setge  %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0x1,%al
cmp    $0x0,%edx
mov    %al,-0x13(%rbp)
je     122f <out_of_bounds+0x12f>
movsbl -0x2(%rbp),%eax
cmp    $0x2d,%eax
setge  %al
mov    %al,-0x13(%rbp)
mov    -0x13(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %dl,%al
mov    %al,-0x4(%rbp)
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x14(%rbp)
je     1293 <out_of_bounds+0x193>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x1,%ecx
mov    %al,-0x14(%rbp)
je     1293 <out_of_bounds+0x193>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x5,%ecx
mov    %al,-0x14(%rbp)
je     1293 <out_of_bounds+0x193>
movsbl -0x2(%rbp),%eax
cmp    $0x2d,%eax
setge  %al
mov    %al,-0x14(%rbp)
mov    -0x14(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %dl,%al
mov    %al,-0x4(%rbp)
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x15(%rbp)
je     1316 <out_of_bounds+0x216>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x1,%ecx
mov    %al,-0x15(%rbp)
je     1316 <out_of_bounds+0x216>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x5,%ecx
mov    %al,-0x15(%rbp)
je     1316 <out_of_bounds+0x216>
movsbl -0x2(%rbp),%eax
cmp    $0x5,%eax
setl   %al
mov    %al,-0x15(%rbp)
mov    -0x15(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0x1,%al
cmp    $0x0,%edx
mov    %al,-0x16(%rbp)
je     134d <out_of_bounds+0x24d>
movsbl -0x2(%rbp),%eax
cmp    $0x5,%eax
setl   %al
mov    %al,-0x16(%rbp)
mov    -0x16(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
cmp    $0xa,%eax
setl   %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0x1,%al
cmp    $0x9,%edx
mov    %al,-0x17(%rbp)
je     139b <out_of_bounds+0x29b>
movsbl -0x2(%rbp),%eax
cmp    $0x5,%eax
setl   %al
mov    %al,-0x17(%rbp)
mov    -0x17(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movsbl -0x2(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %dl,%al
mov    %al,-0x4(%rbp)
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x4,%ecx
mov    %al,-0x18(%rbp)
je     13ff <out_of_bounds+0x2ff>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x8,%ecx
mov    %al,-0x18(%rbp)
je     13ff <out_of_bounds+0x2ff>
movsbl -0x4(%rbp),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x18(%rbp)
je     13ff <out_of_bounds+0x2ff>
movsbl -0x2(%rbp),%eax
cmp    $0x5,%eax
setl   %al
mov    %al,-0x18(%rbp)
mov    -0x18(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1(%rbp)
jmp    1413 <out_of_bounds+0x313>
movb   $0x0,-0x1(%rbp)
movsbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<out_of_bounds>:
cmp    $0xb,%esi
ja     1267 <out_of_bounds+0x167>
mov    %esi,%eax
lea    0xeee(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0x9,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
lea    (%rax,%rax,4),%eax
sub    %al,%dil
cmp    $0x4,%dil
sete   %al
ret
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0xa,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
mov    %edi,%ecx
sub    %al,%cl
movsbl %cl,%ecx
cmp    $0x9,%ecx
ja     11eb <out_of_bounds+0xeb>
mov    $0x1,%al
mov    $0x310,%edx
jmp    11e6 <out_of_bounds+0xe6>
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0xa,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
mov    %edi,%ecx
sub    %al,%cl
cmp    $0x9,%cl
sete   %cl
jmp    11af <out_of_bounds+0xaf>
cmp    $0x28,%dil
setge  %al
ret
movzbl %dil,%eax
imul   $0xffffffcd,%eax,%eax
add    $0x18,%al
ror    %al
cmp    $0x19,%al
setb   %cl
cmp    $0x2d,%dil
setge  %al
or     %cl,%al
ret
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0xa,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
mov    %edi,%ecx
sub    %al,%cl
movsbl %cl,%ecx
cmp    $0x5,%ecx
ja     11eb <out_of_bounds+0xeb>
mov    $0x1,%al
mov    $0x23,%edx
bt     %ecx,%edx
jb     1266 <out_of_bounds+0x166>
cmp    $0x2d,%dil
setge  %al
ret
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0xa,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
mov    %edi,%ecx
sub    %al,%cl
movsbl %cl,%ecx
cmp    $0x5,%ecx
ja     12b9 <out_of_bounds+0x1b9>
mov    $0x1,%al
mov    $0x23,%edx
bt     %ecx,%edx
jb     1266 <out_of_bounds+0x166>
jmp    12b9 <out_of_bounds+0x1b9>
cmp    $0xa,%dil
setl   %al
ret
movsbl %dil,%eax
imul   $0x67,%eax,%ecx
movzwl %cx,%edx
shr    $0xa,%ecx
shr    $0xf,%edx
add    %cl,%dl
movzbl %dl,%ecx
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%al
movsbl %al,%ecx
cmp    $0x9,%ecx
ja     12b9 <out_of_bounds+0x1b9>
mov    $0x1,%al
mov    $0x310,%edx
bt     %ecx,%edx
jae    12b9 <out_of_bounds+0x1b9>
ret
xor    %eax,%eax
ret
movzbl %dil,%eax
imul   $0xffffffcd,%eax,%eax
add    $0x19,%al
cmp    $0x33,%al
setb   %al
ret
movzbl %dil,%eax
imul   $0xffffffcd,%eax,%eax
add    $0x18,%al
ror    %al
cmp    $0x19,%al
setb   %cl
jmp    12af <out_of_bounds+0x1af>
movsbl %dil,%eax
imul   $0x67,%eax,%eax
movzwl %ax,%ecx
shr    $0xa,%eax
shr    $0xf,%ecx
add    %al,%cl
movzbl %cl,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
mov    %edi,%ecx
sub    %al,%cl
cmp    $0x9,%cl
sete   %cl
cmp    $0x5,%dil
setl   %al
or     %cl,%al
ret
cmp    $0x5,%dil
setl   %al
ret

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

LLVM IR (-O2):
define signext i8 @out_of_bounds(i8 signext %0, i8 signext %1) {
%3 = sext i8 %1 to i32
switch i32 %3, label %54 [
i32 0, label %4
i32 1, label %7
i32 2, label %12
i32 3, label %17
i32 4, label %19
i32 5, label %24
i32 6, label %29
i32 7, label %32
i32 8, label %37
i32 9, label %42
i32 10, label %44
i32 11, label %49
]
4: ; preds = %2
%5 = srem i8 %0, 5
%6 = icmp eq i8 %5, 4
br label %54
7: ; preds = %2
%8 = srem i8 %0, 10
%9 = sext i8 %8 to i32
switch i32 %9, label %10 [
i32 9, label %54
i32 8, label %54
i32 4, label %54
]
10: ; preds = %7
%11 = icmp sgt i8 %0, 44
br label %54
12: ; preds = %2
%13 = srem i8 %0, 10
%14 = icmp eq i8 %13, 9
%15 = icmp sgt i8 %0, 44
%16 = or i1 %15, %14
br label %54
17: ; preds = %2
%18 = icmp sgt i8 %0, 39
br label %54
19: ; preds = %2
%20 = srem i8 %0, 10
%21 = icmp eq i8 %20, 0
%22 = icmp sgt i8 %0, 44
%23 = or i1 %22, %21
br label %54
24: ; preds = %2
%25 = srem i8 %0, 10
%26 = sext i8 %25 to i32
switch i32 %26, label %27 [
i32 5, label %54
i32 1, label %54
i32 0, label %54
]
27: ; preds = %24
%28 = icmp sgt i8 %0, 44
br label %54
29: ; preds = %2
%30 = srem i8 %0, 5
%31 = icmp eq i8 %30, 0
br label %54
32: ; preds = %2
%33 = srem i8 %0, 10
%34 = sext i8 %33 to i32
switch i32 %34, label %35 [
i32 5, label %54
i32 1, label %54
i32 0, label %54
]
35: ; preds = %32
%36 = icmp slt i8 %0, 5
br label %54
37: ; preds = %2
%38 = srem i8 %0, 10
%39 = icmp eq i8 %38, 0
%40 = icmp slt i8 %0, 5
%41 = or i1 %40, %39
br label %54
42: ; preds = %2
%43 = icmp slt i8 %0, 10
br label %54
44: ; preds = %2
%45 = srem i8 %0, 10
%46 = icmp eq i8 %45, 9
%47 = icmp slt i8 %0, 5
%48 = or i1 %47, %46
br label %54
49: ; preds = %2
%50 = srem i8 %0, 10
%51 = sext i8 %50 to i32
switch i32 %51, label %52 [
i32 9, label %54
i32 8, label %54
i32 4, label %54
]
52: ; preds = %49
%53 = icmp slt i8 %0, 5
br label %54
54: ; preds = %2, %52, %49, %49, %49, %35, %32, %32, %32, %27, %24, %24, %24, %10, %7, %7, %7, %44, %42, %37, %29, %19, %17, %12, %4
%55 = phi i1 [ %48, %44 ], [ %43, %42 ], [ %41, %37 ], [ %31, %29 ], [ %23, %19 ], [ %18, %17 ], [ %16, %12 ], [ %6, %4 ], [ true, %7 ], [ %11, %10 ], [ true, %7 ], [ true, %7 ], [ true, %24 ], [ %28, %27 ], [ true, %24 ], [ true, %24 ], [ true, %32 ], [ %36, %35 ], [ true, %32 ], [ true, %32 ], [ true, %49 ], [ %53, %52 ], [ true, %49 ], [ true, %49 ], [ false, %2 ]
%56 = zext i1 %55 to i8
ret i8 %56
}