#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 /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fputbit(int /*<<< orphan*/ *, int);
int /*<<< orphan*/ printf(char *, int);
int fputbitlen(FILE *f, int l) {
  if (l < 4) {
    l -= 2;
    fputbit(f, 0);
    fputbit(f, l);
  } else if (l < 8) {
    l -= 4;
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 2);
    fputbit(f, l & 1);
  } else if (l < 16) {
    l -= 8;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 4);
    fputbit(f, l & 2);
    fputbit(f, l & 1);
  } else if (l < 32) {
    l -= 16;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 8);
    fputbit(f, l & 4);
    fputbit(f, l & 2);
    fputbit(f, l & 1);
  } else if (l < 64) {
    l -= 32;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x10);
    fputbit(f, l & 0x08);
    fputbit(f, l & 0x04);
    fputbit(f, l & 0x02);
    fputbit(f, l & 0x01);
  } else if (l < 128) {
    l -= 64;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x20);
    fputbit(f, l & 0x10);
    fputbit(f, l & 0x08);
    fputbit(f, l & 0x04);
    fputbit(f, l & 0x02);
    fputbit(f, l & 0x01);
  } else if (l < 256) {
    l -= 128;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x40);
    fputbit(f, l & 0x20);
    fputbit(f, l & 0x10);
    fputbit(f, l & 0x08);
    fputbit(f, l & 0x04);
    fputbit(f, l & 0x02);
    fputbit(f, l & 0x01);
  } else if (l < 512) {
    l -= 256;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x80);
    fputbit(f, l & 0x40);
    fputbit(f, l & 0x20);
    fputbit(f, l & 0x10);
    fputbit(f, l & 0x08);
    fputbit(f, l & 0x04);
    fputbit(f, l & 0x02);
    fputbit(f, l & 0x01);
  } else if (l < 1024) {
    l -= 512;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x100);
    fputbit(f, l & 0x080);
    fputbit(f, l & 0x040);
    fputbit(f, l & 0x020);
    fputbit(f, l & 0x010);
    fputbit(f, l & 0x008);
    fputbit(f, l & 0x004);
    fputbit(f, l & 0x002);
    fputbit(f, l & 0x001);
  } else if (l < 2048) {
    l -= 1024;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x200);
    fputbit(f, l & 0x100);
    fputbit(f, l & 0x080);
    fputbit(f, l & 0x040);
    fputbit(f, l & 0x020);
    fputbit(f, l & 0x010);
    fputbit(f, l & 0x008);
    fputbit(f, l & 0x004);
    fputbit(f, l & 0x002);
    fputbit(f, l & 0x001);
  } else if (l < 4096) {
    l -= 2048;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x400);
    fputbit(f, l & 0x200);
    fputbit(f, l & 0x100);
    fputbit(f, l & 0x080);
    fputbit(f, l & 0x040);
    fputbit(f, l & 0x020);
    fputbit(f, l & 0x010);
    fputbit(f, l & 0x008);
    fputbit(f, l & 0x004);
    fputbit(f, l & 0x002);
    fputbit(f, l & 0x001);
  } else if (l < 8192) {
    l -= 4096;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x800);
    fputbit(f, l & 0x400);
    fputbit(f, l & 0x200);
    fputbit(f, l & 0x100);
    fputbit(f, l & 0x080);
    fputbit(f, l & 0x040);
    fputbit(f, l & 0x020);
    fputbit(f, l & 0x010);
    fputbit(f, l & 0x008);
    fputbit(f, l & 0x004);
    fputbit(f, l & 0x002);
    fputbit(f, l & 0x001);
  } else if (l < 16384) {
    l -= 8192;
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 1);
    fputbit(f, 0);
    fputbit(f, l & 0x1000);
    fputbit(f, l & 0x0800);
    fputbit(f, l & 0x0400);
    fputbit(f, l & 0x0200);
    fputbit(f, l & 0x0100);
    fputbit(f, l & 0x0080);
    fputbit(f, l & 0x0040);
    fputbit(f, l & 0x0020);
    fputbit(f, l & 0x0010);
    fputbit(f, l & 0x0008);
    fputbit(f, l & 0x0004);
    fputbit(f, l & 0x0002);
    fputbit(f, l & 0x0001);
  } else {
    printf("\nERROR: Length %i is too long\n\n", l);
    return 0;
  }
  return 1;
}


x86 assembly (clang, -O0):
<fputbitlen>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
cmpl   $0x4,-0x14(%rbp)
jge    115e <fputbitlen+0x3e>
mov    -0x14(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
call   1040 <fputbit@plt>
jmp    1d48 <fputbitlen+0xc28>
cmpl   $0x8,-0x14(%rbp)
jge    11ad <fputbitlen+0x8d>
mov    -0x14(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d43 <fputbitlen+0xc23>
cmpl   $0x10,-0x14(%rbp)
jge    1219 <fputbitlen+0xf9>
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d3e <fputbitlen+0xc1e>
cmpl   $0x20,-0x14(%rbp)
jge    12a2 <fputbitlen+0x182>
mov    -0x14(%rbp),%eax
sub    $0x10,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d39 <fputbitlen+0xc19>
cmpl   $0x40,-0x14(%rbp)
jge    1348 <fputbitlen+0x228>
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d34 <fputbitlen+0xc14>
cmpl   $0x80,-0x14(%rbp)
jge    140e <fputbitlen+0x2ee>
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d2f <fputbitlen+0xc0f>
cmpl   $0x100,-0x14(%rbp)
jge    14f3 <fputbitlen+0x3d3>
mov    -0x14(%rbp),%eax
sub    $0x80,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d2a <fputbitlen+0xc0a>
cmpl   $0x200,-0x14(%rbp)
jge    15f8 <fputbitlen+0x4d8>
mov    -0x14(%rbp),%eax
sub    $0x100,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d25 <fputbitlen+0xc05>
cmpl   $0x400,-0x14(%rbp)
jge    171d <fputbitlen+0x5fd>
mov    -0x14(%rbp),%eax
sub    $0x200,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x100,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d20 <fputbitlen+0xc00>
cmpl   $0x800,-0x14(%rbp)
jge    1862 <fputbitlen+0x742>
mov    -0x14(%rbp),%eax
sub    $0x400,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x200,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x100,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d1b <fputbitlen+0xbfb>
cmpl   $0x1000,-0x14(%rbp)
jge    19c7 <fputbitlen+0x8a7>
mov    -0x14(%rbp),%eax
sub    $0x800,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x400,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x200,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x100,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d16 <fputbitlen+0xbf6>
cmpl   $0x2000,-0x14(%rbp)
jge    1b4c <fputbitlen+0xa2c>
mov    -0x14(%rbp),%eax
sub    $0x1000,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x800,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x400,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x200,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x100,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d11 <fputbitlen+0xbf1>
cmpl   $0x4000,-0x14(%rbp)
jge    1cf1 <fputbitlen+0xbd1>
mov    -0x14(%rbp),%eax
sub    $0x2000,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1000,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x800,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x400,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x200,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x100,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x80,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x40,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x20,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x10,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x8,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x4,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x2,%esi
call   1040 <fputbit@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
and    $0x1,%esi
call   1040 <fputbit@plt>
jmp    1d0c <fputbitlen+0xbec>
mov    -0x14(%rbp),%esi
lea    0x305(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1d4f <fputbitlen+0xc2f>
jmp    1d11 <fputbitlen+0xbf1>
jmp    1d16 <fputbitlen+0xbf6>
jmp    1d1b <fputbitlen+0xbfb>
jmp    1d20 <fputbitlen+0xc00>
jmp    1d25 <fputbitlen+0xc05>
jmp    1d2a <fputbitlen+0xc0a>
jmp    1d2f <fputbitlen+0xc0f>
jmp    1d34 <fputbitlen+0xc14>
jmp    1d39 <fputbitlen+0xc19>
jmp    1d3e <fputbitlen+0xc1e>
jmp    1d43 <fputbitlen+0xc23>
jmp    1d48 <fputbitlen+0xc28>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fputbitlen>:
push   %rbp
push   %r14
push   %rbx
mov    %esi,%ebx
mov    %rdi,%r14
cmp    $0x3,%esi
jg     114f <fputbitlen+0x2f>
add    $0xfffffffe,%ebx
mov    %r14,%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    %ebx,%esi
call   1040 <fputbit@plt>
mov    $0x1,%ebp
jmp    1715 <fputbitlen+0x5f5>
cmp    $0x7,%ebx
ja     1170 <fputbitlen+0x50>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16f6 <fputbitlen+0x5d6>
cmp    $0xf,%ebx
ja     119e <fputbitlen+0x7e>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16e9 <fputbitlen+0x5c9>
cmp    $0x1f,%ebx
ja     11d9 <fputbitlen+0xb9>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16dc <fputbitlen+0x5bc>
cmp    $0x3f,%ebx
ja     1221 <fputbitlen+0x101>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16cf <fputbitlen+0x5af>
cmp    $0x7f,%ebx
ja     1276 <fputbitlen+0x156>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16c2 <fputbitlen+0x5a2>
cmp    $0xff,%ebx
ja     12db <fputbitlen+0x1bb>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16b5 <fputbitlen+0x595>
cmp    $0x1ff,%ebx
ja     134d <fputbitlen+0x22d>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    16a5 <fputbitlen+0x585>
cmp    $0x3ff,%ebx
ja     13cc <fputbitlen+0x2ac>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    1695 <fputbitlen+0x575>
cmp    $0x7ff,%ebx
ja     145c <fputbitlen+0x33c>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    1685 <fputbitlen+0x565>
cmp    $0xfff,%ebx
ja     14f9 <fputbitlen+0x3d9>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    1675 <fputbitlen+0x555>
cmp    $0x1fff,%ebx
ja     15a3 <fputbitlen+0x483>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
jmp    1665 <fputbitlen+0x545>
cmp    $0x3fff,%ebx
ja     171c <fputbitlen+0x5fc>
mov    $0x1,%ebp
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
mov    $0x1,%esi
call   1040 <fputbit@plt>
mov    %r14,%rdi
xor    %esi,%esi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x1000,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x800,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x400,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x200,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x100,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x80,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x40,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x20,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x10,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x8,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x4,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
mov    %ebx,%esi
and    $0x2,%esi
mov    %r14,%rdi
call   1040 <fputbit@plt>
and    $0x1,%ebx
mov    %r14,%rdi
mov    %ebx,%esi
call   1040 <fputbit@plt>
mov    %ebp,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret
lea    0x8dd(%rip),%rdi
mov    %ebx,%esi
call   1030 <printf@plt>
xor    %ebp,%ebp
jmp    1715 <fputbitlen+0x5f5>

LLVM IR (-O0):
@.str = [32 x i8] c"\0AERROR: Length %i is too long\0A\0A\00"
define i32 @fputbitlen(i32* %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32*
%5 = alloca i32
store i32* %0, i32** %4
store i32 %1, i32* %5
%6 = load i32, i32* %5
%7 = icmp slt i32 %6, 4
br i1 %7, label %8, label %16
8: ; preds = %2
%9 = load i32, i32* %5
%10 = sub nsw i32 %9, 2
store i32 %10, i32* %5
%11 = load i32*, i32** %4
%12 = call i32 @fputbit(i32* %11, i32 0)
%13 = load i32*, i32** %4
%14 = load i32, i32* %5
%15 = call i32 @fputbit(i32* %13, i32 %14)
br label %643
16: ; preds = %2
%17 = load i32, i32* %5
%18 = icmp slt i32 %17, 8
br i1 %18, label %19, label %34
19: ; preds = %16
%20 = load i32, i32* %5
%21 = sub nsw i32 %20, 4
store i32 %21, i32* %5
%22 = load i32*, i32** %4
%23 = call i32 @fputbit(i32* %22, i32 1)
%24 = load i32*, i32** %4
%25 = call i32 @fputbit(i32* %24, i32 0)
%26 = load i32*, i32** %4
%27 = load i32, i32* %5
%28 = and i32 %27, 2
%29 = call i32 @fputbit(i32* %26, i32 %28)
%30 = load i32*, i32** %4
%31 = load i32, i32* %5
%32 = and i32 %31, 1
%33 = call i32 @fputbit(i32* %30, i32 %32)
br label %642
34: ; preds = %16
%35 = load i32, i32* %5
%36 = icmp slt i32 %35, 16
br i1 %36, label %37, label %58
37: ; preds = %34
%38 = load i32, i32* %5
%39 = sub nsw i32 %38, 8
store i32 %39, i32* %5
%40 = load i32*, i32** %4
%41 = call i32 @fputbit(i32* %40, i32 1)
%42 = load i32*, i32** %4
%43 = call i32 @fputbit(i32* %42, i32 1)
%44 = load i32*, i32** %4
%45 = call i32 @fputbit(i32* %44, i32 0)
%46 = load i32*, i32** %4
%47 = load i32, i32* %5
%48 = and i32 %47, 4
%49 = call i32 @fputbit(i32* %46, i32 %48)
%50 = load i32*, i32** %4
%51 = load i32, i32* %5
%52 = and i32 %51, 2
%53 = call i32 @fputbit(i32* %50, i32 %52)
%54 = load i32*, i32** %4
%55 = load i32, i32* %5
%56 = and i32 %55, 1
%57 = call i32 @fputbit(i32* %54, i32 %56)
br label %641
58: ; preds = %34
%59 = load i32, i32* %5
%60 = icmp slt i32 %59, 32
br i1 %60, label %61, label %88
61: ; preds = %58
%62 = load i32, i32* %5
%63 = sub nsw i32 %62, 16
store i32 %63, i32* %5
%64 = load i32*, i32** %4
%65 = call i32 @fputbit(i32* %64, i32 1)
%66 = load i32*, i32** %4
%67 = call i32 @fputbit(i32* %66, i32 1)
%68 = load i32*, i32** %4
%69 = call i32 @fputbit(i32* %68, i32 1)
%70 = load i32*, i32** %4
%71 = call i32 @fputbit(i32* %70, i32 0)
%72 = load i32*, i32** %4
%73 = load i32, i32* %5
%74 = and i32 %73, 8
%75 = call i32 @fputbit(i32* %72, i32 %74)
%76 = load i32*, i32** %4
%77 = load i32, i32* %5
%78 = and i32 %77, 4
%79 = call i32 @fputbit(i32* %76, i32 %78)
%80 = load i32*, i32** %4
%81 = load i32, i32* %5
%82 = and i32 %81, 2
%83 = call i32 @fputbit(i32* %80, i32 %82)
%84 = load i32*, i32** %4
%85 = load i32, i32* %5
%86 = and i32 %85, 1
%87 = call i32 @fputbit(i32* %84, i32 %86)
br label %640
88: ; preds = %58
%89 = load i32, i32* %5
%90 = icmp slt i32 %89, 64
br i1 %90, label %91, label %124
91: ; preds = %88
%92 = load i32, i32* %5
%93 = sub nsw i32 %92, 32
store i32 %93, i32* %5
%94 = load i32*, i32** %4
%95 = call i32 @fputbit(i32* %94, i32 1)
%96 = load i32*, i32** %4
%97 = call i32 @fputbit(i32* %96, i32 1)
%98 = load i32*, i32** %4
%99 = call i32 @fputbit(i32* %98, i32 1)
%100 = load i32*, i32** %4
%101 = call i32 @fputbit(i32* %100, i32 1)
%102 = load i32*, i32** %4
%103 = call i32 @fputbit(i32* %102, i32 0)
%104 = load i32*, i32** %4
%105 = load i32, i32* %5
%106 = and i32 %105, 16
%107 = call i32 @fputbit(i32* %104, i32 %106)
%108 = load i32*, i32** %4
%109 = load i32, i32* %5
%110 = and i32 %109, 8
%111 = call i32 @fputbit(i32* %108, i32 %110)
%112 = load i32*, i32** %4
%113 = load i32, i32* %5
%114 = and i32 %113, 4
%115 = call i32 @fputbit(i32* %112, i32 %114)
%116 = load i32*, i32** %4
%117 = load i32, i32* %5
%118 = and i32 %117, 2
%119 = call i32 @fputbit(i32* %116, i32 %118)
%120 = load i32*, i32** %4
%121 = load i32, i32* %5
%122 = and i32 %121, 1
%123 = call i32 @fputbit(i32* %120, i32 %122)
br label %639
124: ; preds = %88
%125 = load i32, i32* %5
%126 = icmp slt i32 %125, 128
br i1 %126, label %127, label %166
127: ; preds = %124
%128 = load i32, i32* %5
%129 = sub nsw i32 %128, 64
store i32 %129, i32* %5
%130 = load i32*, i32** %4
%131 = call i32 @fputbit(i32* %130, i32 1)
%132 = load i32*, i32** %4
%133 = call i32 @fputbit(i32* %132, i32 1)
%134 = load i32*, i32** %4
%135 = call i32 @fputbit(i32* %134, i32 1)
%136 = load i32*, i32** %4
%137 = call i32 @fputbit(i32* %136, i32 1)
%138 = load i32*, i32** %4
%139 = call i32 @fputbit(i32* %138, i32 1)
%140 = load i32*, i32** %4
%141 = call i32 @fputbit(i32* %140, i32 0)
%142 = load i32*, i32** %4
%143 = load i32, i32* %5
%144 = and i32 %143, 32
%145 = call i32 @fputbit(i32* %142, i32 %144)
%146 = load i32*, i32** %4
%147 = load i32, i32* %5
%148 = and i32 %147, 16
%149 = call i32 @fputbit(i32* %146, i32 %148)
%150 = load i32*, i32** %4
%151 = load i32, i32* %5
%152 = and i32 %151, 8
%153 = call i32 @fputbit(i32* %150, i32 %152)
%154 = load i32*, i32** %4
%155 = load i32, i32* %5
%156 = and i32 %155, 4
%157 = call i32 @fputbit(i32* %154, i32 %156)
%158 = load i32*, i32** %4
%159 = load i32, i32* %5
%160 = and i32 %159, 2
%161 = call i32 @fputbit(i32* %158, i32 %160)
%162 = load i32*, i32** %4
%163 = load i32, i32* %5
%164 = and i32 %163, 1
%165 = call i32 @fputbit(i32* %162, i32 %164)
br label %638
166: ; preds = %124
%167 = load i32, i32* %5
%168 = icmp slt i32 %167, 256
br i1 %168, label %169, label %214
169: ; preds = %166
%170 = load i32, i32* %5
%171 = sub nsw i32 %170, 128
store i32 %171, i32* %5
%172 = load i32*, i32** %4
%173 = call i32 @fputbit(i32* %172, i32 1)
%174 = load i32*, i32** %4
%175 = call i32 @fputbit(i32* %174, i32 1)
%176 = load i32*, i32** %4
%177 = call i32 @fputbit(i32* %176, i32 1)
%178 = load i32*, i32** %4
%179 = call i32 @fputbit(i32* %178, i32 1)
%180 = load i32*, i32** %4
%181 = call i32 @fputbit(i32* %180, i32 1)
%182 = load i32*, i32** %4
%183 = call i32 @fputbit(i32* %182, i32 1)
%184 = load i32*, i32** %4
%185 = call i32 @fputbit(i32* %184, i32 0)
%186 = load i32*, i32** %4
%187 = load i32, i32* %5
%188 = and i32 %187, 64
%189 = call i32 @fputbit(i32* %186, i32 %188)
%190 = load i32*, i32** %4
%191 = load i32, i32* %5
%192 = and i32 %191, 32
%193 = call i32 @fputbit(i32* %190, i32 %192)
%194 = load i32*, i32** %4
%195 = load i32, i32* %5
%196 = and i32 %195, 16
%197 = call i32 @fputbit(i32* %194, i32 %196)
%198 = load i32*, i32** %4
%199 = load i32, i32* %5
%200 = and i32 %199, 8
%201 = call i32 @fputbit(i32* %198, i32 %200)
%202 = load i32*, i32** %4
%203 = load i32, i32* %5
%204 = and i32 %203, 4
%205 = call i32 @fputbit(i32* %202, i32 %204)
%206 = load i32*, i32** %4
%207 = load i32, i32* %5
%208 = and i32 %207, 2
%209 = call i32 @fputbit(i32* %206, i32 %208)
%210 = load i32*, i32** %4
%211 = load i32, i32* %5
%212 = and i32 %211, 1
%213 = call i32 @fputbit(i32* %210, i32 %212)
br label %637
214: ; preds = %166
%215 = load i32, i32* %5
%216 = icmp slt i32 %215, 512
br i1 %216, label %217, label %268
217: ; preds = %214
%218 = load i32, i32* %5
%219 = sub nsw i32 %218, 256
store i32 %219, i32* %5
%220 = load i32*, i32** %4
%221 = call i32 @fputbit(i32* %220, i32 1)
%222 = load i32*, i32** %4
%223 = call i32 @fputbit(i32* %222, i32 1)
%224 = load i32*, i32** %4
%225 = call i32 @fputbit(i32* %224, i32 1)
%226 = load i32*, i32** %4
%227 = call i32 @fputbit(i32* %226, i32 1)
%228 = load i32*, i32** %4
%229 = call i32 @fputbit(i32* %228, i32 1)
%230 = load i32*, i32** %4
%231 = call i32 @fputbit(i32* %230, i32 1)
%232 = load i32*, i32** %4
%233 = call i32 @fputbit(i32* %232, i32 1)
%234 = load i32*, i32** %4
%235 = call i32 @fputbit(i32* %234, i32 0)
%236 = load i32*, i32** %4
%237 = load i32, i32* %5
%238 = and i32 %237, 128
%239 = call i32 @fputbit(i32* %236, i32 %238)
%240 = load i32*, i32** %4
%241 = load i32, i32* %5
%242 = and i32 %241, 64
%243 = call i32 @fputbit(i32* %240, i32 %242)
%244 = load i32*, i32** %4
%245 = load i32, i32* %5
%246 = and i32 %245, 32
%247 = call i32 @fputbit(i32* %244, i32 %246)
%248 = load i32*, i32** %4
%249 = load i32, i32* %5
%250 = and i32 %249, 16
%251 = call i32 @fputbit(i32* %248, i32 %250)
%252 = load i32*, i32** %4
%253 = load i32, i32* %5
%254 = and i32 %253, 8
%255 = call i32 @fputbit(i32* %252, i32 %254)
%256 = load i32*, i32** %4
%257 = load i32, i32* %5
%258 = and i32 %257, 4
%259 = call i32 @fputbit(i32* %256, i32 %258)
%260 = load i32*, i32** %4
%261 = load i32, i32* %5
%262 = and i32 %261, 2
%263 = call i32 @fputbit(i32* %260, i32 %262)
%264 = load i32*, i32** %4
%265 = load i32, i32* %5
%266 = and i32 %265, 1
%267 = call i32 @fputbit(i32* %264, i32 %266)
br label %636
268: ; preds = %214
%269 = load i32, i32* %5
%270 = icmp slt i32 %269, 1024
br i1 %270, label %271, label %328
271: ; preds = %268
%272 = load i32, i32* %5
%273 = sub nsw i32 %272, 512
store i32 %273, i32* %5
%274 = load i32*, i32** %4
%275 = call i32 @fputbit(i32* %274, i32 1)
%276 = load i32*, i32** %4
%277 = call i32 @fputbit(i32* %276, i32 1)
%278 = load i32*, i32** %4
%279 = call i32 @fputbit(i32* %278, i32 1)
%280 = load i32*, i32** %4
%281 = call i32 @fputbit(i32* %280, i32 1)
%282 = load i32*, i32** %4
%283 = call i32 @fputbit(i32* %282, i32 1)
%284 = load i32*, i32** %4
%285 = call i32 @fputbit(i32* %284, i32 1)
%286 = load i32*, i32** %4
%287 = call i32 @fputbit(i32* %286, i32 1)
%288 = load i32*, i32** %4
%289 = call i32 @fputbit(i32* %288, i32 1)
%290 = load i32*, i32** %4
%291 = call i32 @fputbit(i32* %290, i32 0)
%292 = load i32*, i32** %4
%293 = load i32, i32* %5
%294 = and i32 %293, 256
%295 = call i32 @fputbit(i32* %292, i32 %294)
%296 = load i32*, i32** %4
%297 = load i32, i32* %5
%298 = and i32 %297, 128
%299 = call i32 @fputbit(i32* %296, i32 %298)
%300 = load i32*, i32** %4
%301 = load i32, i32* %5
%302 = and i32 %301, 64
%303 = call i32 @fputbit(i32* %300, i32 %302)
%304 = load i32*, i32** %4
%305 = load i32, i32* %5
%306 = and i32 %305, 32
%307 = call i32 @fputbit(i32* %304, i32 %306)
%308 = load i32*, i32** %4
%309 = load i32, i32* %5
%310 = and i32 %309, 16
%311 = call i32 @fputbit(i32* %308, i32 %310)
%312 = load i32*, i32** %4
%313 = load i32, i32* %5
%314 = and i32 %313, 8
%315 = call i32 @fputbit(i32* %312, i32 %314)
%316 = load i32*, i32** %4
%317 = load i32, i32* %5
%318 = and i32 %317, 4
%319 = call i32 @fputbit(i32* %316, i32 %318)
%320 = load i32*, i32** %4
%321 = load i32, i32* %5
%322 = and i32 %321, 2
%323 = call i32 @fputbit(i32* %320, i32 %322)
%324 = load i32*, i32** %4
%325 = load i32, i32* %5
%326 = and i32 %325, 1
%327 = call i32 @fputbit(i32* %324, i32 %326)
br label %635
328: ; preds = %268
%329 = load i32, i32* %5
%330 = icmp slt i32 %329, 2048
br i1 %330, label %331, label %394
331: ; preds = %328
%332 = load i32, i32* %5
%333 = sub nsw i32 %332, 1024
store i32 %333, i32* %5
%334 = load i32*, i32** %4
%335 = call i32 @fputbit(i32* %334, i32 1)
%336 = load i32*, i32** %4
%337 = call i32 @fputbit(i32* %336, i32 1)
%338 = load i32*, i32** %4
%339 = call i32 @fputbit(i32* %338, i32 1)
%340 = load i32*, i32** %4
%341 = call i32 @fputbit(i32* %340, i32 1)
%342 = load i32*, i32** %4
%343 = call i32 @fputbit(i32* %342, i32 1)
%344 = load i32*, i32** %4
%345 = call i32 @fputbit(i32* %344, i32 1)
%346 = load i32*, i32** %4
%347 = call i32 @fputbit(i32* %346, i32 1)
%348 = load i32*, i32** %4
%349 = call i32 @fputbit(i32* %348, i32 1)
%350 = load i32*, i32** %4
%351 = call i32 @fputbit(i32* %350, i32 1)
%352 = load i32*, i32** %4
%353 = call i32 @fputbit(i32* %352, i32 0)
%354 = load i32*, i32** %4
%355 = load i32, i32* %5
%356 = and i32 %355, 512
%357 = call i32 @fputbit(i32* %354, i32 %356)
%358 = load i32*, i32** %4
%359 = load i32, i32* %5
%360 = and i32 %359, 256
%361 = call i32 @fputbit(i32* %358, i32 %360)
%362 = load i32*, i32** %4
%363 = load i32, i32* %5
%364 = and i32 %363, 128
%365 = call i32 @fputbit(i32* %362, i32 %364)
%366 = load i32*, i32** %4
%367 = load i32, i32* %5
%368 = and i32 %367, 64
%369 = call i32 @fputbit(i32* %366, i32 %368)
%370 = load i32*, i32** %4
%371 = load i32, i32* %5
%372 = and i32 %371, 32
%373 = call i32 @fputbit(i32* %370, i32 %372)
%374 = load i32*, i32** %4
%375 = load i32, i32* %5
%376 = and i32 %375, 16
%377 = call i32 @fputbit(i32* %374, i32 %376)
%378 = load i32*, i32** %4
%379 = load i32, i32* %5
%380 = and i32 %379, 8
%381 = call i32 @fputbit(i32* %378, i32 %380)
%382 = load i32*, i32** %4
%383 = load i32, i32* %5
%384 = and i32 %383, 4
%385 = call i32 @fputbit(i32* %382, i32 %384)
%386 = load i32*, i32** %4
%387 = load i32, i32* %5
%388 = and i32 %387, 2
%389 = call i32 @fputbit(i32* %386, i32 %388)
%390 = load i32*, i32** %4
%391 = load i32, i32* %5
%392 = and i32 %391, 1
%393 = call i32 @fputbit(i32* %390, i32 %392)
br label %634
394: ; preds = %328
%395 = load i32, i32* %5
%396 = icmp slt i32 %395, 4096
br i1 %396, label %397, label %466
397: ; preds = %394
%398 = load i32, i32* %5
%399 = sub nsw i32 %398, 2048
store i32 %399, i32* %5
%400 = load i32*, i32** %4
%401 = call i32 @fputbit(i32* %400, i32 1)
%402 = load i32*, i32** %4
%403 = call i32 @fputbit(i32* %402, i32 1)
%404 = load i32*, i32** %4
%405 = call i32 @fputbit(i32* %404, i32 1)
%406 = load i32*, i32** %4
%407 = call i32 @fputbit(i32* %406, i32 1)
%408 = load i32*, i32** %4
%409 = call i32 @fputbit(i32* %408, i32 1)
%410 = load i32*, i32** %4
%411 = call i32 @fputbit(i32* %410, i32 1)
%412 = load i32*, i32** %4
%413 = call i32 @fputbit(i32* %412, i32 1)
%414 = load i32*, i32** %4
%415 = call i32 @fputbit(i32* %414, i32 1)
%416 = load i32*, i32** %4
%417 = call i32 @fputbit(i32* %416, i32 1)
%418 = load i32*, i32** %4
%419 = call i32 @fputbit(i32* %418, i32 1)
%420 = load i32*, i32** %4
%421 = call i32 @fputbit(i32* %420, i32 0)
%422 = load i32*, i32** %4
%423 = load i32, i32* %5
%424 = and i32 %423, 1024
%425 = call i32 @fputbit(i32* %422, i32 %424)
%426 = load i32*, i32** %4
%427 = load i32, i32* %5
%428 = and i32 %427, 512
%429 = call i32 @fputbit(i32* %426, i32 %428)
%430 = load i32*, i32** %4
%431 = load i32, i32* %5
%432 = and i32 %431, 256
%433 = call i32 @fputbit(i32* %430, i32 %432)
%434 = load i32*, i32** %4
%435 = load i32, i32* %5
%436 = and i32 %435, 128
%437 = call i32 @fputbit(i32* %434, i32 %436)
%438 = load i32*, i32** %4
%439 = load i32, i32* %5
%440 = and i32 %439, 64
%441 = call i32 @fputbit(i32* %438, i32 %440)
%442 = load i32*, i32** %4
%443 = load i32, i32* %5
%444 = and i32 %443, 32
%445 = call i32 @fputbit(i32* %442, i32 %444)
%446 = load i32*, i32** %4
%447 = load i32, i32* %5
%448 = and i32 %447, 16
%449 = call i32 @fputbit(i32* %446, i32 %448)
%450 = load i32*, i32** %4
%451 = load i32, i32* %5
%452 = and i32 %451, 8
%453 = call i32 @fputbit(i32* %450, i32 %452)
%454 = load i32*, i32** %4
%455 = load i32, i32* %5
%456 = and i32 %455, 4
%457 = call i32 @fputbit(i32* %454, i32 %456)
%458 = load i32*, i32** %4
%459 = load i32, i32* %5
%460 = and i32 %459, 2
%461 = call i32 @fputbit(i32* %458, i32 %460)
%462 = load i32*, i32** %4
%463 = load i32, i32* %5
%464 = and i32 %463, 1
%465 = call i32 @fputbit(i32* %462, i32 %464)
br label %633
466: ; preds = %394
%467 = load i32, i32* %5
%468 = icmp slt i32 %467, 8192
br i1 %468, label %469, label %544
469: ; preds = %466
%470 = load i32, i32* %5
%471 = sub nsw i32 %470, 4096
store i32 %471, i32* %5
%472 = load i32*, i32** %4
%473 = call i32 @fputbit(i32* %472, i32 1)
%474 = load i32*, i32** %4
%475 = call i32 @fputbit(i32* %474, i32 1)
%476 = load i32*, i32** %4
%477 = call i32 @fputbit(i32* %476, i32 1)
%478 = load i32*, i32** %4
%479 = call i32 @fputbit(i32* %478, i32 1)
%480 = load i32*, i32** %4
%481 = call i32 @fputbit(i32* %480, i32 1)
%482 = load i32*, i32** %4
%483 = call i32 @fputbit(i32* %482, i32 1)
%484 = load i32*, i32** %4
%485 = call i32 @fputbit(i32* %484, i32 1)
%486 = load i32*, i32** %4
%487 = call i32 @fputbit(i32* %486, i32 1)
%488 = load i32*, i32** %4
%489 = call i32 @fputbit(i32* %488, i32 1)
%490 = load i32*, i32** %4
%491 = call i32 @fputbit(i32* %490, i32 1)
%492 = load i32*, i32** %4
%493 = call i32 @fputbit(i32* %492, i32 1)
%494 = load i32*, i32** %4
%495 = call i32 @fputbit(i32* %494, i32 0)
%496 = load i32*, i32** %4
%497 = load i32, i32* %5
%498 = and i32 %497, 2048
%499 = call i32 @fputbit(i32* %496, i32 %498)
%500 = load i32*, i32** %4
%501 = load i32, i32* %5
%502 = and i32 %501, 1024
%503 = call i32 @fputbit(i32* %500, i32 %502)
%504 = load i32*, i32** %4
%505 = load i32, i32* %5
%506 = and i32 %505, 512
%507 = call i32 @fputbit(i32* %504, i32 %506)
%508 = load i32*, i32** %4
%509 = load i32, i32* %5
%510 = and i32 %509, 256
%511 = call i32 @fputbit(i32* %508, i32 %510)
%512 = load i32*, i32** %4
%513 = load i32, i32* %5
%514 = and i32 %513, 128
%515 = call i32 @fputbit(i32* %512, i32 %514)
%516 = load i32*, i32** %4
%517 = load i32, i32* %5
%518 = and i32 %517, 64
%519 = call i32 @fputbit(i32* %516, i32 %518)
%520 = load i32*, i32** %4
%521 = load i32, i32* %5
%522 = and i32 %521, 32
%523 = call i32 @fputbit(i32* %520, i32 %522)
%524 = load i32*, i32** %4
%525 = load i32, i32* %5
%526 = and i32 %525, 16
%527 = call i32 @fputbit(i32* %524, i32 %526)
%528 = load i32*, i32** %4
%529 = load i32, i32* %5
%530 = and i32 %529, 8
%531 = call i32 @fputbit(i32* %528, i32 %530)
%532 = load i32*, i32** %4
%533 = load i32, i32* %5
%534 = and i32 %533, 4
%535 = call i32 @fputbit(i32* %532, i32 %534)
%536 = load i32*, i32** %4
%537 = load i32, i32* %5
%538 = and i32 %537, 2
%539 = call i32 @fputbit(i32* %536, i32 %538)
%540 = load i32*, i32** %4
%541 = load i32, i32* %5
%542 = and i32 %541, 1
%543 = call i32 @fputbit(i32* %540, i32 %542)
br label %632
544: ; preds = %466
%545 = load i32, i32* %5
%546 = icmp slt i32 %545, 16384
br i1 %546, label %547, label %628
547: ; preds = %544
%548 = load i32, i32* %5
%549 = sub nsw i32 %548, 8192
store i32 %549, i32* %5
%550 = load i32*, i32** %4
%551 = call i32 @fputbit(i32* %550, i32 1)
%552 = load i32*, i32** %4
%553 = call i32 @fputbit(i32* %552, i32 1)
%554 = load i32*, i32** %4
%555 = call i32 @fputbit(i32* %554, i32 1)
%556 = load i32*, i32** %4
%557 = call i32 @fputbit(i32* %556, i32 1)
%558 = load i32*, i32** %4
%559 = call i32 @fputbit(i32* %558, i32 1)
%560 = load i32*, i32** %4
%561 = call i32 @fputbit(i32* %560, i32 1)
%562 = load i32*, i32** %4
%563 = call i32 @fputbit(i32* %562, i32 1)
%564 = load i32*, i32** %4
%565 = call i32 @fputbit(i32* %564, i32 1)
%566 = load i32*, i32** %4
%567 = call i32 @fputbit(i32* %566, i32 1)
%568 = load i32*, i32** %4
%569 = call i32 @fputbit(i32* %568, i32 1)
%570 = load i32*, i32** %4
%571 = call i32 @fputbit(i32* %570, i32 1)
%572 = load i32*, i32** %4
%573 = call i32 @fputbit(i32* %572, i32 1)
%574 = load i32*, i32** %4
%575 = call i32 @fputbit(i32* %574, i32 0)
%576 = load i32*, i32** %4
%577 = load i32, i32* %5
%578 = and i32 %577, 4096
%579 = call i32 @fputbit(i32* %576, i32 %578)
%580 = load i32*, i32** %4
%581 = load i32, i32* %5
%582 = and i32 %581, 2048
%583 = call i32 @fputbit(i32* %580, i32 %582)
%584 = load i32*, i32** %4
%585 = load i32, i32* %5
%586 = and i32 %585, 1024
%587 = call i32 @fputbit(i32* %584, i32 %586)
%588 = load i32*, i32** %4
%589 = load i32, i32* %5
%590 = and i32 %589, 512
%591 = call i32 @fputbit(i32* %588, i32 %590)
%592 = load i32*, i32** %4
%593 = load i32, i32* %5
%594 = and i32 %593, 256
%595 = call i32 @fputbit(i32* %592, i32 %594)
%596 = load i32*, i32** %4
%597 = load i32, i32* %5
%598 = and i32 %597, 128
%599 = call i32 @fputbit(i32* %596, i32 %598)
%600 = load i32*, i32** %4
%601 = load i32, i32* %5
%602 = and i32 %601, 64
%603 = call i32 @fputbit(i32* %600, i32 %602)
%604 = load i32*, i32** %4
%605 = load i32, i32* %5
%606 = and i32 %605, 32
%607 = call i32 @fputbit(i32* %604, i32 %606)
%608 = load i32*, i32** %4
%609 = load i32, i32* %5
%610 = and i32 %609, 16
%611 = call i32 @fputbit(i32* %608, i32 %610)
%612 = load i32*, i32** %4
%613 = load i32, i32* %5
%614 = and i32 %613, 8
%615 = call i32 @fputbit(i32* %612, i32 %614)
%616 = load i32*, i32** %4
%617 = load i32, i32* %5
%618 = and i32 %617, 4
%619 = call i32 @fputbit(i32* %616, i32 %618)
%620 = load i32*, i32** %4
%621 = load i32, i32* %5
%622 = and i32 %621, 2
%623 = call i32 @fputbit(i32* %620, i32 %622)
%624 = load i32*, i32** %4
%625 = load i32, i32* %5
%626 = and i32 %625, 1
%627 = call i32 @fputbit(i32* %624, i32 %626)
br label %631
628: ; preds = %544
%629 = load i32, i32* %5
%630 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str, i64 0, i64 0), i32 %629)
store i32 0, i32* %3
br label %644
631: ; preds = %547
br label %632
632: ; preds = %631, %469
br label %633
633: ; preds = %632, %397
br label %634
634: ; preds = %633, %331
br label %635
635: ; preds = %634, %271
br label %636
636: ; preds = %635, %217
br label %637
637: ; preds = %636, %169
br label %638
638: ; preds = %637, %127
br label %639
639: ; preds = %638, %91
br label %640
640: ; preds = %639, %61
br label %641
641: ; preds = %640, %37
br label %642
642: ; preds = %641, %19
br label %643
643: ; preds = %642, %8
store i32 1, i32* %3
br label %644
644: ; preds = %643, %628
%645 = load i32, i32* %3
ret i32 %645
}

LLVM IR (-O2):
@.str = [32 x i8] c"\0AERROR: Length %i is too long\0A\0A\00"
define i32 @fputbitlen(i32* %0, i32 %1) {
%3 = icmp slt i32 %1, 4
br i1 %3, label %4, label %8
4: ; preds = %2
%5 = add nsw i32 %1, -2
%6 = tail call i32 @fputbit(i32* %0, i32 0)
%7 = tail call i32 @fputbit(i32* %0, i32 %5)
br label %316
8: ; preds = %2
%9 = icmp ult i32 %1, 8
br i1 %9, label %10, label %17
10: ; preds = %8
%11 = tail call i32 @fputbit(i32* %0, i32 1)
%12 = tail call i32 @fputbit(i32* %0, i32 0)
%13 = and i32 %1, 2
%14 = tail call i32 @fputbit(i32* %0, i32 %13)
%15 = and i32 %1, 1
%16 = tail call i32 @fputbit(i32* %0, i32 %15)
br label %316
17: ; preds = %8
%18 = icmp ult i32 %1, 16
br i1 %18, label %19, label %29
19: ; preds = %17
%20 = tail call i32 @fputbit(i32* %0, i32 1)
%21 = tail call i32 @fputbit(i32* %0, i32 1)
%22 = tail call i32 @fputbit(i32* %0, i32 0)
%23 = and i32 %1, 4
%24 = tail call i32 @fputbit(i32* %0, i32 %23)
%25 = and i32 %1, 2
%26 = tail call i32 @fputbit(i32* %0, i32 %25)
%27 = and i32 %1, 1
%28 = tail call i32 @fputbit(i32* %0, i32 %27)
br label %316
29: ; preds = %17
%30 = icmp ult i32 %1, 32
br i1 %30, label %31, label %44
31: ; preds = %29
%32 = tail call i32 @fputbit(i32* %0, i32 1)
%33 = tail call i32 @fputbit(i32* %0, i32 1)
%34 = tail call i32 @fputbit(i32* %0, i32 1)
%35 = tail call i32 @fputbit(i32* %0, i32 0)
%36 = and i32 %1, 8
%37 = tail call i32 @fputbit(i32* %0, i32 %36)
%38 = and i32 %1, 4
%39 = tail call i32 @fputbit(i32* %0, i32 %38)
%40 = and i32 %1, 2
%41 = tail call i32 @fputbit(i32* %0, i32 %40)
%42 = and i32 %1, 1
%43 = tail call i32 @fputbit(i32* %0, i32 %42)
br label %316
44: ; preds = %29
%45 = icmp ult i32 %1, 64
br i1 %45, label %46, label %62
46: ; preds = %44
%47 = tail call i32 @fputbit(i32* %0, i32 1)
%48 = tail call i32 @fputbit(i32* %0, i32 1)
%49 = tail call i32 @fputbit(i32* %0, i32 1)
%50 = tail call i32 @fputbit(i32* %0, i32 1)
%51 = tail call i32 @fputbit(i32* %0, i32 0)
%52 = and i32 %1, 16
%53 = tail call i32 @fputbit(i32* %0, i32 %52)
%54 = and i32 %1, 8
%55 = tail call i32 @fputbit(i32* %0, i32 %54)
%56 = and i32 %1, 4
%57 = tail call i32 @fputbit(i32* %0, i32 %56)
%58 = and i32 %1, 2
%59 = tail call i32 @fputbit(i32* %0, i32 %58)
%60 = and i32 %1, 1
%61 = tail call i32 @fputbit(i32* %0, i32 %60)
br label %316
62: ; preds = %44
%63 = icmp ult i32 %1, 128
br i1 %63, label %64, label %83
64: ; preds = %62
%65 = tail call i32 @fputbit(i32* %0, i32 1)
%66 = tail call i32 @fputbit(i32* %0, i32 1)
%67 = tail call i32 @fputbit(i32* %0, i32 1)
%68 = tail call i32 @fputbit(i32* %0, i32 1)
%69 = tail call i32 @fputbit(i32* %0, i32 1)
%70 = tail call i32 @fputbit(i32* %0, i32 0)
%71 = and i32 %1, 32
%72 = tail call i32 @fputbit(i32* %0, i32 %71)
%73 = and i32 %1, 16
%74 = tail call i32 @fputbit(i32* %0, i32 %73)
%75 = and i32 %1, 8
%76 = tail call i32 @fputbit(i32* %0, i32 %75)
%77 = and i32 %1, 4
%78 = tail call i32 @fputbit(i32* %0, i32 %77)
%79 = and i32 %1, 2
%80 = tail call i32 @fputbit(i32* %0, i32 %79)
%81 = and i32 %1, 1
%82 = tail call i32 @fputbit(i32* %0, i32 %81)
br label %316
83: ; preds = %62
%84 = icmp ult i32 %1, 256
br i1 %84, label %85, label %107
85: ; preds = %83
%86 = tail call i32 @fputbit(i32* %0, i32 1)
%87 = tail call i32 @fputbit(i32* %0, i32 1)
%88 = tail call i32 @fputbit(i32* %0, i32 1)
%89 = tail call i32 @fputbit(i32* %0, i32 1)
%90 = tail call i32 @fputbit(i32* %0, i32 1)
%91 = tail call i32 @fputbit(i32* %0, i32 1)
%92 = tail call i32 @fputbit(i32* %0, i32 0)
%93 = and i32 %1, 64
%94 = tail call i32 @fputbit(i32* %0, i32 %93)
%95 = and i32 %1, 32
%96 = tail call i32 @fputbit(i32* %0, i32 %95)
%97 = and i32 %1, 16
%98 = tail call i32 @fputbit(i32* %0, i32 %97)
%99 = and i32 %1, 8
%100 = tail call i32 @fputbit(i32* %0, i32 %99)
%101 = and i32 %1, 4
%102 = tail call i32 @fputbit(i32* %0, i32 %101)
%103 = and i32 %1, 2
%104 = tail call i32 @fputbit(i32* %0, i32 %103)
%105 = and i32 %1, 1
%106 = tail call i32 @fputbit(i32* %0, i32 %105)
br label %316
107: ; preds = %83
%108 = icmp ult i32 %1, 512
br i1 %108, label %109, label %134
109: ; preds = %107
%110 = tail call i32 @fputbit(i32* %0, i32 1)
%111 = tail call i32 @fputbit(i32* %0, i32 1)
%112 = tail call i32 @fputbit(i32* %0, i32 1)
%113 = tail call i32 @fputbit(i32* %0, i32 1)
%114 = tail call i32 @fputbit(i32* %0, i32 1)
%115 = tail call i32 @fputbit(i32* %0, i32 1)
%116 = tail call i32 @fputbit(i32* %0, i32 1)
%117 = tail call i32 @fputbit(i32* %0, i32 0)
%118 = and i32 %1, 128
%119 = tail call i32 @fputbit(i32* %0, i32 %118)
%120 = and i32 %1, 64
%121 = tail call i32 @fputbit(i32* %0, i32 %120)
%122 = and i32 %1, 32
%123 = tail call i32 @fputbit(i32* %0, i32 %122)
%124 = and i32 %1, 16
%125 = tail call i32 @fputbit(i32* %0, i32 %124)
%126 = and i32 %1, 8
%127 = tail call i32 @fputbit(i32* %0, i32 %126)
%128 = and i32 %1, 4
%129 = tail call i32 @fputbit(i32* %0, i32 %128)
%130 = and i32 %1, 2
%131 = tail call i32 @fputbit(i32* %0, i32 %130)
%132 = and i32 %1, 1
%133 = tail call i32 @fputbit(i32* %0, i32 %132)
br label %316
134: ; preds = %107
%135 = icmp ult i32 %1, 1024
br i1 %135, label %136, label %164
136: ; preds = %134
%137 = tail call i32 @fputbit(i32* %0, i32 1)
%138 = tail call i32 @fputbit(i32* %0, i32 1)
%139 = tail call i32 @fputbit(i32* %0, i32 1)
%140 = tail call i32 @fputbit(i32* %0, i32 1)
%141 = tail call i32 @fputbit(i32* %0, i32 1)
%142 = tail call i32 @fputbit(i32* %0, i32 1)
%143 = tail call i32 @fputbit(i32* %0, i32 1)
%144 = tail call i32 @fputbit(i32* %0, i32 1)
%145 = tail call i32 @fputbit(i32* %0, i32 0)
%146 = and i32 %1, 256
%147 = tail call i32 @fputbit(i32* %0, i32 %146)
%148 = and i32 %1, 128
%149 = tail call i32 @fputbit(i32* %0, i32 %148)
%150 = and i32 %1, 64
%151 = tail call i32 @fputbit(i32* %0, i32 %150)
%152 = and i32 %1, 32
%153 = tail call i32 @fputbit(i32* %0, i32 %152)
%154 = and i32 %1, 16
%155 = tail call i32 @fputbit(i32* %0, i32 %154)
%156 = and i32 %1, 8
%157 = tail call i32 @fputbit(i32* %0, i32 %156)
%158 = and i32 %1, 4
%159 = tail call i32 @fputbit(i32* %0, i32 %158)
%160 = and i32 %1, 2
%161 = tail call i32 @fputbit(i32* %0, i32 %160)
%162 = and i32 %1, 1
%163 = tail call i32 @fputbit(i32* %0, i32 %162)
br label %316
164: ; preds = %134
%165 = icmp ult i32 %1, 2048
br i1 %165, label %166, label %197
166: ; preds = %164
%167 = tail call i32 @fputbit(i32* %0, i32 1)
%168 = tail call i32 @fputbit(i32* %0, i32 1)
%169 = tail call i32 @fputbit(i32* %0, i32 1)
%170 = tail call i32 @fputbit(i32* %0, i32 1)
%171 = tail call i32 @fputbit(i32* %0, i32 1)
%172 = tail call i32 @fputbit(i32* %0, i32 1)
%173 = tail call i32 @fputbit(i32* %0, i32 1)
%174 = tail call i32 @fputbit(i32* %0, i32 1)
%175 = tail call i32 @fputbit(i32* %0, i32 1)
%176 = tail call i32 @fputbit(i32* %0, i32 0)
%177 = and i32 %1, 512
%178 = tail call i32 @fputbit(i32* %0, i32 %177)
%179 = and i32 %1, 256
%180 = tail call i32 @fputbit(i32* %0, i32 %179)
%181 = and i32 %1, 128
%182 = tail call i32 @fputbit(i32* %0, i32 %181)
%183 = and i32 %1, 64
%184 = tail call i32 @fputbit(i32* %0, i32 %183)
%185 = and i32 %1, 32
%186 = tail call i32 @fputbit(i32* %0, i32 %185)
%187 = and i32 %1, 16
%188 = tail call i32 @fputbit(i32* %0, i32 %187)
%189 = and i32 %1, 8
%190 = tail call i32 @fputbit(i32* %0, i32 %189)
%191 = and i32 %1, 4
%192 = tail call i32 @fputbit(i32* %0, i32 %191)
%193 = and i32 %1, 2
%194 = tail call i32 @fputbit(i32* %0, i32 %193)
%195 = and i32 %1, 1
%196 = tail call i32 @fputbit(i32* %0, i32 %195)
br label %316
197: ; preds = %164
%198 = icmp ult i32 %1, 4096
br i1 %198, label %199, label %233
199: ; preds = %197
%200 = tail call i32 @fputbit(i32* %0, i32 1)
%201 = tail call i32 @fputbit(i32* %0, i32 1)
%202 = tail call i32 @fputbit(i32* %0, i32 1)
%203 = tail call i32 @fputbit(i32* %0, i32 1)
%204 = tail call i32 @fputbit(i32* %0, i32 1)
%205 = tail call i32 @fputbit(i32* %0, i32 1)
%206 = tail call i32 @fputbit(i32* %0, i32 1)
%207 = tail call i32 @fputbit(i32* %0, i32 1)
%208 = tail call i32 @fputbit(i32* %0, i32 1)
%209 = tail call i32 @fputbit(i32* %0, i32 1)
%210 = tail call i32 @fputbit(i32* %0, i32 0)
%211 = and i32 %1, 1024
%212 = tail call i32 @fputbit(i32* %0, i32 %211)
%213 = and i32 %1, 512
%214 = tail call i32 @fputbit(i32* %0, i32 %213)
%215 = and i32 %1, 256
%216 = tail call i32 @fputbit(i32* %0, i32 %215)
%217 = and i32 %1, 128
%218 = tail call i32 @fputbit(i32* %0, i32 %217)
%219 = and i32 %1, 64
%220 = tail call i32 @fputbit(i32* %0, i32 %219)
%221 = and i32 %1, 32
%222 = tail call i32 @fputbit(i32* %0, i32 %221)
%223 = and i32 %1, 16
%224 = tail call i32 @fputbit(i32* %0, i32 %223)
%225 = and i32 %1, 8
%226 = tail call i32 @fputbit(i32* %0, i32 %225)
%227 = and i32 %1, 4
%228 = tail call i32 @fputbit(i32* %0, i32 %227)
%229 = and i32 %1, 2
%230 = tail call i32 @fputbit(i32* %0, i32 %229)
%231 = and i32 %1, 1
%232 = tail call i32 @fputbit(i32* %0, i32 %231)
br label %316
233: ; preds = %197
%234 = icmp ult i32 %1, 8192
br i1 %234, label %235, label %272
235: ; preds = %233
%236 = tail call i32 @fputbit(i32* %0, i32 1)
%237 = tail call i32 @fputbit(i32* %0, i32 1)
%238 = tail call i32 @fputbit(i32* %0, i32 1)
%239 = tail call i32 @fputbit(i32* %0, i32 1)
%240 = tail call i32 @fputbit(i32* %0, i32 1)
%241 = tail call i32 @fputbit(i32* %0, i32 1)
%242 = tail call i32 @fputbit(i32* %0, i32 1)
%243 = tail call i32 @fputbit(i32* %0, i32 1)
%244 = tail call i32 @fputbit(i32* %0, i32 1)
%245 = tail call i32 @fputbit(i32* %0, i32 1)
%246 = tail call i32 @fputbit(i32* %0, i32 1)
%247 = tail call i32 @fputbit(i32* %0, i32 0)
%248 = and i32 %1, 2048
%249 = tail call i32 @fputbit(i32* %0, i32 %248)
%250 = and i32 %1, 1024
%251 = tail call i32 @fputbit(i32* %0, i32 %250)
%252 = and i32 %1, 512
%253 = tail call i32 @fputbit(i32* %0, i32 %252)
%254 = and i32 %1, 256
%255 = tail call i32 @fputbit(i32* %0, i32 %254)
%256 = and i32 %1, 128
%257 = tail call i32 @fputbit(i32* %0, i32 %256)
%258 = and i32 %1, 64
%259 = tail call i32 @fputbit(i32* %0, i32 %258)
%260 = and i32 %1, 32
%261 = tail call i32 @fputbit(i32* %0, i32 %260)
%262 = and i32 %1, 16
%263 = tail call i32 @fputbit(i32* %0, i32 %262)
%264 = and i32 %1, 8
%265 = tail call i32 @fputbit(i32* %0, i32 %264)
%266 = and i32 %1, 4
%267 = tail call i32 @fputbit(i32* %0, i32 %266)
%268 = and i32 %1, 2
%269 = tail call i32 @fputbit(i32* %0, i32 %268)
%270 = and i32 %1, 1
%271 = tail call i32 @fputbit(i32* %0, i32 %270)
br label %316
272: ; preds = %233
%273 = icmp ult i32 %1, 16384
br i1 %273, label %274, label %314
274: ; preds = %272
%275 = tail call i32 @fputbit(i32* %0, i32 1)
%276 = tail call i32 @fputbit(i32* %0, i32 1)
%277 = tail call i32 @fputbit(i32* %0, i32 1)
%278 = tail call i32 @fputbit(i32* %0, i32 1)
%279 = tail call i32 @fputbit(i32* %0, i32 1)
%280 = tail call i32 @fputbit(i32* %0, i32 1)
%281 = tail call i32 @fputbit(i32* %0, i32 1)
%282 = tail call i32 @fputbit(i32* %0, i32 1)
%283 = tail call i32 @fputbit(i32* %0, i32 1)
%284 = tail call i32 @fputbit(i32* %0, i32 1)
%285 = tail call i32 @fputbit(i32* %0, i32 1)
%286 = tail call i32 @fputbit(i32* %0, i32 1)
%287 = tail call i32 @fputbit(i32* %0, i32 0)
%288 = and i32 %1, 4096
%289 = tail call i32 @fputbit(i32* %0, i32 %288)
%290 = and i32 %1, 2048
%291 = tail call i32 @fputbit(i32* %0, i32 %290)
%292 = and i32 %1, 1024
%293 = tail call i32 @fputbit(i32* %0, i32 %292)
%294 = and i32 %1, 512
%295 = tail call i32 @fputbit(i32* %0, i32 %294)
%296 = and i32 %1, 256
%297 = tail call i32 @fputbit(i32* %0, i32 %296)
%298 = and i32 %1, 128
%299 = tail call i32 @fputbit(i32* %0, i32 %298)
%300 = and i32 %1, 64
%301 = tail call i32 @fputbit(i32* %0, i32 %300)
%302 = and i32 %1, 32
%303 = tail call i32 @fputbit(i32* %0, i32 %302)
%304 = and i32 %1, 16
%305 = tail call i32 @fputbit(i32* %0, i32 %304)
%306 = and i32 %1, 8
%307 = tail call i32 @fputbit(i32* %0, i32 %306)
%308 = and i32 %1, 4
%309 = tail call i32 @fputbit(i32* %0, i32 %308)
%310 = and i32 %1, 2
%311 = tail call i32 @fputbit(i32* %0, i32 %310)
%312 = and i32 %1, 1
%313 = tail call i32 @fputbit(i32* %0, i32 %312)
br label %316
314: ; preds = %272
%315 = tail call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str, i64 0, i64 0), i32 %1)
br label %316
316: ; preds = %4, %19, %46, %85, %136, %199, %274, %235, %166, %109, %64, %31, %10, %314
%317 = phi i32 [ 0, %314 ], [ 1, %10 ], [ 1, %31 ], [ 1, %64 ], [ 1, %109 ], [ 1, %166 ], [ 1, %235 ], [ 1, %274 ], [ 1, %199 ], [ 1, %136 ], [ 1, %85 ], [ 1, %46 ], [ 1, %19 ], [ 1, %4 ]
ret i32 %317
}