char *bits2str(unsigned int code, int len) {
  static char buf[33];
  int i;
  for (i = 0; i < len; i++) {
    buf[i] = '0' + ((code & (1 << (len - 1 - i))) ? 1 : 0);
  }
  buf[i] = 0;
  return buf;
}


x86 assembly (clang, -O0):
<bits2str>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1160 <bits2str+0x60>
mov    -0x4(%rbp),%edx
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
sub    -0xc(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
and    %eax,%edx
xor    %eax,%eax
mov    $0x1,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
add    $0x30,%eax
mov    %al,%dl
movslq -0xc(%rbp),%rcx
lea    0x2ee1(%rip),%rax
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1111 <bits2str+0x11>
movslq -0xc(%rbp),%rcx
lea    0x2ec5(%rip),%rax
movb   $0x0,(%rax,%rcx,1)
lea    0x2eba(%rip),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<bits2str>:
test   %esi,%esi
jle    1113 <bits2str+0x13>
mov    %esi,%r9d
cmp    $0x10,%esi
jae    111b <bits2str+0x1b>
xor    %eax,%eax
jmp    16f0 <bits2str+0x5f0>
xor    %r9d,%r9d
jmp    171c <bits2str+0x61c>
mov    %r9d,%eax
and    $0xfffffff0,%eax
movd   %esi,%xmm0
pshufd $0x0,%xmm0,%xmm12
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm13
lea    -0x10(%rax),%rcx
mov    %rcx,%r8
shr    $0x4,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     1729 <bits2str+0x629>
mov    %r8,%rdx
and    $0xfffffffffffffffe,%rdx
movdqa 0xee3(%rip),%xmm14
movdqa 0xeea(%rip),%xmm15
movdqa 0xef1(%rip),%xmm11
movdqa 0xef8(%rip),%xmm9
xor    %ecx,%ecx
lea    0x2eaf(%rip),%r10
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqa %xmm11,-0x28(%rsp)
movdqa %xmm15,-0x18(%rsp)
movdqa %xmm14,-0x78(%rsp)
movdqa %xmm9,%xmm10
movdqa %xmm14,%xmm1
pcmpeqd %xmm0,%xmm0
pxor   %xmm0,%xmm1
movdqa %xmm15,%xmm3
pxor   %xmm0,%xmm3
movdqa %xmm11,%xmm2
pxor   %xmm0,%xmm2
movdqa %xmm9,%xmm7
pxor   %xmm0,%xmm7
paddd  %xmm12,%xmm7
paddd  %xmm12,%xmm2
paddd  %xmm12,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm13,%xmm4
psrld  %xmm0,%xmm4
paddd  %xmm12,%xmm3
pshuflw $0x54,%xmm1,%xmm6
movdqa %xmm13,%xmm0
psrld  %xmm6,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm6
movdqa %xmm13,%xmm5
psrld  %xmm6,%xmm5
punpcklqdq %xmm4,%xmm0
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm13,%xmm4
psrld  %xmm1,%xmm4
punpckhqdq %xmm5,%xmm4
pshuflw $0xfe,%xmm3,%xmm1
movdqa %xmm13,%xmm5
psrld  %xmm1,%xmm5
shufps $0xcc,%xmm4,%xmm0
pshuflw $0x54,%xmm3,%xmm4
movdqa %xmm13,%xmm1
psrld  %xmm4,%xmm1
pshufd $0xee,%xmm3,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm13,%xmm6
psrld  %xmm4,%xmm6
punpcklqdq %xmm5,%xmm1
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm13,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm6,%xmm4
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm13,%xmm5
psrld  %xmm3,%xmm5
shufps $0xcc,%xmm4,%xmm1
pshuflw $0x54,%xmm2,%xmm4
movdqa %xmm13,%xmm3
psrld  %xmm4,%xmm3
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm4
movdqa %xmm13,%xmm6
psrld  %xmm4,%xmm6
punpcklqdq %xmm5,%xmm3
pshuflw $0x54,%xmm2,%xmm2
movdqa %xmm13,%xmm4
psrld  %xmm2,%xmm4
punpckhqdq %xmm6,%xmm4
pshuflw $0xfe,%xmm7,%xmm2
movdqa %xmm13,%xmm5
psrld  %xmm2,%xmm5
shufps $0xcc,%xmm4,%xmm3
pshuflw $0x54,%xmm7,%xmm4
movdqa %xmm13,%xmm2
psrld  %xmm4,%xmm2
pshufd $0xee,%xmm7,%xmm4
pshuflw $0xfe,%xmm4,%xmm6
movdqa %xmm13,%xmm7
psrld  %xmm6,%xmm7
punpcklqdq %xmm5,%xmm2
pshuflw $0x54,%xmm4,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
punpckhqdq %xmm7,%xmm5
shufps $0xcc,%xmm5,%xmm2
movaps 0xd6f(%rip),%xmm7
andps  %xmm7,%xmm2
andps  %xmm7,%xmm3
packuswb %xmm3,%xmm2
andps  %xmm7,%xmm1
andps  %xmm7,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm2
movdqa 0xd5f(%rip),%xmm0
pand   %xmm0,%xmm2
movdqa 0xd63(%rip),%xmm0
por    %xmm0,%xmm2
movdqa %xmm2,(%rcx,%r10,1)
movdqa %xmm12,%xmm8
movdqa %xmm9,-0x68(%rsp)
psubd  %xmm9,%xmm8
movdqa 0xd50(%rip),%xmm0
paddd  %xmm0,%xmm8
movdqa %xmm12,%xmm2
movdqa %xmm11,-0x58(%rsp)
psubd  %xmm11,%xmm2
paddd  %xmm0,%xmm2
movdqa %xmm12,%xmm3
movdqa %xmm15,-0x48(%rsp)
psubd  %xmm15,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm12,%xmm1
movdqa %xmm14,-0x38(%rsp)
psubd  %xmm14,%xmm1
paddd  %xmm0,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm13,%xmm4
psrld  %xmm0,%xmm4
pshuflw $0x54,%xmm1,%xmm5
movdqa %xmm13,%xmm0
psrld  %xmm5,%xmm0
punpcklqdq %xmm4,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm13,%xmm4
psrld  %xmm1,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm0
pshuflw $0xfe,%xmm3,%xmm1
movdqa %xmm13,%xmm4
psrld  %xmm1,%xmm4
pshuflw $0x54,%xmm3,%xmm5
movdqa %xmm13,%xmm1
psrld  %xmm5,%xmm1
punpcklqdq %xmm4,%xmm1
pshufd $0xee,%xmm3,%xmm3
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm13,%xmm4
psrld  %xmm3,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm1
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm13,%xmm4
psrld  %xmm3,%xmm4
pshuflw $0x54,%xmm2,%xmm5
movdqa %xmm13,%xmm3
psrld  %xmm5,%xmm3
punpcklqdq %xmm4,%xmm3
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
pshuflw $0x54,%xmm2,%xmm2
movdqa %xmm13,%xmm4
psrld  %xmm2,%xmm4
punpckhqdq %xmm5,%xmm4
shufps $0xcc,%xmm4,%xmm3
pshuflw $0xfe,%xmm8,%xmm2
movdqa %xmm13,%xmm4
psrld  %xmm2,%xmm4
pshuflw $0x54,%xmm8,%xmm5
movdqa %xmm13,%xmm2
psrld  %xmm5,%xmm2
punpcklqdq %xmm4,%xmm2
pshufd $0xee,%xmm8,%xmm4
pshuflw $0xfe,%xmm4,%xmm5
movdqa %xmm13,%xmm6
psrld  %xmm5,%xmm6
pshuflw $0x54,%xmm4,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
punpckhqdq %xmm6,%xmm5
shufps $0xcc,%xmm5,%xmm2
andps  %xmm7,%xmm2
andps  %xmm7,%xmm3
packuswb %xmm3,%xmm2
andps  %xmm7,%xmm1
andps  %xmm7,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm2
pand   0xba5(%rip),%xmm2
por    0xbad(%rip),%xmm2
movdqa %xmm2,0x10(%rcx,%r10,1)
movdqa -0x28(%rsp),%xmm11
movdqa -0x18(%rsp),%xmm15
add    $0x20,%rcx
movdqa 0xbac(%rip),%xmm0
paddd  %xmm0,%xmm9
paddd  %xmm0,%xmm11
paddd  %xmm0,%xmm15
movdqa -0x78(%rsp),%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x78(%rsp)
movdqa -0x78(%rsp),%xmm14
add    $0xfffffffffffffffe,%rdx
jne    1190 <bits2str+0x90>
movdqa 0xb84(%rip),%xmm1
movdqa %xmm1,%xmm2
psubd  -0x68(%rsp),%xmm2
movdqa %xmm1,%xmm3
psubd  -0x58(%rsp),%xmm3
movdqa %xmm1,%xmm4
psubd  -0x48(%rsp),%xmm4
psubd  -0x38(%rsp),%xmm1
test   $0x1,%r8b
je     16eb <bits2str+0x5eb>
paddd  %xmm12,%xmm2
paddd  %xmm12,%xmm3
paddd  %xmm12,%xmm1
pshuflw $0xfe,%xmm1,%xmm0
movdqa %xmm13,%xmm5
psrld  %xmm0,%xmm5
paddd  %xmm12,%xmm4
pshuflw $0x54,%xmm1,%xmm6
movdqa %xmm13,%xmm0
psrld  %xmm6,%xmm0
pshufd $0xee,%xmm1,%xmm1
pshuflw $0xfe,%xmm1,%xmm6
movdqa %xmm13,%xmm7
psrld  %xmm6,%xmm7
punpcklqdq %xmm5,%xmm0
pshuflw $0x54,%xmm1,%xmm1
movdqa %xmm13,%xmm5
psrld  %xmm1,%xmm5
punpckhqdq %xmm7,%xmm5
pshuflw $0xfe,%xmm4,%xmm1
movdqa %xmm13,%xmm6
psrld  %xmm1,%xmm6
shufps $0xcc,%xmm5,%xmm0
pshuflw $0x54,%xmm4,%xmm5
movdqa %xmm13,%xmm1
psrld  %xmm5,%xmm1
pshufd $0xee,%xmm4,%xmm4
pshuflw $0xfe,%xmm4,%xmm5
movdqa %xmm13,%xmm7
psrld  %xmm5,%xmm7
punpcklqdq %xmm6,%xmm1
pshuflw $0x54,%xmm4,%xmm4
movdqa %xmm13,%xmm5
psrld  %xmm4,%xmm5
punpckhqdq %xmm7,%xmm5
pshuflw $0xfe,%xmm3,%xmm4
movdqa %xmm13,%xmm6
psrld  %xmm4,%xmm6
shufps $0xcc,%xmm5,%xmm1
pshuflw $0x54,%xmm3,%xmm5
movdqa %xmm13,%xmm4
psrld  %xmm5,%xmm4
pshufd $0xee,%xmm3,%xmm3
pshuflw $0xfe,%xmm3,%xmm5
movdqa %xmm13,%xmm7
psrld  %xmm5,%xmm7
punpcklqdq %xmm6,%xmm4
pshuflw $0x54,%xmm3,%xmm3
movdqa %xmm13,%xmm5
psrld  %xmm3,%xmm5
punpckhqdq %xmm7,%xmm5
pshuflw $0xfe,%xmm2,%xmm3
movdqa %xmm13,%xmm6
psrld  %xmm3,%xmm6
shufps $0xcc,%xmm5,%xmm4
pshuflw $0x54,%xmm2,%xmm5
movdqa %xmm13,%xmm3
psrld  %xmm5,%xmm3
pshufd $0xee,%xmm2,%xmm2
pshuflw $0xfe,%xmm2,%xmm5
movdqa %xmm13,%xmm7
psrld  %xmm5,%xmm7
punpcklqdq %xmm6,%xmm3
pshuflw $0x54,%xmm2,%xmm2
psrld  %xmm2,%xmm13
punpckhqdq %xmm7,%xmm13
shufps $0xcc,%xmm13,%xmm3
movaps 0x9c9(%rip),%xmm2
andps  %xmm2,%xmm3
andps  %xmm2,%xmm4
packuswb %xmm4,%xmm3
andps  %xmm2,%xmm1
andps  %xmm2,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
pand   0x9b9(%rip),%xmm3
por    0x9c1(%rip),%xmm3
lea    0x294a(%rip),%rdx
movdqa %xmm3,(%rcx,%rdx,1)
cmp    %r9,%rax
je     171c <bits2str+0x61c>
mov    %eax,%ecx
not    %ecx
add    %esi,%ecx
lea    0x2933(%rip),%rdx
nopl   (%rax)
mov    %edi,%esi
shr    %cl,%esi
and    $0x1,%sil
or     $0x30,%sil
mov    %sil,(%rax,%rdx,1)
add    $0x1,%rax
add    $0xffffffff,%ecx
cmp    %rax,%r9
jne    1700 <bits2str+0x600>
lea    0x290d(%rip),%rax
movb   $0x0,(%r9,%rax,1)
ret
movdqa 0x8cf(%rip),%xmm1
movdqa 0x8d7(%rip),%xmm4
movdqa 0x8df(%rip),%xmm3
movdqa 0x8e7(%rip),%xmm2
xor    %ecx,%ecx
test   $0x1,%r8b
jne    157a <bits2str+0x47a>
jmp    16eb <bits2str+0x5eb>

LLVM IR (-O0):
@bits2str.buf = internal global [33 x i8] zeroinitializer
define i8* @bits2str(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 %0, i32* %3
store i32 %1, i32* %4
store i32 0, i32* %5
br label %6
6: ; preds = %26, %2
%7 = load i32, i32* %5
%8 = load i32, i32* %4
%9 = icmp slt i32 %7, %8
br i1 %9, label %10, label %29
10: ; preds = %6
%11 = load i32, i32* %3
%12 = load i32, i32* %4
%13 = sub nsw i32 %12, 1
%14 = load i32, i32* %5
%15 = sub nsw i32 %13, %14
%16 = shl i32 1, %15
%17 = and i32 %11, %16
%18 = icmp ne i32 %17, 0
%19 = zext i1 %18 to i64
%20 = select i1 %18, i32 1, i32 0
%21 = add nsw i32 48, %20
%22 = trunc i32 %21 to i8
%23 = load i32, i32* %5
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %24
store i8 %22, i8* %25
br label %26
26: ; preds = %10
%27 = load i32, i32* %5
%28 = add nsw i32 %27, 1
store i32 %28, i32* %5
br label %6
29: ; preds = %6
%30 = load i32, i32* %5
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %31
store i8 0, i8* %32
ret i8* getelementptr inbounds ([33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 0)
}

LLVM IR (-O2):
@bits2str.buf = internal global [33 x i8] zeroinitializer
define i8* @bits2str(i32 %0, i32 %1) {
%3 = icmp sgt i32 %1, 0
br i1 %3, label %4, label %77
4: ; preds = %2
%5 = zext i32 %1 to i64
%6 = icmp ult i32 %1, 16
br i1 %6, label %61, label %7
7: ; preds = %4
%8 = and i64 %5, 4294967280
%9 = insertelement <16 x i32> poison, i32 %1, i64 0
%10 = shufflevector <16 x i32> %9, <16 x i32> poison, <16 x i32> zeroinitializer
%11 = insertelement <16 x i32> poison, i32 %0, i64 0
%12 = shufflevector <16 x i32> %11, <16 x i32> poison, <16 x i32> zeroinitializer
%13 = add nsw i64 %8, -16
%14 = lshr exact i64 %13, 4
%15 = add nuw nsw i64 %14, 1
%16 = and i64 %15, 1
%17 = icmp eq i64 %13, 0
br i1 %17, label %47, label %18
18: ; preds = %7
%19 = and i64 %15, 2305843009213693950
br label %20
20: ; preds = %20, %18
%21 = phi i64 [ 0, %18 ], [ %41, %20 ]
%22 = phi <16 x i32> [ <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>, %18 ], [ %42, %20 ]
%23 = phi i64 [ 0, %18 ], [ %43, %20 ]
%24 = xor <16 x i32> %22, <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>
%25 = add <16 x i32> %10, %24
%26 = lshr <16 x i32> %12, %25
%27 = trunc <16 x i32> %26 to <16 x i8>
%28 = and <16 x i8> %27, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%29 = or <16 x i8> %28, <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>
%30 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %21
%31 = bitcast i8* %30 to <16 x i8>*
store <16 x i8> %29, <16 x i8>* %31
%32 = or i64 %21, 16
%33 = sub <16 x i32> <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>, %22
%34 = add <16 x i32> %10, %33
%35 = lshr <16 x i32> %12, %34
%36 = trunc <16 x i32> %35 to <16 x i8>
%37 = and <16 x i8> %36, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%38 = or <16 x i8> %37, <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>
%39 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %32
%40 = bitcast i8* %39 to <16 x i8>*
store <16 x i8> %38, <16 x i8>* %40
%41 = add nuw i64 %21, 32
%42 = add <16 x i32> %22, <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>
%43 = add i64 %23, 2
%44 = icmp eq i64 %43, %19
br i1 %44, label %45, label %20
45: ; preds = %20
%46 = sub <16 x i32> <i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33, i32 -33>, %22
br label %47
47: ; preds = %45, %7
%48 = phi i64 [ 0, %7 ], [ %41, %45 ]
%49 = phi <16 x i32> [ <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, i32 -16>, %7 ], [ %46, %45 ]
%50 = icmp eq i64 %16, 0
br i1 %50, label %59, label %51
51: ; preds = %47
%52 = add <16 x i32> %10, %49
%53 = lshr <16 x i32> %12, %52
%54 = trunc <16 x i32> %53 to <16 x i8>
%55 = and <16 x i8> %54, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%56 = or <16 x i8> %55, <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>
%57 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %48
%58 = bitcast i8* %57 to <16 x i8>*
store <16 x i8> %56, <16 x i8>* %58
br label %59
59: ; preds = %47, %51
%60 = icmp eq i64 %8, %5
br i1 %60, label %75, label %61
61: ; preds = %4, %59
%62 = phi i64 [ 0, %4 ], [ %8, %59 ]
br label %63
63: ; preds = %61, %63
%64 = phi i64 [ %73, %63 ], [ %62, %61 ]
%65 = trunc i64 %64 to i32
%66 = xor i32 %65, -1
%67 = add i32 %66, %1
%68 = lshr i32 %0, %67
%69 = trunc i32 %68 to i8
%70 = and i8 %69, 1
%71 = or i8 %70, 48
%72 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %64
store i8 %71, i8* %72
%73 = add nuw nsw i64 %64, 1
%74 = icmp eq i64 %73, %5
br i1 %74, label %75, label %63
75: ; preds = %63, %59
%76 = zext i32 %1 to i64
br label %77
77: ; preds = %2, %75
%78 = phi i64 [ %76, %75 ], [ 0, %2 ]
%79 = getelementptr inbounds [33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 %78
store i8 0, i8* %79
ret i8* getelementptr inbounds ([33 x i8], [33 x i8]* @bits2str.buf, i64 0, i64 0)
}