int check(char **board, int i, int j, int x) {
  char c = '0' + x;
  for (int k = 0; k < 9; k++) {
    if (k != i && board[k][j] == c) {
      return 0;
    }
    if (k != j && board[i][k] == c) {
      return 0;
    }
  }
  for (int u = 0; u < 3; u++) {
    for (int v = 0; v < 3; v++) {
      if ((i / 3) * 3 + u != i && (j / 3) * 3 + v != j &&
          board[(i / 3) * 3 + u][(j / 3) * 3 + v] == c) {
        return 0;
      }
    }
  }
  return 1;
}


x86 assembly (clang, -O0):
<check>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1d(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x9,-0x24(%rbp)
jge    11ae <check+0xae>
mov    -0x24(%rbp),%eax
cmp    -0x14(%rbp),%eax
je     1163 <check+0x63>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1d(%rbp),%ecx
cmp    %ecx,%eax
jne    1163 <check+0x63>
movl   $0x0,-0x4(%rbp)
jmp    1291 <check+0x191>
mov    -0x24(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     119b <check+0x9b>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1d(%rbp),%ecx
cmp    %ecx,%eax
jne    119b <check+0x9b>
movl   $0x0,-0x4(%rbp)
jmp    1291 <check+0x191>
jmp    11a0 <check+0xa0>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1121 <check+0x21>
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    128a <check+0x18a>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    1277 <check+0x177>
mov    -0x14(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
imul   $0x3,%eax,%eax
add    -0x28(%rbp),%eax
cmp    -0x14(%rbp),%eax
je     1264 <check+0x164>
mov    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
imul   $0x3,%eax,%eax
add    -0x2c(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     1264 <check+0x164>
mov    -0x10(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x40(%rbp),%rax
imul   $0x3,%ecx,%ecx
add    -0x28(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x38(%rbp),%rax
imul   $0x3,%ecx,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1d(%rbp),%ecx
cmp    %ecx,%eax
jne    1264 <check+0x164>
movl   $0x0,-0x4(%rbp)
jmp    1291 <check+0x191>
jmp    1269 <check+0x169>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11c6 <check+0xc6>
jmp    127c <check+0x17c>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11b5 <check+0xb5>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<check>:
push   %rbx
add    $0x30,%cl
movslq %edx,%r8
test   %esi,%esi
je     111a <check+0x1a>
mov    (%rdi),%r9
xor    %eax,%eax
cmp    %cl,(%r9,%r8,1)
je     1381 <check+0x281>
movslq %esi,%r9
test   %edx,%edx
je     1130 <check+0x30>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,(%r10)
je     1381 <check+0x281>
cmp    $0x1,%esi
je     1145 <check+0x45>
mov    0x8(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x1,%edx
je     115a <check+0x5a>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x1(%r10)
je     1381 <check+0x281>
cmp    $0x2,%esi
je     116f <check+0x6f>
mov    0x10(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x2,%edx
je     1184 <check+0x84>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x2(%r10)
je     1381 <check+0x281>
cmp    $0x3,%esi
je     1199 <check+0x99>
mov    0x18(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x3,%edx
je     11ae <check+0xae>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x3(%r10)
je     1381 <check+0x281>
cmp    $0x4,%esi
je     11c3 <check+0xc3>
mov    0x20(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x4,%edx
je     11d8 <check+0xd8>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x4(%r10)
je     1381 <check+0x281>
cmp    $0x5,%esi
je     11ed <check+0xed>
mov    0x28(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x5,%edx
je     1202 <check+0x102>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x5(%r10)
je     1381 <check+0x281>
cmp    $0x6,%esi
je     1217 <check+0x117>
mov    0x30(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x6,%edx
je     122c <check+0x12c>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x6(%r10)
je     1381 <check+0x281>
cmp    $0x7,%esi
je     1241 <check+0x141>
mov    0x38(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x7,%edx
je     1256 <check+0x156>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x7(%r10)
je     1381 <check+0x281>
cmp    $0x8,%esi
je     126b <check+0x16b>
mov    0x40(%rdi),%r10
xor    %eax,%eax
cmp    %cl,(%r10,%r8,1)
je     1381 <check+0x281>
cmp    $0x8,%edx
je     1280 <check+0x180>
mov    (%rdi,%r9,8),%r10
xor    %eax,%eax
cmp    %cl,0x8(%r10)
je     1381 <check+0x281>
imul   $0x55555556,%r9,%rax
mov    %rax,%r9
shr    $0x3f,%r9
shr    $0x20,%rax
add    %r9d,%eax
lea    (%rax,%rax,2),%r10d
imul   $0x55555556,%r8,%rax
mov    %rax,%r8
shr    $0x3f,%r8
shr    $0x20,%rax
add    %r8d,%eax
lea    (%rax,%rax,2),%eax
mov    %edx,%r11d
sub    %eax,%r11d
movslq %eax,%r8
movslq %r10d,%r9
cmp    %r9d,%esi
je     12ff <check+0x1ff>
test   %r11d,%r11d
je     12d5 <check+0x1d5>
mov    (%rdi,%r9,8),%rax
cmp    %cl,(%rax,%r8,1)
je     137f <check+0x27f>
lea    0x1(%r8),%rax
cmp    %edx,%eax
je     12ea <check+0x1ea>
mov    (%rdi,%r9,8),%rbx
cmp    %cl,(%rbx,%rax,1)
je     137f <check+0x27f>
lea    0x2(%r8),%rax
cmp    %edx,%eax
je     12ff <check+0x1ff>
mov    (%rdi,%r9,8),%rbx
cmp    %cl,(%rbx,%rax,1)
je     137f <check+0x27f>
lea    0x1(%r10),%eax
cmp    %esi,%eax
je     133b <check+0x23b>
test   %r11d,%r11d
je     1317 <check+0x217>
mov    0x8(%rdi,%r9,8),%rax
cmp    %cl,(%rax,%r8,1)
je     137f <check+0x27f>
lea    0x1(%r8),%rax
cmp    %edx,%eax
je     1329 <check+0x229>
mov    0x8(%rdi,%r9,8),%rbx
cmp    %cl,(%rbx,%rax,1)
je     137f <check+0x27f>
lea    0x2(%r8),%rax
cmp    %edx,%eax
je     133b <check+0x23b>
mov    0x8(%rdi,%r9,8),%rbx
cmp    %cl,(%rbx,%rax,1)
je     137f <check+0x27f>
add    $0x2,%r10d
mov    $0x1,%eax
cmp    %esi,%r10d
je     1381 <check+0x281>
test   %r11d,%r11d
je     1359 <check+0x259>
mov    0x10(%rdi,%r9,8),%rsi
cmp    %cl,(%rsi,%r8,1)
je     137f <check+0x27f>
lea    0x1(%r8),%rsi
cmp    %edx,%esi
je     136b <check+0x26b>
mov    0x10(%rdi,%r9,8),%rbx
cmp    %cl,(%rbx,%rsi,1)
je     137f <check+0x27f>
add    $0x2,%r8
cmp    %edx,%r8d
je     1381 <check+0x281>
mov    0x10(%rdi,%r9,8),%rdx
cmp    %cl,(%rdx,%r8,1)
jne    1381 <check+0x281>
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
define i32 @check(i8** %0, i32 %1, i32 %2, i32 %3) {
%5 = alloca i32
%6 = alloca i8**
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i8
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
store i8** %0, i8*** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i32 %3, i32* %9
%14 = load i32, i32* %9
%15 = add nsw i32 48, %14
%16 = trunc i32 %15 to i8
store i8 %16, i8* %10
store i32 0, i32* %11
br label %17
17: ; preds = %59, %4
%18 = load i32, i32* %11
%19 = icmp slt i32 %18, 9
br i1 %19, label %20, label %62
20: ; preds = %17
%21 = load i32, i32* %11
%22 = load i32, i32* %7
%23 = icmp ne i32 %21, %22
br i1 %23, label %24, label %39
24: ; preds = %20
%25 = load i8**, i8*** %6
%26 = load i32, i32* %11
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8*, i8** %25, i64 %27
%29 = load i8*, i8** %28
%30 = load i32, i32* %8
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds i8, i8* %29, i64 %31
%33 = load i8, i8* %32
%34 = sext i8 %33 to i32
%35 = load i8, i8* %10
%36 = sext i8 %35 to i32
%37 = icmp eq i32 %34, %36
br i1 %37, label %38, label %39
38: ; preds = %24
store i32 0, i32* %5
br label %118
39: ; preds = %24, %20
%40 = load i32, i32* %11
%41 = load i32, i32* %8
%42 = icmp ne i32 %40, %41
br i1 %42, label %43, label %58
43: ; preds = %39
%44 = load i8**, i8*** %6
%45 = load i32, i32* %7
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i8*, i8** %44, i64 %46
%48 = load i8*, i8** %47
%49 = load i32, i32* %11
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i8, i8* %48, i64 %50
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = load i8, i8* %10
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %53, %55
br i1 %56, label %57, label %58
57: ; preds = %43
store i32 0, i32* %5
br label %118
58: ; preds = %43, %39
br label %59
59: ; preds = %58
%60 = load i32, i32* %11
%61 = add nsw i32 %60, 1
store i32 %61, i32* %11
br label %17
62: ; preds = %17
store i32 0, i32* %12
br label %63
63: ; preds = %114, %62
%64 = load i32, i32* %12
%65 = icmp slt i32 %64, 3
br i1 %65, label %66, label %117
66: ; preds = %63
store i32 0, i32* %13
br label %67
67: ; preds = %110, %66
%68 = load i32, i32* %13
%69 = icmp slt i32 %68, 3
br i1 %69, label %70, label %113
70: ; preds = %67
%71 = load i32, i32* %7
%72 = sdiv i32 %71, 3
%73 = mul nsw i32 %72, 3
%74 = load i32, i32* %12
%75 = add nsw i32 %73, %74
%76 = load i32, i32* %7
%77 = icmp ne i32 %75, %76
br i1 %77, label %78, label %109
78: ; preds = %70
%79 = load i32, i32* %8
%80 = sdiv i32 %79, 3
%81 = mul nsw i32 %80, 3
%82 = load i32, i32* %13
%83 = add nsw i32 %81, %82
%84 = load i32, i32* %8
%85 = icmp ne i32 %83, %84
br i1 %85, label %86, label %109
86: ; preds = %78
%87 = load i8**, i8*** %6
%88 = load i32, i32* %7
%89 = sdiv i32 %88, 3
%90 = mul nsw i32 %89, 3
%91 = load i32, i32* %12
%92 = add nsw i32 %90, %91
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds i8*, i8** %87, i64 %93
%95 = load i8*, i8** %94
%96 = load i32, i32* %8
%97 = sdiv i32 %96, 3
%98 = mul nsw i32 %97, 3
%99 = load i32, i32* %13
%100 = add nsw i32 %98, %99
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i8, i8* %95, i64 %101
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = load i8, i8* %10
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %104, %106
br i1 %107, label %108, label %109
108: ; preds = %86
store i32 0, i32* %5
br label %118
109: ; preds = %86, %78, %70
br label %110
110: ; preds = %109
%111 = load i32, i32* %13
%112 = add nsw i32 %111, 1
store i32 %112, i32* %13
br label %67
113: ; preds = %67
br label %114
114: ; preds = %113
%115 = load i32, i32* %12
%116 = add nsw i32 %115, 1
store i32 %116, i32* %12
br label %63
117: ; preds = %63
store i32 1, i32* %5
br label %118
118: ; preds = %117, %108, %57, %38
%119 = load i32, i32* %5
ret i32 %119
}

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