#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 */
const char *ft_strchr_bis(const char *cp, const char ch) {
  if (cp[0] == ch || !cp[0])
    return ((cp[0] || !ch) ? cp : NULL);
  else if (cp[1] == ch || !cp[1])
    return ((cp[1] || !ch) ? cp + 1 : NULL);
  else if (cp[2] == ch || !cp[2])
    return ((cp[2] || !ch) ? cp + 2 : NULL);
  else if (cp[3] == ch || !cp[3])
    return ((cp[3] || !ch) ? cp + 3 : NULL);
  else if (cp[4] == ch || !cp[4])
    return ((cp[4] || !ch) ? cp + 4 : NULL);
  else if (cp[5] == ch || !cp[5])
    return ((cp[5] || !ch) ? cp + 5 : NULL);
  else if (cp[6] == ch || !cp[6])
    return ((cp[6] || !ch) ? cp + 6 : NULL);
  else if (cp[7] == ch || !cp[7])
    return ((cp[7] || !ch) ? cp + 7 : NULL);
  return (NULL);
}


x86 assembly (clang, -O0):
<ft_strchr_bis>:
push   %rbp
mov    %rsp,%rbp
mov    %sil,%al
mov    %rdi,-0x10(%rbp)
mov    %al,-0x11(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     112e <ft_strchr_bis+0x2e>
mov    -0x10(%rbp),%rax
cmpb   $0x0,(%rax)
jne    116d <ft_strchr_bis+0x6d>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1148 <ft_strchr_bis+0x48>
cmpb   $0x0,-0x11(%rbp)
jne    1155 <ft_strchr_bis+0x55>
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
jmp    1160 <ft_strchr_bis+0x60>
xor    %eax,%eax
mov    %rax,-0x20(%rbp)
jmp    1160 <ft_strchr_bis+0x60>
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     118f <ft_strchr_bis+0x8f>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x1(%rax)
jne    11d3 <ft_strchr_bis+0xd3>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    11aa <ft_strchr_bis+0xaa>
cmpb   $0x0,-0x11(%rbp)
jne    11bb <ft_strchr_bis+0xbb>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    11c6 <ft_strchr_bis+0xc6>
xor    %eax,%eax
mov    %rax,-0x28(%rbp)
jmp    11c6 <ft_strchr_bis+0xc6>
mov    -0x28(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     11f5 <ft_strchr_bis+0xf5>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x2(%rax)
jne    1239 <ft_strchr_bis+0x139>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    1210 <ft_strchr_bis+0x110>
cmpb   $0x0,-0x11(%rbp)
jne    1221 <ft_strchr_bis+0x121>
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x30(%rbp)
jmp    122c <ft_strchr_bis+0x12c>
xor    %eax,%eax
mov    %rax,-0x30(%rbp)
jmp    122c <ft_strchr_bis+0x12c>
mov    -0x30(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     125b <ft_strchr_bis+0x15b>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x3(%rax)
jne    129f <ft_strchr_bis+0x19f>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
jne    1276 <ft_strchr_bis+0x176>
cmpb   $0x0,-0x11(%rbp)
jne    1287 <ft_strchr_bis+0x187>
mov    -0x10(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x38(%rbp)
jmp    1292 <ft_strchr_bis+0x192>
xor    %eax,%eax
mov    %rax,-0x38(%rbp)
jmp    1292 <ft_strchr_bis+0x192>
mov    -0x38(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     12c1 <ft_strchr_bis+0x1c1>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x4(%rax)
jne    1305 <ft_strchr_bis+0x205>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x0,%eax
jne    12dc <ft_strchr_bis+0x1dc>
cmpb   $0x0,-0x11(%rbp)
jne    12ed <ft_strchr_bis+0x1ed>
mov    -0x10(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x40(%rbp)
jmp    12f8 <ft_strchr_bis+0x1f8>
xor    %eax,%eax
mov    %rax,-0x40(%rbp)
jmp    12f8 <ft_strchr_bis+0x1f8>
mov    -0x40(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     1327 <ft_strchr_bis+0x227>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x5(%rax)
jne    136b <ft_strchr_bis+0x26b>
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x0,%eax
jne    1342 <ft_strchr_bis+0x242>
cmpb   $0x0,-0x11(%rbp)
jne    1353 <ft_strchr_bis+0x253>
mov    -0x10(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x48(%rbp)
jmp    135e <ft_strchr_bis+0x25e>
xor    %eax,%eax
mov    %rax,-0x48(%rbp)
jmp    135e <ft_strchr_bis+0x25e>
mov    -0x48(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x6(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     138d <ft_strchr_bis+0x28d>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x6(%rax)
jne    13d1 <ft_strchr_bis+0x2d1>
mov    -0x10(%rbp),%rax
movsbl 0x6(%rax),%eax
cmp    $0x0,%eax
jne    13a8 <ft_strchr_bis+0x2a8>
cmpb   $0x0,-0x11(%rbp)
jne    13b9 <ft_strchr_bis+0x2b9>
mov    -0x10(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x50(%rbp)
jmp    13c4 <ft_strchr_bis+0x2c4>
xor    %eax,%eax
mov    %rax,-0x50(%rbp)
jmp    13c4 <ft_strchr_bis+0x2c4>
mov    -0x50(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
mov    -0x10(%rbp),%rax
movsbl 0x7(%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
je     13f3 <ft_strchr_bis+0x2f3>
mov    -0x10(%rbp),%rax
cmpb   $0x0,0x7(%rax)
jne    1437 <ft_strchr_bis+0x337>
mov    -0x10(%rbp),%rax
movsbl 0x7(%rax),%eax
cmp    $0x0,%eax
jne    140e <ft_strchr_bis+0x30e>
cmpb   $0x0,-0x11(%rbp)
jne    141f <ft_strchr_bis+0x31f>
mov    -0x10(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x58(%rbp)
jmp    142a <ft_strchr_bis+0x32a>
xor    %eax,%eax
mov    %rax,-0x58(%rbp)
jmp    142a <ft_strchr_bis+0x32a>
mov    -0x58(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1462 <ft_strchr_bis+0x362>
jmp    143c <ft_strchr_bis+0x33c>
jmp    1441 <ft_strchr_bis+0x341>
jmp    1446 <ft_strchr_bis+0x346>
jmp    144b <ft_strchr_bis+0x34b>
jmp    1450 <ft_strchr_bis+0x350>
jmp    1455 <ft_strchr_bis+0x355>
jmp    145a <ft_strchr_bis+0x35a>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ft_strchr_bis>:
mov    (%rdi),%cl
cmp    %sil,%cl
je     118e <ft_strchr_bis+0x8e>
test   %cl,%cl
je     118e <ft_strchr_bis+0x8e>
mov    0x1(%rdi),%cl
cmp    %sil,%cl
je     1166 <ft_strchr_bis+0x66>
test   %cl,%cl
je     1166 <ft_strchr_bis+0x66>
mov    0x2(%rdi),%cl
cmp    %sil,%cl
je     116c <ft_strchr_bis+0x6c>
test   %cl,%cl
je     116c <ft_strchr_bis+0x6c>
mov    0x3(%rdi),%cl
cmp    %sil,%cl
je     1172 <ft_strchr_bis+0x72>
test   %cl,%cl
je     1172 <ft_strchr_bis+0x72>
mov    0x4(%rdi),%cl
cmp    %sil,%cl
je     1178 <ft_strchr_bis+0x78>
test   %cl,%cl
je     1178 <ft_strchr_bis+0x78>
mov    0x5(%rdi),%cl
cmp    %sil,%cl
je     117e <ft_strchr_bis+0x7e>
test   %cl,%cl
je     117e <ft_strchr_bis+0x7e>
mov    0x6(%rdi),%cl
cmp    %sil,%cl
je     1184 <ft_strchr_bis+0x84>
test   %cl,%cl
je     1184 <ft_strchr_bis+0x84>
mov    0x7(%rdi),%cl
cmp    %sil,%cl
je     118a <ft_strchr_bis+0x8a>
test   %cl,%cl
je     118a <ft_strchr_bis+0x8a>
xor    %eax,%eax
ret
add    $0x1,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x2,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x3,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x4,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x5,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x6,%rdi
jmp    118e <ft_strchr_bis+0x8e>
add    $0x7,%rdi
xor    %eax,%eax
test   %cl,%cl
cmovne %rdi,%rax
test   %sil,%sil
cmove  %rdi,%rax
ret

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

LLVM IR (-O2):
define i8* @ft_strchr_bis(i8* %0, i8 signext %1) {
%3 = load i8, i8* %0
%4 = icmp eq i8 %3, %1
%5 = icmp eq i8 %3, 0
%6 = or i1 %4, %5
br i1 %6, label %7, label %11
7: ; preds = %2
%8 = icmp ne i8 %1, 0
%9 = and i1 %8, %5
%10 = select i1 %9, i8* null, i8* %0
br label %81
11: ; preds = %2
%12 = getelementptr inbounds i8, i8* %0, i64 1
%13 = load i8, i8* %12
%14 = icmp eq i8 %13, %1
%15 = icmp eq i8 %13, 0
%16 = or i1 %14, %15
br i1 %16, label %17, label %21
17: ; preds = %11
%18 = icmp ne i8 %1, 0
%19 = and i1 %18, %15
%20 = select i1 %19, i8* null, i8* %12
br label %81
21: ; preds = %11
%22 = getelementptr inbounds i8, i8* %0, i64 2
%23 = load i8, i8* %22
%24 = icmp eq i8 %23, %1
%25 = icmp eq i8 %23, 0
%26 = or i1 %24, %25
br i1 %26, label %27, label %31
27: ; preds = %21
%28 = icmp ne i8 %1, 0
%29 = and i1 %28, %25
%30 = select i1 %29, i8* null, i8* %22
br label %81
31: ; preds = %21
%32 = getelementptr inbounds i8, i8* %0, i64 3
%33 = load i8, i8* %32
%34 = icmp eq i8 %33, %1
%35 = icmp eq i8 %33, 0
%36 = or i1 %34, %35
br i1 %36, label %37, label %41
37: ; preds = %31
%38 = icmp ne i8 %1, 0
%39 = and i1 %38, %35
%40 = select i1 %39, i8* null, i8* %32
br label %81
41: ; preds = %31
%42 = getelementptr inbounds i8, i8* %0, i64 4
%43 = load i8, i8* %42
%44 = icmp eq i8 %43, %1
%45 = icmp eq i8 %43, 0
%46 = or i1 %44, %45
br i1 %46, label %47, label %51
47: ; preds = %41
%48 = icmp ne i8 %1, 0
%49 = and i1 %48, %45
%50 = select i1 %49, i8* null, i8* %42
br label %81
51: ; preds = %41
%52 = getelementptr inbounds i8, i8* %0, i64 5
%53 = load i8, i8* %52
%54 = icmp eq i8 %53, %1
%55 = icmp eq i8 %53, 0
%56 = or i1 %54, %55
br i1 %56, label %57, label %61
57: ; preds = %51
%58 = icmp ne i8 %1, 0
%59 = and i1 %58, %55
%60 = select i1 %59, i8* null, i8* %52
br label %81
61: ; preds = %51
%62 = getelementptr inbounds i8, i8* %0, i64 6
%63 = load i8, i8* %62
%64 = icmp eq i8 %63, %1
%65 = icmp eq i8 %63, 0
%66 = or i1 %64, %65
br i1 %66, label %67, label %71
67: ; preds = %61
%68 = icmp ne i8 %1, 0
%69 = and i1 %68, %65
%70 = select i1 %69, i8* null, i8* %62
br label %81
71: ; preds = %61
%72 = getelementptr inbounds i8, i8* %0, i64 7
%73 = load i8, i8* %72
%74 = icmp eq i8 %73, %1
%75 = icmp eq i8 %73, 0
%76 = or i1 %74, %75
br i1 %76, label %77, label %81
77: ; preds = %71
%78 = icmp ne i8 %1, 0
%79 = and i1 %78, %75
%80 = select i1 %79, i8* null, i8* %72
br label %81
81: ; preds = %71, %77, %67, %57, %47, %37, %27, %17, %7
%82 = phi i8* [ %10, %7 ], [ %20, %17 ], [ %30, %27 ], [ %40, %37 ], [ %50, %47 ], [ %60, %57 ], [ %70, %67 ], [ %80, %77 ], [ null, %71 ]
ret i8* %82
}