#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 *, int, ...);
int /*<<< orphan*/ usleep(int);
int main() {
  int current[6];
  int length;
  for (int i = 0; i < 64; i++) {
    printf("Original: %i \n", i);
    if (i > 31) {
      int x = i / 2;
      int x1 = i % 2;
      if (x1 == 0) {
        current[5] = 0;
      } else {
        current[5] = 1;
      }
      int y = x / 2;
      int y1 = x % 2;
      if (y1 == 0) {
        current[4] = 0;
      } else {
        current[4] = 1;
      }
      int z = y / 2;
      int z1 = y % 2;
      if (z1 == 0) {
        current[3] = 0;
      } else {
        current[3] = 1;
      }
      int w = z / 2;
      int w1 = z % 2;
      if (w1 == 0) {
        current[2] = 0;
      } else {
        current[2] = 1;
      }
      int a = w / 2;
      int a1 = w % 2;
      if (a1 == 0) {
        current[1] = 0;
      } else {
        current[1] = 1;
      }
      int b = a / 2;
      int b1 = a % 2;
      if (b1 == 0) {
        current[0] = 0;
      } else {
        current[0] = 1;
      }
      printf("Number: %i%i%i%i%i%i \n", current[0], current[1], current[2],
             current[3], current[4], current[5]);
      length = 6;
      printf("Length: %i \n", length);
    } else if (i > 15 && i < 32) {
      int x = i / 2;
      int x1 = i % 2;
      if (x1 == 0) {
        current[4] = 0;
      } else {
        current[4] = 1;
      }
      int y = x / 2;
      int y1 = x % 2;
      if (y1 == 0) {
        current[3] = 0;
      } else {
        current[3] = 1;
      }
      int z = y / 2;
      int z1 = y % 2;
      if (z1 == 0) {
        current[2] = 0;
      } else {
        current[2] = 1;
      }
      int w = z / 2;
      int w1 = z % 2;
      if (w1 == 0) {
        current[1] = 0;
      } else {
        current[1] = 1;
      }
      int a = w / 2;
      int a1 = w % 2;
      if (a1 == 0) {
        current[0] = 0;
      } else {
        current[0] = 1;
      }
      printf("Number: %i%i%i%i%i \n", current[0], current[1], current[2],
             current[3], current[4]);
      length = 5;
      printf("Length: %i \n", length);
    } else if (i > 7 && i < 16) {
      int x = i / 2;
      int x1 = i % 2;
      if (x1 == 0) {
        current[3] = 0;
      } else {
        current[3] = 1;
      }
      int y = x / 2;
      int y1 = x % 2;
      if (y1 == 0) {
        current[2] = 0;
      } else {
        current[2] = 1;
      }
      int z = y / 2;
      int z1 = y % 2;
      if (z1 == 0) {
        current[1] = 0;
      } else {
        current[1] = 1;
      }
      int w = z / 2;
      int w1 = z % 2;
      if (w1 == 0) {
        current[0] = 0;
      } else {
        current[0] = 1;
      }
      printf("Number: %i%i%i%i \n", current[0], current[1], current[2],
             current[3]);
      length = 4;
      printf("Length: %i \n", length);
    } else if (i > 2 && i < 8) {
      int x = i / 2;
      int x1 = i % 2;
      if (x1 == 0) {
        current[2] = 0;
      } else {
        current[2] = 1;
      }
      int y = x / 2;
      int y1 = x % 2;
      if (y1 == 0) {
        current[1] = 0;
      } else {
        current[1] = 1;
      }
      int z = y / 2;
      int z1 = y % 2;
      if (z1 == 0) {
        current[0] = 0;
      } else {
        current[0] = 1;
      }
      printf("Number: %i%i%i \n", current[0], current[1], current[2]);
      length = 3;
      printf("Length: %i \n", length);
    } else if (i > 1) {
      int x = i / 2;
      int x1 = i % 2;
      if (x1 == 0) {
        current[1] = 0;
      } else {
        current[1] = 1;
      }
      int y = x / 2;
      int y1 = x % 2;
      if (y1 == 0) {
        current[0] = 0;
      } else {
        current[0] = 1;
      }
      printf("Number: %i%i \n", current[0], current[1]);
      length = 2;
      printf("Length: %i \n", length);
    } else if (i < 2 && i > -1) {
      if (i == 1) {
        current[0] = 1;
      } else if (i == 0) {
        current[0] = 0;
      }
      printf("Number: %i \n", current[0]);
      length = 1;
      printf("Length: %i \n", length);
    }
    usleep(500000);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x40,-0x28(%rbp)
jge    1842 <main+0x722>
mov    -0x28(%rbp),%esi
lea    0xeb3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x1f,-0x28(%rbp)
jle    12f6 <main+0x1d6>
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x30(%rbp)
cmpl   $0x0,-0x30(%rbp)
jne    1190 <main+0x70>
movl   $0x0,-0xc(%rbp)
jmp    1197 <main+0x77>
movl   $0x1,-0xc(%rbp)
mov    -0x2c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x38(%rbp)
cmpl   $0x0,-0x38(%rbp)
jne    11c9 <main+0xa9>
movl   $0x0,-0x10(%rbp)
jmp    11d0 <main+0xb0>
movl   $0x1,-0x10(%rbp)
mov    -0x34(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x3c(%rbp)
mov    -0x34(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x40(%rbp)
cmpl   $0x0,-0x40(%rbp)
jne    1202 <main+0xe2>
movl   $0x0,-0x14(%rbp)
jmp    1209 <main+0xe9>
movl   $0x1,-0x14(%rbp)
mov    -0x3c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x44(%rbp)
mov    -0x3c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x48(%rbp)
cmpl   $0x0,-0x48(%rbp)
jne    123b <main+0x11b>
movl   $0x0,-0x18(%rbp)
jmp    1242 <main+0x122>
movl   $0x1,-0x18(%rbp)
mov    -0x44(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x4c(%rbp)
mov    -0x44(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x50(%rbp)
cmpl   $0x0,-0x50(%rbp)
jne    1274 <main+0x154>
movl   $0x0,-0x1c(%rbp)
jmp    127b <main+0x15b>
movl   $0x1,-0x1c(%rbp)
mov    -0x4c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x54(%rbp)
mov    -0x4c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x58(%rbp)
cmpl   $0x0,-0x58(%rbp)
jne    12ad <main+0x18d>
movl   $0x0,-0x20(%rbp)
jmp    12b4 <main+0x194>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x14(%rbp),%r8d
mov    -0x10(%rbp),%r9d
mov    -0xc(%rbp),%eax
lea    0xd40(%rip),%rdi
mov    %eax,(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x6,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0xd3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    182a <main+0x70a>
cmpl   $0xf,-0x28(%rbp)
jle    1463 <main+0x343>
cmpl   $0x20,-0x28(%rbp)
jge    1463 <main+0x343>
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x5c(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x60(%rbp)
cmpl   $0x0,-0x60(%rbp)
jne    133c <main+0x21c>
movl   $0x0,-0x10(%rbp)
jmp    1343 <main+0x223>
movl   $0x1,-0x10(%rbp)
mov    -0x5c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x64(%rbp)
mov    -0x5c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x68(%rbp)
cmpl   $0x0,-0x68(%rbp)
jne    1375 <main+0x255>
movl   $0x0,-0x14(%rbp)
jmp    137c <main+0x25c>
movl   $0x1,-0x14(%rbp)
mov    -0x64(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x6c(%rbp)
mov    -0x64(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x70(%rbp)
cmpl   $0x0,-0x70(%rbp)
jne    13ae <main+0x28e>
movl   $0x0,-0x18(%rbp)
jmp    13b5 <main+0x295>
movl   $0x1,-0x18(%rbp)
mov    -0x6c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x74(%rbp)
mov    -0x6c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x78(%rbp)
cmpl   $0x0,-0x78(%rbp)
jne    13e7 <main+0x2c7>
movl   $0x0,-0x1c(%rbp)
jmp    13ee <main+0x2ce>
movl   $0x1,-0x1c(%rbp)
mov    -0x74(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x7c(%rbp)
mov    -0x74(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x80(%rbp)
cmpl   $0x0,-0x80(%rbp)
jne    1420 <main+0x300>
movl   $0x0,-0x20(%rbp)
jmp    1427 <main+0x307>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x14(%rbp),%r8d
mov    -0x10(%rbp),%r9d
lea    0xbf4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x5,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0xbcf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1825 <main+0x705>
cmpl   $0x7,-0x28(%rbp)
jle    15c9 <main+0x4a9>
cmpl   $0x10,-0x28(%rbp)
jge    15c9 <main+0x4a9>
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x84(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x88(%rbp)
cmpl   $0x0,-0x88(%rbp)
jne    14b2 <main+0x392>
movl   $0x0,-0x14(%rbp)
jmp    14b9 <main+0x399>
movl   $0x1,-0x14(%rbp)
mov    -0x84(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8c(%rbp)
mov    -0x84(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x90(%rbp)
cmpl   $0x0,-0x90(%rbp)
jne    14fa <main+0x3da>
movl   $0x0,-0x18(%rbp)
jmp    1501 <main+0x3e1>
movl   $0x1,-0x18(%rbp)
mov    -0x8c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x94(%rbp)
mov    -0x8c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jne    1542 <main+0x422>
movl   $0x0,-0x1c(%rbp)
jmp    1549 <main+0x429>
movl   $0x1,-0x1c(%rbp)
mov    -0x94(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x9c(%rbp)
mov    -0x94(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xa0(%rbp)
cmpl   $0x0,-0xa0(%rbp)
jne    158a <main+0x46a>
movl   $0x0,-0x20(%rbp)
jmp    1591 <main+0x471>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x14(%rbp),%r8d
lea    0xaa3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x4,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0xa69(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1820 <main+0x700>
cmpl   $0x2,-0x28(%rbp)
jle    16e3 <main+0x5c3>
cmpl   $0x8,-0x28(%rbp)
jge    16e3 <main+0x5c3>
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0xa4(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
jne    1618 <main+0x4f8>
movl   $0x0,-0x18(%rbp)
jmp    161f <main+0x4ff>
movl   $0x1,-0x18(%rbp)
mov    -0xa4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0xac(%rbp)
mov    -0xa4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xb0(%rbp)
cmpl   $0x0,-0xb0(%rbp)
jne    1660 <main+0x540>
movl   $0x0,-0x1c(%rbp)
jmp    1667 <main+0x547>
movl   $0x1,-0x1c(%rbp)
mov    -0xac(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0xb4(%rbp)
mov    -0xac(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xb8(%rbp)
cmpl   $0x0,-0xb8(%rbp)
jne    16a8 <main+0x588>
movl   $0x0,-0x20(%rbp)
jmp    16af <main+0x58f>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x18(%rbp),%ecx
lea    0x99c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x3,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0x94f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    181b <main+0x6fb>
cmpl   $0x1,-0x28(%rbp)
jle    17a8 <main+0x688>
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0xbc(%rbp)
mov    -0x28(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xc0(%rbp)
cmpl   $0x0,-0xc0(%rbp)
jne    1728 <main+0x608>
movl   $0x0,-0x1c(%rbp)
jmp    172f <main+0x60f>
movl   $0x1,-0x1c(%rbp)
mov    -0xbc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0xc4(%rbp)
mov    -0xbc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,-0xc8(%rbp)
cmpl   $0x0,-0xc8(%rbp)
jne    1770 <main+0x650>
movl   $0x0,-0x20(%rbp)
jmp    1777 <main+0x657>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%esi
mov    -0x1c(%rbp),%edx
lea    0x8e8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x2,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0x88a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1816 <main+0x6f6>
cmpl   $0x2,-0x28(%rbp)
jge    1811 <main+0x6f1>
cmpl   $0xffffffff,-0x28(%rbp)
jle    1811 <main+0x6f1>
cmpl   $0x1,-0x28(%rbp)
jne    17d2 <main+0x6b2>
movl   $0x1,-0x20(%rbp)
jmp    17e8 <main+0x6c8>
cmpl   $0x0,-0x28(%rbp)
jne    17e3 <main+0x6c3>
movl   $0x0,-0x20(%rbp)
jmp    17e8 <main+0x6c8>
mov    -0x20(%rbp),%esi
lea    0x889(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    -0x24(%rbp),%esi
lea    0x81c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1816 <main+0x6f6>
jmp    181b <main+0x6fb>
jmp    1820 <main+0x700>
jmp    1825 <main+0x705>
jmp    182a <main+0x70a>
mov    $0x7a120,%edi
call   1040 <usleep@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1139 <main+0x19>
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
lea    0xece(%rip),%r15
lea    0xed6(%rip),%r14
lea    0xee6(%rip),%rbx
lea    0xeec(%rip),%r12
lea    0xefa(%rip),%r13
xor    %ebp,%ebp
jmp    11c1 <main+0xa1>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,%eax
and    $0x1,%eax
mov    %ebp,%r9d
shr    %r9d
and    $0x1,%r9d
mov    %ebp,%r8d
shr    $0x2,%r8d
and    $0x1,%r8d
mov    %ebp,%ecx
shr    $0x3,%ecx
and    $0x1,%ecx
mov    %ebp,%edx
shr    $0x4,%edx
and    $0x1,%edx
mov    %eax,(%rsp)
mov    %r14,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x6,%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x7a120,%edi
call   1040 <usleep@plt>
add    $0x1,%ebp
cmp    $0x40,%ebp
je     12b7 <main+0x197>
mov    %r15,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <printf@plt>
cmp    $0x20,%ebp
jae    1160 <main+0x40>
cmp    $0x10,%ebp
jb     1210 <main+0xf0>
mov    %ebp,%r9d
and    $0x1,%r9d
mov    %ebp,%r8d
shr    %r8d
and    $0x1,%r8d
mov    %ebp,%ecx
shr    $0x2,%ecx
and    $0x1,%ecx
mov    %ebp,%edx
shr    $0x3,%edx
and    $0x1,%edx
mov    %ebp,%esi
shr    $0x4,%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x5,%esi
jmp    11a1 <main+0x81>
xchg   %ax,%ax
cmp    $0x8,%ebp
jb     1244 <main+0x124>
mov    %ebp,%r8d
and    $0x1,%r8d
mov    %ebp,%ecx
shr    %ecx
and    $0x1,%ecx
mov    %ebp,%edx
shr    $0x2,%edx
and    $0x1,%edx
mov    %ebp,%esi
shr    $0x3,%esi
mov    %r13,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x4,%esi
jmp    11a1 <main+0x81>
cmp    $0x3,%ebp
jb     1272 <main+0x152>
mov    %ebp,%ecx
and    $0x1,%ecx
mov    %ebp,%edx
shr    %edx
and    $0x1,%edx
mov    %ebp,%esi
shr    $0x2,%esi
lea    0xdfa(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x3,%esi
jmp    11a1 <main+0x81>
cmp    $0x2,%ebp
je     1298 <main+0x178>
mov    %ebp,%esi
cmp    $0x1,%ebp
je     1280 <main+0x160>
xor    %esi,%esi
lea    0xdf4(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1,%esi
jmp    11a1 <main+0x81>
lea    0xdcd(%rip),%rdi
mov    $0x1,%esi
xor    %edx,%edx
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x2,%esi
jmp    11a1 <main+0x81>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [15 x i8] c"Original: %i \0A\00"
@.str.1 = [23 x i8] c"Number: %i%i%i%i%i%i \0A\00"
@.str.2 = [13 x i8] c"Length: %i \0A\00"
@.str.3 = [21 x i8] c"Number: %i%i%i%i%i \0A\00"
@.str.4 = [19 x i8] c"Number: %i%i%i%i \0A\00"
@.str.5 = [17 x i8] c"Number: %i%i%i \0A\00"
@.str.6 = [15 x i8] c"Number: %i%i \0A\00"
@.str.7 = [13 x i8] c"Number: %i \0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [6 x i32]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
br label %45
45: ; preds = %384, %0
%46 = load i32, i32* %4
%47 = icmp slt i32 %46, 64
br i1 %47, label %48, label %387
48: ; preds = %45
%49 = load i32, i32* %4
%50 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i32 %49)
%51 = load i32, i32* %4
%52 = icmp sgt i32 %51, 31
br i1 %52, label %53, label %135
53: ; preds = %48
%54 = load i32, i32* %4
%55 = sdiv i32 %54, 2
store i32 %55, i32* %5
%56 = load i32, i32* %4
%57 = srem i32 %56, 2
store i32 %57, i32* %6
%58 = load i32, i32* %6
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %62
60: ; preds = %53
%61 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 5
store i32 0, i32* %61
br label %64
62: ; preds = %53
%63 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 5
store i32 1, i32* %63
br label %64
64: ; preds = %62, %60
%65 = load i32, i32* %5
%66 = sdiv i32 %65, 2
store i32 %66, i32* %7
%67 = load i32, i32* %5
%68 = srem i32 %67, 2
store i32 %68, i32* %8
%69 = load i32, i32* %8
%70 = icmp eq i32 %69, 0
br i1 %70, label %71, label %73
71: ; preds = %64
%72 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
store i32 0, i32* %72
br label %75
73: ; preds = %64
%74 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
store i32 1, i32* %74
br label %75
75: ; preds = %73, %71
%76 = load i32, i32* %7
%77 = sdiv i32 %76, 2
store i32 %77, i32* %9
%78 = load i32, i32* %7
%79 = srem i32 %78, 2
store i32 %79, i32* %10
%80 = load i32, i32* %10
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %84
82: ; preds = %75
%83 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 0, i32* %83
br label %86
84: ; preds = %75
%85 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 1, i32* %85
br label %86
86: ; preds = %84, %82
%87 = load i32, i32* %9
%88 = sdiv i32 %87, 2
store i32 %88, i32* %11
%89 = load i32, i32* %9
%90 = srem i32 %89, 2
store i32 %90, i32* %12
%91 = load i32, i32* %12
%92 = icmp eq i32 %91, 0
br i1 %92, label %93, label %95
93: ; preds = %86
%94 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 0, i32* %94
br label %97
95: ; preds = %86
%96 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 1, i32* %96
br label %97
97: ; preds = %95, %93
%98 = load i32, i32* %11
%99 = sdiv i32 %98, 2
store i32 %99, i32* %13
%100 = load i32, i32* %11
%101 = srem i32 %100, 2
store i32 %101, i32* %14
%102 = load i32, i32* %14
%103 = icmp eq i32 %102, 0
br i1 %103, label %104, label %106
104: ; preds = %97
%105 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 0, i32* %105
br label %108
106: ; preds = %97
%107 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 1, i32* %107
br label %108
108: ; preds = %106, %104
%109 = load i32, i32* %13
%110 = sdiv i32 %109, 2
store i32 %110, i32* %15
%111 = load i32, i32* %13
%112 = srem i32 %111, 2
store i32 %112, i32* %16
%113 = load i32, i32* %16
%114 = icmp eq i32 %113, 0
br i1 %114, label %115, label %117
115: ; preds = %108
%116 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %116
br label %119
117: ; preds = %108
%118 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %118
br label %119
119: ; preds = %117, %115
%120 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%121 = load i32, i32* %120
%122 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
%123 = load i32, i32* %122
%124 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
%125 = load i32, i32* %124
%126 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
%127 = load i32, i32* %126
%128 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
%129 = load i32, i32* %128
%130 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 5
%131 = load i32, i32* %130
%132 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 %121, i32 %123, i32 %125, i32 %127, i32 %129, i32 %131)
store i32 6, i32* %3
%133 = load i32, i32* %3
%134 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %133)
br label %382
135: ; preds = %48
%136 = load i32, i32* %4
%137 = icmp sgt i32 %136, 15
br i1 %137, label %138, label %210
138: ; preds = %135
%139 = load i32, i32* %4
%140 = icmp slt i32 %139, 32
br i1 %140, label %141, label %210
141: ; preds = %138
%142 = load i32, i32* %4
%143 = sdiv i32 %142, 2
store i32 %143, i32* %17
%144 = load i32, i32* %4
%145 = srem i32 %144, 2
store i32 %145, i32* %18
%146 = load i32, i32* %18
%147 = icmp eq i32 %146, 0
br i1 %147, label %148, label %150
148: ; preds = %141
%149 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
store i32 0, i32* %149
br label %152
150: ; preds = %141
%151 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
store i32 1, i32* %151
br label %152
152: ; preds = %150, %148
%153 = load i32, i32* %17
%154 = sdiv i32 %153, 2
store i32 %154, i32* %19
%155 = load i32, i32* %17
%156 = srem i32 %155, 2
store i32 %156, i32* %20
%157 = load i32, i32* %20
%158 = icmp eq i32 %157, 0
br i1 %158, label %159, label %161
159: ; preds = %152
%160 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 0, i32* %160
br label %163
161: ; preds = %152
%162 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 1, i32* %162
br label %163
163: ; preds = %161, %159
%164 = load i32, i32* %19
%165 = sdiv i32 %164, 2
store i32 %165, i32* %21
%166 = load i32, i32* %19
%167 = srem i32 %166, 2
store i32 %167, i32* %22
%168 = load i32, i32* %22
%169 = icmp eq i32 %168, 0
br i1 %169, label %170, label %172
170: ; preds = %163
%171 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 0, i32* %171
br label %174
172: ; preds = %163
%173 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 1, i32* %173
br label %174
174: ; preds = %172, %170
%175 = load i32, i32* %21
%176 = sdiv i32 %175, 2
store i32 %176, i32* %23
%177 = load i32, i32* %21
%178 = srem i32 %177, 2
store i32 %178, i32* %24
%179 = load i32, i32* %24
%180 = icmp eq i32 %179, 0
br i1 %180, label %181, label %183
181: ; preds = %174
%182 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 0, i32* %182
br label %185
183: ; preds = %174
%184 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 1, i32* %184
br label %185
185: ; preds = %183, %181
%186 = load i32, i32* %23
%187 = sdiv i32 %186, 2
store i32 %187, i32* %25
%188 = load i32, i32* %23
%189 = srem i32 %188, 2
store i32 %189, i32* %26
%190 = load i32, i32* %26
%191 = icmp eq i32 %190, 0
br i1 %191, label %192, label %194
192: ; preds = %185
%193 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %193
br label %196
194: ; preds = %185
%195 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %195
br label %196
196: ; preds = %194, %192
%197 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%198 = load i32, i32* %197
%199 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
%200 = load i32, i32* %199
%201 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
%202 = load i32, i32* %201
%203 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
%204 = load i32, i32* %203
%205 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 4
%206 = load i32, i32* %205
%207 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0), i32 %198, i32 %200, i32 %202, i32 %204, i32 %206)
store i32 5, i32* %3
%208 = load i32, i32* %3
%209 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %208)
br label %381
210: ; preds = %138, %135
%211 = load i32, i32* %4
%212 = icmp sgt i32 %211, 7
br i1 %212, label %213, label %272
213: ; preds = %210
%214 = load i32, i32* %4
%215 = icmp slt i32 %214, 16
br i1 %215, label %216, label %272
216: ; preds = %213
%217 = load i32, i32* %4
%218 = sdiv i32 %217, 2
store i32 %218, i32* %27
%219 = load i32, i32* %4
%220 = srem i32 %219, 2
store i32 %220, i32* %28
%221 = load i32, i32* %28
%222 = icmp eq i32 %221, 0
br i1 %222, label %223, label %225
223: ; preds = %216
%224 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 0, i32* %224
br label %227
225: ; preds = %216
%226 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
store i32 1, i32* %226
br label %227
227: ; preds = %225, %223
%228 = load i32, i32* %27
%229 = sdiv i32 %228, 2
store i32 %229, i32* %29
%230 = load i32, i32* %27
%231 = srem i32 %230, 2
store i32 %231, i32* %30
%232 = load i32, i32* %30
%233 = icmp eq i32 %232, 0
br i1 %233, label %234, label %236
234: ; preds = %227
%235 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 0, i32* %235
br label %238
236: ; preds = %227
%237 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 1, i32* %237
br label %238
238: ; preds = %236, %234
%239 = load i32, i32* %29
%240 = sdiv i32 %239, 2
store i32 %240, i32* %31
%241 = load i32, i32* %29
%242 = srem i32 %241, 2
store i32 %242, i32* %32
%243 = load i32, i32* %32
%244 = icmp eq i32 %243, 0
br i1 %244, label %245, label %247
245: ; preds = %238
%246 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 0, i32* %246
br label %249
247: ; preds = %238
%248 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 1, i32* %248
br label %249
249: ; preds = %247, %245
%250 = load i32, i32* %31
%251 = sdiv i32 %250, 2
store i32 %251, i32* %33
%252 = load i32, i32* %31
%253 = srem i32 %252, 2
store i32 %253, i32* %34
%254 = load i32, i32* %34
%255 = icmp eq i32 %254, 0
br i1 %255, label %256, label %258
256: ; preds = %249
%257 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %257
br label %260
258: ; preds = %249
%259 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %259
br label %260
260: ; preds = %258, %256
%261 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%262 = load i32, i32* %261
%263 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
%264 = load i32, i32* %263
%265 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
%266 = load i32, i32* %265
%267 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 3
%268 = load i32, i32* %267
%269 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i32 %262, i32 %264, i32 %266, i32 %268)
store i32 4, i32* %3
%270 = load i32, i32* %3
%271 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %270)
br label %380
272: ; preds = %213, %210
%273 = load i32, i32* %4
%274 = icmp sgt i32 %273, 2
br i1 %274, label %275, label %321
275: ; preds = %272
%276 = load i32, i32* %4
%277 = icmp slt i32 %276, 8
br i1 %277, label %278, label %321
278: ; preds = %275
%279 = load i32, i32* %4
%280 = sdiv i32 %279, 2
store i32 %280, i32* %35
%281 = load i32, i32* %4
%282 = srem i32 %281, 2
store i32 %282, i32* %36
%283 = load i32, i32* %36
%284 = icmp eq i32 %283, 0
br i1 %284, label %285, label %287
285: ; preds = %278
%286 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 0, i32* %286
br label %289
287: ; preds = %278
%288 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
store i32 1, i32* %288
br label %289
289: ; preds = %287, %285
%290 = load i32, i32* %35
%291 = sdiv i32 %290, 2
store i32 %291, i32* %37
%292 = load i32, i32* %35
%293 = srem i32 %292, 2
store i32 %293, i32* %38
%294 = load i32, i32* %38
%295 = icmp eq i32 %294, 0
br i1 %295, label %296, label %298
296: ; preds = %289
%297 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 0, i32* %297
br label %300
298: ; preds = %289
%299 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 1, i32* %299
br label %300
300: ; preds = %298, %296
%301 = load i32, i32* %37
%302 = sdiv i32 %301, 2
store i32 %302, i32* %39
%303 = load i32, i32* %37
%304 = srem i32 %303, 2
store i32 %304, i32* %40
%305 = load i32, i32* %40
%306 = icmp eq i32 %305, 0
br i1 %306, label %307, label %309
307: ; preds = %300
%308 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %308
br label %311
309: ; preds = %300
%310 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %310
br label %311
311: ; preds = %309, %307
%312 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%313 = load i32, i32* %312
%314 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
%315 = load i32, i32* %314
%316 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 2
%317 = load i32, i32* %316
%318 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0), i32 %313, i32 %315, i32 %317)
store i32 3, i32* %3
%319 = load i32, i32* %3
%320 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %319)
br label %379
321: ; preds = %275, %272
%322 = load i32, i32* %4
%323 = icmp sgt i32 %322, 1
br i1 %323, label %324, label %354
324: ; preds = %321
%325 = load i32, i32* %4
%326 = sdiv i32 %325, 2
store i32 %326, i32* %41
%327 = load i32, i32* %4
%328 = srem i32 %327, 2
store i32 %328, i32* %42
%329 = load i32, i32* %42
%330 = icmp eq i32 %329, 0
br i1 %330, label %331, label %333
331: ; preds = %324
%332 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 0, i32* %332
br label %335
333: ; preds = %324
%334 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
store i32 1, i32* %334
br label %335
335: ; preds = %333, %331
%336 = load i32, i32* %41
%337 = sdiv i32 %336, 2
store i32 %337, i32* %43
%338 = load i32, i32* %41
%339 = srem i32 %338, 2
store i32 %339, i32* %44
%340 = load i32, i32* %44
%341 = icmp eq i32 %340, 0
br i1 %341, label %342, label %344
342: ; preds = %335
%343 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %343
br label %346
344: ; preds = %335
%345 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %345
br label %346
346: ; preds = %344, %342
%347 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%348 = load i32, i32* %347
%349 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 1
%350 = load i32, i32* %349
%351 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), i32 %348, i32 %350)
store i32 2, i32* %3
%352 = load i32, i32* %3
%353 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %352)
br label %378
354: ; preds = %321
%355 = load i32, i32* %4
%356 = icmp slt i32 %355, 2
br i1 %356, label %357, label %377
357: ; preds = %354
%358 = load i32, i32* %4
%359 = icmp sgt i32 %358, -1
br i1 %359, label %360, label %377
360: ; preds = %357
%361 = load i32, i32* %4
%362 = icmp eq i32 %361, 1
br i1 %362, label %363, label %365
363: ; preds = %360
%364 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 1, i32* %364
br label %371
365: ; preds = %360
%366 = load i32, i32* %4
%367 = icmp eq i32 %366, 0
br i1 %367, label %368, label %370
368: ; preds = %365
%369 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
store i32 0, i32* %369
br label %370
370: ; preds = %368, %365
br label %371
371: ; preds = %370, %363
%372 = getelementptr inbounds [6 x i32], [6 x i32]* %2, i64 0, i64 0
%373 = load i32, i32* %372
%374 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i32 %373)
store i32 1, i32* %3
%375 = load i32, i32* %3
%376 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %375)
br label %377
377: ; preds = %371, %357, %354
br label %378
378: ; preds = %377, %346
br label %379
379: ; preds = %378, %311
br label %380
380: ; preds = %379, %260
br label %381
381: ; preds = %380, %196
br label %382
382: ; preds = %381, %119
%383 = call i32 @usleep(i32 500000)
br label %384
384: ; preds = %382
%385 = load i32, i32* %4
%386 = add nsw i32 %385, 1
store i32 %386, i32* %4
br label %45
387: ; preds = %45
%388 = load i32, i32* %1
ret i32 %388
}

LLVM IR (-O2):
@.str = [15 x i8] c"Original: %i \0A\00"
@.str.1 = [23 x i8] c"Number: %i%i%i%i%i%i \0A\00"
@.str.2 = [13 x i8] c"Length: %i \0A\00"
@.str.3 = [21 x i8] c"Number: %i%i%i%i%i \0A\00"
@.str.4 = [19 x i8] c"Number: %i%i%i%i \0A\00"
@.str.5 = [17 x i8] c"Number: %i%i%i \0A\00"
@.str.6 = [15 x i8] c"Number: %i%i \0A\00"
@.str.7 = [13 x i8] c"Number: %i \0A\00"
define i32 @main() {
br label %2
1: ; preds = %54
ret i32 0
2: ; preds = %0, %54
%3 = phi i32 [ 0, %0 ], [ %58, %54 ]
%4 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i32 %3)
%5 = icmp ugt i32 %3, 31
br i1 %5, label %6, label %17
6: ; preds = %2
%7 = and i32 %3, 1
%8 = lshr i32 %3, 1
%9 = and i32 %8, 1
%10 = lshr i32 %3, 2
%11 = and i32 %10, 1
%12 = lshr i32 %3, 3
%13 = and i32 %12, 1
%14 = lshr i32 %3, 4
%15 = and i32 %14, 1
%16 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i32 1, i32 %15, i32 %13, i32 %11, i32 %9, i32 %7)
br label %54
17: ; preds = %2
%18 = icmp ugt i32 %3, 15
br i1 %18, label %19, label %29
19: ; preds = %17
%20 = and i32 %3, 1
%21 = lshr i32 %3, 1
%22 = and i32 %21, 1
%23 = lshr i32 %3, 2
%24 = and i32 %23, 1
%25 = lshr i32 %3, 3
%26 = and i32 %25, 1
%27 = lshr i32 %3, 4
%28 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.3, i64 0, i64 0), i32 %27, i32 %26, i32 %24, i32 %22, i32 %20)
br label %54
29: ; preds = %17
%30 = icmp ugt i32 %3, 7
br i1 %30, label %31, label %39
31: ; preds = %29
%32 = and i32 %3, 1
%33 = lshr i32 %3, 1
%34 = and i32 %33, 1
%35 = lshr i32 %3, 2
%36 = and i32 %35, 1
%37 = lshr i32 %3, 3
%38 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i32 %37, i32 %36, i32 %34, i32 %32)
br label %54
39: ; preds = %29
%40 = icmp ugt i32 %3, 2
br i1 %40, label %41, label %47
41: ; preds = %39
%42 = and i32 %3, 1
%43 = lshr i32 %3, 1
%44 = and i32 %43, 1
%45 = lshr i32 %3, 2
%46 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0), i32 %45, i32 %44, i32 %42)
br label %54
47: ; preds = %39
switch i32 %3, label %50 [
i32 2, label %48
i32 1, label %51
]
48: ; preds = %47
%49 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.6, i64 0, i64 0), i32 1, i32 0)
br label %54
50: ; preds = %47
br label %51
51: ; preds = %47, %50
%52 = phi i32 [ 0, %50 ], [ %3, %47 ]
%53 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i32 %52)
br label %54
54: ; preds = %19, %41, %51, %48, %31, %6
%55 = phi i32 [ 5, %19 ], [ 3, %41 ], [ 1, %51 ], [ 2, %48 ], [ 4, %31 ], [ 6, %6 ]
%56 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i32 %55)
%57 = tail call i32 @usleep(i32 500000)
%58 = add nuw nsw i32 %3, 1
%59 = icmp eq i32 %58, 64
br i1 %59, label %1, label %2
}