void ms_quadtree(int x, int y, int z, char *buffer) {
  int i;
  char *ptr = buffer;
  for (i = z; i > 0; i--) {
    int mask = 1 << (i - 1);
    char digit = '0';
    if ((x & mask) != 0) {
      digit += 1;
    }
    if ((y & mask) != 0) {
      digit += 2;
    }
    *ptr++ = digit;
  }
  *ptr++ = '\0';
}


x86 assembly (clang, -O0):
<ms_quadtree>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jle    1191 <ms_quadtree+0x91>
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x2c(%rbp)
movb   $0x30,-0x2d(%rbp)
mov    -0x4(%rbp),%eax
and    -0x2c(%rbp),%eax
cmp    $0x0,%eax
je     1156 <ms_quadtree+0x56>
movsbl -0x2d(%rbp),%eax
add    $0x1,%eax
mov    %al,-0x2d(%rbp)
mov    -0x8(%rbp),%eax
and    -0x2c(%rbp),%eax
cmp    $0x0,%eax
je     116f <ms_quadtree+0x6f>
movsbl -0x2d(%rbp),%eax
add    $0x2,%eax
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    111f <ms_quadtree+0x1f>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<ms_quadtree>:
test   %edx,%edx
jle    1696 <ms_quadtree+0x596>
lea    -0x1(%rdx),%r9d
cmp    $0xf,%r9d
jb     166d <ms_quadtree+0x56d>
add    $0x1,%r9
mov    %r9,%r8
and    $0xfffffffffffffff0,%r8
movd   %edx,%xmm0
pshufd $0x0,%xmm0,%xmm9
movdqa 0xecd(%rip),%xmm7
paddd  %xmm9,%xmm7
movdqa 0xecf(%rip),%xmm8
paddd  %xmm9,%xmm8
movdqa 0xed1(%rip),%xmm12
paddd  %xmm9,%xmm12
paddd  0xed3(%rip),%xmm9
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm10
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm6
lea    -0x10(%r8),%rax
mov    %rax,%r10
shr    $0x4,%r10
add    $0x1,%r10
test   %rax,%rax
je     169a <ms_quadtree+0x59a>
mov    %r10,%rax
and    $0xfffffffffffffffe,%rax
xor    %r11d,%r11d
movdqa 0xeb5(%rip),%xmm14
pxor   %xmm11,%xmm11
movdqa 0xe97(%rip),%xmm15
nopl   0x0(%rax)
movdqa %xmm7,%xmm2
pcmpeqd %xmm4,%xmm4
paddd  %xmm4,%xmm2
movdqa %xmm8,%xmm3
paddd  %xmm4,%xmm3
movdqa %xmm12,%xmm1
paddd  %xmm4,%xmm1
movdqa %xmm9,%xmm0
paddd  %xmm4,%xmm0
pslld  $0x17,%xmm0
paddd  %xmm15,%xmm0
cvttps2dq %xmm0,%xmm0
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm14,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm14,%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm0
pslld  $0x17,%xmm1
paddd  %xmm15,%xmm1
cvttps2dq %xmm1,%xmm1
pshufd $0xf5,%xmm1,%xmm4
pmuludq %xmm14,%xmm1
pshufd $0xe8,%xmm1,%xmm13
pmuludq %xmm14,%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm13
pslld  $0x17,%xmm3
paddd  %xmm15,%xmm3
cvttps2dq %xmm3,%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm14,%xmm3
movdqa %xmm10,%xmm5
pshufd $0xe8,%xmm3,%xmm10
pmuludq %xmm14,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm10
pslld  $0x17,%xmm2
paddd  %xmm15,%xmm2
cvttps2dq %xmm2,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm14,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm14,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm2,%xmm4
pand   %xmm5,%xmm4
movdqa %xmm13,%xmm1
pand   %xmm5,%xmm1
movdqa %xmm0,%xmm3
pand   %xmm5,%xmm3
pcmpeqd %xmm11,%xmm3
pcmpeqd %xmm11,%xmm1
packssdw %xmm1,%xmm3
movdqa %xmm10,%xmm1
pand   %xmm5,%xmm1
pcmpeqd %xmm11,%xmm1
pcmpeqd %xmm11,%xmm4
packssdw %xmm4,%xmm1
packsswb %xmm1,%xmm3
movdqa 0xd8a(%rip),%xmm1
paddb  %xmm1,%xmm3
pand   %xmm6,%xmm2
pand   %xmm6,%xmm10
pand   %xmm6,%xmm13
pand   %xmm6,%xmm0
pcmpeqd %xmm11,%xmm0
pcmpeqd %xmm11,%xmm13
packssdw %xmm13,%xmm0
pcmpeqd %xmm11,%xmm10
pcmpeqd %xmm11,%xmm2
packssdw %xmm2,%xmm10
packsswb %xmm10,%xmm0
movdqa %xmm5,%xmm10
movdqa %xmm3,%xmm1
movdqa 0xd50(%rip),%xmm2
por    %xmm2,%xmm1
pand   %xmm0,%xmm3
pandn  %xmm1,%xmm0
por    %xmm3,%xmm0
movdqu %xmm0,(%rcx,%r11,1)
movdqa %xmm7,%xmm3
movdqa 0xd3e(%rip),%xmm4
paddd  %xmm4,%xmm3
movdqa %xmm8,%xmm0
paddd  %xmm4,%xmm0
movdqa %xmm12,%xmm1
paddd  %xmm4,%xmm1
movdqa %xmm9,%xmm2
paddd  %xmm4,%xmm2
pslld  $0x17,%xmm2
paddd  %xmm15,%xmm2
cvttps2dq %xmm2,%xmm2
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm14,%xmm2
pshufd $0xe8,%xmm2,%xmm4
pmuludq %xmm14,%xmm5
pshufd $0xe8,%xmm5,%xmm2
punpckldq %xmm2,%xmm4
pslld  $0x17,%xmm1
paddd  %xmm15,%xmm1
cvttps2dq %xmm1,%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm14,%xmm1
movdqa %xmm7,%xmm13
movdqa %xmm6,%xmm7
pshufd $0xe8,%xmm1,%xmm6
pmuludq %xmm14,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm6
pslld  $0x17,%xmm0
paddd  %xmm15,%xmm0
cvttps2dq %xmm0,%xmm0
pshufd $0xf5,%xmm0,%xmm5
pmuludq %xmm14,%xmm0
pshufd $0xe8,%xmm0,%xmm2
pmuludq %xmm14,%xmm5
pshufd $0xe8,%xmm5,%xmm0
punpckldq %xmm0,%xmm2
pslld  $0x17,%xmm3
paddd  %xmm15,%xmm3
cvttps2dq %xmm3,%xmm0
pshufd $0xf5,%xmm0,%xmm5
pmuludq %xmm14,%xmm0
pshufd $0xe8,%xmm0,%xmm3
pmuludq %xmm14,%xmm5
pshufd $0xe8,%xmm5,%xmm0
punpckldq %xmm0,%xmm3
movdqa %xmm3,%xmm5
pand   %xmm10,%xmm5
movdqa %xmm6,%xmm1
pand   %xmm10,%xmm1
movdqa %xmm4,%xmm0
pand   %xmm10,%xmm0
pcmpeqd %xmm11,%xmm0
pcmpeqd %xmm11,%xmm1
packssdw %xmm1,%xmm0
movdqa %xmm2,%xmm1
pand   %xmm10,%xmm1
pcmpeqd %xmm11,%xmm1
pcmpeqd %xmm11,%xmm5
packssdw %xmm5,%xmm1
packsswb %xmm1,%xmm0
pand   %xmm7,%xmm6
pand   %xmm7,%xmm4
pcmpeqd %xmm11,%xmm4
pcmpeqd %xmm11,%xmm6
packssdw %xmm6,%xmm4
movdqa %xmm7,%xmm6
movdqa %xmm13,%xmm7
pand   %xmm6,%xmm3
pand   %xmm6,%xmm2
pcmpeqd %xmm11,%xmm2
pcmpeqd %xmm11,%xmm3
packssdw %xmm3,%xmm2
paddb  0xbc9(%rip),%xmm0
packsswb %xmm2,%xmm4
movdqa %xmm0,%xmm1
por    0xbc9(%rip),%xmm1
pand   %xmm4,%xmm0
pandn  %xmm1,%xmm4
por    %xmm0,%xmm4
movdqu %xmm4,0x10(%rcx,%r11,1)
add    $0x20,%r11
movdqa 0xbca(%rip),%xmm0
paddd  %xmm0,%xmm9
paddd  %xmm0,%xmm12
paddd  %xmm0,%xmm8
paddd  %xmm0,%xmm7
add    $0xfffffffffffffffe,%rax
jne    11b0 <ms_quadtree+0xb0>
test   $0x1,%r10b
je     1662 <ms_quadtree+0x562>
pcmpeqd %xmm0,%xmm0
paddd  %xmm0,%xmm7
paddd  %xmm0,%xmm8
paddd  %xmm0,%xmm12
paddd  %xmm0,%xmm9
pslld  $0x17,%xmm9
movdqa 0xb2e(%rip),%xmm2
paddd  %xmm2,%xmm9
cvttps2dq %xmm9,%xmm0
movdqa 0xb2c(%rip),%xmm3
pshufd $0xf5,%xmm0,%xmm1
pmuludq %xmm3,%xmm0
pshufd $0xe8,%xmm0,%xmm5
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm0
punpckldq %xmm0,%xmm5
pslld  $0x17,%xmm12
paddd  %xmm2,%xmm12
cvttps2dq %xmm12,%xmm0
pshufd $0xf5,%xmm0,%xmm1
pmuludq %xmm3,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
pslld  $0x17,%xmm8
paddd  %xmm2,%xmm8
cvttps2dq %xmm8,%xmm1
pshufd $0xf5,%xmm1,%xmm4
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm3,%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm1
pslld  $0x17,%xmm7
paddd  %xmm2,%xmm7
cvttps2dq %xmm7,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm3,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm3,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm2,%xmm4
pand   %xmm10,%xmm4
movdqa %xmm6,%xmm3
movdqa %xmm1,%xmm6
pand   %xmm10,%xmm6
movdqa %xmm0,%xmm7
pand   %xmm10,%xmm7
pand   %xmm5,%xmm10
pxor   %xmm8,%xmm8
pcmpeqd %xmm8,%xmm10
pcmpeqd %xmm8,%xmm7
packssdw %xmm7,%xmm10
pcmpeqd %xmm8,%xmm6
pcmpeqd %xmm8,%xmm4
packssdw %xmm4,%xmm6
packsswb %xmm6,%xmm10
paddb  0xa4f(%rip),%xmm10
pand   %xmm3,%xmm2
pand   %xmm3,%xmm1
pand   %xmm3,%xmm0
pand   %xmm3,%xmm5
pcmpeqd %xmm8,%xmm5
pcmpeqd %xmm8,%xmm0
packssdw %xmm0,%xmm5
pcmpeqd %xmm8,%xmm1
pcmpeqd %xmm8,%xmm2
packssdw %xmm2,%xmm1
packsswb %xmm1,%xmm5
movdqa 0xa27(%rip),%xmm0
por    %xmm10,%xmm0
pand   %xmm5,%xmm10
pandn  %xmm0,%xmm5
por    %xmm10,%xmm5
movdqu %xmm5,(%rcx,%r11,1)
add    %r8,%rcx
cmp    %r8,%r9
je     1696 <ms_quadtree+0x596>
sub    %r8d,%edx
add    $0x1,%edx
lea    -0x2(%rdx),%eax
movzbl %al,%r8d
bt     %r8d,%esi
setb   %al
add    %al,%al
bt     %r8d,%edi
adc    $0xff,%al
add    $0x31,%al
mov    %al,(%rcx)
add    $0x1,%rcx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1670 <ms_quadtree+0x570>
movb   $0x0,(%rcx)
ret
xor    %r11d,%r11d
test   $0x1,%r10b
jne    14ed <ms_quadtree+0x3ed>
jmp    1662 <ms_quadtree+0x562>

LLVM IR (-O0):
define void @ms_quadtree(i32 %0, i32 %1, i32 %2, i8* %3) {
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i32
%12 = alloca i8
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store i8* %3, i8** %8
%13 = load i8*, i8** %8
store i8* %13, i8** %10
%14 = load i32, i32* %7
store i32 %14, i32* %9
br label %15
15: ; preds = %45, %4
%16 = load i32, i32* %9
%17 = icmp sgt i32 %16, 0
br i1 %17, label %18, label %48
18: ; preds = %15
%19 = load i32, i32* %9
%20 = sub nsw i32 %19, 1
%21 = shl i32 1, %20
store i32 %21, i32* %11
store i8 48, i8* %12
%22 = load i32, i32* %5
%23 = load i32, i32* %11
%24 = and i32 %22, %23
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %31
26: ; preds = %18
%27 = load i8, i8* %12
%28 = sext i8 %27 to i32
%29 = add nsw i32 %28, 1
%30 = trunc i32 %29 to i8
store i8 %30, i8* %12
br label %31
31: ; preds = %26, %18
%32 = load i32, i32* %6
%33 = load i32, i32* %11
%34 = and i32 %32, %33
%35 = icmp ne i32 %34, 0
br i1 %35, label %36, label %41
36: ; preds = %31
%37 = load i8, i8* %12
%38 = sext i8 %37 to i32
%39 = add nsw i32 %38, 2
%40 = trunc i32 %39 to i8
store i8 %40, i8* %12
br label %41
41: ; preds = %36, %31
%42 = load i8, i8* %12
%43 = load i8*, i8** %10
%44 = getelementptr inbounds i8, i8* %43, i32 1
store i8* %44, i8** %10
store i8 %42, i8* %43
br label %45
45: ; preds = %41
%46 = load i32, i32* %9
%47 = add nsw i32 %46, -1
store i32 %47, i32* %9
br label %15
48: ; preds = %15
%49 = load i8*, i8** %10
%50 = getelementptr inbounds i8, i8* %49, i32 1
store i8* %50, i8** %10
store i8 0, i8* %49
ret void
}

LLVM IR (-O2):
define void @ms_quadtree(i32 %0, i32 %1, i32 %2, i8* nocapture writeonly %3) {
%5 = icmp sgt i32 %2, 0
br i1 %5, label %6, label %96
6: ; preds = %4
%7 = add i32 %2, -1
%8 = zext i32 %7 to i64
%9 = add nuw nsw i64 %8, 1
%10 = icmp ult i32 %7, 15
br i1 %10, label %79, label %11
11: ; preds = %6
%12 = and i64 %9, 8589934576
%13 = trunc i64 %12 to i32
%14 = sub i32 %2, %13
%15 = getelementptr i8, i8* %3, i64 %12
%16 = insertelement <16 x i32> poison, i32 %2, i64 0
%17 = shufflevector <16 x i32> %16, <16 x i32> poison, <16 x i32> zeroinitializer
%18 = add <16 x i32> %17, <i32 0, i32 -1, i32 -2, i32 -3, i32 -4, i32 -5, i32 -6, i32 -7, i32 -8, i32 -9, i32 -10, i32 -11, i32 -12, i32 -13, i32 -14, i32 -15>
%19 = insertelement <16 x i32> poison, i32 %0, i64 0
%20 = shufflevector <16 x i32> %19, <16 x i32> poison, <16 x i32> zeroinitializer
%21 = insertelement <16 x i32> poison, i32 %1, i64 0
%22 = shufflevector <16 x i32> %21, <16 x i32> poison, <16 x i32> zeroinitializer
%23 = add nsw i64 %12, -16
%24 = lshr exact i64 %23, 4
%25 = add nuw nsw i64 %24, 1
%26 = and i64 %25, 1
%27 = icmp eq i64 %23, 0
br i1 %27, label %61, label %28
28: ; preds = %11
%29 = and i64 %25, 2305843009213693950
br label %30
30: ; preds = %30, %28
%31 = phi i64 [ 0, %28 ], [ %57, %30 ]
%32 = phi <16 x i32> [ %18, %28 ], [ %58, %30 ]
%33 = phi i64 [ 0, %28 ], [ %59, %30 ]
%34 = getelementptr i8, i8* %3, i64 %31
%35 = add nsw <16 x i32> %32, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
%36 = shl nuw <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %35
%37 = and <16 x i32> %36, %20
%38 = icmp eq <16 x i32> %37, zeroinitializer
%39 = select <16 x i1> %38, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%40 = and <16 x i32> %36, %22
%41 = icmp eq <16 x i32> %40, zeroinitializer
%42 = or <16 x i8> %39, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%43 = select <16 x i1> %41, <16 x i8> %39, <16 x i8> %42
%44 = bitcast i8* %34 to <16 x i8>*
store <16 x i8> %43, <16 x i8>* %44
%45 = or i64 %31, 16
%46 = getelementptr i8, i8* %3, i64 %45
%47 = add <16 x i32> %32, <i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17, i32 -17>
%48 = shl nuw <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %47
%49 = and <16 x i32> %48, %20
%50 = icmp eq <16 x i32> %49, zeroinitializer
%51 = select <16 x i1> %50, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%52 = and <16 x i32> %48, %22
%53 = icmp eq <16 x i32> %52, zeroinitializer
%54 = or <16 x i8> %51, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%55 = select <16 x i1> %53, <16 x i8> %51, <16 x i8> %54
%56 = bitcast i8* %46 to <16 x i8>*
store <16 x i8> %55, <16 x i8>* %56
%57 = add nuw i64 %31, 32
%58 = add <16 x i32> %32, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%59 = add i64 %33, 2
%60 = icmp eq i64 %59, %29
br i1 %60, label %61, label %30
61: ; preds = %30, %11
%62 = phi i64 [ 0, %11 ], [ %57, %30 ]
%63 = phi <16 x i32> [ %18, %11 ], [ %58, %30 ]
%64 = icmp eq i64 %26, 0
br i1 %64, label %77, label %65
65: ; preds = %61
%66 = getelementptr i8, i8* %3, i64 %62
%67 = add nsw <16 x i32> %63, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
%68 = shl nuw <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>, %67
%69 = and <16 x i32> %68, %20
%70 = icmp eq <16 x i32> %69, zeroinitializer
%71 = select <16 x i1> %70, <16 x i8> <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>, <16 x i8> <i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49, i8 49>
%72 = and <16 x i32> %68, %22
%73 = icmp eq <16 x i32> %72, zeroinitializer
%74 = or <16 x i8> %71, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%75 = select <16 x i1> %73, <16 x i8> %71, <16 x i8> %74
%76 = bitcast i8* %66 to <16 x i8>*
store <16 x i8> %75, <16 x i8>* %76
br label %77
77: ; preds = %61, %65
%78 = icmp eq i64 %9, %12
br i1 %78, label %96, label %79
79: ; preds = %6, %77
%80 = phi i32 [ %2, %6 ], [ %14, %77 ]
%81 = phi i8* [ %3, %6 ], [ %15, %77 ]
br label %82
82: ; preds = %79, %82
%83 = phi i32 [ %85, %82 ], [ %80, %79 ]
%84 = phi i8* [ %94, %82 ], [ %81, %79 ]
%85 = add nsw i32 %83, -1
%86 = shl nuw i32 1, %85
%87 = and i32 %86, %0
%88 = icmp eq i32 %87, 0
%89 = select i1 %88, i8 48, i8 49
%90 = and i32 %86, %1
%91 = icmp eq i32 %90, 0
%92 = or i8 %89, 2
%93 = select i1 %91, i8 %89, i8 %92
%94 = getelementptr inbounds i8, i8* %84, i64 1
store i8 %93, i8* %84
%95 = icmp ugt i32 %83, 1
br i1 %95, label %82, label %96
96: ; preds = %82, %77, %4
%97 = phi i8* [ %3, %4 ], [ %15, %77 ], [ %94, %82 ]
store i8 0, i8* %97
ret void
}