#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 */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
void bit_dump(short int input) {
  short int c1 = (input & 0x00000001) >> 0;
  short int c2 = (input & 0x00000002) >> 1;
  short int c3 = (input & 0x00000004) >> 2;
  short int c4 = (input & 0x00000008) >> 3;
  short int c5 = (input & 0x00000010) >> 4;
  short int c6 = (input & 0x00000020) >> 5;
  short int c7 = (input & 0x00000040) >> 6;
  short int c8 = (input & 0x00000080) >> 7;
  short int c9 = (input & 0x00000100) >> 8;
  short int p1 = c1 ^ c2 ^ c3 ^ c4 ^ c5 ^ c8;
  if (0 != p1)
    p1 = 1;
  else
    p1 = 0;
  short int p2 = c2 ^ c3 ^ c4 ^ c5 ^ c6 ^ c9;
  if (0 != p2)
    p2 = 0;
  else
    p2 = 1;
  short int p3 = c1 ^ c2 ^ c6 ^ c7 ^ c8;
  if (0 != p3)
    p3 = 1;
  else
    p3 = 0;
  short int p4 = c2 ^ c3 ^ c7 ^ c8 ^ c9;
  if (0 != p4)
    p4 = 0;
  else
    p4 = 1;
  short int p5 = c1 ^ c2 ^ c5 ^ c9;
  if (0 != p5)
    p5 = 0;
  else
    p5 = 1;
  short int p6 = c1 ^ c4 ^ c5 ^ c6 ^ c8;
  if (0 != p6)
    p6 = 0;
  else
    p6 = 1;
  short int p7 = c1 ^ c3 ^ c4 ^ c6 ^ c7 ^ c8 ^ c9;
  if (0 != p7)
    p7 = 1;
  else
    p7 = 0;
  short int p8 = c2 ^ c4 ^ c5 ^ c7 ^ c8 ^ c9;
  if (0 != p8)
    p8 = 1;
  else
    p8 = 0;
  short int p9 = c3 ^ c5 ^ c6 ^ c8 ^ c9;
  if (0 != p9)
    p9 = 1;
  else
    p9 = 0;
  short int p10 = c4 ^ c6 ^ c7 ^ c9;
  if (0 != p10)
    p10 = 0;
  else
    p10 = 1;
  short int p11 = c1 ^ c2 ^ c3 ^ c4 ^ c7;
  if (0 != p11)
    p11 = 0;
  else
    p11 = 1;
  printf("+%0.3o => 0", input);
  if (0 != p11)
    printf("1");
  else
    printf("0");
  if (0 != p10)
    printf("1");
  else
    printf("0");
  if (0 != p9)
    printf("1");
  else
    printf("0");
  if (0 != p8)
    printf("1");
  else
    printf("0");
  if (0 != p7)
    printf("1");
  else
    printf("0");
  if (0 != p6)
    printf("1");
  else
    printf("0");
  if (0 != p5)
    printf("1");
  else
    printf("0");
  printf(" ");
  if (0 != p4)
    printf("1");
  else
    printf("0");
  if (0 != p3)
    printf("1");
  else
    printf("0");
  if (0 != p2)
    printf("1");
  else
    printf("0");
  if (0 != p1)
    printf("1");
  else
    printf("0");
  printf("100");
  if (0 != c9)
    printf("1");
  else
    printf("0");
  printf(" ");
  if (0 != c8)
    printf("1");
  else
    printf("0");
  if (0 != c7)
    printf("1");
  else
    printf("0");
  if (0 != c6)
    printf("1");
  else
    printf("0");
  if (0 != c5)
    printf("1");
  else
    printf("0");
  if (0 != c4)
    printf("1");
  else
    printf("0");
  if (0 != c3)
    printf("1");
  else
    printf("0");
  if (0 != c2)
    printf("1");
  else
    printf("0");
  if (0 != c1)
    printf("1");
  else
    printf("0");
  printf("\n");
}


x86 assembly (clang, -O0):
<bit_dump>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
movswl -0x2(%rbp),%eax
and    $0x1,%eax
sar    $0x0,%eax
mov    %ax,-0x4(%rbp)
movswl -0x2(%rbp),%eax
and    $0x2,%eax
sar    $0x1,%eax
mov    %ax,-0x6(%rbp)
movswl -0x2(%rbp),%eax
and    $0x4,%eax
sar    $0x2,%eax
mov    %ax,-0x8(%rbp)
movswl -0x2(%rbp),%eax
and    $0x8,%eax
sar    $0x3,%eax
mov    %ax,-0xa(%rbp)
movswl -0x2(%rbp),%eax
and    $0x10,%eax
sar    $0x4,%eax
mov    %ax,-0xc(%rbp)
movswl -0x2(%rbp),%eax
and    $0x20,%eax
sar    $0x5,%eax
mov    %ax,-0xe(%rbp)
movswl -0x2(%rbp),%eax
and    $0x40,%eax
sar    $0x6,%eax
mov    %ax,-0x10(%rbp)
movswl -0x2(%rbp),%eax
and    $0x80,%eax
sar    $0x7,%eax
mov    %ax,-0x12(%rbp)
movswl -0x2(%rbp),%eax
and    $0x100,%eax
sar    $0x8,%eax
mov    %ax,-0x14(%rbp)
movswl -0x4(%rbp),%eax
movswl -0x6(%rbp),%ecx
xor    %ecx,%eax
movswl -0x8(%rbp),%ecx
xor    %ecx,%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x16(%rbp)
movswl -0x16(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     11e0 <bit_dump+0xd0>
movw   $0x1,-0x16(%rbp)
jmp    11e6 <bit_dump+0xd6>
movw   $0x0,-0x16(%rbp)
movswl -0x6(%rbp),%eax
movswl -0x8(%rbp),%ecx
xor    %ecx,%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x18(%rbp)
movswl -0x18(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1225 <bit_dump+0x115>
movw   $0x0,-0x18(%rbp)
jmp    122b <bit_dump+0x11b>
movw   $0x1,-0x18(%rbp)
movswl -0x4(%rbp),%eax
movswl -0x6(%rbp),%ecx
xor    %ecx,%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x1a(%rbp)
movswl -0x1a(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1264 <bit_dump+0x154>
movw   $0x1,-0x1a(%rbp)
jmp    126a <bit_dump+0x15a>
movw   $0x0,-0x1a(%rbp)
movswl -0x6(%rbp),%eax
movswl -0x8(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x1c(%rbp)
movswl -0x1c(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     12a3 <bit_dump+0x193>
movw   $0x0,-0x1c(%rbp)
jmp    12a9 <bit_dump+0x199>
movw   $0x1,-0x1c(%rbp)
movswl -0x4(%rbp),%eax
movswl -0x6(%rbp),%ecx
xor    %ecx,%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x1e(%rbp)
movswl -0x1e(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     12dc <bit_dump+0x1cc>
movw   $0x0,-0x1e(%rbp)
jmp    12e2 <bit_dump+0x1d2>
movw   $0x1,-0x1e(%rbp)
movswl -0x4(%rbp),%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x20(%rbp)
movswl -0x20(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     131b <bit_dump+0x20b>
movw   $0x0,-0x20(%rbp)
jmp    1321 <bit_dump+0x211>
movw   $0x1,-0x20(%rbp)
movswl -0x4(%rbp),%eax
movswl -0x8(%rbp),%ecx
xor    %ecx,%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x22(%rbp)
movswl -0x22(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1366 <bit_dump+0x256>
movw   $0x1,-0x22(%rbp)
jmp    136c <bit_dump+0x25c>
movw   $0x0,-0x22(%rbp)
movswl -0x6(%rbp),%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x24(%rbp)
movswl -0x24(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     13ab <bit_dump+0x29b>
movw   $0x1,-0x24(%rbp)
jmp    13b1 <bit_dump+0x2a1>
movw   $0x0,-0x24(%rbp)
movswl -0x8(%rbp),%eax
movswl -0xc(%rbp),%ecx
xor    %ecx,%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x12(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x26(%rbp)
movswl -0x26(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     13ea <bit_dump+0x2da>
movw   $0x1,-0x26(%rbp)
jmp    13f0 <bit_dump+0x2e0>
movw   $0x0,-0x26(%rbp)
movswl -0xa(%rbp),%eax
movswl -0xe(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
movswl -0x14(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x28(%rbp)
movswl -0x28(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1423 <bit_dump+0x313>
movw   $0x0,-0x28(%rbp)
jmp    1429 <bit_dump+0x319>
movw   $0x1,-0x28(%rbp)
movswl -0x4(%rbp),%eax
movswl -0x6(%rbp),%ecx
xor    %ecx,%eax
movswl -0x8(%rbp),%ecx
xor    %ecx,%eax
movswl -0xa(%rbp),%ecx
xor    %ecx,%eax
movswl -0x10(%rbp),%ecx
xor    %ecx,%eax
mov    %ax,-0x2a(%rbp)
movswl -0x2a(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1462 <bit_dump+0x352>
movw   $0x0,-0x2a(%rbp)
jmp    1468 <bit_dump+0x358>
movw   $0x1,-0x2a(%rbp)
movswl -0x2(%rbp),%esi
lea    0xb8d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x2a(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     149b <bit_dump+0x38b>
lea    0xb7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14a9 <bit_dump+0x399>
lea    0xb68(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x28(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     14ca <bit_dump+0x3ba>
lea    0xb4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14d8 <bit_dump+0x3c8>
lea    0xb39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x26(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     14f9 <bit_dump+0x3e9>
lea    0xb1f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1507 <bit_dump+0x3f7>
lea    0xb0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x24(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1528 <bit_dump+0x418>
lea    0xaf0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1536 <bit_dump+0x426>
lea    0xadb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x22(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1557 <bit_dump+0x447>
lea    0xac1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1565 <bit_dump+0x455>
lea    0xaac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x20(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1586 <bit_dump+0x476>
lea    0xa92(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1594 <bit_dump+0x484>
lea    0xa7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x1e(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     15b5 <bit_dump+0x4a5>
lea    0xa63(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c3 <bit_dump+0x4b3>
lea    0xa4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa44(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x1c(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     15f2 <bit_dump+0x4e2>
lea    0xa26(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1600 <bit_dump+0x4f0>
lea    0xa11(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x1a(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1621 <bit_dump+0x511>
lea    0x9f7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    162f <bit_dump+0x51f>
lea    0x9e2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x18(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1650 <bit_dump+0x540>
lea    0x9c8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    165e <bit_dump+0x54e>
lea    0x9b3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x16(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     167f <bit_dump+0x56f>
lea    0x999(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    168d <bit_dump+0x57d>
lea    0x984(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x97c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     16bc <bit_dump+0x5ac>
lea    0x95c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16ca <bit_dump+0x5ba>
lea    0x947(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x93d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x12(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     16f9 <bit_dump+0x5e9>
lea    0x91f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1707 <bit_dump+0x5f7>
lea    0x90a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x10(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1728 <bit_dump+0x618>
lea    0x8f0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1736 <bit_dump+0x626>
lea    0x8db(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0xe(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1757 <bit_dump+0x647>
lea    0x8c1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1765 <bit_dump+0x655>
lea    0x8ac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0xc(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1786 <bit_dump+0x676>
lea    0x892(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1794 <bit_dump+0x684>
lea    0x87d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0xa(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     17b5 <bit_dump+0x6a5>
lea    0x863(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17c3 <bit_dump+0x6b3>
lea    0x84e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x8(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     17e4 <bit_dump+0x6d4>
lea    0x834(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    17f2 <bit_dump+0x6e2>
lea    0x81f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x6(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1813 <bit_dump+0x703>
lea    0x805(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1821 <bit_dump+0x711>
lea    0x7f0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movswl -0x4(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
je     1842 <bit_dump+0x732>
lea    0x7d6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1850 <bit_dump+0x740>
lea    0x7c1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x7bd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bit_dump>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %edi,%esi
mov    %edi,%eax
shr    %eax
and    $0x1,%eax
mov    %eax,%ebp
mov    %eax,0x4(%rsp)
mov    %edi,%ecx
shr    $0x2,%ecx
and    $0x1,%ecx
mov    %ecx,%ebx
mov    %ecx,(%rsp)
mov    %edi,%r15d
shr    $0x3,%r15d
and    $0x1,%r15d
mov    %edi,%ecx
shr    $0x4,%ecx
and    $0x1,%ecx
mov    %ecx,%r13d
mov    %edi,%ecx
shr    $0x5,%ecx
and    $0x1,%ecx
mov    %ecx,%r11d
mov    %edi,%r14d
shr    $0x6,%r14d
and    $0x1,%r14d
mov    %edi,%r9d
shr    $0x7,%r9d
and    $0x1,%r9d
mov    %edi,%r12d
shr    $0x8,%r12d
and    $0x1,%r12d
mov    %edi,%ecx
and    $0x1,%ecx
mov    %eax,%edx
xor    %ecx,%edx
mov    %ecx,%r10d
mov    %ecx,0x34(%rsp)
mov    %r15d,%r8d
xor    %ebx,%r8d
xor    %edx,%r8d
mov    %r8d,%ecx
xor    %r13d,%ecx
xor    %eax,%eax
cmp    %r9w,%cx
sete   %al
mov    %eax,0x30(%rsp)
xor    %ebx,%ebp
mov    %r11d,%eax
xor    %r15d,%eax
mov    %r15d,0x2c(%rsp)
mov    %eax,%edi
xor    %r13d,%edi
xor    %ebp,%edi
xor    %ecx,%ecx
cmp    %r12w,%di
sete   %cl
mov    %ecx,0x28(%rsp)
mov    %r14d,%edi
xor    %r11d,%edi
mov    %r11d,0x20(%rsp)
xor    %edx,%edi
xor    %ecx,%ecx
cmp    %r9w,%di
sete   %cl
mov    %ecx,0x1c(%rsp)
mov    %r9d,%edi
xor    %r14d,%edi
xor    %edi,%ebp
xor    %ecx,%ecx
cmp    %r12w,%bp
sete   %cl
mov    %ecx,0x10(%rsp)
xor    %r13d,%edx
xor    %ecx,%ecx
cmp    %r12w,%dx
sete   %cl
mov    %ecx,0xc(%rsp)
mov    %eax,%ecx
xor    %r10d,%ecx
mov    %ecx,%edx
xor    %r13d,%edx
mov    %r13d,%ebp
xor    %ebx,%ebx
cmp    %r9w,%dx
sete   %bl
mov    %ebx,0x8(%rsp)
mov    (%rsp),%ebx
mov    %ebx,%edx
xor    %r14d,%edx
xor    %r9d,%edx
mov    %r9d,0x18(%rsp)
xor    %ecx,%edx
xor    %r13d,%r13d
cmp    %r12w,%dx
sete   %r13b
mov    %ebp,0x24(%rsp)
mov    %ebp,%ecx
xor    %r15d,%ecx
xor    %edi,%ecx
xor    0x4(%rsp),%ecx
xor    %r15d,%r15d
cmp    %r12w,%cx
sete   %r15b
mov    %r11d,%ecx
xor    %ebp,%ecx
mov    %ebx,%edx
xor    %r9d,%edx
xor    %ecx,%edx
xor    %ebx,%ebx
cmp    %r12w,%dx
sete   %bl
mov    %r14d,%ecx
mov    %r14d,0x14(%rsp)
xor    %r14d,%eax
xor    %ebp,%ebp
cmp    %r12w,%ax
sete   %bpl
xor    %r14d,%r14d
cmp    %cx,%r8w
sete   %r14b
lea    0xd5b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
or     $0x30,%r14d
mov    %r14d,%edi
call   1030 <putchar@plt>
or     $0x30,%ebp
mov    %ebp,%edi
call   1030 <putchar@plt>
xor    $0x31,%ebx
mov    %ebx,%edi
call   1030 <putchar@plt>
xor    $0x31,%r15d
mov    %r15d,%edi
call   1030 <putchar@plt>
xor    $0x31,%r13d
mov    %r13d,%edi
call   1030 <putchar@plt>
mov    0x8(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0xc(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    0x10(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x1c(%rsp),%edi
xor    $0x31,%edi
call   1030 <putchar@plt>
mov    0x28(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x30(%rsp),%edi
xor    $0x31,%edi
call   1030 <putchar@plt>
lea    0xccf(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
or     $0x30,%r12d
mov    %r12d,%edi
call   1030 <putchar@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    0x18(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x14(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x20(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x24(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x2c(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    (%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x4(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    0x34(%rsp),%edi
or     $0x30,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <putchar@plt>

LLVM IR (-O0):
@.str = [12 x i8] c"+%0.3o => 0\00"
@.str.1 = [2 x i8] c"1\00"
@.str.2 = [2 x i8] c"0\00"
@.str.3 = [2 x i8] c" \00"
@.str.4 = [4 x i8] c"100\00"
@.str.5 = [2 x i8] c"\0A\00"
define void @bit_dump(i16 signext %0) {
%2 = alloca i16
%3 = alloca i16
%4 = alloca i16
%5 = alloca i16
%6 = alloca i16
%7 = alloca i16
%8 = alloca i16
%9 = alloca i16
%10 = alloca i16
%11 = alloca i16
%12 = alloca i16
%13 = alloca i16
%14 = alloca i16
%15 = alloca i16
%16 = alloca i16
%17 = alloca i16
%18 = alloca i16
%19 = alloca i16
%20 = alloca i16
%21 = alloca i16
%22 = alloca i16
store i16 %0, i16* %2
%23 = load i16, i16* %2
%24 = sext i16 %23 to i32
%25 = and i32 %24, 1
%26 = ashr i32 %25, 0
%27 = trunc i32 %26 to i16
store i16 %27, i16* %3
%28 = load i16, i16* %2
%29 = sext i16 %28 to i32
%30 = and i32 %29, 2
%31 = ashr i32 %30, 1
%32 = trunc i32 %31 to i16
store i16 %32, i16* %4
%33 = load i16, i16* %2
%34 = sext i16 %33 to i32
%35 = and i32 %34, 4
%36 = ashr i32 %35, 2
%37 = trunc i32 %36 to i16
store i16 %37, i16* %5
%38 = load i16, i16* %2
%39 = sext i16 %38 to i32
%40 = and i32 %39, 8
%41 = ashr i32 %40, 3
%42 = trunc i32 %41 to i16
store i16 %42, i16* %6
%43 = load i16, i16* %2
%44 = sext i16 %43 to i32
%45 = and i32 %44, 16
%46 = ashr i32 %45, 4
%47 = trunc i32 %46 to i16
store i16 %47, i16* %7
%48 = load i16, i16* %2
%49 = sext i16 %48 to i32
%50 = and i32 %49, 32
%51 = ashr i32 %50, 5
%52 = trunc i32 %51 to i16
store i16 %52, i16* %8
%53 = load i16, i16* %2
%54 = sext i16 %53 to i32
%55 = and i32 %54, 64
%56 = ashr i32 %55, 6
%57 = trunc i32 %56 to i16
store i16 %57, i16* %9
%58 = load i16, i16* %2
%59 = sext i16 %58 to i32
%60 = and i32 %59, 128
%61 = ashr i32 %60, 7
%62 = trunc i32 %61 to i16
store i16 %62, i16* %10
%63 = load i16, i16* %2
%64 = sext i16 %63 to i32
%65 = and i32 %64, 256
%66 = ashr i32 %65, 8
%67 = trunc i32 %66 to i16
store i16 %67, i16* %11
%68 = load i16, i16* %3
%69 = sext i16 %68 to i32
%70 = load i16, i16* %4
%71 = sext i16 %70 to i32
%72 = xor i32 %69, %71
%73 = load i16, i16* %5
%74 = sext i16 %73 to i32
%75 = xor i32 %72, %74
%76 = load i16, i16* %6
%77 = sext i16 %76 to i32
%78 = xor i32 %75, %77
%79 = load i16, i16* %7
%80 = sext i16 %79 to i32
%81 = xor i32 %78, %80
%82 = load i16, i16* %10
%83 = sext i16 %82 to i32
%84 = xor i32 %81, %83
%85 = trunc i32 %84 to i16
store i16 %85, i16* %12
%86 = load i16, i16* %12
%87 = sext i16 %86 to i32
%88 = icmp ne i32 0, %87
br i1 %88, label %89, label %90
89: ; preds = %1
store i16 1, i16* %12
br label %91
90: ; preds = %1
store i16 0, i16* %12
br label %91
91: ; preds = %90, %89
%92 = load i16, i16* %4
%93 = sext i16 %92 to i32
%94 = load i16, i16* %5
%95 = sext i16 %94 to i32
%96 = xor i32 %93, %95
%97 = load i16, i16* %6
%98 = sext i16 %97 to i32
%99 = xor i32 %96, %98
%100 = load i16, i16* %7
%101 = sext i16 %100 to i32
%102 = xor i32 %99, %101
%103 = load i16, i16* %8
%104 = sext i16 %103 to i32
%105 = xor i32 %102, %104
%106 = load i16, i16* %11
%107 = sext i16 %106 to i32
%108 = xor i32 %105, %107
%109 = trunc i32 %108 to i16
store i16 %109, i16* %13
%110 = load i16, i16* %13
%111 = sext i16 %110 to i32
%112 = icmp ne i32 0, %111
br i1 %112, label %113, label %114
113: ; preds = %91
store i16 0, i16* %13
br label %115
114: ; preds = %91
store i16 1, i16* %13
br label %115
115: ; preds = %114, %113
%116 = load i16, i16* %3
%117 = sext i16 %116 to i32
%118 = load i16, i16* %4
%119 = sext i16 %118 to i32
%120 = xor i32 %117, %119
%121 = load i16, i16* %8
%122 = sext i16 %121 to i32
%123 = xor i32 %120, %122
%124 = load i16, i16* %9
%125 = sext i16 %124 to i32
%126 = xor i32 %123, %125
%127 = load i16, i16* %10
%128 = sext i16 %127 to i32
%129 = xor i32 %126, %128
%130 = trunc i32 %129 to i16
store i16 %130, i16* %14
%131 = load i16, i16* %14
%132 = sext i16 %131 to i32
%133 = icmp ne i32 0, %132
br i1 %133, label %134, label %135
134: ; preds = %115
store i16 1, i16* %14
br label %136
135: ; preds = %115
store i16 0, i16* %14
br label %136
136: ; preds = %135, %134
%137 = load i16, i16* %4
%138 = sext i16 %137 to i32
%139 = load i16, i16* %5
%140 = sext i16 %139 to i32
%141 = xor i32 %138, %140
%142 = load i16, i16* %9
%143 = sext i16 %142 to i32
%144 = xor i32 %141, %143
%145 = load i16, i16* %10
%146 = sext i16 %145 to i32
%147 = xor i32 %144, %146
%148 = load i16, i16* %11
%149 = sext i16 %148 to i32
%150 = xor i32 %147, %149
%151 = trunc i32 %150 to i16
store i16 %151, i16* %15
%152 = load i16, i16* %15
%153 = sext i16 %152 to i32
%154 = icmp ne i32 0, %153
br i1 %154, label %155, label %156
155: ; preds = %136
store i16 0, i16* %15
br label %157
156: ; preds = %136
store i16 1, i16* %15
br label %157
157: ; preds = %156, %155
%158 = load i16, i16* %3
%159 = sext i16 %158 to i32
%160 = load i16, i16* %4
%161 = sext i16 %160 to i32
%162 = xor i32 %159, %161
%163 = load i16, i16* %7
%164 = sext i16 %163 to i32
%165 = xor i32 %162, %164
%166 = load i16, i16* %11
%167 = sext i16 %166 to i32
%168 = xor i32 %165, %167
%169 = trunc i32 %168 to i16
store i16 %169, i16* %16
%170 = load i16, i16* %16
%171 = sext i16 %170 to i32
%172 = icmp ne i32 0, %171
br i1 %172, label %173, label %174
173: ; preds = %157
store i16 0, i16* %16
br label %175
174: ; preds = %157
store i16 1, i16* %16
br label %175
175: ; preds = %174, %173
%176 = load i16, i16* %3
%177 = sext i16 %176 to i32
%178 = load i16, i16* %6
%179 = sext i16 %178 to i32
%180 = xor i32 %177, %179
%181 = load i16, i16* %7
%182 = sext i16 %181 to i32
%183 = xor i32 %180, %182
%184 = load i16, i16* %8
%185 = sext i16 %184 to i32
%186 = xor i32 %183, %185
%187 = load i16, i16* %10
%188 = sext i16 %187 to i32
%189 = xor i32 %186, %188
%190 = trunc i32 %189 to i16
store i16 %190, i16* %17
%191 = load i16, i16* %17
%192 = sext i16 %191 to i32
%193 = icmp ne i32 0, %192
br i1 %193, label %194, label %195
194: ; preds = %175
store i16 0, i16* %17
br label %196
195: ; preds = %175
store i16 1, i16* %17
br label %196
196: ; preds = %195, %194
%197 = load i16, i16* %3
%198 = sext i16 %197 to i32
%199 = load i16, i16* %5
%200 = sext i16 %199 to i32
%201 = xor i32 %198, %200
%202 = load i16, i16* %6
%203 = sext i16 %202 to i32
%204 = xor i32 %201, %203
%205 = load i16, i16* %8
%206 = sext i16 %205 to i32
%207 = xor i32 %204, %206
%208 = load i16, i16* %9
%209 = sext i16 %208 to i32
%210 = xor i32 %207, %209
%211 = load i16, i16* %10
%212 = sext i16 %211 to i32
%213 = xor i32 %210, %212
%214 = load i16, i16* %11
%215 = sext i16 %214 to i32
%216 = xor i32 %213, %215
%217 = trunc i32 %216 to i16
store i16 %217, i16* %18
%218 = load i16, i16* %18
%219 = sext i16 %218 to i32
%220 = icmp ne i32 0, %219
br i1 %220, label %221, label %222
221: ; preds = %196
store i16 1, i16* %18
br label %223
222: ; preds = %196
store i16 0, i16* %18
br label %223
223: ; preds = %222, %221
%224 = load i16, i16* %4
%225 = sext i16 %224 to i32
%226 = load i16, i16* %6
%227 = sext i16 %226 to i32
%228 = xor i32 %225, %227
%229 = load i16, i16* %7
%230 = sext i16 %229 to i32
%231 = xor i32 %228, %230
%232 = load i16, i16* %9
%233 = sext i16 %232 to i32
%234 = xor i32 %231, %233
%235 = load i16, i16* %10
%236 = sext i16 %235 to i32
%237 = xor i32 %234, %236
%238 = load i16, i16* %11
%239 = sext i16 %238 to i32
%240 = xor i32 %237, %239
%241 = trunc i32 %240 to i16
store i16 %241, i16* %19
%242 = load i16, i16* %19
%243 = sext i16 %242 to i32
%244 = icmp ne i32 0, %243
br i1 %244, label %245, label %246
245: ; preds = %223
store i16 1, i16* %19
br label %247
246: ; preds = %223
store i16 0, i16* %19
br label %247
247: ; preds = %246, %245
%248 = load i16, i16* %5
%249 = sext i16 %248 to i32
%250 = load i16, i16* %7
%251 = sext i16 %250 to i32
%252 = xor i32 %249, %251
%253 = load i16, i16* %8
%254 = sext i16 %253 to i32
%255 = xor i32 %252, %254
%256 = load i16, i16* %10
%257 = sext i16 %256 to i32
%258 = xor i32 %255, %257
%259 = load i16, i16* %11
%260 = sext i16 %259 to i32
%261 = xor i32 %258, %260
%262 = trunc i32 %261 to i16
store i16 %262, i16* %20
%263 = load i16, i16* %20
%264 = sext i16 %263 to i32
%265 = icmp ne i32 0, %264
br i1 %265, label %266, label %267
266: ; preds = %247
store i16 1, i16* %20
br label %268
267: ; preds = %247
store i16 0, i16* %20
br label %268
268: ; preds = %267, %266
%269 = load i16, i16* %6
%270 = sext i16 %269 to i32
%271 = load i16, i16* %8
%272 = sext i16 %271 to i32
%273 = xor i32 %270, %272
%274 = load i16, i16* %9
%275 = sext i16 %274 to i32
%276 = xor i32 %273, %275
%277 = load i16, i16* %11
%278 = sext i16 %277 to i32
%279 = xor i32 %276, %278
%280 = trunc i32 %279 to i16
store i16 %280, i16* %21
%281 = load i16, i16* %21
%282 = sext i16 %281 to i32
%283 = icmp ne i32 0, %282
br i1 %283, label %284, label %285
284: ; preds = %268
store i16 0, i16* %21
br label %286
285: ; preds = %268
store i16 1, i16* %21
br label %286
286: ; preds = %285, %284
%287 = load i16, i16* %3
%288 = sext i16 %287 to i32
%289 = load i16, i16* %4
%290 = sext i16 %289 to i32
%291 = xor i32 %288, %290
%292 = load i16, i16* %5
%293 = sext i16 %292 to i32
%294 = xor i32 %291, %293
%295 = load i16, i16* %6
%296 = sext i16 %295 to i32
%297 = xor i32 %294, %296
%298 = load i16, i16* %9
%299 = sext i16 %298 to i32
%300 = xor i32 %297, %299
%301 = trunc i32 %300 to i16
store i16 %301, i16* %22
%302 = load i16, i16* %22
%303 = sext i16 %302 to i32
%304 = icmp ne i32 0, %303
br i1 %304, label %305, label %306
305: ; preds = %286
store i16 0, i16* %22
br label %307
306: ; preds = %286
store i16 1, i16* %22
br label %307
307: ; preds = %306, %305
%308 = load i16, i16* %2
%309 = sext i16 %308 to i32
%310 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32 %309)
%311 = load i16, i16* %22
%312 = sext i16 %311 to i32
%313 = icmp ne i32 0, %312
br i1 %313, label %314, label %316
314: ; preds = %307
%315 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %318
316: ; preds = %307
%317 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %318
318: ; preds = %316, %314
%319 = load i16, i16* %21
%320 = sext i16 %319 to i32
%321 = icmp ne i32 0, %320
br i1 %321, label %322, label %324
322: ; preds = %318
%323 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %326
324: ; preds = %318
%325 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %326
326: ; preds = %324, %322
%327 = load i16, i16* %20
%328 = sext i16 %327 to i32
%329 = icmp ne i32 0, %328
br i1 %329, label %330, label %332
330: ; preds = %326
%331 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %334
332: ; preds = %326
%333 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %334
334: ; preds = %332, %330
%335 = load i16, i16* %19
%336 = sext i16 %335 to i32
%337 = icmp ne i32 0, %336
br i1 %337, label %338, label %340
338: ; preds = %334
%339 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %342
340: ; preds = %334
%341 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %342
342: ; preds = %340, %338
%343 = load i16, i16* %18
%344 = sext i16 %343 to i32
%345 = icmp ne i32 0, %344
br i1 %345, label %346, label %348
346: ; preds = %342
%347 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %350
348: ; preds = %342
%349 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %350
350: ; preds = %348, %346
%351 = load i16, i16* %17
%352 = sext i16 %351 to i32
%353 = icmp ne i32 0, %352
br i1 %353, label %354, label %356
354: ; preds = %350
%355 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %358
356: ; preds = %350
%357 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %358
358: ; preds = %356, %354
%359 = load i16, i16* %16
%360 = sext i16 %359 to i32
%361 = icmp ne i32 0, %360
br i1 %361, label %362, label %364
362: ; preds = %358
%363 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %366
364: ; preds = %358
%365 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %366
366: ; preds = %364, %362
%367 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%368 = load i16, i16* %15
%369 = sext i16 %368 to i32
%370 = icmp ne i32 0, %369
br i1 %370, label %371, label %373
371: ; preds = %366
%372 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %375
373: ; preds = %366
%374 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %375
375: ; preds = %373, %371
%376 = load i16, i16* %14
%377 = sext i16 %376 to i32
%378 = icmp ne i32 0, %377
br i1 %378, label %379, label %381
379: ; preds = %375
%380 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %383
381: ; preds = %375
%382 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %383
383: ; preds = %381, %379
%384 = load i16, i16* %13
%385 = sext i16 %384 to i32
%386 = icmp ne i32 0, %385
br i1 %386, label %387, label %389
387: ; preds = %383
%388 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %391
389: ; preds = %383
%390 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %391
391: ; preds = %389, %387
%392 = load i16, i16* %12
%393 = sext i16 %392 to i32
%394 = icmp ne i32 0, %393
br i1 %394, label %395, label %397
395: ; preds = %391
%396 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %399
397: ; preds = %391
%398 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %399
399: ; preds = %397, %395
%400 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%401 = load i16, i16* %11
%402 = sext i16 %401 to i32
%403 = icmp ne i32 0, %402
br i1 %403, label %404, label %406
404: ; preds = %399
%405 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %408
406: ; preds = %399
%407 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %408
408: ; preds = %406, %404
%409 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%410 = load i16, i16* %10
%411 = sext i16 %410 to i32
%412 = icmp ne i32 0, %411
br i1 %412, label %413, label %415
413: ; preds = %408
%414 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %417
415: ; preds = %408
%416 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %417
417: ; preds = %415, %413
%418 = load i16, i16* %9
%419 = sext i16 %418 to i32
%420 = icmp ne i32 0, %419
br i1 %420, label %421, label %423
421: ; preds = %417
%422 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %425
423: ; preds = %417
%424 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %425
425: ; preds = %423, %421
%426 = load i16, i16* %8
%427 = sext i16 %426 to i32
%428 = icmp ne i32 0, %427
br i1 %428, label %429, label %431
429: ; preds = %425
%430 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %433
431: ; preds = %425
%432 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %433
433: ; preds = %431, %429
%434 = load i16, i16* %7
%435 = sext i16 %434 to i32
%436 = icmp ne i32 0, %435
br i1 %436, label %437, label %439
437: ; preds = %433
%438 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %441
439: ; preds = %433
%440 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %441
441: ; preds = %439, %437
%442 = load i16, i16* %6
%443 = sext i16 %442 to i32
%444 = icmp ne i32 0, %443
br i1 %444, label %445, label %447
445: ; preds = %441
%446 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %449
447: ; preds = %441
%448 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %449
449: ; preds = %447, %445
%450 = load i16, i16* %5
%451 = sext i16 %450 to i32
%452 = icmp ne i32 0, %451
br i1 %452, label %453, label %455
453: ; preds = %449
%454 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %457
455: ; preds = %449
%456 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %457
457: ; preds = %455, %453
%458 = load i16, i16* %4
%459 = sext i16 %458 to i32
%460 = icmp ne i32 0, %459
br i1 %460, label %461, label %463
461: ; preds = %457
%462 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %465
463: ; preds = %457
%464 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %465
465: ; preds = %463, %461
%466 = load i16, i16* %3
%467 = sext i16 %466 to i32
%468 = icmp ne i32 0, %467
br i1 %468, label %469, label %471
469: ; preds = %465
%470 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %473
471: ; preds = %465
%472 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %473
473: ; preds = %471, %469
%474 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [12 x i8] c"+%0.3o => 0\00"
@.str.4 = [4 x i8] c"100\00"
define void @bit_dump(i16 signext %0) {
%2 = sext i16 %0 to i32
%3 = and i16 %0, 1
%4 = lshr i16 %0, 1
%5 = and i16 %4, 1
%6 = lshr i16 %0, 2
%7 = and i16 %6, 1
%8 = lshr i16 %0, 3
%9 = and i16 %8, 1
%10 = lshr i16 %0, 4
%11 = and i16 %10, 1
%12 = lshr i16 %0, 5
%13 = and i16 %12, 1
%14 = lshr i16 %0, 6
%15 = and i16 %14, 1
%16 = lshr i16 %0, 7
%17 = and i16 %16, 1
%18 = lshr i16 %0, 8
%19 = and i16 %18, 1
%20 = xor i16 %5, %3
%21 = xor i16 %9, %7
%22 = xor i16 %21, %20
%23 = xor i16 %22, %11
%24 = icmp eq i16 %23, %17
%25 = xor i16 %5, %7
%26 = xor i16 %13, %9
%27 = xor i16 %26, %11
%28 = xor i16 %27, %25
%29 = icmp eq i16 %28, %19
%30 = xor i16 %15, %13
%31 = xor i16 %30, %20
%32 = icmp eq i16 %31, %17
%33 = xor i16 %17, %15
%34 = xor i16 %33, %25
%35 = icmp eq i16 %34, %19
%36 = xor i16 %20, %11
%37 = icmp eq i16 %36, %19
%38 = xor i16 %26, %3
%39 = xor i16 %38, %11
%40 = icmp eq i16 %39, %17
%41 = xor i16 %38, %7
%42 = xor i16 %41, %15
%43 = xor i16 %42, %17
%44 = icmp eq i16 %43, %19
%45 = xor i16 %11, %9
%46 = xor i16 %45, %15
%47 = xor i16 %46, %17
%48 = xor i16 %47, %5
%49 = icmp eq i16 %48, %19
%50 = xor i16 %13, %11
%51 = xor i16 %50, %7
%52 = xor i16 %51, %17
%53 = icmp eq i16 %52, %19
%54 = xor i16 %26, %15
%55 = icmp eq i16 %54, %19
%56 = icmp eq i16 %22, %15
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32 %2)
%58 = select i1 %56, i32 49, i32 48
%59 = tail call i32 @putchar(i32 %58)
%60 = select i1 %55, i32 49, i32 48
%61 = tail call i32 @putchar(i32 %60)
%62 = select i1 %53, i32 48, i32 49
%63 = tail call i32 @putchar(i32 %62)
%64 = select i1 %49, i32 48, i32 49
%65 = tail call i32 @putchar(i32 %64)
%66 = select i1 %44, i32 48, i32 49
%67 = tail call i32 @putchar(i32 %66)
%68 = select i1 %40, i32 49, i32 48
%69 = tail call i32 @putchar(i32 %68)
%70 = select i1 %37, i32 49, i32 48
%71 = tail call i32 @putchar(i32 %70)
%72 = tail call i32 @putchar(i32 32)
%73 = select i1 %35, i32 49, i32 48
%74 = tail call i32 @putchar(i32 %73)
%75 = select i1 %32, i32 48, i32 49
%76 = tail call i32 @putchar(i32 %75)
%77 = select i1 %29, i32 49, i32 48
%78 = tail call i32 @putchar(i32 %77)
%79 = select i1 %24, i32 48, i32 49
%80 = tail call i32 @putchar(i32 %79)
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%82 = icmp eq i16 %19, 0
%83 = select i1 %82, i32 48, i32 49
%84 = tail call i32 @putchar(i32 %83)
%85 = tail call i32 @putchar(i32 32)
%86 = icmp eq i16 %17, 0
%87 = select i1 %86, i32 48, i32 49
%88 = tail call i32 @putchar(i32 %87)
%89 = icmp eq i16 %15, 0
%90 = select i1 %89, i32 48, i32 49
%91 = tail call i32 @putchar(i32 %90)
%92 = icmp eq i16 %13, 0
%93 = select i1 %92, i32 48, i32 49
%94 = tail call i32 @putchar(i32 %93)
%95 = icmp eq i16 %11, 0
%96 = select i1 %95, i32 48, i32 49
%97 = tail call i32 @putchar(i32 %96)
%98 = icmp eq i16 %9, 0
%99 = select i1 %98, i32 48, i32 49
%100 = tail call i32 @putchar(i32 %99)
%101 = icmp eq i16 %7, 0
%102 = select i1 %101, i32 48, i32 49
%103 = tail call i32 @putchar(i32 %102)
%104 = icmp eq i16 %5, 0
%105 = select i1 %104, i32 48, i32 49
%106 = tail call i32 @putchar(i32 %105)
%107 = icmp eq i16 %3, 0
%108 = select i1 %107, i32 48, i32 49
%109 = tail call i32 @putchar(i32 %108)
%110 = tail call i32 @putchar(i32 10)
ret void
}