int main() {
  int n;
  char arr[100];
  arr[1] = "edno";
  arr[2] = "dve";
  arr[3] = "tri";
  arr[4] = "chetiri";
  arr[5] = "pet";
  arr[6] = "shest";
  arr[7] = "sedem";
  arr[8] = "osem";
  arr[9] = "devet";
  arr[20] = "dvadeset";
  arr[30] = "trideset";
  arr[40] = "chetirideset";
  arr[50] = "petdeset";
  arr[60] = "shestdeset";
  arr[70] = "sedemdeset";
  arr[80] = "osemdeset";
  arr[90] = "devetdeset";
  scanf("%d", n);
  switch (n) {
  case 10:
    printf("deset");
  case 11:
    printf("edinadeset");
  case 12:
    printf("dvanadeset");
  case 13:
    printf("trinadeset");
  case 14:
    printf("chetirinadeset");
  case 15:
    printf("petnadeset");
  case 16:
    printf("shestnadeset");
  case 17:
    printf("sedemnadeset");
  case 18:
    printf("osemnadeset");
  case 19:
    printf("devetnadeset");
  }
  if (n > 0 & n < 99) {
    if (n > 20 & n < 30) {
      printf("%c i %c", arr[20], arr[n % 10]);
    } else {
      if (n > 30 & n < 40) {
        printf("%c i %c", arr[30], arr[n % 10]);
      } else {
        if (n > 40 & n < 50) {
          printf("%c i %c", arr[40], arr[n % 10]);
        } else {
          if (n > 50 & n < 60) {
            printf("%c i %c", arr[50], arr[n % 10]);
          } else {
            if (n > 60 & n < 70) {
              printf("%c i %c", arr[60], arr[n % 10]);
            } else {
              if (n > 70 & n < 80) {
                printf("%c i %c", arr[70], arr[n % 10]);
              } else {
                if (n > 80 & n < 90) {
                  printf("%c i %c", arr[80], arr[n % 10]);
                } else {
                  if (n > 90 & n < 99) {
                    printf("%c i %c", arr[90], arr[n % 10]);
                  } else {
                    printf("%c", arr[n % 10]);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeef(%rip),%rax
mov    %al,-0x6f(%rbp)
lea    0xeea(%rip),%rax
mov    %al,-0x6e(%rbp)
lea    0xee4(%rip),%rax
mov    %al,-0x6d(%rbp)
lea    0xede(%rip),%rax
mov    %al,-0x6c(%rbp)
lea    0xedc(%rip),%rax
mov    %al,-0x6b(%rbp)
lea    0xed6(%rip),%rax
mov    %al,-0x6a(%rbp)
lea    0xed2(%rip),%rax
mov    %al,-0x69(%rbp)
lea    0xece(%rip),%rax
mov    %al,-0x68(%rbp)
lea    0xec9(%rip),%rax
mov    %al,-0x67(%rbp)
lea    0xec5(%rip),%rax
mov    %al,-0x5c(%rbp)
lea    0xec4(%rip),%rax
mov    %al,-0x52(%rbp)
lea    0xec3(%rip),%rax
mov    %al,-0x48(%rbp)
lea    0xec6(%rip),%rax
mov    %al,-0x3e(%rbp)
lea    0xec5(%rip),%rax
mov    %al,-0x34(%rbp)
lea    0xec6(%rip),%rax
mov    %al,-0x2a(%rbp)
lea    0xec7(%rip),%rax
mov    %al,-0x20(%rbp)
lea    0xec7(%rip),%rax
mov    %al,-0x16(%rbp)
mov    -0x8(%rbp),%esi
lea    0xec5(%rip),%rdi
xor    %eax,%eax
call   1040 <scanf@plt>
mov    -0x8(%rbp),%eax
add    $0xfffffff6,%eax
mov    %eax,%ecx
mov    %rcx,-0x78(%rbp)
sub    $0x9,%eax
ja     12a2 <main+0x182>
mov    -0x78(%rbp),%rax
lea    0xdf3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xea1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe83(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe80(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe77(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe76(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x0,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x63,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     157f <main+0x45f>
cmpl   $0x14,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x1e,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1314 <main+0x1f4>
movsbl -0x5c(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xe14(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    157a <main+0x45a>
cmpl   $0x1e,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x28,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1362 <main+0x242>
movsbl -0x52(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xdc6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1575 <main+0x455>
cmpl   $0x28,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x32,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13b0 <main+0x290>
movsbl -0x48(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xd78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1570 <main+0x450>
cmpl   $0x32,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x3c,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13fe <main+0x2de>
movsbl -0x3e(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xd2a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    156b <main+0x44b>
cmpl   $0x3c,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x46,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     144c <main+0x32c>
movsbl -0x34(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xcdc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1566 <main+0x446>
cmpl   $0x46,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x50,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     149a <main+0x37a>
movsbl -0x2a(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xc8e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1561 <main+0x441>
cmpl   $0x50,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x5a,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14e8 <main+0x3c8>
movsbl -0x20(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xc40(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    155c <main+0x43c>
cmpl   $0x5a,-0x8(%rbp)
setg   %al
and    $0x1,%al
movzbl %al,%eax
cmpl   $0x63,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1536 <main+0x416>
movsbl -0x16(%rbp),%esi
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%edx
lea    0xbf2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1557 <main+0x437>
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq %edx,%rax
movsbl -0x70(%rbp,%rax,1),%esi
lea    0xbd1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    155c <main+0x43c>
jmp    1561 <main+0x441>
jmp    1566 <main+0x446>
jmp    156b <main+0x44b>
jmp    1570 <main+0x450>
jmp    1575 <main+0x455>
jmp    157a <main+0x45a>
jmp    157f <main+0x45f>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0xed8(%rip),%rdi
xor    %eax,%eax
call   1040 <scanf@plt>
lea    0xedd(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xebf(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xebc(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb9(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb6(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb7(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb4(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb3(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb2(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xeb0(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [5 x i8] c"edno\00"
@.str.1 = [4 x i8] c"dve\00"
@.str.2 = [4 x i8] c"tri\00"
@.str.3 = [8 x i8] c"chetiri\00"
@.str.4 = [4 x i8] c"pet\00"
@.str.5 = [6 x i8] c"shest\00"
@.str.6 = [6 x i8] c"sedem\00"
@.str.7 = [5 x i8] c"osem\00"
@.str.8 = [6 x i8] c"devet\00"
@.str.9 = [9 x i8] c"dvadeset\00"
@.str.10 = [9 x i8] c"trideset\00"
@.str.11 = [13 x i8] c"chetirideset\00"
@.str.12 = [9 x i8] c"petdeset\00"
@.str.13 = [11 x i8] c"shestdeset\00"
@.str.14 = [11 x i8] c"sedemdeset\00"
@.str.15 = [10 x i8] c"osemdeset\00"
@.str.16 = [11 x i8] c"devetdeset\00"
@.str.17 = [3 x i8] c"%d\00"
@.str.18 = [6 x i8] c"deset\00"
@.str.19 = [11 x i8] c"edinadeset\00"
@.str.20 = [11 x i8] c"dvanadeset\00"
@.str.21 = [11 x i8] c"trinadeset\00"
@.str.22 = [15 x i8] c"chetirinadeset\00"
@.str.23 = [11 x i8] c"petnadeset\00"
@.str.24 = [13 x i8] c"shestnadeset\00"
@.str.25 = [13 x i8] c"sedemnadeset\00"
@.str.26 = [12 x i8] c"osemnadeset\00"
@.str.27 = [13 x i8] c"devetnadeset\00"
@.str.28 = [8 x i8] c"%c i %c\00"
@.str.29 = [3 x i8] c"%c\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [100 x i8]
store i32 0, i32* %1
%4 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 1
store i8 ptrtoint ([5 x i8]* @.str to i8), i8* %4
%5 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 2
store i8 ptrtoint ([4 x i8]* @.str.1 to i8), i8* %5
%6 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 3
store i8 ptrtoint ([4 x i8]* @.str.2 to i8), i8* %6
%7 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 4
store i8 ptrtoint ([8 x i8]* @.str.3 to i8), i8* %7
%8 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 5
store i8 ptrtoint ([4 x i8]* @.str.4 to i8), i8* %8
%9 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 6
store i8 ptrtoint ([6 x i8]* @.str.5 to i8), i8* %9
%10 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 7
store i8 ptrtoint ([6 x i8]* @.str.6 to i8), i8* %10
%11 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 8
store i8 ptrtoint ([5 x i8]* @.str.7 to i8), i8* %11
%12 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 9
store i8 ptrtoint ([6 x i8]* @.str.8 to i8), i8* %12
%13 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 20
store i8 ptrtoint ([9 x i8]* @.str.9 to i8), i8* %13
%14 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 30
store i8 ptrtoint ([9 x i8]* @.str.10 to i8), i8* %14
%15 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 40
store i8 ptrtoint ([13 x i8]* @.str.11 to i8), i8* %15
%16 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 50
store i8 ptrtoint ([9 x i8]* @.str.12 to i8), i8* %16
%17 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 60
store i8 ptrtoint ([11 x i8]* @.str.13 to i8), i8* %17
%18 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 70
store i8 ptrtoint ([11 x i8]* @.str.14 to i8), i8* %18
%19 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 80
store i8 ptrtoint ([10 x i8]* @.str.15 to i8), i8* %19
%20 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 90
store i8 ptrtoint ([11 x i8]* @.str.16 to i8), i8* %20
%21 = load i32, i32* %2
%22 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i32 %21)
%23 = load i32, i32* %2
switch i32 %23, label %44 [
i32 10, label %24
i32 11, label %26
i32 12, label %28
i32 13, label %30
i32 14, label %32
i32 15, label %34
i32 16, label %36
i32 17, label %38
i32 18, label %40
i32 19, label %42
]
24: ; preds = %0
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
br label %26
26: ; preds = %0, %24
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0))
br label %28
28: ; preds = %0, %26
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.20, i64 0, i64 0))
br label %30
30: ; preds = %0, %28
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.21, i64 0, i64 0))
br label %32
32: ; preds = %0, %30
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0))
br label %34
34: ; preds = %0, %32
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0))
br label %36
36: ; preds = %0, %34
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0))
br label %38
38: ; preds = %0, %36
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0))
br label %40
40: ; preds = %0, %38
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0))
br label %42
42: ; preds = %0, %40
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0))
br label %44
44: ; preds = %42, %0
%45 = load i32, i32* %2
%46 = icmp sgt i32 %45, 0
%47 = zext i1 %46 to i32
%48 = load i32, i32* %2
%49 = icmp slt i32 %48, 99
%50 = zext i1 %49 to i32
%51 = and i32 %47, %50
%52 = icmp ne i32 %51, 0
br i1 %52, label %53, label %229
53: ; preds = %44
%54 = load i32, i32* %2
%55 = icmp sgt i32 %54, 20
%56 = zext i1 %55 to i32
%57 = load i32, i32* %2
%58 = icmp slt i32 %57, 30
%59 = zext i1 %58 to i32
%60 = and i32 %56, %59
%61 = icmp ne i32 %60, 0
br i1 %61, label %62, label %73
62: ; preds = %53
%63 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 20
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = load i32, i32* %2
%67 = srem i32 %66, 10
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %68
%70 = load i8, i8* %69
%71 = sext i8 %70 to i32
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %65, i32 %71)
br label %228
73: ; preds = %53
%74 = load i32, i32* %2
%75 = icmp sgt i32 %74, 30
%76 = zext i1 %75 to i32
%77 = load i32, i32* %2
%78 = icmp slt i32 %77, 40
%79 = zext i1 %78 to i32
%80 = and i32 %76, %79
%81 = icmp ne i32 %80, 0
br i1 %81, label %82, label %93
82: ; preds = %73
%83 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 30
%84 = load i8, i8* %83
%85 = sext i8 %84 to i32
%86 = load i32, i32* %2
%87 = srem i32 %86, 10
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %88
%90 = load i8, i8* %89
%91 = sext i8 %90 to i32
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %85, i32 %91)
br label %227
93: ; preds = %73
%94 = load i32, i32* %2
%95 = icmp sgt i32 %94, 40
%96 = zext i1 %95 to i32
%97 = load i32, i32* %2
%98 = icmp slt i32 %97, 50
%99 = zext i1 %98 to i32
%100 = and i32 %96, %99
%101 = icmp ne i32 %100, 0
br i1 %101, label %102, label %113
102: ; preds = %93
%103 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 40
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = load i32, i32* %2
%107 = srem i32 %106, 10
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %108
%110 = load i8, i8* %109
%111 = sext i8 %110 to i32
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %105, i32 %111)
br label %226
113: ; preds = %93
%114 = load i32, i32* %2
%115 = icmp sgt i32 %114, 50
%116 = zext i1 %115 to i32
%117 = load i32, i32* %2
%118 = icmp slt i32 %117, 60
%119 = zext i1 %118 to i32
%120 = and i32 %116, %119
%121 = icmp ne i32 %120, 0
br i1 %121, label %122, label %133
122: ; preds = %113
%123 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 50
%124 = load i8, i8* %123
%125 = sext i8 %124 to i32
%126 = load i32, i32* %2
%127 = srem i32 %126, 10
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %128
%130 = load i8, i8* %129
%131 = sext i8 %130 to i32
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %125, i32 %131)
br label %225
133: ; preds = %113
%134 = load i32, i32* %2
%135 = icmp sgt i32 %134, 60
%136 = zext i1 %135 to i32
%137 = load i32, i32* %2
%138 = icmp slt i32 %137, 70
%139 = zext i1 %138 to i32
%140 = and i32 %136, %139
%141 = icmp ne i32 %140, 0
br i1 %141, label %142, label %153
142: ; preds = %133
%143 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 60
%144 = load i8, i8* %143
%145 = sext i8 %144 to i32
%146 = load i32, i32* %2
%147 = srem i32 %146, 10
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %148
%150 = load i8, i8* %149
%151 = sext i8 %150 to i32
%152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %145, i32 %151)
br label %224
153: ; preds = %133
%154 = load i32, i32* %2
%155 = icmp sgt i32 %154, 70
%156 = zext i1 %155 to i32
%157 = load i32, i32* %2
%158 = icmp slt i32 %157, 80
%159 = zext i1 %158 to i32
%160 = and i32 %156, %159
%161 = icmp ne i32 %160, 0
br i1 %161, label %162, label %173
162: ; preds = %153
%163 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 70
%164 = load i8, i8* %163
%165 = sext i8 %164 to i32
%166 = load i32, i32* %2
%167 = srem i32 %166, 10
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %168
%170 = load i8, i8* %169
%171 = sext i8 %170 to i32
%172 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %165, i32 %171)
br label %223
173: ; preds = %153
%174 = load i32, i32* %2
%175 = icmp sgt i32 %174, 80
%176 = zext i1 %175 to i32
%177 = load i32, i32* %2
%178 = icmp slt i32 %177, 90
%179 = zext i1 %178 to i32
%180 = and i32 %176, %179
%181 = icmp ne i32 %180, 0
br i1 %181, label %182, label %193
182: ; preds = %173
%183 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 80
%184 = load i8, i8* %183
%185 = sext i8 %184 to i32
%186 = load i32, i32* %2
%187 = srem i32 %186, 10
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %188
%190 = load i8, i8* %189
%191 = sext i8 %190 to i32
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %185, i32 %191)
br label %222
193: ; preds = %173
%194 = load i32, i32* %2
%195 = icmp sgt i32 %194, 90
%196 = zext i1 %195 to i32
%197 = load i32, i32* %2
%198 = icmp slt i32 %197, 99
%199 = zext i1 %198 to i32
%200 = and i32 %196, %199
%201 = icmp ne i32 %200, 0
br i1 %201, label %202, label %213
202: ; preds = %193
%203 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 90
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = load i32, i32* %2
%207 = srem i32 %206, 10
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %208
%210 = load i8, i8* %209
%211 = sext i8 %210 to i32
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.28, i64 0, i64 0), i32 %205, i32 %211)
br label %221
213: ; preds = %193
%214 = load i32, i32* %2
%215 = srem i32 %214, 10
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 %216
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), i32 %219)
br label %221
221: ; preds = %213, %202
br label %222
222: ; preds = %221, %182
br label %223
223: ; preds = %222, %162
br label %224
224: ; preds = %223, %142
br label %225
225: ; preds = %224, %122
br label %226
226: ; preds = %225, %102
br label %227
227: ; preds = %226, %82
br label %228
228: ; preds = %227, %62
br label %229
229: ; preds = %228, %44
ret i32 0
}

LLVM IR (-O2):
@.str.17 = [3 x i8] c"%d\00"
@.str.18 = [6 x i8] c"deset\00"
@.str.19 = [11 x i8] c"edinadeset\00"
@.str.20 = [11 x i8] c"dvanadeset\00"
@.str.21 = [11 x i8] c"trinadeset\00"
@.str.22 = [15 x i8] c"chetirinadeset\00"
@.str.23 = [11 x i8] c"petnadeset\00"
@.str.24 = [13 x i8] c"shestnadeset\00"
@.str.25 = [13 x i8] c"sedemnadeset\00"
@.str.26 = [12 x i8] c"osemnadeset\00"
@.str.27 = [13 x i8] c"devetnadeset\00"
define i32 @main() {
%1 = tail call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i32 undef)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.20, i64 0, i64 0))
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.21, i64 0, i64 0))
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0))
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0))
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0))
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0))
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.26, i64 0, i64 0))
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0))
ret i32 0
}