#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 */
typedef int uint16_t;

/* Variables and functions */
void initialize_cells(long col, uint16_t (*cell)[col], long row) {
  for (int rc = 0; rc < row; rc++) {
    for (int cc = 0; cc < col; cc++) {
      if (rc == 0 && cc == 0)
        cell[rc][cc] = 0x009F;
      else if (rc == 0 && cc == (col - 1))
        cell[rc][cc] = 0x003F;
      else if (rc == (row - 1) && cc == 0)
        cell[rc][cc] = 0x00CF;
      else if (rc == (row - 1) && cc == (col - 1))
        cell[rc][cc] = 0x006F;
      else if (rc == (row - 1) && rc == 0 && cc == (col - 1))
        cell[rc][cc] = 0x007F;
      else if (rc == (row - 1) && rc == 0 && cc == 0)
        cell[rc][cc] = 0x008F;
      else if (rc == (row - 1) && cc == 0 && cc == (col - 1))
        cell[rc][cc] = 0x00EF;
      else if (rc == 0 && cc == 0 && cc == (col - 1))
        cell[rc][cc] = 0x001F;
      else if (rc == 0)
        cell[rc][cc] = 0x001F;
      else if (rc == (row - 1))
        cell[rc][cc] = 0x004F;
      else if (cc == 0)
        cell[rc][cc] = 0x008F;
      else if (cc == (col - 1))
        cell[rc][cc] = 0x002F;
      else
        cell[rc][cc] = 0x000F;
    }
  }
}


x86 assembly (clang, -O0):
<initialize_cells>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x1c(%rbp)
movslq -0x1c(%rbp),%rax
cmp    -0x18(%rbp),%rax
jge    1509 <initialize_cells+0x409>
movl   $0x0,-0x20(%rbp)
movslq -0x20(%rbp),%rax
cmp    -0x8(%rbp),%rax
jge    14f6 <initialize_cells+0x3f6>
cmpl   $0x0,-0x1c(%rbp)
jne    117d <initialize_cells+0x7d>
cmpl   $0x0,-0x20(%rbp)
jne    117d <initialize_cells+0x7d>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x9f,(%rax,%rcx,4)
jmp    14e3 <initialize_cells+0x3e3>
cmpl   $0x0,-0x1c(%rbp)
jne    11c3 <initialize_cells+0xc3>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    11c3 <initialize_cells+0xc3>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x3f,(%rax,%rcx,4)
jmp    14de <initialize_cells+0x3de>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    1209 <initialize_cells+0x109>
cmpl   $0x0,-0x20(%rbp)
jne    1209 <initialize_cells+0x109>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0xcf,(%rax,%rcx,4)
jmp    14d9 <initialize_cells+0x3d9>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    125a <initialize_cells+0x15a>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    125a <initialize_cells+0x15a>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x6f,(%rax,%rcx,4)
jmp    14d4 <initialize_cells+0x3d4>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    12b5 <initialize_cells+0x1b5>
cmpl   $0x0,-0x1c(%rbp)
jne    12b5 <initialize_cells+0x1b5>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    12b5 <initialize_cells+0x1b5>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x7f,(%rax,%rcx,4)
jmp    14cf <initialize_cells+0x3cf>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    1305 <initialize_cells+0x205>
cmpl   $0x0,-0x1c(%rbp)
jne    1305 <initialize_cells+0x205>
cmpl   $0x0,-0x20(%rbp)
jne    1305 <initialize_cells+0x205>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x8f,(%rax,%rcx,4)
jmp    14ca <initialize_cells+0x3ca>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    1360 <initialize_cells+0x260>
cmpl   $0x0,-0x20(%rbp)
jne    1360 <initialize_cells+0x260>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    1360 <initialize_cells+0x260>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0xef,(%rax,%rcx,4)
jmp    14c5 <initialize_cells+0x3c5>
cmpl   $0x0,-0x1c(%rbp)
jne    13b0 <initialize_cells+0x2b0>
cmpl   $0x0,-0x20(%rbp)
jne    13b0 <initialize_cells+0x2b0>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    13b0 <initialize_cells+0x2b0>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x1f,(%rax,%rcx,4)
jmp    14c0 <initialize_cells+0x3c0>
cmpl   $0x0,-0x1c(%rbp)
jne    13e1 <initialize_cells+0x2e1>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x1f,(%rax,%rcx,4)
jmp    14bb <initialize_cells+0x3bb>
movslq -0x1c(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    141d <initialize_cells+0x31d>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x4f,(%rax,%rcx,4)
jmp    14b6 <initialize_cells+0x3b6>
cmpl   $0x0,-0x20(%rbp)
jne    144e <initialize_cells+0x34e>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x8f,(%rax,%rcx,4)
jmp    14b1 <initialize_cells+0x3b1>
movslq -0x20(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    148a <initialize_cells+0x38a>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0x2f,(%rax,%rcx,4)
jmp    14ac <initialize_cells+0x3ac>
mov    -0x28(%rbp),%rdx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
movl   $0xf,(%rax,%rcx,4)
jmp    14b1 <initialize_cells+0x3b1>
jmp    14b6 <initialize_cells+0x3b6>
jmp    14bb <initialize_cells+0x3bb>
jmp    14c0 <initialize_cells+0x3c0>
jmp    14c5 <initialize_cells+0x3c5>
jmp    14ca <initialize_cells+0x3ca>
jmp    14cf <initialize_cells+0x3cf>
jmp    14d4 <initialize_cells+0x3d4>
jmp    14d9 <initialize_cells+0x3d9>
jmp    14de <initialize_cells+0x3de>
jmp    14e3 <initialize_cells+0x3e3>
jmp    14e8 <initialize_cells+0x3e8>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1134 <initialize_cells+0x34>
jmp    14fb <initialize_cells+0x3fb>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    111f <initialize_cells+0x1f>
pop    %rbp
ret

x86 assembly (clang, -O2):
<initialize_cells>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
test   %rdx,%rdx
jle    1234 <initialize_cells+0x134>
lea    -0x1(%rdx),%r8
lea    -0x2(%rdi),%rbp
lea    0x4(%rsi),%r10
lea    0x0(,%rdi,4),%r9
lea    -0x1(%rdi),%r11
xor    %eax,%eax
mov    $0x9f,%r14d
jmp    1150 <initialize_cells+0x50>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rax
add    %r9,%r10
cmp    %rdx,%rax
je     1234 <initialize_cells+0x134>
test   %rdi,%rdi
jle    1140 <initialize_cells+0x40>
xor    %r12d,%r12d
cmp    %rax,%r8
sete   %r12b
mov    %r12d,%ebx
shl    $0x6,%ebx
or     $0x8f,%ebx
test   %rax,%rax
cmove  %r14d,%ebx
sete   %r15b
mov    %rax,%rcx
imul   %rdi,%rcx
mov    %ebx,(%rsi,%rcx,4)
cmp    $0x1,%rdi
je     1140 <initialize_cells+0x40>
and    %r12b,%r15b
lea    (%rsi,%rcx,4),%r12
xor    %ebx,%ebx
jmp    11b2 <initialize_cells+0xb2>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movl   $0x3f,-0x4(%r12,%rdi,4)
add    $0x1,%rbx
cmp    %rbx,%r11
je     1140 <initialize_cells+0x40>
test   %rax,%rax
jne    11bc <initialize_cells+0xbc>
cmp    %rbx,%rbp
je     11a0 <initialize_cells+0xa0>
cmp    %rax,%r8
jne    11e0 <initialize_cells+0xe0>
cmp    %rbx,%rbp
jne    11e0 <initialize_cells+0xe0>
movl   $0x6f,-0x4(%r12,%rdi,4)
jmp    11a9 <initialize_cells+0xa9>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    %rbx,%rbp
sete   %cl
and    %r15b,%cl
cmp    $0x1,%cl
jne    11f9 <initialize_cells+0xf9>
movl   $0x7f,-0x4(%r12,%rdi,4)
jmp    11a9 <initialize_cells+0xa9>
test   %rax,%rax
je     120d <initialize_cells+0x10d>
cmp    %rax,%r8
jne    1217 <initialize_cells+0x117>
movl   $0x4f,(%r10,%rbx,4)
jmp    11a9 <initialize_cells+0xa9>
movl   $0x1f,(%r10,%rbx,4)
jmp    11a9 <initialize_cells+0xa9>
cmp    %rbx,%rbp
jne    1227 <initialize_cells+0x127>
movl   $0x2f,-0x4(%r12,%rdi,4)
jmp    11a9 <initialize_cells+0xa9>
movl   $0xf,(%r10,%rbx,4)
jmp    11a9 <initialize_cells+0xa9>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @initialize_cells(i64 %0, i32* nocapture writeonly %1, i64 %2) {
%4 = icmp sgt i64 %2, 0
br i1 %4, label %5, label %25
5: ; preds = %3
%6 = icmp sgt i64 %0, 0
%7 = add nsw i64 %0, -1
%8 = add nsw i64 %2, -1
%9 = icmp eq i64 %0, 1
br label %10
10: ; preds = %5, %26
%11 = phi i64 [ 0, %5 ], [ %27, %26 ]
br i1 %6, label %12, label %26
12: ; preds = %10
%13 = icmp eq i64 %11, 0
%14 = icmp eq i64 %8, %11
%15 = and i1 %13, %14
%16 = mul nsw i64 %11, %0
%17 = getelementptr inbounds i32, i32* %1, i64 %16
%18 = select i1 %14, i32 207, i32 143
%19 = select i1 %13, i32 159, i32 %18
store i32 %19, i32* %17
br i1 %9, label %26, label %20
20: ; preds = %12
%21 = getelementptr inbounds i32, i32* %17, i64 %7
%22 = getelementptr inbounds i32, i32* %17, i64 %7
%23 = getelementptr inbounds i32, i32* %17, i64 %7
%24 = getelementptr inbounds i32, i32* %17, i64 %7
br label %29
25: ; preds = %26, %3
ret void
26: ; preds = %50, %12, %10
%27 = add nuw nsw i64 %11, 1
%28 = icmp eq i64 %27, %2
br i1 %28, label %25, label %10
29: ; preds = %50, %20
%30 = phi i64 [ 1, %20 ], [ %51, %50 ]
%31 = icmp eq i64 %7, %30
%32 = select i1 %13, i1 %31, i1 false
br i1 %32, label %33, label %34
33: ; preds = %29
store i32 63, i32* %24
br label %50
34: ; preds = %29
%35 = select i1 %14, i1 %31, i1 false
br i1 %35, label %36, label %37
36: ; preds = %34
store i32 111, i32* %23
br label %50
37: ; preds = %34
%38 = select i1 %15, i1 %31, i1 false
br i1 %38, label %39, label %40
39: ; preds = %37
store i32 127, i32* %22
br label %50
40: ; preds = %37
br i1 %13, label %41, label %43
41: ; preds = %40
%42 = getelementptr inbounds i32, i32* %17, i64 %30
store i32 31, i32* %42
br label %50
43: ; preds = %40
br i1 %14, label %44, label %46
44: ; preds = %43
%45 = getelementptr inbounds i32, i32* %17, i64 %30
store i32 79, i32* %45
br label %50
46: ; preds = %43
br i1 %31, label %47, label %48
47: ; preds = %46
store i32 47, i32* %21
br label %50
48: ; preds = %46
%49 = getelementptr inbounds i32, i32* %17, i64 %30
store i32 15, i32* %49
br label %50
50: ; preds = %39, %41, %48, %47, %44, %36, %33
%51 = add nuw nsw i64 %30, 1
%52 = icmp eq i64 %51, %0
br i1 %52, label %26, label %29
}