#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*/ gets(char *);
int /*<<< orphan*/ printf(char *);
int strlen(int /*<<< orphan*/);
int main() {
  char x[5];
  int lnth;
  lnth = strlen(gets(x));
  if (lnth == 3) {
    if (x[0] == '1')
      printf("C");
    else if (x[0] == '2')
      printf("CC");
    else if (x[0] == '3')
      printf("CCC");
    else if (x[0] == '4')
      printf("CD");
    else if (x[0] == '5')
      printf("D");
    else if (x[0] == '6')
      printf("DC");
    else if (x[0] == '7')
      printf("DCC");
    else if (x[0] == '8')
      printf("DCCC");
    else if (x[0] == '9')
      printf("CM");
    if (x[1] == '1')
      printf("X");
    else if (x[1] == '2')
      printf("XX");
    else if (x[1] == '3')
      printf("XXX");
    else if (x[1] == '4')
      printf("XL");
    else if (x[1] == '5')
      printf("L");
    else if (x[1] == '6')
      printf("LX");
    else if (x[1] == '7')
      printf("LXX");
    else if (x[1] == '8')
      printf("LXXX");
    else if (x[1] == '9')
      printf("XC");
    if (x[2] == '1')
      printf("I");
    else if (x[2] == '2')
      printf("II");
    else if (x[2] == '3')
      printf("III");
    else if (x[2] == '4')
      printf("IV");
    else if (x[2] == '5')
      printf("V");
    else if (x[2] == '6')
      printf("VI");
    else if (x[2] == '7')
      printf("VII");
    else if (x[2] == '8')
      printf("VIII");
    else if (x[2] == '9')
      printf("IX");
  } else if (lnth == 2) {
    if (x[0] == '1')
      printf("X");
    else if (x[0] == '2')
      printf("XX");
    else if (x[0] == '3')
      printf("XXX");
    else if (x[0] == '4')
      printf("XL");
    else if (x[0] == '5')
      printf("L");
    else if (x[0] == '6')
      printf("LX");
    else if (x[0] == '7')
      printf("LXX");
    else if (x[0] == '8')
      printf("LXXX");
    else if (x[0] == '9')
      printf("XC");
    if (x[1] == '1')
      printf("I");
    else if (x[1] == '2')
      printf("II");
    else if (x[1] == '3')
      printf("III");
    else if (x[1] == '4')
      printf("IV");
    else if (x[1] == '5')
      printf("V");
    else if (x[1] == '6')
      printf("VI");
    else if (x[1] == '7')
      printf("VII");
    else if (x[1] == '8')
      printf("VIII");
    else if (x[1] == '9')
      printf("IX");
  } else if (lnth == 1) {
    if (x[0] == '1')
      printf("I");
    else if (x[0] == '2')
      printf("II");
    else if (x[0] == '3')
      printf("III");
    else if (x[0] == '4')
      printf("IV");
    else if (x[0] == '5')
      printf("V");
    else if (x[0] == '6')
      printf("VI");
    else if (x[0] == '7')
      printf("VII");
    else if (x[0] == '8')
      printf("VIII");
    else if (x[0] == '9')
      printf("IX");
  }
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x9(%rbp),%rdi
call   1050 <gets@plt>
mov    %eax,%edi
call   1030 <strlen@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0x3,-0x10(%rbp)
jne    14f4 <main+0x3c4>
movsbl -0x9(%rbp),%eax
cmp    $0x31,%eax
jne    117a <main+0x4a>
lea    0xe9d(%rip),%rdi
call   1040 <printf@plt>
jmp    128d <main+0x15d>
movsbl -0x9(%rbp),%eax
cmp    $0x32,%eax
jne    1198 <main+0x68>
lea    0xe7e(%rip),%rdi
call   1040 <printf@plt>
jmp    1288 <main+0x158>
movsbl -0x9(%rbp),%eax
cmp    $0x33,%eax
jne    11b6 <main+0x86>
lea    0xe5f(%rip),%rdi
call   1040 <printf@plt>
jmp    1283 <main+0x153>
movsbl -0x9(%rbp),%eax
cmp    $0x34,%eax
jne    11d4 <main+0xa4>
lea    0xe36(%rip),%rdi
call   1040 <printf@plt>
jmp    127e <main+0x14e>
movsbl -0x9(%rbp),%eax
cmp    $0x35,%eax
jne    11f2 <main+0xc2>
lea    0xe19(%rip),%rdi
call   1040 <printf@plt>
jmp    1279 <main+0x149>
movsbl -0x9(%rbp),%eax
cmp    $0x36,%eax
jne    1210 <main+0xe0>
lea    0xdfd(%rip),%rdi
call   1040 <printf@plt>
jmp    1274 <main+0x144>
movsbl -0x9(%rbp),%eax
cmp    $0x37,%eax
jne    122e <main+0xfe>
lea    0xde2(%rip),%rdi
call   1040 <printf@plt>
jmp    126f <main+0x13f>
movsbl -0x9(%rbp),%eax
cmp    $0x38,%eax
jne    124c <main+0x11c>
lea    0xdc8(%rip),%rdi
call   1040 <printf@plt>
jmp    126a <main+0x13a>
movsbl -0x9(%rbp),%eax
cmp    $0x39,%eax
jne    1265 <main+0x135>
lea    0xdaf(%rip),%rdi
call   1040 <printf@plt>
jmp    126a <main+0x13a>
jmp    126f <main+0x13f>
jmp    1274 <main+0x144>
jmp    1279 <main+0x149>
jmp    127e <main+0x14e>
jmp    1283 <main+0x153>
jmp    1288 <main+0x158>
jmp    128d <main+0x15d>
movsbl -0x8(%rbp),%eax
cmp    $0x31,%eax
jne    12ab <main+0x17b>
lea    0xd93(%rip),%rdi
call   1040 <printf@plt>
jmp    13be <main+0x28e>
movsbl -0x8(%rbp),%eax
cmp    $0x32,%eax
jne    12c9 <main+0x199>
lea    0xd5a(%rip),%rdi
call   1040 <printf@plt>
jmp    13b9 <main+0x289>
movsbl -0x8(%rbp),%eax
cmp    $0x33,%eax
jne    12e7 <main+0x1b7>
lea    0xd40(%rip),%rdi
call   1040 <printf@plt>
jmp    13b4 <main+0x284>
movsbl -0x8(%rbp),%eax
cmp    $0x34,%eax
jne    1305 <main+0x1d5>
lea    0xd17(%rip),%rdi
call   1040 <printf@plt>
jmp    13af <main+0x27f>
movsbl -0x8(%rbp),%eax
cmp    $0x35,%eax
jne    1323 <main+0x1f3>
lea    0xcfa(%rip),%rdi
call   1040 <printf@plt>
jmp    13aa <main+0x27a>
movsbl -0x8(%rbp),%eax
cmp    $0x36,%eax
jne    1341 <main+0x211>
lea    0xcde(%rip),%rdi
call   1040 <printf@plt>
jmp    13a5 <main+0x275>
movsbl -0x8(%rbp),%eax
cmp    $0x37,%eax
jne    135f <main+0x22f>
lea    0xcc3(%rip),%rdi
call   1040 <printf@plt>
jmp    13a0 <main+0x270>
movsbl -0x8(%rbp),%eax
cmp    $0x38,%eax
jne    137d <main+0x24d>
lea    0xca9(%rip),%rdi
call   1040 <printf@plt>
jmp    139b <main+0x26b>
movsbl -0x8(%rbp),%eax
cmp    $0x39,%eax
jne    1396 <main+0x266>
lea    0xc90(%rip),%rdi
call   1040 <printf@plt>
jmp    139b <main+0x26b>
jmp    13a0 <main+0x270>
jmp    13a5 <main+0x275>
jmp    13aa <main+0x27a>
jmp    13af <main+0x27f>
jmp    13b4 <main+0x284>
jmp    13b9 <main+0x289>
jmp    13be <main+0x28e>
movsbl -0x7(%rbp),%eax
cmp    $0x31,%eax
jne    13dc <main+0x2ac>
lea    0xc5f(%rip),%rdi
call   1040 <printf@plt>
jmp    14ef <main+0x3bf>
movsbl -0x7(%rbp),%eax
cmp    $0x32,%eax
jne    13fa <main+0x2ca>
lea    0xc40(%rip),%rdi
call   1040 <printf@plt>
jmp    14ea <main+0x3ba>
movsbl -0x7(%rbp),%eax
cmp    $0x33,%eax
jne    1418 <main+0x2e8>
lea    0xc21(%rip),%rdi
call   1040 <printf@plt>
jmp    14e5 <main+0x3b5>
movsbl -0x7(%rbp),%eax
cmp    $0x34,%eax
jne    1436 <main+0x306>
lea    0xbf8(%rip),%rdi
call   1040 <printf@plt>
jmp    14e0 <main+0x3b0>
movsbl -0x7(%rbp),%eax
cmp    $0x35,%eax
jne    1454 <main+0x324>
lea    0xbdb(%rip),%rdi
call   1040 <printf@plt>
jmp    14db <main+0x3ab>
movsbl -0x7(%rbp),%eax
cmp    $0x36,%eax
jne    1472 <main+0x342>
lea    0xbbf(%rip),%rdi
call   1040 <printf@plt>
jmp    14d6 <main+0x3a6>
movsbl -0x7(%rbp),%eax
cmp    $0x37,%eax
jne    1490 <main+0x360>
lea    0xba4(%rip),%rdi
call   1040 <printf@plt>
jmp    14d1 <main+0x3a1>
movsbl -0x7(%rbp),%eax
cmp    $0x38,%eax
jne    14ae <main+0x37e>
lea    0xb8a(%rip),%rdi
call   1040 <printf@plt>
jmp    14cc <main+0x39c>
movsbl -0x7(%rbp),%eax
cmp    $0x39,%eax
jne    14c7 <main+0x397>
lea    0xb71(%rip),%rdi
call   1040 <printf@plt>
jmp    14cc <main+0x39c>
jmp    14d1 <main+0x3a1>
jmp    14d6 <main+0x3a6>
jmp    14db <main+0x3ab>
jmp    14e0 <main+0x3b0>
jmp    14e5 <main+0x3b5>
jmp    14ea <main+0x3ba>
jmp    14ef <main+0x3bf>
jmp    18af <main+0x77f>
cmpl   $0x2,-0x10(%rbp)
jne    1765 <main+0x635>
movsbl -0x9(%rbp),%eax
cmp    $0x31,%eax
jne    151c <main+0x3ec>
lea    0xb22(%rip),%rdi
call   1040 <printf@plt>
jmp    162f <main+0x4ff>
movsbl -0x9(%rbp),%eax
cmp    $0x32,%eax
jne    153a <main+0x40a>
lea    0xae9(%rip),%rdi
call   1040 <printf@plt>
jmp    162a <main+0x4fa>
movsbl -0x9(%rbp),%eax
cmp    $0x33,%eax
jne    1558 <main+0x428>
lea    0xacf(%rip),%rdi
call   1040 <printf@plt>
jmp    1625 <main+0x4f5>
movsbl -0x9(%rbp),%eax
cmp    $0x34,%eax
jne    1576 <main+0x446>
lea    0xaa6(%rip),%rdi
call   1040 <printf@plt>
jmp    1620 <main+0x4f0>
movsbl -0x9(%rbp),%eax
cmp    $0x35,%eax
jne    1594 <main+0x464>
lea    0xa89(%rip),%rdi
call   1040 <printf@plt>
jmp    161b <main+0x4eb>
movsbl -0x9(%rbp),%eax
cmp    $0x36,%eax
jne    15b2 <main+0x482>
lea    0xa6d(%rip),%rdi
call   1040 <printf@plt>
jmp    1616 <main+0x4e6>
movsbl -0x9(%rbp),%eax
cmp    $0x37,%eax
jne    15d0 <main+0x4a0>
lea    0xa52(%rip),%rdi
call   1040 <printf@plt>
jmp    1611 <main+0x4e1>
movsbl -0x9(%rbp),%eax
cmp    $0x38,%eax
jne    15ee <main+0x4be>
lea    0xa38(%rip),%rdi
call   1040 <printf@plt>
jmp    160c <main+0x4dc>
movsbl -0x9(%rbp),%eax
cmp    $0x39,%eax
jne    1607 <main+0x4d7>
lea    0xa1f(%rip),%rdi
call   1040 <printf@plt>
jmp    160c <main+0x4dc>
jmp    1611 <main+0x4e1>
jmp    1616 <main+0x4e6>
jmp    161b <main+0x4eb>
jmp    1620 <main+0x4f0>
jmp    1625 <main+0x4f5>
jmp    162a <main+0x4fa>
jmp    162f <main+0x4ff>
movsbl -0x8(%rbp),%eax
cmp    $0x31,%eax
jne    164d <main+0x51d>
lea    0x9ee(%rip),%rdi
call   1040 <printf@plt>
jmp    1760 <main+0x630>
movsbl -0x8(%rbp),%eax
cmp    $0x32,%eax
jne    166b <main+0x53b>
lea    0x9cf(%rip),%rdi
call   1040 <printf@plt>
jmp    175b <main+0x62b>
movsbl -0x8(%rbp),%eax
cmp    $0x33,%eax
jne    1689 <main+0x559>
lea    0x9b0(%rip),%rdi
call   1040 <printf@plt>
jmp    1756 <main+0x626>
movsbl -0x8(%rbp),%eax
cmp    $0x34,%eax
jne    16a7 <main+0x577>
lea    0x987(%rip),%rdi
call   1040 <printf@plt>
jmp    1751 <main+0x621>
movsbl -0x8(%rbp),%eax
cmp    $0x35,%eax
jne    16c5 <main+0x595>
lea    0x96a(%rip),%rdi
call   1040 <printf@plt>
jmp    174c <main+0x61c>
movsbl -0x8(%rbp),%eax
cmp    $0x36,%eax
jne    16e3 <main+0x5b3>
lea    0x94e(%rip),%rdi
call   1040 <printf@plt>
jmp    1747 <main+0x617>
movsbl -0x8(%rbp),%eax
cmp    $0x37,%eax
jne    1701 <main+0x5d1>
lea    0x933(%rip),%rdi
call   1040 <printf@plt>
jmp    1742 <main+0x612>
movsbl -0x8(%rbp),%eax
cmp    $0x38,%eax
jne    171f <main+0x5ef>
lea    0x919(%rip),%rdi
call   1040 <printf@plt>
jmp    173d <main+0x60d>
movsbl -0x8(%rbp),%eax
cmp    $0x39,%eax
jne    1738 <main+0x608>
lea    0x900(%rip),%rdi
call   1040 <printf@plt>
jmp    173d <main+0x60d>
jmp    1742 <main+0x612>
jmp    1747 <main+0x617>
jmp    174c <main+0x61c>
jmp    1751 <main+0x621>
jmp    1756 <main+0x626>
jmp    175b <main+0x62b>
jmp    1760 <main+0x630>
jmp    18aa <main+0x77a>
cmpl   $0x1,-0x10(%rbp)
jne    18a5 <main+0x775>
movsbl -0x9(%rbp),%eax
cmp    $0x31,%eax
jne    178d <main+0x65d>
lea    0x8ae(%rip),%rdi
call   1040 <printf@plt>
jmp    18a0 <main+0x770>
movsbl -0x9(%rbp),%eax
cmp    $0x32,%eax
jne    17ab <main+0x67b>
lea    0x88f(%rip),%rdi
call   1040 <printf@plt>
jmp    189b <main+0x76b>
movsbl -0x9(%rbp),%eax
cmp    $0x33,%eax
jne    17c9 <main+0x699>
lea    0x870(%rip),%rdi
call   1040 <printf@plt>
jmp    1896 <main+0x766>
movsbl -0x9(%rbp),%eax
cmp    $0x34,%eax
jne    17e7 <main+0x6b7>
lea    0x847(%rip),%rdi
call   1040 <printf@plt>
jmp    1891 <main+0x761>
movsbl -0x9(%rbp),%eax
cmp    $0x35,%eax
jne    1805 <main+0x6d5>
lea    0x82a(%rip),%rdi
call   1040 <printf@plt>
jmp    188c <main+0x75c>
movsbl -0x9(%rbp),%eax
cmp    $0x36,%eax
jne    1823 <main+0x6f3>
lea    0x80e(%rip),%rdi
call   1040 <printf@plt>
jmp    1887 <main+0x757>
movsbl -0x9(%rbp),%eax
cmp    $0x37,%eax
jne    1841 <main+0x711>
lea    0x7f3(%rip),%rdi
call   1040 <printf@plt>
jmp    1882 <main+0x752>
movsbl -0x9(%rbp),%eax
cmp    $0x38,%eax
jne    185f <main+0x72f>
lea    0x7d9(%rip),%rdi
call   1040 <printf@plt>
jmp    187d <main+0x74d>
movsbl -0x9(%rbp),%eax
cmp    $0x39,%eax
jne    1878 <main+0x748>
lea    0x7c0(%rip),%rdi
call   1040 <printf@plt>
jmp    187d <main+0x74d>
jmp    1882 <main+0x752>
jmp    1887 <main+0x757>
jmp    188c <main+0x75c>
jmp    1891 <main+0x761>
jmp    1896 <main+0x766>
jmp    189b <main+0x76b>
jmp    18a0 <main+0x770>
jmp    18a5 <main+0x775>
jmp    18aa <main+0x77a>
jmp    18af <main+0x77f>
lea    0x780(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0x3(%rsp),%rdi
call   1060 <gets@plt>
mov    %eax,%edi
call   1040 <strlen@plt>
cmp    $0x1,%eax
je     1195 <main+0x55>
cmp    $0x2,%eax
je     11b6 <main+0x76>
cmp    $0x3,%eax
jne    1398 <main+0x258>
mov    0x3(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     1234 <main+0xf4>
movzbl %al,%eax
lea    0xeef(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x43,%edi
call   1030 <putchar@plt>
jmp    1234 <main+0xf4>
mov    0x3(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     1398 <main+0x258>
movzbl %al,%eax
lea    0xe53(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x3(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     12b2 <main+0x172>
movzbl %al,%eax
lea    0xe56(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x58,%edi
call   1030 <putchar@plt>
jmp    12b2 <main+0x172>
lea    0xef7(%rip),%rdi
jmp    122f <main+0xef>
lea    0xeed(%rip),%rdi
jmp    122f <main+0xef>
lea    0xed9(%rip),%rdi
jmp    122f <main+0xef>
mov    $0x44,%edi
call   1030 <putchar@plt>
jmp    1234 <main+0xf4>
lea    0xec7(%rip),%rdi
jmp    122f <main+0xef>
lea    0xec1(%rip),%rdi
jmp    122f <main+0xef>
lea    0xebc(%rip),%rdi
jmp    122f <main+0xef>
lea    0xeb8(%rip),%rdi
call   1050 <printf@plt>
mov    0x4(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     1321 <main+0x1e1>
movzbl %al,%eax
lea    0xe44(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x58,%edi
call   1030 <putchar@plt>
jmp    1321 <main+0x1e1>
lea    0xe86(%rip),%rdi
jmp    12ad <main+0x16d>
lea    0xe81(%rip),%rdi
jmp    12ad <main+0x16d>
lea    0xe6d(%rip),%rdi
jmp    12ad <main+0x16d>
mov    $0x4c,%edi
call   1030 <putchar@plt>
jmp    12b2 <main+0x172>
lea    0xe5b(%rip),%rdi
jmp    12ad <main+0x16d>
lea    0xe55(%rip),%rdi
jmp    12ad <main+0x16d>
lea    0xe50(%rip),%rdi
jmp    12ad <main+0x16d>
lea    0xe4c(%rip),%rdi
call   1050 <printf@plt>
mov    0x4(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     1398 <main+0x258>
movzbl %al,%eax
lea    0xd7e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe17(%rip),%rdi
jmp    131c <main+0x1dc>
lea    0xe12(%rip),%rdi
jmp    131c <main+0x1dc>
lea    0xdfe(%rip),%rdi
jmp    131c <main+0x1dc>
mov    $0x4c,%edi
call   1030 <putchar@plt>
jmp    1321 <main+0x1e1>
lea    0xdec(%rip),%rdi
jmp    131c <main+0x1dc>
lea    0xde6(%rip),%rdi
jmp    131c <main+0x1dc>
lea    0xde1(%rip),%rdi
jmp    131c <main+0x1dc>
lea    0xddd(%rip),%rdi
call   1050 <printf@plt>
mov    0x5(%rsp),%al
add    $0xcf,%al
cmp    $0x8,%al
ja     1398 <main+0x258>
movzbl %al,%eax
lea    0xd7f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x49,%edi
call   1030 <putchar@plt>
jmp    1398 <main+0x258>
lea    0xdb7(%rip),%rdi
jmp    1393 <main+0x253>
lea    0xdad(%rip),%rdi
jmp    1393 <main+0x253>
lea    0xd99(%rip),%rdi
jmp    1393 <main+0x253>
mov    $0x56,%edi
call   1030 <putchar@plt>
jmp    1398 <main+0x258>
lea    0xd87(%rip),%rdi
jmp    1393 <main+0x253>
lea    0xd81(%rip),%rdi
jmp    1393 <main+0x253>
lea    0xd7c(%rip),%rdi
jmp    1393 <main+0x253>
lea    0xd78(%rip),%rdi
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
@.str.1 = [3 x i8] c"CC\00"
@.str.2 = [4 x i8] c"CCC\00"
@.str.3 = [3 x i8] c"CD\00"
@.str.5 = [3 x i8] c"DC\00"
@.str.6 = [4 x i8] c"DCC\00"
@.str.7 = [5 x i8] c"DCCC\00"
@.str.8 = [3 x i8] c"CM\00"
@.str.10 = [3 x i8] c"XX\00"
@.str.11 = [4 x i8] c"XXX\00"
@.str.12 = [3 x i8] c"XL\00"
@.str.14 = [3 x i8] c"LX\00"
@.str.15 = [4 x i8] c"LXX\00"
@.str.16 = [5 x i8] c"LXXX\00"
@.str.17 = [3 x i8] c"XC\00"
@.str.19 = [3 x i8] c"II\00"
@.str.20 = [4 x i8] c"III\00"
@.str.21 = [3 x i8] c"IV\00"
@.str.23 = [3 x i8] c"VI\00"
@.str.24 = [4 x i8] c"VII\00"
@.str.25 = [5 x i8] c"VIII\00"
@.str.26 = [3 x i8] c"IX\00"
define i32 @main() {
%1 = alloca [5 x i8]
%2 = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 0
%3 = call i32 @gets(i8* %2)
%4 = call i32 @strlen(i32 %3)
switch i32 %4, label %128 [
i32 3, label %5
i32 2, label %67
i32 1, label %108
]
5: ; preds = %0
%6 = load i8, i8* %2
switch i8 %6, label %25 [
i8 49, label %7
i8 50, label %9
i8 51, label %11
i8 52, label %13
i8 53, label %15
i8 54, label %17
i8 55, label %19
i8 56, label %21
i8 57, label %23
]
7: ; preds = %5
%8 = call i32 @putchar(i32 67)
br label %25
9: ; preds = %5
%10 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
br label %25
11: ; preds = %5
%12 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
br label %25
13: ; preds = %5
%14 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
br label %25
15: ; preds = %5
%16 = call i32 @putchar(i32 68)
br label %25
17: ; preds = %5
%18 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
br label %25
19: ; preds = %5
%20 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
br label %25
21: ; preds = %5
%22 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
br label %25
23: ; preds = %5
%24 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
br label %25
25: ; preds = %5, %9, %13, %17, %21, %23, %19, %15, %11, %7
%26 = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 1
%27 = load i8, i8* %26
switch i8 %27, label %46 [
i8 49, label %28
i8 50, label %30
i8 51, label %32
i8 52, label %34
i8 53, label %36
i8 54, label %38
i8 55, label %40
i8 56, label %42
i8 57, label %44
]
28: ; preds = %25
%29 = call i32 @putchar(i32 88)
br label %46
30: ; preds = %25
%31 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %46
32: ; preds = %25
%33 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
br label %46
34: ; preds = %25
%35 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
br label %46
36: ; preds = %25
%37 = call i32 @putchar(i32 76)
br label %46
38: ; preds = %25
%39 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
br label %46
40: ; preds = %25
%41 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
br label %46
42: ; preds = %25
%43 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
br label %46
44: ; preds = %25
%45 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
br label %46
46: ; preds = %25, %30, %34, %38, %42, %44, %40, %36, %32, %28
%47 = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 2
%48 = load i8, i8* %47
switch i8 %48, label %128 [
i8 49, label %49
i8 50, label %51
i8 51, label %53
i8 52, label %55
i8 53, label %57
i8 54, label %59
i8 55, label %61
i8 56, label %63
i8 57, label %65
]
49: ; preds = %46
%50 = call i32 @putchar(i32 73)
br label %128
51: ; preds = %46
%52 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
br label %128
53: ; preds = %46
%54 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %128
55: ; preds = %46
%56 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
br label %128
57: ; preds = %46
%58 = call i32 @putchar(i32 86)
br label %128
59: ; preds = %46
%60 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
br label %128
61: ; preds = %46
%62 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
br label %128
63: ; preds = %46
%64 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
br label %128
65: ; preds = %46
%66 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i64 0, i64 0))
br label %128
67: ; preds = %0
%68 = load i8, i8* %2
switch i8 %68, label %87 [
i8 49, label %69
i8 50, label %71
i8 51, label %73
i8 52, label %75
i8 53, label %77
i8 54, label %79
i8 55, label %81
i8 56, label %83
i8 57, label %85
]
69: ; preds = %67
%70 = call i32 @putchar(i32 88)
br label %87
71: ; preds = %67
%72 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %87
73: ; preds = %67
%74 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
br label %87
75: ; preds = %67
%76 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
br label %87
77: ; preds = %67
%78 = call i32 @putchar(i32 76)
br label %87
79: ; preds = %67
%80 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
br label %87
81: ; preds = %67
%82 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
br label %87
83: ; preds = %67
%84 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
br label %87
85: ; preds = %67
%86 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
br label %87
87: ; preds = %67, %71, %75, %79, %83, %85, %81, %77, %73, %69
%88 = getelementptr inbounds [5 x i8], [5 x i8]* %1, i64 0, i64 1
%89 = load i8, i8* %88
switch i8 %89, label %128 [
i8 49, label %90
i8 50, label %92
i8 51, label %94
i8 52, label %96
i8 53, label %98
i8 54, label %100
i8 55, label %102
i8 56, label %104
i8 57, label %106
]
90: ; preds = %87
%91 = call i32 @putchar(i32 73)
br label %128
92: ; preds = %87
%93 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
br label %128
94: ; preds = %87
%95 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %128
96: ; preds = %87
%97 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
br label %128
98: ; preds = %87
%99 = call i32 @putchar(i32 86)
br label %128
100: ; preds = %87
%101 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
br label %128
102: ; preds = %87
%103 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
br label %128
104: ; preds = %87
%105 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
br label %128
106: ; preds = %87
%107 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i64 0, i64 0))
br label %128
108: ; preds = %0
%109 = load i8, i8* %2
switch i8 %109, label %128 [
i8 49, label %110
i8 50, label %112
i8 51, label %114
i8 52, label %116
i8 53, label %118
i8 54, label %120
i8 55, label %122
i8 56, label %124
i8 57, label %126
]
110: ; preds = %108
%111 = call i32 @putchar(i32 73)
br label %128
112: ; preds = %108
%113 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
br label %128
114: ; preds = %108
%115 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %128
116: ; preds = %108
%117 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
br label %128
118: ; preds = %108
%119 = call i32 @putchar(i32 86)
br label %128
120: ; preds = %108
%121 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
br label %128
122: ; preds = %108
%123 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
br label %128
124: ; preds = %108
%125 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
br label %128
126: ; preds = %108
%127 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i64 0, i64 0))
br label %128
128: ; preds = %108, %0, %87, %46, %92, %96, %100, %104, %106, %102, %98, %94, %90, %110, %114, %118, %122, %126, %124, %120, %116, %112, %49, %53, %57, %61, %65, %63, %59, %55, %51
%129 = call i32 @putchar(i32 10)
ret i32 0
}