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

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int vprintf(char const *, int /*<<< orphan*/);
int vtc_printf(const long tcstyle, const char *format, va_list argp) {
  printf("vtc_printf(): called with tcstyle=0%lo\n", tcstyle);
  printf("vtc_printf(): calling vprintf()\n");
  if (tcstyle & 0x0000000000000L)
    printf("\033["
           "0m");
  if (tcstyle & 0x0000000000001L)
    printf("\033["
           "39m");
  if (tcstyle & 0x0000000000002L)
    printf("\033["
           "30m");
  if (tcstyle & 0x0000000000004L)
    printf("\033["
           "31m");
  if (tcstyle & 0x0000000000010L)
    printf("\033["
           "32m");
  if (tcstyle & 0x0000000000020L)
    printf("\033["
           "33m");
  if (tcstyle & 0x0000000000040L)
    printf("\033["
           "34m");
  if (tcstyle & 0x0000000000100L)
    printf("\033["
           "35m");
  if (tcstyle & 0x0000000000200L)
    printf("\033["
           "36m");
  if (tcstyle & 0x0000000000400L)
    printf("\033["
           "37m");
  if (tcstyle & 0x0000000001000L)
    printf("\033["
           "90m");
  if (tcstyle & 0x0000000002000L)
    printf("\033["
           "91m");
  if (tcstyle & 0x0000000004000L)
    printf("\033["
           "92m");
  if (tcstyle & 0x0000000010000L)
    printf("\033["
           "93m");
  if (tcstyle & 0x0000000020000L)
    printf("\033["
           "94m");
  if (tcstyle & 0x0000000040000L)
    printf("\033["
           "95m");
  if (tcstyle & 0x0000000100000L)
    printf("\033["
           "96m");
  if (tcstyle & 0x0000000200000L)
    printf("\033["
           "97m");
  if (tcstyle & 0x0000000400000L)
    printf("\033["
           "49m");
  if (tcstyle & 0x0000001000000L)
    printf("\033["
           "40m");
  if (tcstyle & 0x0000002000000L)
    printf("\033["
           "41m");
  if (tcstyle & 0x0000004000000L)
    printf("\033["
           "42m");
  if (tcstyle & 0x0000010000000L)
    printf("\033["
           "43m");
  if (tcstyle & 0x0000020000000L)
    printf("\033["
           "44m");
  if (tcstyle & 0x0000040000000L)
    printf("\033["
           "45m");
  if (tcstyle & 0x0000100000000L)
    printf("\033["
           "46m");
  if (tcstyle & 0x0000200000000L)
    printf("\033["
           "47m");
  if (tcstyle & 0x0000400000000L)
    printf("\033["
           "100m");
  if (tcstyle & 0x0001000000000L)
    printf("\033["
           "101m");
  if (tcstyle & 0x0002000000000L)
    printf("\033["
           "102m");
  if (tcstyle & 0x0004000000000L)
    printf("\033["
           "103m");
  if (tcstyle & 0x0010000000000L)
    printf("\033["
           "104m");
  if (tcstyle & 0x0020000000000L)
    printf("\033["
           "105m");
  if (tcstyle & 0x0040000000000L)
    printf("\033["
           "106m");
  if (tcstyle & 0x0100000000000L)
    printf("\033["
           "107m");
  int ret = vprintf(format, argp);
  printf("\033["
         "0m");
  return ret;
}


x86 assembly (clang, -O0):
<vtc_printf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xec2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xedc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x0,%rax
cmp    $0x0,%rax
je     1173 <vtc_printf+0x53>
lea    0xedd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     1193 <vtc_printf+0x73>
lea    0xec2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     11b3 <vtc_printf+0x93>
lea    0xea8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x4,%rax
cmp    $0x0,%rax
je     11d3 <vtc_printf+0xb3>
lea    0xe8e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x10,%rax
cmp    $0x0,%rax
je     11f3 <vtc_printf+0xd3>
lea    0xe74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x20,%rax
cmp    $0x0,%rax
je     1213 <vtc_printf+0xf3>
lea    0xe5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40,%rax
cmp    $0x0,%rax
je     1233 <vtc_printf+0x113>
lea    0xe40(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x100,%rax
cmp    $0x0,%rax
je     1255 <vtc_printf+0x135>
lea    0xe24(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x200,%rax
cmp    $0x0,%rax
je     1277 <vtc_printf+0x157>
lea    0xe08(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x400,%rax
cmp    $0x0,%rax
je     1299 <vtc_printf+0x179>
lea    0xdec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x1000,%rax
cmp    $0x0,%rax
je     12bb <vtc_printf+0x19b>
lea    0xdd0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x2000,%rax
cmp    $0x0,%rax
je     12dd <vtc_printf+0x1bd>
lea    0xdb4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x4000,%rax
cmp    $0x0,%rax
je     12ff <vtc_printf+0x1df>
lea    0xd98(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x10000,%rax
cmp    $0x0,%rax
je     1321 <vtc_printf+0x201>
lea    0xd7c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x20000,%rax
cmp    $0x0,%rax
je     1343 <vtc_printf+0x223>
lea    0xd60(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40000,%rax
cmp    $0x0,%rax
je     1365 <vtc_printf+0x245>
lea    0xd44(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x100000,%rax
cmp    $0x0,%rax
je     1387 <vtc_printf+0x267>
lea    0xd28(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x200000,%rax
cmp    $0x0,%rax
je     13a9 <vtc_printf+0x289>
lea    0xd0c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x400000,%rax
cmp    $0x0,%rax
je     13cb <vtc_printf+0x2ab>
lea    0xcf0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x1000000,%rax
cmp    $0x0,%rax
je     13ed <vtc_printf+0x2cd>
lea    0xcd4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x2000000,%rax
cmp    $0x0,%rax
je     140f <vtc_printf+0x2ef>
lea    0xcb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x4000000,%rax
cmp    $0x0,%rax
je     1431 <vtc_printf+0x311>
lea    0xc9c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x10000000,%rax
cmp    $0x0,%rax
je     1453 <vtc_printf+0x333>
lea    0xc80(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x20000000,%rax
cmp    $0x0,%rax
je     1475 <vtc_printf+0x355>
lea    0xc64(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rax
and    $0x40000000,%rax
cmp    $0x0,%rax
je     1497 <vtc_printf+0x377>
lea    0xc48(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x100000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     14bd <vtc_printf+0x39d>
lea    0xc28(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x200000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     14e3 <vtc_printf+0x3c3>
lea    0xc08(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x400000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     1509 <vtc_printf+0x3e9>
lea    0xbe8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x1000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     152f <vtc_printf+0x40f>
lea    0xbc9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x2000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     1555 <vtc_printf+0x435>
lea    0xbaa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x4000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     157b <vtc_printf+0x45b>
lea    0xb8b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x10000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     15a1 <vtc_printf+0x481>
lea    0xb6c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x20000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     15c7 <vtc_printf+0x4a7>
lea    0xb4d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x40000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     15ed <vtc_printf+0x4cd>
lea    0xb2e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movabs $0x100000000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     1613 <vtc_printf+0x4f3>
lea    0xb0f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
call   1040 <vprintf@plt>
mov    %eax,-0x18(%rbp)
lea    0xa20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<vtc_printf>:
push   %rbp
push   %r14
push   %rbx
mov    %edx,%r14d
mov    %rsi,%rbx
mov    %rdi,%rbp
lea    0xebc(%rip),%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xfac(%rip),%rdi
call   1030 <puts@plt>
test   $0x1,%bpl
jne    1308 <vtc_printf+0x1d8>
test   $0x2,%bpl
jne    1320 <vtc_printf+0x1f0>
test   $0x4,%bpl
jne    1338 <vtc_printf+0x208>
test   $0x10,%bpl
jne    1350 <vtc_printf+0x220>
test   $0x20,%bpl
jne    1368 <vtc_printf+0x238>
test   $0x40,%bpl
jne    1380 <vtc_printf+0x250>
test   $0x100,%ebp
jne    139a <vtc_printf+0x26a>
test   $0x200,%ebp
jne    13b4 <vtc_printf+0x284>
test   $0x400,%ebp
jne    13ce <vtc_printf+0x29e>
test   $0x1000,%ebp
jne    13e8 <vtc_printf+0x2b8>
test   $0x2000,%ebp
jne    1402 <vtc_printf+0x2d2>
test   $0x4000,%ebp
jne    141c <vtc_printf+0x2ec>
test   $0x10000,%ebp
jne    1436 <vtc_printf+0x306>
test   $0x20000,%ebp
jne    1450 <vtc_printf+0x320>
test   $0x40000,%ebp
jne    146a <vtc_printf+0x33a>
test   $0x100000,%ebp
jne    1484 <vtc_printf+0x354>
test   $0x200000,%ebp
jne    149e <vtc_printf+0x36e>
test   $0x400000,%ebp
jne    14b8 <vtc_printf+0x388>
test   $0x1000000,%ebp
jne    14d2 <vtc_printf+0x3a2>
test   $0x2000000,%ebp
jne    14ec <vtc_printf+0x3bc>
test   $0x4000000,%ebp
jne    1506 <vtc_printf+0x3d6>
test   $0x10000000,%ebp
jne    1520 <vtc_printf+0x3f0>
test   $0x20000000,%ebp
jne    153a <vtc_printf+0x40a>
test   $0x40000000,%ebp
jne    1554 <vtc_printf+0x424>
bt     $0x20,%rbp
jb     156d <vtc_printf+0x43d>
bt     $0x21,%rbp
jb     1586 <vtc_printf+0x456>
bt     $0x22,%rbp
jb     159f <vtc_printf+0x46f>
bt     $0x24,%rbp
jb     15b8 <vtc_printf+0x488>
bt     $0x25,%rbp
jb     15d1 <vtc_printf+0x4a1>
bt     $0x26,%rbp
jb     15ea <vtc_printf+0x4ba>
bt     $0x28,%rbp
jb     1603 <vtc_printf+0x4d3>
bt     $0x29,%rbp
jb     161c <vtc_printf+0x4ec>
bt     $0x2a,%rbp
jb     1635 <vtc_printf+0x505>
bt     $0x2c,%rbp
jae    12e6 <vtc_printf+0x1b6>
lea    0xe1b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    %r14d,%esi
call   1050 <vprintf@plt>
mov    %eax,%ebx
lea    0xd2e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %ebx,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret
lea    0xd1e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x2,%bpl
je     116e <vtc_printf+0x3e>
lea    0xd0c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4,%bpl
je     1178 <vtc_printf+0x48>
lea    0xcfa(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x10,%bpl
je     1182 <vtc_printf+0x52>
lea    0xce8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20,%bpl
je     118c <vtc_printf+0x5c>
lea    0xcd6(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40,%bpl
je     1196 <vtc_printf+0x66>
lea    0xcc4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x100,%ebp
je     11a2 <vtc_printf+0x72>
lea    0xcb0(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x200,%ebp
je     11ae <vtc_printf+0x7e>
lea    0xc9c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x400,%ebp
je     11ba <vtc_printf+0x8a>
lea    0xc88(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x1000,%ebp
je     11c6 <vtc_printf+0x96>
lea    0xc74(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x2000,%ebp
je     11d2 <vtc_printf+0xa2>
lea    0xc60(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4000,%ebp
je     11de <vtc_printf+0xae>
lea    0xc4c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x10000,%ebp
je     11ea <vtc_printf+0xba>
lea    0xc38(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20000,%ebp
je     11f6 <vtc_printf+0xc6>
lea    0xc24(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000,%ebp
je     1202 <vtc_printf+0xd2>
lea    0xc10(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x100000,%ebp
je     120e <vtc_printf+0xde>
lea    0xbfc(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x200000,%ebp
je     121a <vtc_printf+0xea>
lea    0xbe8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x400000,%ebp
je     1226 <vtc_printf+0xf6>
lea    0xbd4(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x1000000,%ebp
je     1232 <vtc_printf+0x102>
lea    0xbc0(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x2000000,%ebp
je     123e <vtc_printf+0x10e>
lea    0xbac(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x4000000,%ebp
je     124a <vtc_printf+0x11a>
lea    0xb98(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x10000000,%ebp
je     1256 <vtc_printf+0x126>
lea    0xb84(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x20000000,%ebp
je     1262 <vtc_printf+0x132>
lea    0xb70(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
test   $0x40000000,%ebp
je     126e <vtc_printf+0x13e>
lea    0xb5c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x20,%rbp
jae    1279 <vtc_printf+0x149>
lea    0xb49(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x21,%rbp
jae    1284 <vtc_printf+0x154>
lea    0xb36(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x22,%rbp
jae    128f <vtc_printf+0x15f>
lea    0xb23(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x24,%rbp
jae    129a <vtc_printf+0x16a>
lea    0xb11(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x25,%rbp
jae    12a5 <vtc_printf+0x175>
lea    0xaff(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x26,%rbp
jae    12b0 <vtc_printf+0x180>
lea    0xaed(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x28,%rbp
jae    12bb <vtc_printf+0x18b>
lea    0xadb(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x29,%rbp
jae    12c6 <vtc_printf+0x196>
lea    0xac9(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x2a,%rbp
jae    12d1 <vtc_printf+0x1a1>
lea    0xab7(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
bt     $0x2c,%rbp
jb     12d8 <vtc_printf+0x1a8>
jmp    12e6 <vtc_printf+0x1b6>

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

LLVM IR (-O2):
@.str = [40 x i8] c"vtc_printf(): called with tcstyle=0%lo\0A\00"
@.str.2 = [5 x i8] c"\1B[0m\00"
@.str.3 = [6 x i8] c"\1B[39m\00"
@.str.4 = [6 x i8] c"\1B[30m\00"
@.str.5 = [6 x i8] c"\1B[31m\00"
@.str.6 = [6 x i8] c"\1B[32m\00"
@.str.7 = [6 x i8] c"\1B[33m\00"
@.str.8 = [6 x i8] c"\1B[34m\00"
@.str.9 = [6 x i8] c"\1B[35m\00"
@.str.10 = [6 x i8] c"\1B[36m\00"
@.str.11 = [6 x i8] c"\1B[37m\00"
@.str.12 = [6 x i8] c"\1B[90m\00"
@.str.13 = [6 x i8] c"\1B[91m\00"
@.str.14 = [6 x i8] c"\1B[92m\00"
@.str.15 = [6 x i8] c"\1B[93m\00"
@.str.16 = [6 x i8] c"\1B[94m\00"
@.str.17 = [6 x i8] c"\1B[95m\00"
@.str.18 = [6 x i8] c"\1B[96m\00"
@.str.19 = [6 x i8] c"\1B[97m\00"
@.str.20 = [6 x i8] c"\1B[49m\00"
@.str.21 = [6 x i8] c"\1B[40m\00"
@.str.22 = [6 x i8] c"\1B[41m\00"
@.str.23 = [6 x i8] c"\1B[42m\00"
@.str.24 = [6 x i8] c"\1B[43m\00"
@.str.25 = [6 x i8] c"\1B[44m\00"
@.str.26 = [6 x i8] c"\1B[45m\00"
@.str.27 = [6 x i8] c"\1B[46m\00"
@.str.28 = [6 x i8] c"\1B[47m\00"
@.str.29 = [7 x i8] c"\1B[100m\00"
@.str.30 = [7 x i8] c"\1B[101m\00"
@.str.31 = [7 x i8] c"\1B[102m\00"
@.str.32 = [7 x i8] c"\1B[103m\00"
@.str.33 = [7 x i8] c"\1B[104m\00"
@.str.34 = [7 x i8] c"\1B[105m\00"
@.str.35 = [7 x i8] c"\1B[106m\00"
@.str.36 = [7 x i8] c"\1B[107m\00"
@str = [32 x i8] c"vtc_printf(): calling vprintf()\00"
define i32 @vtc_printf(i64 %0, i8* nocapture %1, i32 %2) {
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i64 %0)
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str, i64 0, i64 0))
%6 = and i64 %0, 1
%7 = icmp eq i64 %6, 0
br i1 %7, label %10, label %8
8: ; preds = %3
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
br label %10
10: ; preds = %8, %3
%11 = and i64 %0, 2
%12 = icmp eq i64 %11, 0
br i1 %12, label %15, label %13
13: ; preds = %10
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0))
br label %15
15: ; preds = %13, %10
%16 = and i64 %0, 4
%17 = icmp eq i64 %16, 0
br i1 %17, label %20, label %18
18: ; preds = %15
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
br label %20
20: ; preds = %18, %15
%21 = and i64 %0, 16
%22 = icmp eq i64 %21, 0
br i1 %22, label %25, label %23
23: ; preds = %20
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
br label %25
25: ; preds = %23, %20
%26 = and i64 %0, 32
%27 = icmp eq i64 %26, 0
br i1 %27, label %30, label %28
28: ; preds = %25
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
br label %30
30: ; preds = %28, %25
%31 = and i64 %0, 64
%32 = icmp eq i64 %31, 0
br i1 %32, label %35, label %33
33: ; preds = %30
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0))
br label %35
35: ; preds = %33, %30
%36 = and i64 %0, 256
%37 = icmp eq i64 %36, 0
br i1 %37, label %40, label %38
38: ; preds = %35
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
br label %40
40: ; preds = %38, %35
%41 = and i64 %0, 512
%42 = icmp eq i64 %41, 0
br i1 %42, label %45, label %43
43: ; preds = %40
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0))
br label %45
45: ; preds = %43, %40
%46 = and i64 %0, 1024
%47 = icmp eq i64 %46, 0
br i1 %47, label %50, label %48
48: ; preds = %45
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0))
br label %50
50: ; preds = %48, %45
%51 = and i64 %0, 4096
%52 = icmp eq i64 %51, 0
br i1 %52, label %55, label %53
53: ; preds = %50
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
br label %55
55: ; preds = %53, %50
%56 = and i64 %0, 8192
%57 = icmp eq i64 %56, 0
br i1 %57, label %60, label %58
58: ; preds = %55
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
br label %60
60: ; preds = %58, %55
%61 = and i64 %0, 16384
%62 = icmp eq i64 %61, 0
br i1 %62, label %65, label %63
63: ; preds = %60
%64 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0))
br label %65
65: ; preds = %63, %60
%66 = and i64 %0, 65536
%67 = icmp eq i64 %66, 0
br i1 %67, label %70, label %68
68: ; preds = %65
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0))
br label %70
70: ; preds = %68, %65
%71 = and i64 %0, 131072
%72 = icmp eq i64 %71, 0
br i1 %72, label %75, label %73
73: ; preds = %70
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
br label %75
75: ; preds = %73, %70
%76 = and i64 %0, 262144
%77 = icmp eq i64 %76, 0
br i1 %77, label %80, label %78
78: ; preds = %75
%79 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0))
br label %80
80: ; preds = %78, %75
%81 = and i64 %0, 1048576
%82 = icmp eq i64 %81, 0
br i1 %82, label %85, label %83
83: ; preds = %80
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
br label %85
85: ; preds = %83, %80
%86 = and i64 %0, 2097152
%87 = icmp eq i64 %86, 0
br i1 %87, label %90, label %88
88: ; preds = %85
%89 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0))
br label %90
90: ; preds = %88, %85
%91 = and i64 %0, 4194304
%92 = icmp eq i64 %91, 0
br i1 %92, label %95, label %93
93: ; preds = %90
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0))
br label %95
95: ; preds = %93, %90
%96 = and i64 %0, 16777216
%97 = icmp eq i64 %96, 0
br i1 %97, label %100, label %98
98: ; preds = %95
%99 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.21, i64 0, i64 0))
br label %100
100: ; preds = %98, %95
%101 = and i64 %0, 33554432
%102 = icmp eq i64 %101, 0
br i1 %102, label %105, label %103
103: ; preds = %100
%104 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0))
br label %105
105: ; preds = %103, %100
%106 = and i64 %0, 67108864
%107 = icmp eq i64 %106, 0
br i1 %107, label %110, label %108
108: ; preds = %105
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0))
br label %110
110: ; preds = %108, %105
%111 = and i64 %0, 268435456
%112 = icmp eq i64 %111, 0
br i1 %112, label %115, label %113
113: ; preds = %110
%114 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.24, i64 0, i64 0))
br label %115
115: ; preds = %113, %110
%116 = and i64 %0, 536870912
%117 = icmp eq i64 %116, 0
br i1 %117, label %120, label %118
118: ; preds = %115
%119 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.25, i64 0, i64 0))
br label %120
120: ; preds = %118, %115
%121 = and i64 %0, 1073741824
%122 = icmp eq i64 %121, 0
br i1 %122, label %125, label %123
123: ; preds = %120
%124 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
br label %125
125: ; preds = %123, %120
%126 = and i64 %0, 4294967296
%127 = icmp eq i64 %126, 0
br i1 %127, label %130, label %128
128: ; preds = %125
%129 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0))
br label %130
130: ; preds = %128, %125
%131 = and i64 %0, 8589934592
%132 = icmp eq i64 %131, 0
br i1 %132, label %135, label %133
133: ; preds = %130
%134 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0))
br label %135
135: ; preds = %133, %130
%136 = and i64 %0, 17179869184
%137 = icmp eq i64 %136, 0
br i1 %137, label %140, label %138
138: ; preds = %135
%139 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0))
br label %140
140: ; preds = %138, %135
%141 = and i64 %0, 68719476736
%142 = icmp eq i64 %141, 0
br i1 %142, label %145, label %143
143: ; preds = %140
%144 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.30, i64 0, i64 0))
br label %145
145: ; preds = %143, %140
%146 = and i64 %0, 137438953472
%147 = icmp eq i64 %146, 0
br i1 %147, label %150, label %148
148: ; preds = %145
%149 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i64 0, i64 0))
br label %150
150: ; preds = %148, %145
%151 = and i64 %0, 274877906944
%152 = icmp eq i64 %151, 0
br i1 %152, label %155, label %153
153: ; preds = %150
%154 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0))
br label %155
155: ; preds = %153, %150
%156 = and i64 %0, 1099511627776
%157 = icmp eq i64 %156, 0
br i1 %157, label %160, label %158
158: ; preds = %155
%159 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
br label %160
160: ; preds = %158, %155
%161 = and i64 %0, 2199023255552
%162 = icmp eq i64 %161, 0
br i1 %162, label %165, label %163
163: ; preds = %160
%164 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0))
br label %165
165: ; preds = %163, %160
%166 = and i64 %0, 4398046511104
%167 = icmp eq i64 %166, 0
br i1 %167, label %170, label %168
168: ; preds = %165
%169 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.35, i64 0, i64 0))
br label %170
170: ; preds = %168, %165
%171 = and i64 %0, 17592186044416
%172 = icmp eq i64 %171, 0
br i1 %172, label %175, label %173
173: ; preds = %170
%174 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0))
br label %175
175: ; preds = %173, %170
%176 = tail call i32 @vprintf(i8* %1, i32 %2)
%177 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
ret i32 %176
}