int rowsort(char grid[9][9][10], char m, char n) {
  if (grid[m][n][0])
    return 0;
  char i, j, k, f = 0;
  for (k = 1; k < 10; ++k)
    if (grid[m][n][k]) {
      for (i = 0, j = 0; j < 9; ++j)
        if (!grid[m][j][k])
          i++;
      if (i == 8) {
        grid[m][n][0] = k;
        for (i = 1; i < 10; ++i)
          if (i != k)
            if (grid[m][n][i])
              grid[m][n][i] = 0, f = 1;
      }
    }
  return f;
}


x86 assembly (clang, -O0):
<rowsort>:
push   %rbp
mov    %rsp,%rbp
mov    %dl,%al
mov    %sil,%cl
mov    %rdi,-0x10(%rbp)
mov    %cl,-0x11(%rbp)
mov    %al,-0x12(%rbp)
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rcx
imul   $0x5a,%rcx,%rcx
add    %rcx,%rax
movsbq -0x12(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
cmpb   $0x0,(%rax)
je     1144 <rowsort+0x44>
movl   $0x0,-0x4(%rbp)
jmp    12bb <rowsort+0x1bb>
movb   $0x0,-0x16(%rbp)
movb   $0x1,-0x15(%rbp)
movsbl -0x15(%rbp),%eax
cmp    $0xa,%eax
jge    12b4 <rowsort+0x1b4>
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rcx
imul   $0x5a,%rcx,%rcx
add    %rcx,%rax
movsbq -0x12(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movsbq -0x15(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
je     12a2 <rowsort+0x1a2>
movb   $0x0,-0x13(%rbp)
movb   $0x0,-0x14(%rbp)
movsbl -0x14(%rbp),%eax
cmp    $0x9,%eax
jge    11de <rowsort+0xde>
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rcx
imul   $0x5a,%rcx,%rcx
add    %rcx,%rax
movsbq -0x14(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movsbq -0x15(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
jne    11cc <rowsort+0xcc>
mov    -0x13(%rbp),%al
add    $0x1,%al
mov    %al,-0x13(%rbp)
jmp    11d1 <rowsort+0xd1>
mov    -0x14(%rbp),%al
add    $0x1,%al
mov    %al,-0x14(%rbp)
jmp    118c <rowsort+0x8c>
movsbl -0x13(%rbp),%eax
cmp    $0x8,%eax
jne    129d <rowsort+0x19d>
mov    -0x15(%rbp),%cl
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rdx
imul   $0x5a,%rdx,%rdx
add    %rdx,%rax
movsbq -0x12(%rbp),%rdx
imul   $0xa,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
movb   $0x1,-0x13(%rbp)
movsbl -0x13(%rbp),%eax
cmp    $0xa,%eax
jge    1298 <rowsort+0x198>
movsbl -0x13(%rbp),%eax
movsbl -0x15(%rbp),%ecx
cmp    %ecx,%eax
je     1286 <rowsort+0x186>
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rcx
imul   $0x5a,%rcx,%rcx
add    %rcx,%rax
movsbq -0x12(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movsbq -0x13(%rbp),%rcx
cmpb   $0x0,(%rax,%rcx,1)
je     1281 <rowsort+0x181>
mov    -0x10(%rbp),%rax
movsbq -0x11(%rbp),%rcx
imul   $0x5a,%rcx,%rcx
add    %rcx,%rax
movsbq -0x12(%rbp),%rcx
imul   $0xa,%rcx,%rcx
add    %rcx,%rax
movsbq -0x13(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movb   $0x1,-0x16(%rbp)
jmp    1286 <rowsort+0x186>
jmp    128b <rowsort+0x18b>
mov    -0x13(%rbp),%al
add    $0x1,%al
mov    %al,-0x13(%rbp)
jmp    1210 <rowsort+0x110>
jmp    129d <rowsort+0x19d>
jmp    12a2 <rowsort+0x1a2>
jmp    12a7 <rowsort+0x1a7>
mov    -0x15(%rbp),%al
add    $0x1,%al
mov    %al,-0x15(%rbp)
jmp    114c <rowsort+0x4c>
movsbl -0x16(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<rowsort>:
movslq %esi,%rax
movslq %edx,%rsi
imul   $0x5a,%rax,%rdx
lea    (%rdi,%rdx,1),%rcx
lea    (%rsi,%rsi,4),%rsi
xor    %eax,%eax
cmpb   $0x0,(%rcx,%rsi,2)
je     111b <rowsort+0x1b>
ret
lea    (%rcx,%rsi,2),%r10
lea    (%rcx,%rsi,2),%r8
add    $0x1,%r8
lea    (%rdi,%rdx,1),%r11
add    $0x1,%r11
xor    %esi,%esi
pxor   %xmm0,%xmm0
xor    %r9d,%r9d
jmp    114e <rowsort+0x4e>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rsi
cmp    $0x9,%rsi
je     12ad <rowsort+0x1ad>
cmpb   $0x0,(%r8,%rsi,1)
je     1140 <rowsort+0x40>
movzbl (%r11,%rsi,1),%ecx
movzbl 0x14(%r11,%rsi,1),%edi
movzbl 0x28(%r11,%rsi,1),%eax
movzbl 0x1e(%r11,%rsi,1),%edx
shl    $0x8,%edx
or     %edi,%edx
movzbl 0xa(%r11,%rsi,1),%edi
shl    $0x8,%edi
or     %ecx,%edi
movd   %edi,%xmm1
pinsrw $0x1,%edx,%xmm1
movzbl 0x32(%r11,%rsi,1),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
pinsrw $0x2,%ecx,%xmm1
movzbl 0x3c(%r11,%rsi,1),%eax
movzbl 0x46(%r11,%rsi,1),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
pinsrw $0x3,%ecx,%xmm1
pcmpeqb %xmm0,%xmm1
pmovmskb %xmm1,%eax
mov    %eax,%ecx
shr    %cl
and    $0x55,%cl
sub    %cl,%al
mov    %eax,%ecx
and    $0x33,%cl
shr    $0x2,%al
and    $0x33,%al
add    %cl,%al
mov    %eax,%ecx
shr    $0x4,%cl
add    %al,%cl
and    $0xf,%cl
cmpb   $0x1,0x50(%r11,%rsi,1)
adc    $0x0,%cl
cmp    $0x8,%cl
jne    1140 <rowsort+0x40>
lea    0x1(%rsi),%eax
mov    %al,(%r10)
test   %rsi,%rsi
je     1202 <rowsort+0x102>
cmpb   $0x0,(%r8)
je     11fc <rowsort+0xfc>
movb   $0x0,(%r8)
mov    $0x1,%r9b
cmp    $0x1,%rsi
je     1217 <rowsort+0x117>
cmpb   $0x0,0x2(%r10)
je     1211 <rowsort+0x111>
movb   $0x0,0x2(%r10)
mov    $0x1,%r9b
cmp    $0x2,%rsi
je     122c <rowsort+0x12c>
cmpb   $0x0,0x3(%r10)
je     1226 <rowsort+0x126>
movb   $0x0,0x3(%r10)
mov    $0x1,%r9b
cmp    $0x3,%rsi
je     1241 <rowsort+0x141>
cmpb   $0x0,0x4(%r10)
je     123b <rowsort+0x13b>
movb   $0x0,0x4(%r10)
mov    $0x1,%r9b
cmp    $0x4,%rsi
je     1256 <rowsort+0x156>
cmpb   $0x0,0x5(%r10)
je     1250 <rowsort+0x150>
movb   $0x0,0x5(%r10)
mov    $0x1,%r9b
cmp    $0x5,%rsi
je     126b <rowsort+0x16b>
cmpb   $0x0,0x6(%r10)
je     1265 <rowsort+0x165>
movb   $0x0,0x6(%r10)
mov    $0x1,%r9b
cmp    $0x6,%rsi
je     1280 <rowsort+0x180>
cmpb   $0x0,0x7(%r10)
je     127a <rowsort+0x17a>
movb   $0x0,0x7(%r10)
mov    $0x1,%r9b
cmp    $0x7,%rsi
je     1295 <rowsort+0x195>
cmpb   $0x0,0x8(%r10)
je     128f <rowsort+0x18f>
movb   $0x0,0x8(%r10)
mov    $0x1,%r9b
cmp    $0x8,%rsi
je     12ad <rowsort+0x1ad>
cmpb   $0x0,0x9(%r10)
je     1140 <rowsort+0x40>
movb   $0x0,0x9(%r10)
mov    $0x1,%r9b
jmp    1140 <rowsort+0x40>
movzbl %r9b,%eax
ret

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

LLVM IR (-O2):
define i32 @rowsort([9 x [10 x i8]]* nocapture %0, i8 signext %1, i8 signext %2) {
%4 = sext i8 %1 to i64
%5 = sext i8 %2 to i64
%6 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 0
%7 = load i8, i8* %6
%8 = icmp eq i8 %7, 0
br i1 %8, label %9, label %137
9: ; preds = %3
%10 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 1
%11 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 2
%12 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 3
%13 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 4
%14 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 5
%15 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 6
%16 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 7
%17 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 8
%18 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 9
br label %19
19: ; preds = %9, %130
%20 = phi i64 [ 1, %9 ], [ %132, %130 ]
%21 = phi i8 [ 0, %9 ], [ %131, %130 ]
%22 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 %5, i64 %20
%23 = load i8, i8* %22
%24 = icmp eq i8 %23, 0
br i1 %24, label %130, label %25
25: ; preds = %19
%26 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 0, i64 %20
%27 = load i8, i8* %26
%28 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 1, i64 %20
%29 = load i8, i8* %28
%30 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 2, i64 %20
%31 = load i8, i8* %30
%32 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 3, i64 %20
%33 = load i8, i8* %32
%34 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 4, i64 %20
%35 = load i8, i8* %34
%36 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 5, i64 %20
%37 = load i8, i8* %36
%38 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 6, i64 %20
%39 = load i8, i8* %38
%40 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 7, i64 %20
%41 = load i8, i8* %40
%42 = insertelement <8 x i8> poison, i8 %27, i64 0
%43 = insertelement <8 x i8> %42, i8 %29, i64 1
%44 = insertelement <8 x i8> %43, i8 %31, i64 2
%45 = insertelement <8 x i8> %44, i8 %33, i64 3
%46 = insertelement <8 x i8> %45, i8 %35, i64 4
%47 = insertelement <8 x i8> %46, i8 %37, i64 5
%48 = insertelement <8 x i8> %47, i8 %39, i64 6
%49 = insertelement <8 x i8> %48, i8 %41, i64 7
%50 = icmp eq <8 x i8> %49, zeroinitializer
%51 = getelementptr inbounds [9 x [10 x i8]], [9 x [10 x i8]]* %0, i64 %4, i64 8, i64 %20
%52 = load i8, i8* %51
%53 = icmp eq i8 %52, 0
%54 = zext i1 %53 to i8
%55 = bitcast <8 x i1> %50 to i8
%56 = call i8 @llvm.ctpop.i8(i8 %55)
%57 = add nuw nsw i8 %56, %54
%58 = icmp eq i8 %57, 8
br i1 %58, label %59, label %130
59: ; preds = %25
%60 = trunc i64 %20 to i8
store i8 %60, i8* %6
%61 = icmp eq i64 %20, 1
br i1 %61, label %69, label %62
62: ; preds = %59
%63 = load i8, i8* %10
%64 = icmp eq i8 %63, 0
br i1 %64, label %66, label %65
65: ; preds = %62
store i8 0, i8* %10
br label %66
66: ; preds = %65, %62
%67 = phi i8 [ 1, %65 ], [ %21, %62 ]
%68 = icmp eq i64 %20, 2
br i1 %68, label %77, label %69
69: ; preds = %59, %66
%70 = phi i8 [ %67, %66 ], [ %21, %59 ]
%71 = load i8, i8* %11
%72 = icmp eq i8 %71, 0
br i1 %72, label %74, label %73
73: ; preds = %69
store i8 0, i8* %11
br label %74
74: ; preds = %73, %69
%75 = phi i8 [ 1, %73 ], [ %70, %69 ]
%76 = icmp eq i64 %20, 3
br i1 %76, label %85, label %77
77: ; preds = %66, %74
%78 = phi i8 [ %75, %74 ], [ %67, %66 ]
%79 = load i8, i8* %12
%80 = icmp eq i8 %79, 0
br i1 %80, label %82, label %81
81: ; preds = %77
store i8 0, i8* %12
br label %82
82: ; preds = %81, %77
%83 = phi i8 [ 1, %81 ], [ %78, %77 ]
%84 = icmp eq i64 %20, 4
br i1 %84, label %93, label %85
85: ; preds = %74, %82
%86 = phi i8 [ %83, %82 ], [ %75, %74 ]
%87 = load i8, i8* %13
%88 = icmp eq i8 %87, 0
br i1 %88, label %90, label %89
89: ; preds = %85
store i8 0, i8* %13
br label %90
90: ; preds = %89, %85
%91 = phi i8 [ 1, %89 ], [ %86, %85 ]
%92 = icmp eq i64 %20, 5
br i1 %92, label %101, label %93
93: ; preds = %82, %90
%94 = phi i8 [ %91, %90 ], [ %83, %82 ]
%95 = load i8, i8* %14
%96 = icmp eq i8 %95, 0
br i1 %96, label %98, label %97
97: ; preds = %93
store i8 0, i8* %14
br label %98
98: ; preds = %97, %93
%99 = phi i8 [ 1, %97 ], [ %94, %93 ]
%100 = icmp eq i64 %20, 6
br i1 %100, label %109, label %101
101: ; preds = %90, %98
%102 = phi i8 [ %99, %98 ], [ %91, %90 ]
%103 = load i8, i8* %15
%104 = icmp eq i8 %103, 0
br i1 %104, label %106, label %105
105: ; preds = %101
store i8 0, i8* %15
br label %106
106: ; preds = %105, %101
%107 = phi i8 [ 1, %105 ], [ %102, %101 ]
%108 = icmp eq i64 %20, 7
br i1 %108, label %117, label %109
109: ; preds = %98, %106
%110 = phi i8 [ %107, %106 ], [ %99, %98 ]
%111 = load i8, i8* %16
%112 = icmp eq i8 %111, 0
br i1 %112, label %114, label %113
113: ; preds = %109
store i8 0, i8* %16
br label %114
114: ; preds = %113, %109
%115 = phi i8 [ 1, %113 ], [ %110, %109 ]
%116 = icmp eq i64 %20, 8
br i1 %116, label %125, label %117
117: ; preds = %106, %114
%118 = phi i8 [ %115, %114 ], [ %107, %106 ]
%119 = load i8, i8* %17
%120 = icmp eq i8 %119, 0
br i1 %120, label %122, label %121
121: ; preds = %117
store i8 0, i8* %17
br label %122
122: ; preds = %121, %117
%123 = phi i8 [ 1, %121 ], [ %118, %117 ]
%124 = icmp eq i64 %20, 9
br i1 %124, label %134, label %125
125: ; preds = %114, %122
%126 = phi i8 [ %123, %122 ], [ %115, %114 ]
%127 = load i8, i8* %18
%128 = icmp eq i8 %127, 0
br i1 %128, label %130, label %129
129: ; preds = %125
store i8 0, i8* %18
br label %130
130: ; preds = %125, %129, %19, %25
%131 = phi i8 [ %21, %25 ], [ %21, %19 ], [ 1, %129 ], [ %126, %125 ]
%132 = add nuw nsw i64 %20, 1
%133 = icmp eq i64 %132, 10
br i1 %133, label %134, label %19
134: ; preds = %122, %130
%135 = phi i8 [ %131, %130 ], [ %123, %122 ]
%136 = zext i8 %135 to i32
br label %137
137: ; preds = %3, %134
%138 = phi i32 [ %136, %134 ], [ 0, %3 ]
ret i32 %138
}