#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 /*<<< orphan*/ scanf(char *, int *);
int main(void) {
  int num, numl, n, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, sign;
  printf("\nEnter an integer > ");
  scanf("%d", &num);
  numl = num;
  n = 0;
  if (numl >= 0) {
    sign = 1;
    while (numl > 0) {
      n += 1;
      numl = numl / 10;
    }
  } else {
    sign = 0;
    while (numl < 0) {
      n += 1;
      numl = numl / 10;
    }
  }
  d0 = num % 10;
  num = (num - d0) / 10;
  d1 = num % 10;
  num = (num - d1) / 10;
  d2 = num % 10;
  num = (num - d2) / 10;
  d3 = num % 10;
  num = (num - d3) / 10;
  d4 = num % 10;
  num = (num - d4) / 10;
  d5 = num % 10;
  num = (num - d5) / 10;
  d6 = num % 10;
  num = (num - d6) / 10;
  d7 = num % 10;
  num = (num - d7) / 10;
  d8 = num % 10;
  num = (num - d8) / 10;
  d9 = num % 10;
  num = (num - d9) / 10;
  if (sign == 1) {
    printf("\n%d\n", d0);
    if (n > 1)
      printf("%d\n", d1);
    if (n > 2)
      printf("%d\n", d2);
    if (n > 3)
      printf("%d\n", d3);
    if (n > 4)
      printf("%d\n", d4);
    if (n > 5)
      printf("%d\n", d5);
    if (n > 6)
      printf("%d\n", d6);
    if (n > 7)
      printf("%d\n", d7);
    if (n > 8)
      printf("%d\n", d8);
    if (n > 9)
      printf("%d\n", d9);
  } else {
    if (n > 9) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
      d4 = d4 * -1;
      d5 = d5 * -1;
      d6 = d6 * -1;
      d7 = d7 * -1;
      d8 = d8 * -1;
    } else if (n == 9) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
      d4 = d4 * -1;
      d5 = d5 * -1;
      d6 = d6 * -1;
      d7 = d7 * -1;
    } else if (n == 8) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
      d4 = d4 * -1;
      d5 = d5 * -1;
      d6 = d6 * -1;
    } else if (n == 7) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
      d4 = d4 * -1;
      d5 = d5 * -1;
    } else if (n == 6) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
      d4 = d4 * -1;
    } else if (n == 5) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
      d3 = d3 * -1;
    } else if (n == 4) {
      d0 = d0 * -1;
      d1 = d1 * -1;
      d2 = d2 * -1;
    } else if (n == 3) {
      d0 = d0 * -1;
      d1 = d1 * -1;
    } else if (n == 2) {
      d0 = d0 * -1;
    }
    printf("\n%d\n", d0);
    if (n > 1)
      printf("%d\n", d1);
    if (n > 2)
      printf("%d\n", d2);
    if (n > 3)
      printf("%d\n", d3);
    if (n > 4)
      printf("%d\n", d4);
    if (n > 5)
      printf("%d\n", d5);
    if (n > 6)
      printf("%d\n", d6);
    if (n > 7)
      printf("%d\n", d7);
    if (n > 8)
      printf("%d\n", d8);
    if (n > 9)
      printf("%d\n", d9);
  }
  printf("That's all, have a nice day!\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeca(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xed1(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x0,-0xc(%rbp)
jl     1196 <main+0x76>
movl   $0x1,-0x3c(%rbp)
cmpl   $0x0,-0xc(%rbp)
jle    1191 <main+0x71>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0xc(%rbp)
jmp    116b <main+0x4b>
jmp    11c8 <main+0xa8>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x0,-0xc(%rbp)
jge    11c3 <main+0xa3>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0xc(%rbp)
jmp    119d <main+0x7d>
jmp    11c8 <main+0xa8>
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x14(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x20(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x24(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x28(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x2c(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x30(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x34(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x38(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x8(%rbp)
cmpl   $0x1,-0x3c(%rbp)
jne    1411 <main+0x2f1>
mov    -0x14(%rbp),%esi
lea    0xd06(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x1,-0x10(%rbp)
jle    1334 <main+0x214>
mov    -0x18(%rbp),%esi
lea    0xcec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x2,-0x10(%rbp)
jle    134f <main+0x22f>
mov    -0x1c(%rbp),%esi
lea    0xcd1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x3,-0x10(%rbp)
jle    136a <main+0x24a>
mov    -0x20(%rbp),%esi
lea    0xcb6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x10(%rbp)
jle    1385 <main+0x265>
mov    -0x24(%rbp),%esi
lea    0xc9b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x5,-0x10(%rbp)
jle    13a0 <main+0x280>
mov    -0x28(%rbp),%esi
lea    0xc80(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x6,-0x10(%rbp)
jle    13bb <main+0x29b>
mov    -0x2c(%rbp),%esi
lea    0xc65(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x7,-0x10(%rbp)
jle    13d6 <main+0x2b6>
mov    -0x30(%rbp),%esi
lea    0xc4a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x8,-0x10(%rbp)
jle    13f1 <main+0x2d1>
mov    -0x34(%rbp),%esi
lea    0xc2f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x9,-0x10(%rbp)
jle    140c <main+0x2ec>
mov    -0x38(%rbp),%esi
lea    0xc14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16ff <main+0x5df>
cmpl   $0x9,-0x10(%rbp)
jle    145f <main+0x33f>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffffff,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0xffffffff,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
imul   $0xffffffff,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
imul   $0xffffffff,-0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
imul   $0xffffffff,-0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    15f6 <main+0x4d6>
cmpl   $0x9,-0x10(%rbp)
jne    14a6 <main+0x386>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffffff,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0xffffffff,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
imul   $0xffffffff,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
imul   $0xffffffff,-0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    15f1 <main+0x4d1>
cmpl   $0x8,-0x10(%rbp)
jne    14e6 <main+0x3c6>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffffff,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0xffffffff,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
imul   $0xffffffff,-0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    15ec <main+0x4cc>
cmpl   $0x7,-0x10(%rbp)
jne    151f <main+0x3ff>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffffff,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0xffffffff,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    15e7 <main+0x4c7>
cmpl   $0x6,-0x10(%rbp)
jne    1551 <main+0x431>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffffff,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    15e2 <main+0x4c2>
cmpl   $0x5,-0x10(%rbp)
jne    157c <main+0x45c>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0xffffffff,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    15dd <main+0x4bd>
cmpl   $0x4,-0x10(%rbp)
jne    15a0 <main+0x480>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xffffffff,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    15d8 <main+0x4b8>
cmpl   $0x3,-0x10(%rbp)
jne    15bd <main+0x49d>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
imul   $0xffffffff,-0x18(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    15d3 <main+0x4b3>
cmpl   $0x2,-0x10(%rbp)
jne    15ce <main+0x4ae>
imul   $0xffffffff,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    15d3 <main+0x4b3>
jmp    15d8 <main+0x4b8>
jmp    15dd <main+0x4bd>
jmp    15e2 <main+0x4c2>
jmp    15e7 <main+0x4c7>
jmp    15ec <main+0x4cc>
jmp    15f1 <main+0x4d1>
jmp    15f6 <main+0x4d6>
mov    -0x14(%rbp),%esi
lea    0xa18(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x1,-0x10(%rbp)
jle    1622 <main+0x502>
mov    -0x18(%rbp),%esi
lea    0x9fe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x2,-0x10(%rbp)
jle    163d <main+0x51d>
mov    -0x1c(%rbp),%esi
lea    0x9e3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x3,-0x10(%rbp)
jle    1658 <main+0x538>
mov    -0x20(%rbp),%esi
lea    0x9c8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x10(%rbp)
jle    1673 <main+0x553>
mov    -0x24(%rbp),%esi
lea    0x9ad(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x5,-0x10(%rbp)
jle    168e <main+0x56e>
mov    -0x28(%rbp),%esi
lea    0x992(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x6,-0x10(%rbp)
jle    16a9 <main+0x589>
mov    -0x2c(%rbp),%esi
lea    0x977(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x7,-0x10(%rbp)
jle    16c4 <main+0x5a4>
mov    -0x30(%rbp),%esi
lea    0x95c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x8,-0x10(%rbp)
jle    16df <main+0x5bf>
mov    -0x34(%rbp),%esi
lea    0x941(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x9,-0x10(%rbp)
jle    16fa <main+0x5da>
mov    -0x38(%rbp),%esi
lea    0x926(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16ff <main+0x5df>
lea    0x917(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
lea    0xedb(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xee0(%rip),%rdi
lea    0x14(%rsp),%rsi
call   1050 <scanf@plt>
mov    0x14(%rsp),%r8d
test   %r8d,%r8d
js     1196 <main+0x66>
je     11bb <main+0x8b>
xor    %ebp,%ebp
mov    $0xcccccccd,%eax
mov    %r8d,%ecx
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%ebp
mov    %ecx,%edx
imul   %rax,%rdx
shr    $0x23,%rdx
cmp    $0xa,%ecx
mov    %edx,%ecx
jae    1180 <main+0x50>
jmp    11bd <main+0x8d>
mov    $0xcccccccd,%eax
mov    %r8d,%ecx
xchg   %ax,%ax
add    $0x1,%ebp
neg    %ecx
mov    %rcx,%rdx
imul   %rax,%rdx
shr    $0x23,%rdx
neg    %edx
cmp    $0x9,%ecx
mov    %edx,%ecx
ja     11a0 <main+0x70>
jmp    11bd <main+0x8d>
xor    %ebp,%ebp
movslq %r8d,%r9
imul   $0x66666667,%r9,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
lea    (%rax,%rax,1),%edx
lea    (%rdx,%rdx,4),%edx
mov    %r8d,%esi
sub    %edx,%esi
movslq %eax,%r14
imul   $0x66666667,%r14,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%r14d
imul   $0x51eb851f,%r9,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rax
add    %edx,%eax
movslq %eax,%r15
imul   $0x66666667,%r15,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%r15d
imul   $0x10624dd3,%r9,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x26,%rax
add    %edx,%eax
movslq %eax,%r12
imul   $0x66666667,%r12,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%r12d
imul   $0x68db8bad,%r9,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x2c,%rax
add    %edx,%eax
movslq %eax,%r11
imul   $0x66666667,%r11,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%r11d
imul   $0x14f8b589,%r9,%r10
mov    %r10,%rax
shr    $0x3f,%rax
sar    $0x2d,%r10
add    %eax,%r10d
movswl %r10w,%eax
imul   $0x6667,%eax,%eax
mov    %eax,%edi
shr    $0x1f,%edi
sar    $0x12,%eax
add    %edi,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%r10d
imul   $0x431bde83,%r9,%rdi
mov    %rdi,%rax
shr    $0x3f,%rax
sar    $0x32,%rdi
add    %eax,%edi
imul   $0x6667,%edi,%eax
mov    %eax,%ebx
shr    $0x1f,%ebx
sar    $0x12,%eax
add    %ebx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%edi
imul   $0x6b5fca6b,%r9,%rbx
mov    %rbx,%rax
shr    $0x3f,%rax
sar    $0x36,%rbx
add    %eax,%ebx
imul   $0x6667,%ebx,%eax
mov    %eax,%ecx
shr    $0x1f,%ecx
sar    $0x12,%eax
add    %ecx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%ebx
imul   $0x55e63b89,%r9,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x39,%rax
add    %ecx,%eax
imul   $0x67,%eax,%ecx
movzwl %cx,%edx
shr    $0xa,%ecx
shr    $0xf,%edx
add    %cl,%dl
movzbl %dl,%ecx
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%al
imul   $0x44b82fa1,%r9,%r13
mov    %r13,%rcx
shr    $0x3f,%rcx
sar    $0x3c,%r13
add    %ecx,%r13d
movswl %r10w,%edx
movswl %di,%edi
movswl %bx,%ebx
movsbl %al,%ecx
movl   $0x0,0x14(%rsp)
test   %r8d,%r8d
js     1464 <main+0x334>
mov    %edx,0x10(%rsp)
mov    %edi,0xc(%rsp)
mov    %ebx,0x8(%rsp)
mov    %ecx,0x4(%rsp)
mov    %r11,%rbx
lea    0xca1(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%ebp
jb     1570 <main+0x440>
lea    0xc8b(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%ebp
je     1570 <main+0x440>
lea    0xc71(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x4,%ebp
jb     1570 <main+0x440>
lea    0xc57(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x4,%ebp
je     1570 <main+0x440>
lea    0xc3d(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x6,%ebp
jb     1570 <main+0x440>
lea    0xc24(%rip),%rdi
mov    0x10(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x6,%ebp
je     1570 <main+0x440>
lea    0xc09(%rip),%rdi
mov    0xc(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x8,%ebp
jb     1570 <main+0x440>
lea    0xbee(%rip),%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x8,%ebp
jne    1548 <main+0x418>
jmp    1570 <main+0x440>
cmp    $0xa,%ebp
jb     158d <main+0x45d>
neg    %r14d
neg    %r15d
neg    %r12d
neg    %r11d
neg    %edx
neg    %edi
neg    %ebx
neg    %ecx
mov    %ecx,0x4(%rsp)
mov    %edx,0x10(%rsp)
mov    %edi,0xc(%rsp)
mov    %ebx,0x8(%rsp)
mov    %r11,%rbx
neg    %esi
lea    0xb9b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xb8e(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x3,%ebp
jb     155a <main+0x42a>
lea    0xb74(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x3,%ebp
je     155a <main+0x42a>
lea    0xb5a(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x5,%ebp
jb     155a <main+0x42a>
lea    0xb44(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x5,%ebp
je     155a <main+0x42a>
lea    0xb2f(%rip),%rdi
mov    0x10(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x7,%ebp
jb     155a <main+0x42a>
lea    0xb18(%rip),%rdi
mov    0xc(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x7,%ebp
je     155a <main+0x42a>
lea    0xb01(%rip),%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x9,%ebp
jb     155a <main+0x42a>
lea    0xaea(%rip),%rdi
mov    0x4(%rsp),%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0xa,%ebp
jb     1570 <main+0x440>
lea    0xad3(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xac6(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    -0x2(%rbp),%eax
cmp    $0x7,%eax
ja     15b1 <main+0x481>
mov    %ecx,0x4(%rsp)
lea    0xa60(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
neg    %r14d
jmp    1485 <main+0x355>
lea    0xa80(%rip),%rdi
jmp    1569 <main+0x439>
neg    %r14d
neg    %r15d
jmp    1485 <main+0x355>
neg    %r14d
neg    %r15d
neg    %r12d
jmp    1485 <main+0x355>
neg    %r14d
neg    %r15d
neg    %r12d
neg    %r11d
jmp    1485 <main+0x355>
neg    %r14d
neg    %r15d
neg    %r12d
neg    %r11d
neg    %edx
jmp    1485 <main+0x355>
neg    %r14d
neg    %r15d
neg    %r12d
neg    %r11d
neg    %edx
neg    %edi
jmp    1485 <main+0x355>
neg    %r14d
neg    %r15d
neg    %r12d
neg    %r11d
neg    %edx
neg    %edi
neg    %ebx
jmp    1485 <main+0x355>

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

LLVM IR (-O2):
@.str = [21 x i8] c"\0AEnter an integer > \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [5 x i8] c"\0A%d\0A\00"
@.str.3 = [4 x i8] c"%d\0A\00"
@str = [29 x i8] c"That's all, have a nice day!\00"
define i32 @main() {
%1 = alloca i32
%2 = bitcast i32* %1 to i8*
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0))
%4 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %1)
%5 = load i32, i32* %1
%6 = icmp sgt i32 %5, -1
br i1 %6, label %7, label %15
7: ; preds = %0
%8 = icmp eq i32 %5, 0
br i1 %8, label %23, label %9
9: ; preds = %7, %9
%10 = phi i32 [ %13, %9 ], [ %5, %7 ]
%11 = phi i32 [ %12, %9 ], [ 0, %7 ]
%12 = add nuw nsw i32 %11, 1
%13 = udiv i32 %10, 10
%14 = icmp ult i32 %10, 10
br i1 %14, label %23, label %9
15: ; preds = %0, %15
%16 = phi i32 [ %21, %15 ], [ %5, %0 ]
%17 = phi i32 [ %18, %15 ], [ 0, %0 ]
%18 = add nuw nsw i32 %17, 1
%19 = sub i32 0, %16
%20 = udiv i32 %19, 10
%21 = sub nsw i32 0, %20
%22 = icmp ult i32 %19, 10
br i1 %22, label %23, label %15
23: ; preds = %15, %9, %7
%24 = phi i32 [ 0, %7 ], [ %12, %9 ], [ %18, %15 ]
%25 = srem i32 %5, 10
%26 = sdiv i32 %5, 10
%27 = srem i32 %26, 10
%28 = sdiv i32 %5, 100
%29 = srem i32 %28, 10
%30 = sdiv i32 %5, 1000
%31 = srem i32 %30, 10
%32 = sdiv i32 %5, 10000
%33 = srem i32 %32, 10
%34 = sdiv i32 %5, 100000
%35 = trunc i32 %34 to i16
%36 = srem i16 %35, 10
%37 = sext i16 %36 to i32
%38 = sdiv i32 %5, 1000000
%39 = trunc i32 %38 to i16
%40 = srem i16 %39, 10
%41 = sext i16 %40 to i32
%42 = sdiv i32 %5, 10000000
%43 = trunc i32 %42 to i16
%44 = srem i16 %43, 10
%45 = sext i16 %44 to i32
%46 = sdiv i32 %5, 100000000
%47 = trunc i32 %46 to i8
%48 = srem i8 %47, 10
%49 = sext i8 %48 to i32
%50 = sdiv i32 %5, 1000000000
store i32 0, i32* %1
br i1 %6, label %51, label %80
51: ; preds = %23
%52 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %25)
%53 = icmp ugt i32 %24, 1
br i1 %53, label %54, label %165
54: ; preds = %51
%55 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %27)
%56 = icmp eq i32 %24, 2
br i1 %56, label %165, label %57
57: ; preds = %54
%58 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %29)
%59 = icmp ugt i32 %24, 3
br i1 %59, label %60, label %165
60: ; preds = %57
%61 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %31)
%62 = icmp eq i32 %24, 4
br i1 %62, label %165, label %63
63: ; preds = %60
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %33)
%65 = icmp ugt i32 %24, 5
br i1 %65, label %66, label %165
66: ; preds = %63
%67 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %37)
%68 = icmp eq i32 %24, 6
br i1 %68, label %165, label %69
69: ; preds = %66
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %41)
%71 = icmp ugt i32 %24, 7
br i1 %71, label %72, label %165
72: ; preds = %69
%73 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %45)
%74 = icmp eq i32 %24, 8
br i1 %74, label %165, label %75
75: ; preds = %72
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %49)
%77 = icmp ugt i32 %24, 9
br i1 %77, label %78, label %165
78: ; preds = %75
%79 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %50)
br label %165
80: ; preds = %23
%81 = icmp ugt i32 %24, 9
br i1 %81, label %82, label %91
82: ; preds = %80
%83 = sub nsw i32 0, %27
%84 = sub nsw i32 0, %29
%85 = sub nsw i32 0, %31
%86 = sub nsw i32 0, %33
%87 = sub nsw i32 0, %37
%88 = sub nsw i32 0, %41
%89 = sub nsw i32 0, %45
%90 = sub nsw i32 0, %49
br label %129
91: ; preds = %80
switch i32 %24, label %127 [
i32 9, label %92
i32 8, label %100
i32 7, label %107
i32 6, label %113
i32 5, label %118
i32 4, label %122
i32 3, label %125
i32 2, label %129
]
92: ; preds = %91
%93 = sub nsw i32 0, %27
%94 = sub nsw i32 0, %29
%95 = sub nsw i32 0, %31
%96 = sub nsw i32 0, %33
%97 = sub nsw i32 0, %37
%98 = sub nsw i32 0, %41
%99 = sub nsw i32 0, %45
br label %129
100: ; preds = %91
%101 = sub nsw i32 0, %27
%102 = sub nsw i32 0, %29
%103 = sub nsw i32 0, %31
%104 = sub nsw i32 0, %33
%105 = sub nsw i32 0, %37
%106 = sub nsw i32 0, %41
br label %129
107: ; preds = %91
%108 = sub nsw i32 0, %27
%109 = sub nsw i32 0, %29
%110 = sub nsw i32 0, %31
%111 = sub nsw i32 0, %33
%112 = sub nsw i32 0, %37
br label %129
113: ; preds = %91
%114 = sub nsw i32 0, %27
%115 = sub nsw i32 0, %29
%116 = sub nsw i32 0, %31
%117 = sub nsw i32 0, %33
br label %129
118: ; preds = %91
%119 = sub nsw i32 0, %27
%120 = sub nsw i32 0, %29
%121 = sub nsw i32 0, %31
br label %129
122: ; preds = %91
%123 = sub nsw i32 0, %27
%124 = sub nsw i32 0, %29
br label %129
125: ; preds = %91
%126 = sub nsw i32 0, %27
br label %129
127: ; preds = %91
%128 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %25)
br label %165
129: ; preds = %91, %82, %100, %113, %122, %125, %118, %107, %92
%130 = phi i32 [ %126, %125 ], [ %123, %122 ], [ %119, %118 ], [ %114, %113 ], [ %108, %107 ], [ %101, %100 ], [ %93, %92 ], [ %83, %82 ], [ %27, %91 ]
%131 = phi i32 [ %29, %125 ], [ %124, %122 ], [ %120, %118 ], [ %115, %113 ], [ %109, %107 ], [ %102, %100 ], [ %94, %92 ], [ %84, %82 ], [ %29, %91 ]
%132 = phi i32 [ %31, %125 ], [ %31, %122 ], [ %121, %118 ], [ %116, %113 ], [ %110, %107 ], [ %103, %100 ], [ %95, %92 ], [ %85, %82 ], [ %31, %91 ]
%133 = phi i32 [ %33, %125 ], [ %33, %122 ], [ %33, %118 ], [ %117, %113 ], [ %111, %107 ], [ %104, %100 ], [ %96, %92 ], [ %86, %82 ], [ %33, %91 ]
%134 = phi i32 [ %37, %125 ], [ %37, %122 ], [ %37, %118 ], [ %37, %113 ], [ %112, %107 ], [ %105, %100 ], [ %97, %92 ], [ %87, %82 ], [ %37, %91 ]
%135 = phi i32 [ %41, %125 ], [ %41, %122 ], [ %41, %118 ], [ %41, %113 ], [ %41, %107 ], [ %106, %100 ], [ %98, %92 ], [ %88, %82 ], [ %41, %91 ]
%136 = phi i32 [ %45, %125 ], [ %45, %122 ], [ %45, %118 ], [ %45, %113 ], [ %45, %107 ], [ %45, %100 ], [ %99, %92 ], [ %89, %82 ], [ %45, %91 ]
%137 = phi i32 [ %49, %125 ], [ %49, %122 ], [ %49, %118 ], [ %49, %113 ], [ %49, %107 ], [ %49, %100 ], [ %49, %92 ], [ %90, %82 ], [ %49, %91 ]
%138 = sub nsw i32 0, %25
%139 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %138)
%140 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %130)
%141 = icmp ugt i32 %24, 2
br i1 %141, label %142, label %162
142: ; preds = %129
%143 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %131)
%144 = icmp eq i32 %24, 3
br i1 %144, label %162, label %145
145: ; preds = %142
%146 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %132)
%147 = icmp ugt i32 %24, 4
br i1 %147, label %148, label %162
148: ; preds = %145
%149 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %133)
%150 = icmp eq i32 %24, 5
br i1 %150, label %162, label %151
151: ; preds = %148
%152 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %134)
%153 = icmp ugt i32 %24, 6
br i1 %153, label %154, label %162
154: ; preds = %151
%155 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %135)
%156 = icmp eq i32 %24, 7
br i1 %156, label %162, label %157
157: ; preds = %154
%158 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %136)
%159 = icmp ugt i32 %24, 8
br i1 %159, label %160, label %162
160: ; preds = %157
%161 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %137)
br label %162
162: ; preds = %129, %142, %145, %148, %151, %154, %160, %157
br i1 %81, label %163, label %165
163: ; preds = %162
%164 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 %50)
br label %165
165: ; preds = %127, %51, %54, %57, %60, %63, %66, %69, %72, %162, %163, %75, %78
%166 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str, i64 0, i64 0))
ret i32 0
}