void place_macromodule(char grid[], int x, int y, int word1, int word2,
                       int size) {
  int i, j;
  i = (x * 6) + 1;
  j = (y * 6) + 1;
  if (word2 & 0x40) {
    grid[(j * size) + i + 2] = '1';
  }
  if (word2 & 0x20) {
    grid[(j * size) + i + 3] = '1';
  }
  if (word2 & 0x10) {
    grid[((j + 1) * size) + i] = '1';
  }
  if (word2 & 0x08) {
    grid[((j + 1) * size) + i + 1] = '1';
  }
  if (word2 & 0x04) {
    grid[((j + 1) * size) + i + 2] = '1';
  }
  if (word2 & 0x02) {
    grid[((j + 1) * size) + i + 3] = '1';
  }
  if (word2 & 0x01) {
    grid[((j + 2) * size) + i] = '1';
  }
  if (word1 & 0x40) {
    grid[((j + 2) * size) + i + 1] = '1';
  }
  if (word1 & 0x20) {
    grid[((j + 2) * size) + i + 2] = '1';
  }
  if (word1 & 0x10) {
    grid[((j + 2) * size) + i + 3] = '1';
  }
  if (word1 & 0x08) {
    grid[((j + 3) * size) + i] = '1';
  }
  if (word1 & 0x04) {
    grid[((j + 3) * size) + i + 1] = '1';
  }
  if (word1 & 0x02) {
    grid[((j + 3) * size) + i + 2] = '1';
  }
  if (word1 & 0x01) {
    grid[((j + 3) * size) + i + 3] = '1';
  }
}


x86 assembly (clang, -O0):
<place_macromodule>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
imul   $0x6,-0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
imul   $0x6,-0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     1154 <place_macromodule+0x54>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     117b <place_macromodule+0x7b>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     11a2 <place_macromodule+0xa2>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     11cc <place_macromodule+0xcc>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     11f6 <place_macromodule+0xf6>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1220 <place_macromodule+0x120>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1247 <place_macromodule+0x147>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     1271 <place_macromodule+0x171>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     129b <place_macromodule+0x19b>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     12c5 <place_macromodule+0x1c5>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x2,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     12ec <place_macromodule+0x1ec>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x3,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1316 <place_macromodule+0x216>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x3,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1340 <place_macromodule+0x240>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x3,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     136a <place_macromodule+0x26a>
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x3,%ecx
imul   -0x1c(%rbp),%ecx
add    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
pop    %rbp
ret

x86 assembly (clang, -O2):
<place_macromodule>:
add    %esi,%esi
lea    (%rsi,%rsi,2),%r10d
add    %edx,%edx
lea    (%rdx,%rdx,2),%eax
mov    %eax,%edx
or     $0x1,%edx
test   $0x40,%r8b
je     1129 <place_macromodule+0x29>
mov    %edx,%esi
imul   %r9d,%esi
add    %r10d,%esi
add    $0x3,%esi
movslq %esi,%rsi
movb   $0x31,(%rdi,%rsi,1)
test   $0x20,%r8b
je     1140 <place_macromodule+0x40>
imul   %r9d,%edx
add    %r10d,%edx
add    $0x4,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
mov    %r10d,%esi
or     $0x1,%esi
test   $0x10,%r8b
jne    11b0 <place_macromodule+0xb0>
test   $0x8,%r8b
jne    11c6 <place_macromodule+0xc6>
test   $0x4,%r8b
jne    11e4 <place_macromodule+0xe4>
test   $0x2,%r8b
jne    1202 <place_macromodule+0x102>
test   $0x1,%r8b
jne    1220 <place_macromodule+0x120>
test   $0x40,%cl
jne    1239 <place_macromodule+0x139>
test   $0x20,%cl
jne    1256 <place_macromodule+0x156>
test   $0x10,%cl
jne    1273 <place_macromodule+0x173>
test   $0x8,%cl
jne    1290 <place_macromodule+0x190>
test   $0x4,%cl
jne    12a9 <place_macromodule+0x1a9>
test   $0x2,%cl
jne    12c6 <place_macromodule+0x1c6>
test   $0x1,%cl
jne    12e3 <place_macromodule+0x1e3>
ret
lea    0x2(%rax),%edx
imul   %r9d,%edx
add    %esi,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x8,%r8b
je     1152 <place_macromodule+0x52>
lea    0x2(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x2,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x4,%r8b
je     115c <place_macromodule+0x5c>
lea    0x2(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x3,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x2,%r8b
je     1166 <place_macromodule+0x66>
lea    0x2(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x4,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x1,%r8b
je     1170 <place_macromodule+0x70>
lea    0x3(%rax),%edx
imul   %r9d,%edx
add    %esi,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x40,%cl
je     1179 <place_macromodule+0x79>
lea    0x3(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x2,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x20,%cl
je     1182 <place_macromodule+0x82>
lea    0x3(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x3,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x10,%cl
je     118b <place_macromodule+0x8b>
lea    0x3(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x4,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x8,%cl
je     1194 <place_macromodule+0x94>
lea    0x4(%rax),%edx
imul   %r9d,%edx
add    %esi,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x4,%cl
je     119d <place_macromodule+0x9d>
lea    0x4(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x2,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x2,%cl
je     11a6 <place_macromodule+0xa6>
lea    0x4(%rax),%edx
imul   %r9d,%edx
add    %r10d,%edx
add    $0x3,%edx
movslq %edx,%rdx
movb   $0x31,(%rdi,%rdx,1)
test   $0x1,%cl
je     11af <place_macromodule+0xaf>
add    $0x4,%eax
imul   %r9d,%eax
add    %r10d,%eax
add    $0x4,%eax
cltq
movb   $0x31,(%rdi,%rax,1)
ret

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

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