int main(int argc, char **argv) {
  assert(!strcmp(intToRoman(1), "I"));
  assert(!strcmp(intToRoman(2), "II"));
  assert(!strcmp(intToRoman(3), "III"));
  assert(!strcmp(intToRoman(4), "IV"));
  assert(!strcmp(intToRoman(5), "V"));
  assert(!strcmp(intToRoman(6), "VI"));
  assert(!strcmp(intToRoman(7), "VII"));
  assert(!strcmp(intToRoman(8), "VIII"));
  assert(!strcmp(intToRoman(9), "IX"));
  assert(!strcmp(intToRoman(10), "X"));
  assert(!strcmp(intToRoman(11), "XI"));
  assert(!strcmp(intToRoman(12), "XII"));
  assert(!strcmp(intToRoman(13), "XIII"));
  assert(!strcmp(intToRoman(14), "XIV"));
  assert(!strcmp(intToRoman(15), "XV"));
  assert(!strcmp(intToRoman(16), "XVI"));
  assert(!strcmp(intToRoman(17), "XVII"));
  assert(!strcmp(intToRoman(18), "XVIII"));
  assert(!strcmp(intToRoman(19), "XIX"));
  assert(!strcmp(intToRoman(20), "XX"));
  assert(!strcmp(intToRoman(21), "XXI"));
  assert(!strcmp(intToRoman(22), "XXII"));
  assert(!strcmp(intToRoman(23), "XXIII"));
  assert(!strcmp(intToRoman(24), "XXIV"));
  assert(!strcmp(intToRoman(25), "XXV"));
  assert(!strcmp(intToRoman(26), "XXVI"));
  assert(!strcmp(intToRoman(27), "XXVII"));
  assert(!strcmp(intToRoman(28), "XXVIII"));
  assert(!strcmp(intToRoman(29), "XXIX"));
  assert(!strcmp(intToRoman(30), "XXX"));
  assert(!strcmp(intToRoman(31), "XXXI"));
  assert(!strcmp(intToRoman(32), "XXXII"));
  assert(!strcmp(intToRoman(33), "XXXIII"));
  assert(!strcmp(intToRoman(34), "XXXIV"));
  assert(!strcmp(intToRoman(35), "XXXV"));
  assert(!strcmp(intToRoman(36), "XXXVI"));
  assert(!strcmp(intToRoman(37), "XXXVII"));
  assert(!strcmp(intToRoman(38), "XXXVIII"));
  assert(!strcmp(intToRoman(39), "XXXIX"));
  assert(!strcmp(intToRoman(40), "XL"));
  assert(!strcmp(intToRoman(41), "XLI"));
  assert(!strcmp(intToRoman(42), "XLII"));
  assert(!strcmp(intToRoman(43), "XLIII"));
  assert(!strcmp(intToRoman(44), "XLIV"));
  assert(!strcmp(intToRoman(45), "XLV"));
  assert(!strcmp(intToRoman(46), "XLVI"));
  assert(!strcmp(intToRoman(47), "XLVII"));
  assert(!strcmp(intToRoman(48), "XLVIII"));
  assert(!strcmp(intToRoman(49), "XLIX"));
  assert(!strcmp(intToRoman(50), "L"));
  assert(!strcmp(intToRoman(51), "LI"));
  assert(!strcmp(intToRoman(52), "LII"));
  assert(!strcmp(intToRoman(53), "LIII"));
  assert(!strcmp(intToRoman(54), "LIV"));
  assert(!strcmp(intToRoman(55), "LV"));
  assert(!strcmp(intToRoman(56), "LVI"));
  assert(!strcmp(intToRoman(57), "LVII"));
  assert(!strcmp(intToRoman(58), "LVIII"));
  assert(!strcmp(intToRoman(59), "LIX"));
  assert(!strcmp(intToRoman(60), "LX"));
  assert(!strcmp(intToRoman(61), "LXI"));
  assert(!strcmp(intToRoman(62), "LXII"));
  assert(!strcmp(intToRoman(63), "LXIII"));
  assert(!strcmp(intToRoman(64), "LXIV"));
  assert(!strcmp(intToRoman(65), "LXV"));
  assert(!strcmp(intToRoman(66), "LXVI"));
  assert(!strcmp(intToRoman(67), "LXVII"));
  assert(!strcmp(intToRoman(68), "LXVIII"));
  assert(!strcmp(intToRoman(69), "LXIX"));
  assert(!strcmp(intToRoman(70), "LXX"));
  assert(!strcmp(intToRoman(71), "LXXI"));
  assert(!strcmp(intToRoman(72), "LXXII"));
  assert(!strcmp(intToRoman(73), "LXXIII"));
  assert(!strcmp(intToRoman(74), "LXXIV"));
  assert(!strcmp(intToRoman(75), "LXXV"));
  assert(!strcmp(intToRoman(76), "LXXVI"));
  assert(!strcmp(intToRoman(77), "LXXVII"));
  assert(!strcmp(intToRoman(78), "LXXVIII"));
  assert(!strcmp(intToRoman(79), "LXXIX"));
  assert(!strcmp(intToRoman(80), "LXXX"));
  assert(!strcmp(intToRoman(81), "LXXXI"));
  assert(!strcmp(intToRoman(82), "LXXXII"));
  assert(!strcmp(intToRoman(83), "LXXXIII"));
  assert(!strcmp(intToRoman(84), "LXXXIV"));
  assert(!strcmp(intToRoman(85), "LXXXV"));
  assert(!strcmp(intToRoman(86), "LXXXVI"));
  assert(!strcmp(intToRoman(87), "LXXXVII"));
  assert(!strcmp(intToRoman(88), "LXXXVIII"));
  assert(!strcmp(intToRoman(89), "LXXXIX"));
  assert(!strcmp(intToRoman(90), "XC"));
  assert(!strcmp(intToRoman(91), "XCI"));
  assert(!strcmp(intToRoman(92), "XCII"));
  assert(!strcmp(intToRoman(93), "XCIII"));
  assert(!strcmp(intToRoman(94), "XCIV"));
  assert(!strcmp(intToRoman(95), "XCV"));
  assert(!strcmp(intToRoman(96), "XCVI"));
  assert(!strcmp(intToRoman(97), "XCVII"));
  assert(!strcmp(intToRoman(98), "XCVIII"));
  assert(!strcmp(intToRoman(99), "XCIX"));
  assert(!strcmp(intToRoman(100), "C"));
  assert(!strcmp(intToRoman(1994), "MCMXCIV"));
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f8f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f64(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f3a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f2f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1ee2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x6,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1eb7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x7,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e8d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x8,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e64(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x9,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e3c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e0e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xb,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1d04(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xc,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1cd9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xd,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1caf(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xe,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c86(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0xf,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c5c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x10,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c31(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x11,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c07(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x12,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1bde(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x13,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1bb6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x14,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b8c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x15,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b61(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x16,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b37(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x17,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b0e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x18,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1ae6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x19,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1abd(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1a,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a93(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1b,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a6a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1c,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a42(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1d,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a1b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1e,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x19f2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x1f,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x19c8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x20,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x199f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x21,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1977(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x22,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1950(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x23,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1928(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x24,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x18ff(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x25,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x18d7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x26,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x18b0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x27,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x188a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x28,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x177b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x29,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x174f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2a,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1724(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2b,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x16fa(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2c,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x16d1(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2d,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x16a7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2e,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x167c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x2f,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1652(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x30,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1629(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x31,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1601(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x32,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x15a6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x33,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x157a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x34,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x154f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x35,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1525(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x36,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14fc(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x37,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14d2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x38,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14a7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x39,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x147d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3a,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1454(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3b,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x142c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3c,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1401(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3d,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x13d5(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3e,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x13aa(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x3f,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1380(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x40,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1357(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x41,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x132d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x42,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1302(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x43,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x12d8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x44,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x12af(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x45,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1287(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x46,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x125d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x47,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1232(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x48,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1208(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x49,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x11df(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4a,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x11b7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4b,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x118e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4c,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1164(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4d,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x113b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4e,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1113(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x4f,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x10ec(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x50,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x10c3(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x51,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1099(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x52,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1070(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x53,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1048(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x54,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1021(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x55,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xff9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x56,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xfd0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x57,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xfa8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x58,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf81(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x59,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf5b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5a,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf33(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5b,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf07(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5c,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xedc(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5d,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xeb2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5e,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xea7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x5f,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xe5a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x60,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xe2f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x61,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xe05(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x62,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xddc(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x63,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xdb4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x64,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xd5e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
mov    $0x7ca,%edi
mov    $0x0,%al
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xd5b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1050 <assert@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1fa4(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f7e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f59(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f53(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1f0b(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x6,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1ee5(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x7,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1ec0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x8,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e9c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x9,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e79(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1e50(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xb,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1d4b(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xc,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1d25(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xd,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1d00(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xe,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1cdc(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0xf,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1cb7(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x10,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c91(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x11,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c6c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x12,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c48(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x13,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c25(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x14,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1c00(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x15,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1bda(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x16,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1bb5(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x17,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b91(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x18,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b6e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x19,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b4a(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1a,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b25(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1b,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1b01(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1c,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1ade(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1d,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1abc(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1e,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a98(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x1f,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a73(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a4f(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x21,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a2c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x22,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1a0a(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x23,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x19e7(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x24,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x19c3(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x25,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x19a0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x26,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x197e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x27,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x195d(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x28,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1853(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x29,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x182c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2a,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1806(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2b,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x17e1(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2c,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x17bd(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2d,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1798(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2e,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1772(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x2f,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x174d(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x30,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1729(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x31,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1706(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x32,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x16b0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x33,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1689(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x34,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1663(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x35,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x163e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x36,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x161a(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x37,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x15f5(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x38,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x15cf(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x39,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x15aa(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3a,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1586(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3b,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1563(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3c,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x153d(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3d,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1516(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3e,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14f0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x3f,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14cb(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x40,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x14a7(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x41,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1482(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x42,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x145c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x43,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1437(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x44,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1413(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x45,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x13f0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x46,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x13cb(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x47,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x13a5(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x48,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1380(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x49,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x135c(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4a,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1339(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4b,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1315(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4c,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x12f0(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4d,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x12cc(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4e,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x12a9(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x4f,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1287(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x50,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1263(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x51,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x123e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x52,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x121a(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x53,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x11f7(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x54,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x11d5(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x55,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x11b2(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x56,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x118e(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x57,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x116b(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x58,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1149(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x59,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1128(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5a,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1105(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5b,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x10de(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5c,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x10b8(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5d,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1093(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5e,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x108d(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x5f,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x1045(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x60,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0x101f(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x61,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xffa(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x62,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xfd6(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x63,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xfb3(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x64,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf62(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
mov    $0x7ca,%edi
xor    %eax,%eax
call   1030 <intToRoman@plt>
movslq %eax,%rdi
lea    0xf64(%rip),%rsi
call   1040 <strcmp@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
xor    %eax,%eax
call   1050 <assert@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [2 x i8] c"I\00"
@.str.1 = [3 x i8] c"II\00"
@.str.2 = [4 x i8] c"III\00"
@.str.3 = [3 x i8] c"IV\00"
@.str.4 = [2 x i8] c"V\00"
@.str.5 = [3 x i8] c"VI\00"
@.str.6 = [4 x i8] c"VII\00"
@.str.7 = [5 x i8] c"VIII\00"
@.str.8 = [3 x i8] c"IX\00"
@.str.9 = [2 x i8] c"X\00"
@.str.10 = [3 x i8] c"XI\00"
@.str.11 = [4 x i8] c"XII\00"
@.str.12 = [5 x i8] c"XIII\00"
@.str.13 = [4 x i8] c"XIV\00"
@.str.14 = [3 x i8] c"XV\00"
@.str.15 = [4 x i8] c"XVI\00"
@.str.16 = [5 x i8] c"XVII\00"
@.str.17 = [6 x i8] c"XVIII\00"
@.str.18 = [4 x i8] c"XIX\00"
@.str.19 = [3 x i8] c"XX\00"
@.str.20 = [4 x i8] c"XXI\00"
@.str.21 = [5 x i8] c"XXII\00"
@.str.22 = [6 x i8] c"XXIII\00"
@.str.23 = [5 x i8] c"XXIV\00"
@.str.24 = [4 x i8] c"XXV\00"
@.str.25 = [5 x i8] c"XXVI\00"
@.str.26 = [6 x i8] c"XXVII\00"
@.str.27 = [7 x i8] c"XXVIII\00"
@.str.28 = [5 x i8] c"XXIX\00"
@.str.29 = [4 x i8] c"XXX\00"
@.str.30 = [5 x i8] c"XXXI\00"
@.str.31 = [6 x i8] c"XXXII\00"
@.str.32 = [7 x i8] c"XXXIII\00"
@.str.33 = [6 x i8] c"XXXIV\00"
@.str.34 = [5 x i8] c"XXXV\00"
@.str.35 = [6 x i8] c"XXXVI\00"
@.str.36 = [7 x i8] c"XXXVII\00"
@.str.37 = [8 x i8] c"XXXVIII\00"
@.str.38 = [6 x i8] c"XXXIX\00"
@.str.39 = [3 x i8] c"XL\00"
@.str.40 = [4 x i8] c"XLI\00"
@.str.41 = [5 x i8] c"XLII\00"
@.str.42 = [6 x i8] c"XLIII\00"
@.str.43 = [5 x i8] c"XLIV\00"
@.str.44 = [4 x i8] c"XLV\00"
@.str.45 = [5 x i8] c"XLVI\00"
@.str.46 = [6 x i8] c"XLVII\00"
@.str.47 = [7 x i8] c"XLVIII\00"
@.str.48 = [5 x i8] c"XLIX\00"
@.str.49 = [2 x i8] c"L\00"
@.str.50 = [3 x i8] c"LI\00"
@.str.51 = [4 x i8] c"LII\00"
@.str.52 = [5 x i8] c"LIII\00"
@.str.53 = [4 x i8] c"LIV\00"
@.str.54 = [3 x i8] c"LV\00"
@.str.55 = [4 x i8] c"LVI\00"
@.str.56 = [5 x i8] c"LVII\00"
@.str.57 = [6 x i8] c"LVIII\00"
@.str.58 = [4 x i8] c"LIX\00"
@.str.59 = [3 x i8] c"LX\00"
@.str.60 = [4 x i8] c"LXI\00"
@.str.61 = [5 x i8] c"LXII\00"
@.str.62 = [6 x i8] c"LXIII\00"
@.str.63 = [5 x i8] c"LXIV\00"
@.str.64 = [4 x i8] c"LXV\00"
@.str.65 = [5 x i8] c"LXVI\00"
@.str.66 = [6 x i8] c"LXVII\00"
@.str.67 = [7 x i8] c"LXVIII\00"
@.str.68 = [5 x i8] c"LXIX\00"
@.str.69 = [4 x i8] c"LXX\00"
@.str.70 = [5 x i8] c"LXXI\00"
@.str.71 = [6 x i8] c"LXXII\00"
@.str.72 = [7 x i8] c"LXXIII\00"
@.str.73 = [6 x i8] c"LXXIV\00"
@.str.74 = [5 x i8] c"LXXV\00"
@.str.75 = [6 x i8] c"LXXVI\00"
@.str.76 = [7 x i8] c"LXXVII\00"
@.str.77 = [8 x i8] c"LXXVIII\00"
@.str.78 = [6 x i8] c"LXXIX\00"
@.str.79 = [5 x i8] c"LXXX\00"
@.str.80 = [6 x i8] c"LXXXI\00"
@.str.81 = [7 x i8] c"LXXXII\00"
@.str.82 = [8 x i8] c"LXXXIII\00"
@.str.83 = [7 x i8] c"LXXXIV\00"
@.str.84 = [6 x i8] c"LXXXV\00"
@.str.85 = [7 x i8] c"LXXXVI\00"
@.str.86 = [8 x i8] c"LXXXVII\00"
@.str.87 = [9 x i8] c"LXXXVIII\00"
@.str.88 = [7 x i8] c"LXXXIX\00"
@.str.89 = [3 x i8] c"XC\00"
@.str.90 = [4 x i8] c"XCI\00"
@.str.91 = [5 x i8] c"XCII\00"
@.str.92 = [6 x i8] c"XCIII\00"
@.str.93 = [5 x i8] c"XCIV\00"
@.str.94 = [4 x i8] c"XCV\00"
@.str.95 = [5 x i8] c"XCVI\00"
@.str.96 = [6 x i8] c"XCVII\00"
@.str.97 = [7 x i8] c"XCVIII\00"
@.str.98 = [5 x i8] c"XCIX\00"
@.str.99 = [2 x i8] c"C\00"
@.str.100 = [8 x i8] c"MCMXCIV\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%6 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 1)
%7 = sext i32 %6 to i64
%8 = inttoptr i64 %7 to i8*
%9 = call i32 @strcmp(i8* %8, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%10 = icmp ne i32 %9, 0
%11 = xor i1 %10, true
%12 = zext i1 %11 to i32
%13 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %12)
%14 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 2)
%15 = sext i32 %14 to i64
%16 = inttoptr i64 %15 to i8*
%17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%18 = icmp ne i32 %17, 0
%19 = xor i1 %18, true
%20 = zext i1 %19 to i32
%21 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %20)
%22 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 3)
%23 = sext i32 %22 to i64
%24 = inttoptr i64 %23 to i8*
%25 = call i32 @strcmp(i8* %24, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%26 = icmp ne i32 %25, 0
%27 = xor i1 %26, true
%28 = zext i1 %27 to i32
%29 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %28)
%30 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 4)
%31 = sext i32 %30 to i64
%32 = inttoptr i64 %31 to i8*
%33 = call i32 @strcmp(i8* %32, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%34 = icmp ne i32 %33, 0
%35 = xor i1 %34, true
%36 = zext i1 %35 to i32
%37 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %36)
%38 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 5)
%39 = sext i32 %38 to i64
%40 = inttoptr i64 %39 to i8*
%41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
%42 = icmp ne i32 %41, 0
%43 = xor i1 %42, true
%44 = zext i1 %43 to i32
%45 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %44)
%46 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 6)
%47 = sext i32 %46 to i64
%48 = inttoptr i64 %47 to i8*
%49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%50 = icmp ne i32 %49, 0
%51 = xor i1 %50, true
%52 = zext i1 %51 to i32
%53 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %52)
%54 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 7)
%55 = sext i32 %54 to i64
%56 = inttoptr i64 %55 to i8*
%57 = call i32 @strcmp(i8* %56, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%58 = icmp ne i32 %57, 0
%59 = xor i1 %58, true
%60 = zext i1 %59 to i32
%61 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %60)
%62 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 8)
%63 = sext i32 %62 to i64
%64 = inttoptr i64 %63 to i8*
%65 = call i32 @strcmp(i8* %64, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
%66 = icmp ne i32 %65, 0
%67 = xor i1 %66, true
%68 = zext i1 %67 to i32
%69 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %68)
%70 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 9)
%71 = sext i32 %70 to i64
%72 = inttoptr i64 %71 to i8*
%73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%74 = icmp ne i32 %73, 0
%75 = xor i1 %74, true
%76 = zext i1 %75 to i32
%77 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %76)
%78 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 10)
%79 = sext i32 %78 to i64
%80 = inttoptr i64 %79 to i8*
%81 = call i32 @strcmp(i8* %80, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0))
%82 = icmp ne i32 %81, 0
%83 = xor i1 %82, true
%84 = zext i1 %83 to i32
%85 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %84)
%86 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 11)
%87 = sext i32 %86 to i64
%88 = inttoptr i64 %87 to i8*
%89 = call i32 @strcmp(i8* %88, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%90 = icmp ne i32 %89, 0
%91 = xor i1 %90, true
%92 = zext i1 %91 to i32
%93 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %92)
%94 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 12)
%95 = sext i32 %94 to i64
%96 = inttoptr i64 %95 to i8*
%97 = call i32 @strcmp(i8* %96, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
%98 = icmp ne i32 %97, 0
%99 = xor i1 %98, true
%100 = zext i1 %99 to i32
%101 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %100)
%102 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 13)
%103 = sext i32 %102 to i64
%104 = inttoptr i64 %103 to i8*
%105 = call i32 @strcmp(i8* %104, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0))
%106 = icmp ne i32 %105, 0
%107 = xor i1 %106, true
%108 = zext i1 %107 to i32
%109 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %108)
%110 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 14)
%111 = sext i32 %110 to i64
%112 = inttoptr i64 %111 to i8*
%113 = call i32 @strcmp(i8* %112, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%114 = icmp ne i32 %113, 0
%115 = xor i1 %114, true
%116 = zext i1 %115 to i32
%117 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %116)
%118 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 15)
%119 = sext i32 %118 to i64
%120 = inttoptr i64 %119 to i8*
%121 = call i32 @strcmp(i8* %120, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%122 = icmp ne i32 %121, 0
%123 = xor i1 %122, true
%124 = zext i1 %123 to i32
%125 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %124)
%126 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 16)
%127 = sext i32 %126 to i64
%128 = inttoptr i64 %127 to i8*
%129 = call i32 @strcmp(i8* %128, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%130 = icmp ne i32 %129, 0
%131 = xor i1 %130, true
%132 = zext i1 %131 to i32
%133 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %132)
%134 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 17)
%135 = sext i32 %134 to i64
%136 = inttoptr i64 %135 to i8*
%137 = call i32 @strcmp(i8* %136, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
%138 = icmp ne i32 %137, 0
%139 = xor i1 %138, true
%140 = zext i1 %139 to i32
%141 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %140)
%142 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 18)
%143 = sext i32 %142 to i64
%144 = inttoptr i64 %143 to i8*
%145 = call i32 @strcmp(i8* %144, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0))
%146 = icmp ne i32 %145, 0
%147 = xor i1 %146, true
%148 = zext i1 %147 to i32
%149 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %148)
%150 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 19)
%151 = sext i32 %150 to i64
%152 = inttoptr i64 %151 to i8*
%153 = call i32 @strcmp(i8* %152, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%154 = icmp ne i32 %153, 0
%155 = xor i1 %154, true
%156 = zext i1 %155 to i32
%157 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %156)
%158 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 20)
%159 = sext i32 %158 to i64
%160 = inttoptr i64 %159 to i8*
%161 = call i32 @strcmp(i8* %160, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
%162 = icmp ne i32 %161, 0
%163 = xor i1 %162, true
%164 = zext i1 %163 to i32
%165 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %164)
%166 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 21)
%167 = sext i32 %166 to i64
%168 = inttoptr i64 %167 to i8*
%169 = call i32 @strcmp(i8* %168, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%170 = icmp ne i32 %169, 0
%171 = xor i1 %170, true
%172 = zext i1 %171 to i32
%173 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %172)
%174 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 22)
%175 = sext i32 %174 to i64
%176 = inttoptr i64 %175 to i8*
%177 = call i32 @strcmp(i8* %176, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
%178 = icmp ne i32 %177, 0
%179 = xor i1 %178, true
%180 = zext i1 %179 to i32
%181 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %180)
%182 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 23)
%183 = sext i32 %182 to i64
%184 = inttoptr i64 %183 to i8*
%185 = call i32 @strcmp(i8* %184, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0))
%186 = icmp ne i32 %185, 0
%187 = xor i1 %186, true
%188 = zext i1 %187 to i32
%189 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %188)
%190 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 24)
%191 = sext i32 %190 to i64
%192 = inttoptr i64 %191 to i8*
%193 = call i32 @strcmp(i8* %192, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
%194 = icmp ne i32 %193, 0
%195 = xor i1 %194, true
%196 = zext i1 %195 to i32
%197 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %196)
%198 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 25)
%199 = sext i32 %198 to i64
%200 = inttoptr i64 %199 to i8*
%201 = call i32 @strcmp(i8* %200, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%202 = icmp ne i32 %201, 0
%203 = xor i1 %202, true
%204 = zext i1 %203 to i32
%205 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %204)
%206 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 26)
%207 = sext i32 %206 to i64
%208 = inttoptr i64 %207 to i8*
%209 = call i32 @strcmp(i8* %208, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
%210 = icmp ne i32 %209, 0
%211 = xor i1 %210, true
%212 = zext i1 %211 to i32
%213 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %212)
%214 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 27)
%215 = sext i32 %214 to i64
%216 = inttoptr i64 %215 to i8*
%217 = call i32 @strcmp(i8* %216, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
%218 = icmp ne i32 %217, 0
%219 = xor i1 %218, true
%220 = zext i1 %219 to i32
%221 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %220)
%222 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 28)
%223 = sext i32 %222 to i64
%224 = inttoptr i64 %223 to i8*
%225 = call i32 @strcmp(i8* %224, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0))
%226 = icmp ne i32 %225, 0
%227 = xor i1 %226, true
%228 = zext i1 %227 to i32
%229 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %228)
%230 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 29)
%231 = sext i32 %230 to i64
%232 = inttoptr i64 %231 to i8*
%233 = call i32 @strcmp(i8* %232, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0))
%234 = icmp ne i32 %233, 0
%235 = xor i1 %234, true
%236 = zext i1 %235 to i32
%237 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %236)
%238 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 30)
%239 = sext i32 %238 to i64
%240 = inttoptr i64 %239 to i8*
%241 = call i32 @strcmp(i8* %240, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0))
%242 = icmp ne i32 %241, 0
%243 = xor i1 %242, true
%244 = zext i1 %243 to i32
%245 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %244)
%246 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 31)
%247 = sext i32 %246 to i64
%248 = inttoptr i64 %247 to i8*
%249 = call i32 @strcmp(i8* %248, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0))
%250 = icmp ne i32 %249, 0
%251 = xor i1 %250, true
%252 = zext i1 %251 to i32
%253 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %252)
%254 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 32)
%255 = sext i32 %254 to i64
%256 = inttoptr i64 %255 to i8*
%257 = call i32 @strcmp(i8* %256, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0))
%258 = icmp ne i32 %257, 0
%259 = xor i1 %258, true
%260 = zext i1 %259 to i32
%261 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %260)
%262 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 33)
%263 = sext i32 %262 to i64
%264 = inttoptr i64 %263 to i8*
%265 = call i32 @strcmp(i8* %264, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0))
%266 = icmp ne i32 %265, 0
%267 = xor i1 %266, true
%268 = zext i1 %267 to i32
%269 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %268)
%270 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 34)
%271 = sext i32 %270 to i64
%272 = inttoptr i64 %271 to i8*
%273 = call i32 @strcmp(i8* %272, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0))
%274 = icmp ne i32 %273, 0
%275 = xor i1 %274, true
%276 = zext i1 %275 to i32
%277 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %276)
%278 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 35)
%279 = sext i32 %278 to i64
%280 = inttoptr i64 %279 to i8*
%281 = call i32 @strcmp(i8* %280, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0))
%282 = icmp ne i32 %281, 0
%283 = xor i1 %282, true
%284 = zext i1 %283 to i32
%285 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %284)
%286 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 36)
%287 = sext i32 %286 to i64
%288 = inttoptr i64 %287 to i8*
%289 = call i32 @strcmp(i8* %288, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0))
%290 = icmp ne i32 %289, 0
%291 = xor i1 %290, true
%292 = zext i1 %291 to i32
%293 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %292)
%294 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 37)
%295 = sext i32 %294 to i64
%296 = inttoptr i64 %295 to i8*
%297 = call i32 @strcmp(i8* %296, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0))
%298 = icmp ne i32 %297, 0
%299 = xor i1 %298, true
%300 = zext i1 %299 to i32
%301 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %300)
%302 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 38)
%303 = sext i32 %302 to i64
%304 = inttoptr i64 %303 to i8*
%305 = call i32 @strcmp(i8* %304, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.37, i64 0, i64 0))
%306 = icmp ne i32 %305, 0
%307 = xor i1 %306, true
%308 = zext i1 %307 to i32
%309 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %308)
%310 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 39)
%311 = sext i32 %310 to i64
%312 = inttoptr i64 %311 to i8*
%313 = call i32 @strcmp(i8* %312, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0))
%314 = icmp ne i32 %313, 0
%315 = xor i1 %314, true
%316 = zext i1 %315 to i32
%317 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %316)
%318 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 40)
%319 = sext i32 %318 to i64
%320 = inttoptr i64 %319 to i8*
%321 = call i32 @strcmp(i8* %320, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0))
%322 = icmp ne i32 %321, 0
%323 = xor i1 %322, true
%324 = zext i1 %323 to i32
%325 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %324)
%326 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 41)
%327 = sext i32 %326 to i64
%328 = inttoptr i64 %327 to i8*
%329 = call i32 @strcmp(i8* %328, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0))
%330 = icmp ne i32 %329, 0
%331 = xor i1 %330, true
%332 = zext i1 %331 to i32
%333 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %332)
%334 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 42)
%335 = sext i32 %334 to i64
%336 = inttoptr i64 %335 to i8*
%337 = call i32 @strcmp(i8* %336, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0))
%338 = icmp ne i32 %337, 0
%339 = xor i1 %338, true
%340 = zext i1 %339 to i32
%341 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %340)
%342 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 43)
%343 = sext i32 %342 to i64
%344 = inttoptr i64 %343 to i8*
%345 = call i32 @strcmp(i8* %344, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0))
%346 = icmp ne i32 %345, 0
%347 = xor i1 %346, true
%348 = zext i1 %347 to i32
%349 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %348)
%350 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 44)
%351 = sext i32 %350 to i64
%352 = inttoptr i64 %351 to i8*
%353 = call i32 @strcmp(i8* %352, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.43, i64 0, i64 0))
%354 = icmp ne i32 %353, 0
%355 = xor i1 %354, true
%356 = zext i1 %355 to i32
%357 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %356)
%358 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 45)
%359 = sext i32 %358 to i64
%360 = inttoptr i64 %359 to i8*
%361 = call i32 @strcmp(i8* %360, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0))
%362 = icmp ne i32 %361, 0
%363 = xor i1 %362, true
%364 = zext i1 %363 to i32
%365 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %364)
%366 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 46)
%367 = sext i32 %366 to i64
%368 = inttoptr i64 %367 to i8*
%369 = call i32 @strcmp(i8* %368, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0))
%370 = icmp ne i32 %369, 0
%371 = xor i1 %370, true
%372 = zext i1 %371 to i32
%373 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %372)
%374 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 47)
%375 = sext i32 %374 to i64
%376 = inttoptr i64 %375 to i8*
%377 = call i32 @strcmp(i8* %376, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0))
%378 = icmp ne i32 %377, 0
%379 = xor i1 %378, true
%380 = zext i1 %379 to i32
%381 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %380)
%382 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 48)
%383 = sext i32 %382 to i64
%384 = inttoptr i64 %383 to i8*
%385 = call i32 @strcmp(i8* %384, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.47, i64 0, i64 0))
%386 = icmp ne i32 %385, 0
%387 = xor i1 %386, true
%388 = zext i1 %387 to i32
%389 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %388)
%390 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 49)
%391 = sext i32 %390 to i64
%392 = inttoptr i64 %391 to i8*
%393 = call i32 @strcmp(i8* %392, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0))
%394 = icmp ne i32 %393, 0
%395 = xor i1 %394, true
%396 = zext i1 %395 to i32
%397 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %396)
%398 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 50)
%399 = sext i32 %398 to i64
%400 = inttoptr i64 %399 to i8*
%401 = call i32 @strcmp(i8* %400, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.49, i64 0, i64 0))
%402 = icmp ne i32 %401, 0
%403 = xor i1 %402, true
%404 = zext i1 %403 to i32
%405 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %404)
%406 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 51)
%407 = sext i32 %406 to i64
%408 = inttoptr i64 %407 to i8*
%409 = call i32 @strcmp(i8* %408, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.50, i64 0, i64 0))
%410 = icmp ne i32 %409, 0
%411 = xor i1 %410, true
%412 = zext i1 %411 to i32
%413 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %412)
%414 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 52)
%415 = sext i32 %414 to i64
%416 = inttoptr i64 %415 to i8*
%417 = call i32 @strcmp(i8* %416, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0))
%418 = icmp ne i32 %417, 0
%419 = xor i1 %418, true
%420 = zext i1 %419 to i32
%421 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %420)
%422 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 53)
%423 = sext i32 %422 to i64
%424 = inttoptr i64 %423 to i8*
%425 = call i32 @strcmp(i8* %424, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.52, i64 0, i64 0))
%426 = icmp ne i32 %425, 0
%427 = xor i1 %426, true
%428 = zext i1 %427 to i32
%429 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %428)
%430 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 54)
%431 = sext i32 %430 to i64
%432 = inttoptr i64 %431 to i8*
%433 = call i32 @strcmp(i8* %432, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0))
%434 = icmp ne i32 %433, 0
%435 = xor i1 %434, true
%436 = zext i1 %435 to i32
%437 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %436)
%438 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 55)
%439 = sext i32 %438 to i64
%440 = inttoptr i64 %439 to i8*
%441 = call i32 @strcmp(i8* %440, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.54, i64 0, i64 0))
%442 = icmp ne i32 %441, 0
%443 = xor i1 %442, true
%444 = zext i1 %443 to i32
%445 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %444)
%446 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 56)
%447 = sext i32 %446 to i64
%448 = inttoptr i64 %447 to i8*
%449 = call i32 @strcmp(i8* %448, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.55, i64 0, i64 0))
%450 = icmp ne i32 %449, 0
%451 = xor i1 %450, true
%452 = zext i1 %451 to i32
%453 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %452)
%454 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 57)
%455 = sext i32 %454 to i64
%456 = inttoptr i64 %455 to i8*
%457 = call i32 @strcmp(i8* %456, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.56, i64 0, i64 0))
%458 = icmp ne i32 %457, 0
%459 = xor i1 %458, true
%460 = zext i1 %459 to i32
%461 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %460)
%462 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 58)
%463 = sext i32 %462 to i64
%464 = inttoptr i64 %463 to i8*
%465 = call i32 @strcmp(i8* %464, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i64 0, i64 0))
%466 = icmp ne i32 %465, 0
%467 = xor i1 %466, true
%468 = zext i1 %467 to i32
%469 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %468)
%470 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 59)
%471 = sext i32 %470 to i64
%472 = inttoptr i64 %471 to i8*
%473 = call i32 @strcmp(i8* %472, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0))
%474 = icmp ne i32 %473, 0
%475 = xor i1 %474, true
%476 = zext i1 %475 to i32
%477 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %476)
%478 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 60)
%479 = sext i32 %478 to i64
%480 = inttoptr i64 %479 to i8*
%481 = call i32 @strcmp(i8* %480, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0))
%482 = icmp ne i32 %481, 0
%483 = xor i1 %482, true
%484 = zext i1 %483 to i32
%485 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %484)
%486 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 61)
%487 = sext i32 %486 to i64
%488 = inttoptr i64 %487 to i8*
%489 = call i32 @strcmp(i8* %488, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.60, i64 0, i64 0))
%490 = icmp ne i32 %489, 0
%491 = xor i1 %490, true
%492 = zext i1 %491 to i32
%493 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %492)
%494 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 62)
%495 = sext i32 %494 to i64
%496 = inttoptr i64 %495 to i8*
%497 = call i32 @strcmp(i8* %496, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0))
%498 = icmp ne i32 %497, 0
%499 = xor i1 %498, true
%500 = zext i1 %499 to i32
%501 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %500)
%502 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 63)
%503 = sext i32 %502 to i64
%504 = inttoptr i64 %503 to i8*
%505 = call i32 @strcmp(i8* %504, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.62, i64 0, i64 0))
%506 = icmp ne i32 %505, 0
%507 = xor i1 %506, true
%508 = zext i1 %507 to i32
%509 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %508)
%510 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 64)
%511 = sext i32 %510 to i64
%512 = inttoptr i64 %511 to i8*
%513 = call i32 @strcmp(i8* %512, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.63, i64 0, i64 0))
%514 = icmp ne i32 %513, 0
%515 = xor i1 %514, true
%516 = zext i1 %515 to i32
%517 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %516)
%518 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 65)
%519 = sext i32 %518 to i64
%520 = inttoptr i64 %519 to i8*
%521 = call i32 @strcmp(i8* %520, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.64, i64 0, i64 0))
%522 = icmp ne i32 %521, 0
%523 = xor i1 %522, true
%524 = zext i1 %523 to i32
%525 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %524)
%526 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 66)
%527 = sext i32 %526 to i64
%528 = inttoptr i64 %527 to i8*
%529 = call i32 @strcmp(i8* %528, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.65, i64 0, i64 0))
%530 = icmp ne i32 %529, 0
%531 = xor i1 %530, true
%532 = zext i1 %531 to i32
%533 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %532)
%534 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 67)
%535 = sext i32 %534 to i64
%536 = inttoptr i64 %535 to i8*
%537 = call i32 @strcmp(i8* %536, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.66, i64 0, i64 0))
%538 = icmp ne i32 %537, 0
%539 = xor i1 %538, true
%540 = zext i1 %539 to i32
%541 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %540)
%542 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 68)
%543 = sext i32 %542 to i64
%544 = inttoptr i64 %543 to i8*
%545 = call i32 @strcmp(i8* %544, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.67, i64 0, i64 0))
%546 = icmp ne i32 %545, 0
%547 = xor i1 %546, true
%548 = zext i1 %547 to i32
%549 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %548)
%550 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 69)
%551 = sext i32 %550 to i64
%552 = inttoptr i64 %551 to i8*
%553 = call i32 @strcmp(i8* %552, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0))
%554 = icmp ne i32 %553, 0
%555 = xor i1 %554, true
%556 = zext i1 %555 to i32
%557 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %556)
%558 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 70)
%559 = sext i32 %558 to i64
%560 = inttoptr i64 %559 to i8*
%561 = call i32 @strcmp(i8* %560, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0))
%562 = icmp ne i32 %561, 0
%563 = xor i1 %562, true
%564 = zext i1 %563 to i32
%565 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %564)
%566 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 71)
%567 = sext i32 %566 to i64
%568 = inttoptr i64 %567 to i8*
%569 = call i32 @strcmp(i8* %568, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i64 0, i64 0))
%570 = icmp ne i32 %569, 0
%571 = xor i1 %570, true
%572 = zext i1 %571 to i32
%573 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %572)
%574 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 72)
%575 = sext i32 %574 to i64
%576 = inttoptr i64 %575 to i8*
%577 = call i32 @strcmp(i8* %576, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.71, i64 0, i64 0))
%578 = icmp ne i32 %577, 0
%579 = xor i1 %578, true
%580 = zext i1 %579 to i32
%581 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %580)
%582 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 73)
%583 = sext i32 %582 to i64
%584 = inttoptr i64 %583 to i8*
%585 = call i32 @strcmp(i8* %584, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.72, i64 0, i64 0))
%586 = icmp ne i32 %585, 0
%587 = xor i1 %586, true
%588 = zext i1 %587 to i32
%589 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %588)
%590 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 74)
%591 = sext i32 %590 to i64
%592 = inttoptr i64 %591 to i8*
%593 = call i32 @strcmp(i8* %592, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.73, i64 0, i64 0))
%594 = icmp ne i32 %593, 0
%595 = xor i1 %594, true
%596 = zext i1 %595 to i32
%597 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %596)
%598 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 75)
%599 = sext i32 %598 to i64
%600 = inttoptr i64 %599 to i8*
%601 = call i32 @strcmp(i8* %600, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.74, i64 0, i64 0))
%602 = icmp ne i32 %601, 0
%603 = xor i1 %602, true
%604 = zext i1 %603 to i32
%605 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %604)
%606 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 76)
%607 = sext i32 %606 to i64
%608 = inttoptr i64 %607 to i8*
%609 = call i32 @strcmp(i8* %608, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i64 0, i64 0))
%610 = icmp ne i32 %609, 0
%611 = xor i1 %610, true
%612 = zext i1 %611 to i32
%613 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %612)
%614 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 77)
%615 = sext i32 %614 to i64
%616 = inttoptr i64 %615 to i8*
%617 = call i32 @strcmp(i8* %616, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.76, i64 0, i64 0))
%618 = icmp ne i32 %617, 0
%619 = xor i1 %618, true
%620 = zext i1 %619 to i32
%621 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %620)
%622 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 78)
%623 = sext i32 %622 to i64
%624 = inttoptr i64 %623 to i8*
%625 = call i32 @strcmp(i8* %624, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.77, i64 0, i64 0))
%626 = icmp ne i32 %625, 0
%627 = xor i1 %626, true
%628 = zext i1 %627 to i32
%629 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %628)
%630 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 79)
%631 = sext i32 %630 to i64
%632 = inttoptr i64 %631 to i8*
%633 = call i32 @strcmp(i8* %632, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.78, i64 0, i64 0))
%634 = icmp ne i32 %633, 0
%635 = xor i1 %634, true
%636 = zext i1 %635 to i32
%637 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %636)
%638 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 80)
%639 = sext i32 %638 to i64
%640 = inttoptr i64 %639 to i8*
%641 = call i32 @strcmp(i8* %640, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.79, i64 0, i64 0))
%642 = icmp ne i32 %641, 0
%643 = xor i1 %642, true
%644 = zext i1 %643 to i32
%645 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %644)
%646 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 81)
%647 = sext i32 %646 to i64
%648 = inttoptr i64 %647 to i8*
%649 = call i32 @strcmp(i8* %648, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.80, i64 0, i64 0))
%650 = icmp ne i32 %649, 0
%651 = xor i1 %650, true
%652 = zext i1 %651 to i32
%653 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %652)
%654 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 82)
%655 = sext i32 %654 to i64
%656 = inttoptr i64 %655 to i8*
%657 = call i32 @strcmp(i8* %656, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.81, i64 0, i64 0))
%658 = icmp ne i32 %657, 0
%659 = xor i1 %658, true
%660 = zext i1 %659 to i32
%661 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %660)
%662 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 83)
%663 = sext i32 %662 to i64
%664 = inttoptr i64 %663 to i8*
%665 = call i32 @strcmp(i8* %664, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.82, i64 0, i64 0))
%666 = icmp ne i32 %665, 0
%667 = xor i1 %666, true
%668 = zext i1 %667 to i32
%669 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %668)
%670 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 84)
%671 = sext i32 %670 to i64
%672 = inttoptr i64 %671 to i8*
%673 = call i32 @strcmp(i8* %672, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.83, i64 0, i64 0))
%674 = icmp ne i32 %673, 0
%675 = xor i1 %674, true
%676 = zext i1 %675 to i32
%677 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %676)
%678 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 85)
%679 = sext i32 %678 to i64
%680 = inttoptr i64 %679 to i8*
%681 = call i32 @strcmp(i8* %680, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.84, i64 0, i64 0))
%682 = icmp ne i32 %681, 0
%683 = xor i1 %682, true
%684 = zext i1 %683 to i32
%685 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %684)
%686 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 86)
%687 = sext i32 %686 to i64
%688 = inttoptr i64 %687 to i8*
%689 = call i32 @strcmp(i8* %688, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.85, i64 0, i64 0))
%690 = icmp ne i32 %689, 0
%691 = xor i1 %690, true
%692 = zext i1 %691 to i32
%693 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %692)
%694 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 87)
%695 = sext i32 %694 to i64
%696 = inttoptr i64 %695 to i8*
%697 = call i32 @strcmp(i8* %696, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.86, i64 0, i64 0))
%698 = icmp ne i32 %697, 0
%699 = xor i1 %698, true
%700 = zext i1 %699 to i32
%701 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %700)
%702 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 88)
%703 = sext i32 %702 to i64
%704 = inttoptr i64 %703 to i8*
%705 = call i32 @strcmp(i8* %704, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.87, i64 0, i64 0))
%706 = icmp ne i32 %705, 0
%707 = xor i1 %706, true
%708 = zext i1 %707 to i32
%709 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %708)
%710 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 89)
%711 = sext i32 %710 to i64
%712 = inttoptr i64 %711 to i8*
%713 = call i32 @strcmp(i8* %712, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.88, i64 0, i64 0))
%714 = icmp ne i32 %713, 0
%715 = xor i1 %714, true
%716 = zext i1 %715 to i32
%717 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %716)
%718 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 90)
%719 = sext i32 %718 to i64
%720 = inttoptr i64 %719 to i8*
%721 = call i32 @strcmp(i8* %720, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0))
%722 = icmp ne i32 %721, 0
%723 = xor i1 %722, true
%724 = zext i1 %723 to i32
%725 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %724)
%726 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 91)
%727 = sext i32 %726 to i64
%728 = inttoptr i64 %727 to i8*
%729 = call i32 @strcmp(i8* %728, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.90, i64 0, i64 0))
%730 = icmp ne i32 %729, 0
%731 = xor i1 %730, true
%732 = zext i1 %731 to i32
%733 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %732)
%734 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 92)
%735 = sext i32 %734 to i64
%736 = inttoptr i64 %735 to i8*
%737 = call i32 @strcmp(i8* %736, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.91, i64 0, i64 0))
%738 = icmp ne i32 %737, 0
%739 = xor i1 %738, true
%740 = zext i1 %739 to i32
%741 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %740)
%742 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 93)
%743 = sext i32 %742 to i64
%744 = inttoptr i64 %743 to i8*
%745 = call i32 @strcmp(i8* %744, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.92, i64 0, i64 0))
%746 = icmp ne i32 %745, 0
%747 = xor i1 %746, true
%748 = zext i1 %747 to i32
%749 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %748)
%750 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 94)
%751 = sext i32 %750 to i64
%752 = inttoptr i64 %751 to i8*
%753 = call i32 @strcmp(i8* %752, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.93, i64 0, i64 0))
%754 = icmp ne i32 %753, 0
%755 = xor i1 %754, true
%756 = zext i1 %755 to i32
%757 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %756)
%758 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 95)
%759 = sext i32 %758 to i64
%760 = inttoptr i64 %759 to i8*
%761 = call i32 @strcmp(i8* %760, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.94, i64 0, i64 0))
%762 = icmp ne i32 %761, 0
%763 = xor i1 %762, true
%764 = zext i1 %763 to i32
%765 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %764)
%766 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 96)
%767 = sext i32 %766 to i64
%768 = inttoptr i64 %767 to i8*
%769 = call i32 @strcmp(i8* %768, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.95, i64 0, i64 0))
%770 = icmp ne i32 %769, 0
%771 = xor i1 %770, true
%772 = zext i1 %771 to i32
%773 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %772)
%774 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 97)
%775 = sext i32 %774 to i64
%776 = inttoptr i64 %775 to i8*
%777 = call i32 @strcmp(i8* %776, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.96, i64 0, i64 0))
%778 = icmp ne i32 %777, 0
%779 = xor i1 %778, true
%780 = zext i1 %779 to i32
%781 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %780)
%782 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 98)
%783 = sext i32 %782 to i64
%784 = inttoptr i64 %783 to i8*
%785 = call i32 @strcmp(i8* %784, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.97, i64 0, i64 0))
%786 = icmp ne i32 %785, 0
%787 = xor i1 %786, true
%788 = zext i1 %787 to i32
%789 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %788)
%790 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 99)
%791 = sext i32 %790 to i64
%792 = inttoptr i64 %791 to i8*
%793 = call i32 @strcmp(i8* %792, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.98, i64 0, i64 0))
%794 = icmp ne i32 %793, 0
%795 = xor i1 %794, true
%796 = zext i1 %795 to i32
%797 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %796)
%798 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 100)
%799 = sext i32 %798 to i64
%800 = inttoptr i64 %799 to i8*
%801 = call i32 @strcmp(i8* %800, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.99, i64 0, i64 0))
%802 = icmp ne i32 %801, 0
%803 = xor i1 %802, true
%804 = zext i1 %803 to i32
%805 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %804)
%806 = call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 1994)
%807 = sext i32 %806 to i64
%808 = inttoptr i64 %807 to i8*
%809 = call i32 @strcmp(i8* %808, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.100, i64 0, i64 0))
%810 = icmp ne i32 %809, 0
%811 = xor i1 %810, true
%812 = zext i1 %811 to i32
%813 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %812)
ret i32 0
}

LLVM IR (-O2):
@.str = [2 x i8] c"I\00"
@.str.1 = [3 x i8] c"II\00"
@.str.2 = [4 x i8] c"III\00"
@.str.3 = [3 x i8] c"IV\00"
@.str.4 = [2 x i8] c"V\00"
@.str.5 = [3 x i8] c"VI\00"
@.str.6 = [4 x i8] c"VII\00"
@.str.7 = [5 x i8] c"VIII\00"
@.str.8 = [3 x i8] c"IX\00"
@.str.9 = [2 x i8] c"X\00"
@.str.10 = [3 x i8] c"XI\00"
@.str.11 = [4 x i8] c"XII\00"
@.str.12 = [5 x i8] c"XIII\00"
@.str.13 = [4 x i8] c"XIV\00"
@.str.14 = [3 x i8] c"XV\00"
@.str.15 = [4 x i8] c"XVI\00"
@.str.16 = [5 x i8] c"XVII\00"
@.str.17 = [6 x i8] c"XVIII\00"
@.str.18 = [4 x i8] c"XIX\00"
@.str.19 = [3 x i8] c"XX\00"
@.str.20 = [4 x i8] c"XXI\00"
@.str.21 = [5 x i8] c"XXII\00"
@.str.22 = [6 x i8] c"XXIII\00"
@.str.23 = [5 x i8] c"XXIV\00"
@.str.24 = [4 x i8] c"XXV\00"
@.str.25 = [5 x i8] c"XXVI\00"
@.str.26 = [6 x i8] c"XXVII\00"
@.str.27 = [7 x i8] c"XXVIII\00"
@.str.28 = [5 x i8] c"XXIX\00"
@.str.29 = [4 x i8] c"XXX\00"
@.str.30 = [5 x i8] c"XXXI\00"
@.str.31 = [6 x i8] c"XXXII\00"
@.str.32 = [7 x i8] c"XXXIII\00"
@.str.33 = [6 x i8] c"XXXIV\00"
@.str.34 = [5 x i8] c"XXXV\00"
@.str.35 = [6 x i8] c"XXXVI\00"
@.str.36 = [7 x i8] c"XXXVII\00"
@.str.37 = [8 x i8] c"XXXVIII\00"
@.str.38 = [6 x i8] c"XXXIX\00"
@.str.39 = [3 x i8] c"XL\00"
@.str.40 = [4 x i8] c"XLI\00"
@.str.41 = [5 x i8] c"XLII\00"
@.str.42 = [6 x i8] c"XLIII\00"
@.str.43 = [5 x i8] c"XLIV\00"
@.str.44 = [4 x i8] c"XLV\00"
@.str.45 = [5 x i8] c"XLVI\00"
@.str.46 = [6 x i8] c"XLVII\00"
@.str.47 = [7 x i8] c"XLVIII\00"
@.str.48 = [5 x i8] c"XLIX\00"
@.str.49 = [2 x i8] c"L\00"
@.str.50 = [3 x i8] c"LI\00"
@.str.51 = [4 x i8] c"LII\00"
@.str.52 = [5 x i8] c"LIII\00"
@.str.53 = [4 x i8] c"LIV\00"
@.str.54 = [3 x i8] c"LV\00"
@.str.55 = [4 x i8] c"LVI\00"
@.str.56 = [5 x i8] c"LVII\00"
@.str.57 = [6 x i8] c"LVIII\00"
@.str.58 = [4 x i8] c"LIX\00"
@.str.59 = [3 x i8] c"LX\00"
@.str.60 = [4 x i8] c"LXI\00"
@.str.61 = [5 x i8] c"LXII\00"
@.str.62 = [6 x i8] c"LXIII\00"
@.str.63 = [5 x i8] c"LXIV\00"
@.str.64 = [4 x i8] c"LXV\00"
@.str.65 = [5 x i8] c"LXVI\00"
@.str.66 = [6 x i8] c"LXVII\00"
@.str.67 = [7 x i8] c"LXVIII\00"
@.str.68 = [5 x i8] c"LXIX\00"
@.str.69 = [4 x i8] c"LXX\00"
@.str.70 = [5 x i8] c"LXXI\00"
@.str.71 = [6 x i8] c"LXXII\00"
@.str.72 = [7 x i8] c"LXXIII\00"
@.str.73 = [6 x i8] c"LXXIV\00"
@.str.74 = [5 x i8] c"LXXV\00"
@.str.75 = [6 x i8] c"LXXVI\00"
@.str.76 = [7 x i8] c"LXXVII\00"
@.str.77 = [8 x i8] c"LXXVIII\00"
@.str.78 = [6 x i8] c"LXXIX\00"
@.str.79 = [5 x i8] c"LXXX\00"
@.str.80 = [6 x i8] c"LXXXI\00"
@.str.81 = [7 x i8] c"LXXXII\00"
@.str.82 = [8 x i8] c"LXXXIII\00"
@.str.83 = [7 x i8] c"LXXXIV\00"
@.str.84 = [6 x i8] c"LXXXV\00"
@.str.85 = [7 x i8] c"LXXXVI\00"
@.str.86 = [8 x i8] c"LXXXVII\00"
@.str.87 = [9 x i8] c"LXXXVIII\00"
@.str.88 = [7 x i8] c"LXXXIX\00"
@.str.89 = [3 x i8] c"XC\00"
@.str.90 = [4 x i8] c"XCI\00"
@.str.91 = [5 x i8] c"XCII\00"
@.str.92 = [6 x i8] c"XCIII\00"
@.str.93 = [5 x i8] c"XCIV\00"
@.str.94 = [4 x i8] c"XCV\00"
@.str.95 = [5 x i8] c"XCVI\00"
@.str.96 = [6 x i8] c"XCVII\00"
@.str.97 = [7 x i8] c"XCVIII\00"
@.str.98 = [5 x i8] c"XCIX\00"
@.str.99 = [2 x i8] c"C\00"
@.str.100 = [8 x i8] c"MCMXCIV\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 1)
%4 = sext i32 %3 to i64
%5 = inttoptr i64 %4 to i8*
%6 = tail call i32 @strcmp(i8* dereferenceable(1) %5, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%7 = icmp eq i32 %6, 0
%8 = zext i1 %7 to i32
%9 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %8)
%10 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 2)
%11 = sext i32 %10 to i64
%12 = inttoptr i64 %11 to i8*
%13 = tail call i32 @strcmp(i8* dereferenceable(1) %12, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%14 = icmp eq i32 %13, 0
%15 = zext i1 %14 to i32
%16 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %15)
%17 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 3)
%18 = sext i32 %17 to i64
%19 = inttoptr i64 %18 to i8*
%20 = tail call i32 @strcmp(i8* dereferenceable(1) %19, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%21 = icmp eq i32 %20, 0
%22 = zext i1 %21 to i32
%23 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %22)
%24 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 4)
%25 = sext i32 %24 to i64
%26 = inttoptr i64 %25 to i8*
%27 = tail call i32 @strcmp(i8* dereferenceable(1) %26, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%28 = icmp eq i32 %27, 0
%29 = zext i1 %28 to i32
%30 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %29)
%31 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 5)
%32 = sext i32 %31 to i64
%33 = inttoptr i64 %32 to i8*
%34 = tail call i32 @strcmp(i8* dereferenceable(1) %33, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
%35 = icmp eq i32 %34, 0
%36 = zext i1 %35 to i32
%37 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %36)
%38 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 6)
%39 = sext i32 %38 to i64
%40 = inttoptr i64 %39 to i8*
%41 = tail call i32 @strcmp(i8* dereferenceable(1) %40, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%42 = icmp eq i32 %41, 0
%43 = zext i1 %42 to i32
%44 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %43)
%45 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 7)
%46 = sext i32 %45 to i64
%47 = inttoptr i64 %46 to i8*
%48 = tail call i32 @strcmp(i8* dereferenceable(1) %47, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%49 = icmp eq i32 %48, 0
%50 = zext i1 %49 to i32
%51 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %50)
%52 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 8)
%53 = sext i32 %52 to i64
%54 = inttoptr i64 %53 to i8*
%55 = tail call i32 @strcmp(i8* dereferenceable(1) %54, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
%56 = icmp eq i32 %55, 0
%57 = zext i1 %56 to i32
%58 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %57)
%59 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 9)
%60 = sext i32 %59 to i64
%61 = inttoptr i64 %60 to i8*
%62 = tail call i32 @strcmp(i8* dereferenceable(1) %61, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%63 = icmp eq i32 %62, 0
%64 = zext i1 %63 to i32
%65 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %64)
%66 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 10)
%67 = sext i32 %66 to i64
%68 = inttoptr i64 %67 to i8*
%69 = tail call i32 @strcmp(i8* dereferenceable(1) %68, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0))
%70 = icmp eq i32 %69, 0
%71 = zext i1 %70 to i32
%72 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %71)
%73 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 11)
%74 = sext i32 %73 to i64
%75 = inttoptr i64 %74 to i8*
%76 = tail call i32 @strcmp(i8* dereferenceable(1) %75, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%77 = icmp eq i32 %76, 0
%78 = zext i1 %77 to i32
%79 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %78)
%80 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 12)
%81 = sext i32 %80 to i64
%82 = inttoptr i64 %81 to i8*
%83 = tail call i32 @strcmp(i8* dereferenceable(1) %82, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
%84 = icmp eq i32 %83, 0
%85 = zext i1 %84 to i32
%86 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %85)
%87 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 13)
%88 = sext i32 %87 to i64
%89 = inttoptr i64 %88 to i8*
%90 = tail call i32 @strcmp(i8* dereferenceable(1) %89, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0))
%91 = icmp eq i32 %90, 0
%92 = zext i1 %91 to i32
%93 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %92)
%94 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 14)
%95 = sext i32 %94 to i64
%96 = inttoptr i64 %95 to i8*
%97 = tail call i32 @strcmp(i8* dereferenceable(1) %96, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%98 = icmp eq i32 %97, 0
%99 = zext i1 %98 to i32
%100 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %99)
%101 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 15)
%102 = sext i32 %101 to i64
%103 = inttoptr i64 %102 to i8*
%104 = tail call i32 @strcmp(i8* dereferenceable(1) %103, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%105 = icmp eq i32 %104, 0
%106 = zext i1 %105 to i32
%107 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %106)
%108 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 16)
%109 = sext i32 %108 to i64
%110 = inttoptr i64 %109 to i8*
%111 = tail call i32 @strcmp(i8* dereferenceable(1) %110, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%112 = icmp eq i32 %111, 0
%113 = zext i1 %112 to i32
%114 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %113)
%115 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 17)
%116 = sext i32 %115 to i64
%117 = inttoptr i64 %116 to i8*
%118 = tail call i32 @strcmp(i8* dereferenceable(1) %117, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
%119 = icmp eq i32 %118, 0
%120 = zext i1 %119 to i32
%121 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %120)
%122 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 18)
%123 = sext i32 %122 to i64
%124 = inttoptr i64 %123 to i8*
%125 = tail call i32 @strcmp(i8* dereferenceable(1) %124, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0))
%126 = icmp eq i32 %125, 0
%127 = zext i1 %126 to i32
%128 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %127)
%129 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 19)
%130 = sext i32 %129 to i64
%131 = inttoptr i64 %130 to i8*
%132 = tail call i32 @strcmp(i8* dereferenceable(1) %131, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%133 = icmp eq i32 %132, 0
%134 = zext i1 %133 to i32
%135 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %134)
%136 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 20)
%137 = sext i32 %136 to i64
%138 = inttoptr i64 %137 to i8*
%139 = tail call i32 @strcmp(i8* dereferenceable(1) %138, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
%140 = icmp eq i32 %139, 0
%141 = zext i1 %140 to i32
%142 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %141)
%143 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 21)
%144 = sext i32 %143 to i64
%145 = inttoptr i64 %144 to i8*
%146 = tail call i32 @strcmp(i8* dereferenceable(1) %145, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%147 = icmp eq i32 %146, 0
%148 = zext i1 %147 to i32
%149 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %148)
%150 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 22)
%151 = sext i32 %150 to i64
%152 = inttoptr i64 %151 to i8*
%153 = tail call i32 @strcmp(i8* dereferenceable(1) %152, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
%154 = icmp eq i32 %153, 0
%155 = zext i1 %154 to i32
%156 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %155)
%157 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 23)
%158 = sext i32 %157 to i64
%159 = inttoptr i64 %158 to i8*
%160 = tail call i32 @strcmp(i8* dereferenceable(1) %159, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0))
%161 = icmp eq i32 %160, 0
%162 = zext i1 %161 to i32
%163 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %162)
%164 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 24)
%165 = sext i32 %164 to i64
%166 = inttoptr i64 %165 to i8*
%167 = tail call i32 @strcmp(i8* dereferenceable(1) %166, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0))
%168 = icmp eq i32 %167, 0
%169 = zext i1 %168 to i32
%170 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %169)
%171 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 25)
%172 = sext i32 %171 to i64
%173 = inttoptr i64 %172 to i8*
%174 = tail call i32 @strcmp(i8* dereferenceable(1) %173, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%175 = icmp eq i32 %174, 0
%176 = zext i1 %175 to i32
%177 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %176)
%178 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 26)
%179 = sext i32 %178 to i64
%180 = inttoptr i64 %179 to i8*
%181 = tail call i32 @strcmp(i8* dereferenceable(1) %180, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
%182 = icmp eq i32 %181, 0
%183 = zext i1 %182 to i32
%184 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %183)
%185 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 27)
%186 = sext i32 %185 to i64
%187 = inttoptr i64 %186 to i8*
%188 = tail call i32 @strcmp(i8* dereferenceable(1) %187, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
%189 = icmp eq i32 %188, 0
%190 = zext i1 %189 to i32
%191 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %190)
%192 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 28)
%193 = sext i32 %192 to i64
%194 = inttoptr i64 %193 to i8*
%195 = tail call i32 @strcmp(i8* dereferenceable(1) %194, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.27, i64 0, i64 0))
%196 = icmp eq i32 %195, 0
%197 = zext i1 %196 to i32
%198 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %197)
%199 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 29)
%200 = sext i32 %199 to i64
%201 = inttoptr i64 %200 to i8*
%202 = tail call i32 @strcmp(i8* dereferenceable(1) %201, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0))
%203 = icmp eq i32 %202, 0
%204 = zext i1 %203 to i32
%205 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %204)
%206 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 30)
%207 = sext i32 %206 to i64
%208 = inttoptr i64 %207 to i8*
%209 = tail call i32 @strcmp(i8* dereferenceable(1) %208, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0))
%210 = icmp eq i32 %209, 0
%211 = zext i1 %210 to i32
%212 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %211)
%213 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 31)
%214 = sext i32 %213 to i64
%215 = inttoptr i64 %214 to i8*
%216 = tail call i32 @strcmp(i8* dereferenceable(1) %215, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i64 0, i64 0))
%217 = icmp eq i32 %216, 0
%218 = zext i1 %217 to i32
%219 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %218)
%220 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 32)
%221 = sext i32 %220 to i64
%222 = inttoptr i64 %221 to i8*
%223 = tail call i32 @strcmp(i8* dereferenceable(1) %222, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0))
%224 = icmp eq i32 %223, 0
%225 = zext i1 %224 to i32
%226 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %225)
%227 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 33)
%228 = sext i32 %227 to i64
%229 = inttoptr i64 %228 to i8*
%230 = tail call i32 @strcmp(i8* dereferenceable(1) %229, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.32, i64 0, i64 0))
%231 = icmp eq i32 %230, 0
%232 = zext i1 %231 to i32
%233 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %232)
%234 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 34)
%235 = sext i32 %234 to i64
%236 = inttoptr i64 %235 to i8*
%237 = tail call i32 @strcmp(i8* dereferenceable(1) %236, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0))
%238 = icmp eq i32 %237, 0
%239 = zext i1 %238 to i32
%240 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %239)
%241 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 35)
%242 = sext i32 %241 to i64
%243 = inttoptr i64 %242 to i8*
%244 = tail call i32 @strcmp(i8* dereferenceable(1) %243, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0))
%245 = icmp eq i32 %244, 0
%246 = zext i1 %245 to i32
%247 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %246)
%248 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 36)
%249 = sext i32 %248 to i64
%250 = inttoptr i64 %249 to i8*
%251 = tail call i32 @strcmp(i8* dereferenceable(1) %250, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0))
%252 = icmp eq i32 %251, 0
%253 = zext i1 %252 to i32
%254 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %253)
%255 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 37)
%256 = sext i32 %255 to i64
%257 = inttoptr i64 %256 to i8*
%258 = tail call i32 @strcmp(i8* dereferenceable(1) %257, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.36, i64 0, i64 0))
%259 = icmp eq i32 %258, 0
%260 = zext i1 %259 to i32
%261 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %260)
%262 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 38)
%263 = sext i32 %262 to i64
%264 = inttoptr i64 %263 to i8*
%265 = tail call i32 @strcmp(i8* dereferenceable(1) %264, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.37, i64 0, i64 0))
%266 = icmp eq i32 %265, 0
%267 = zext i1 %266 to i32
%268 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %267)
%269 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 39)
%270 = sext i32 %269 to i64
%271 = inttoptr i64 %270 to i8*
%272 = tail call i32 @strcmp(i8* dereferenceable(1) %271, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0))
%273 = icmp eq i32 %272, 0
%274 = zext i1 %273 to i32
%275 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %274)
%276 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 40)
%277 = sext i32 %276 to i64
%278 = inttoptr i64 %277 to i8*
%279 = tail call i32 @strcmp(i8* dereferenceable(1) %278, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0))
%280 = icmp eq i32 %279, 0
%281 = zext i1 %280 to i32
%282 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %281)
%283 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 41)
%284 = sext i32 %283 to i64
%285 = inttoptr i64 %284 to i8*
%286 = tail call i32 @strcmp(i8* dereferenceable(1) %285, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0))
%287 = icmp eq i32 %286, 0
%288 = zext i1 %287 to i32
%289 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %288)
%290 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 42)
%291 = sext i32 %290 to i64
%292 = inttoptr i64 %291 to i8*
%293 = tail call i32 @strcmp(i8* dereferenceable(1) %292, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.41, i64 0, i64 0))
%294 = icmp eq i32 %293, 0
%295 = zext i1 %294 to i32
%296 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %295)
%297 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 43)
%298 = sext i32 %297 to i64
%299 = inttoptr i64 %298 to i8*
%300 = tail call i32 @strcmp(i8* dereferenceable(1) %299, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i64 0, i64 0))
%301 = icmp eq i32 %300, 0
%302 = zext i1 %301 to i32
%303 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %302)
%304 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 44)
%305 = sext i32 %304 to i64
%306 = inttoptr i64 %305 to i8*
%307 = tail call i32 @strcmp(i8* dereferenceable(1) %306, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.43, i64 0, i64 0))
%308 = icmp eq i32 %307, 0
%309 = zext i1 %308 to i32
%310 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %309)
%311 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 45)
%312 = sext i32 %311 to i64
%313 = inttoptr i64 %312 to i8*
%314 = tail call i32 @strcmp(i8* dereferenceable(1) %313, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0))
%315 = icmp eq i32 %314, 0
%316 = zext i1 %315 to i32
%317 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %316)
%318 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 46)
%319 = sext i32 %318 to i64
%320 = inttoptr i64 %319 to i8*
%321 = tail call i32 @strcmp(i8* dereferenceable(1) %320, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0))
%322 = icmp eq i32 %321, 0
%323 = zext i1 %322 to i32
%324 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %323)
%325 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 47)
%326 = sext i32 %325 to i64
%327 = inttoptr i64 %326 to i8*
%328 = tail call i32 @strcmp(i8* dereferenceable(1) %327, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0))
%329 = icmp eq i32 %328, 0
%330 = zext i1 %329 to i32
%331 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %330)
%332 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 48)
%333 = sext i32 %332 to i64
%334 = inttoptr i64 %333 to i8*
%335 = tail call i32 @strcmp(i8* dereferenceable(1) %334, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.47, i64 0, i64 0))
%336 = icmp eq i32 %335, 0
%337 = zext i1 %336 to i32
%338 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %337)
%339 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 49)
%340 = sext i32 %339 to i64
%341 = inttoptr i64 %340 to i8*
%342 = tail call i32 @strcmp(i8* dereferenceable(1) %341, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0))
%343 = icmp eq i32 %342, 0
%344 = zext i1 %343 to i32
%345 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %344)
%346 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 50)
%347 = sext i32 %346 to i64
%348 = inttoptr i64 %347 to i8*
%349 = tail call i32 @strcmp(i8* dereferenceable(1) %348, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.49, i64 0, i64 0))
%350 = icmp eq i32 %349, 0
%351 = zext i1 %350 to i32
%352 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %351)
%353 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 51)
%354 = sext i32 %353 to i64
%355 = inttoptr i64 %354 to i8*
%356 = tail call i32 @strcmp(i8* dereferenceable(1) %355, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.50, i64 0, i64 0))
%357 = icmp eq i32 %356, 0
%358 = zext i1 %357 to i32
%359 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %358)
%360 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 52)
%361 = sext i32 %360 to i64
%362 = inttoptr i64 %361 to i8*
%363 = tail call i32 @strcmp(i8* dereferenceable(1) %362, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0))
%364 = icmp eq i32 %363, 0
%365 = zext i1 %364 to i32
%366 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %365)
%367 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 53)
%368 = sext i32 %367 to i64
%369 = inttoptr i64 %368 to i8*
%370 = tail call i32 @strcmp(i8* dereferenceable(1) %369, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.52, i64 0, i64 0))
%371 = icmp eq i32 %370, 0
%372 = zext i1 %371 to i32
%373 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %372)
%374 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 54)
%375 = sext i32 %374 to i64
%376 = inttoptr i64 %375 to i8*
%377 = tail call i32 @strcmp(i8* dereferenceable(1) %376, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0))
%378 = icmp eq i32 %377, 0
%379 = zext i1 %378 to i32
%380 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %379)
%381 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 55)
%382 = sext i32 %381 to i64
%383 = inttoptr i64 %382 to i8*
%384 = tail call i32 @strcmp(i8* dereferenceable(1) %383, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.54, i64 0, i64 0))
%385 = icmp eq i32 %384, 0
%386 = zext i1 %385 to i32
%387 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %386)
%388 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 56)
%389 = sext i32 %388 to i64
%390 = inttoptr i64 %389 to i8*
%391 = tail call i32 @strcmp(i8* dereferenceable(1) %390, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.55, i64 0, i64 0))
%392 = icmp eq i32 %391, 0
%393 = zext i1 %392 to i32
%394 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %393)
%395 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 57)
%396 = sext i32 %395 to i64
%397 = inttoptr i64 %396 to i8*
%398 = tail call i32 @strcmp(i8* dereferenceable(1) %397, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.56, i64 0, i64 0))
%399 = icmp eq i32 %398, 0
%400 = zext i1 %399 to i32
%401 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %400)
%402 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 58)
%403 = sext i32 %402 to i64
%404 = inttoptr i64 %403 to i8*
%405 = tail call i32 @strcmp(i8* dereferenceable(1) %404, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.57, i64 0, i64 0))
%406 = icmp eq i32 %405, 0
%407 = zext i1 %406 to i32
%408 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %407)
%409 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 59)
%410 = sext i32 %409 to i64
%411 = inttoptr i64 %410 to i8*
%412 = tail call i32 @strcmp(i8* dereferenceable(1) %411, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.58, i64 0, i64 0))
%413 = icmp eq i32 %412, 0
%414 = zext i1 %413 to i32
%415 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %414)
%416 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 60)
%417 = sext i32 %416 to i64
%418 = inttoptr i64 %417 to i8*
%419 = tail call i32 @strcmp(i8* dereferenceable(1) %418, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0))
%420 = icmp eq i32 %419, 0
%421 = zext i1 %420 to i32
%422 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %421)
%423 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 61)
%424 = sext i32 %423 to i64
%425 = inttoptr i64 %424 to i8*
%426 = tail call i32 @strcmp(i8* dereferenceable(1) %425, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.60, i64 0, i64 0))
%427 = icmp eq i32 %426, 0
%428 = zext i1 %427 to i32
%429 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %428)
%430 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 62)
%431 = sext i32 %430 to i64
%432 = inttoptr i64 %431 to i8*
%433 = tail call i32 @strcmp(i8* dereferenceable(1) %432, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0))
%434 = icmp eq i32 %433, 0
%435 = zext i1 %434 to i32
%436 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %435)
%437 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 63)
%438 = sext i32 %437 to i64
%439 = inttoptr i64 %438 to i8*
%440 = tail call i32 @strcmp(i8* dereferenceable(1) %439, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.62, i64 0, i64 0))
%441 = icmp eq i32 %440, 0
%442 = zext i1 %441 to i32
%443 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %442)
%444 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 64)
%445 = sext i32 %444 to i64
%446 = inttoptr i64 %445 to i8*
%447 = tail call i32 @strcmp(i8* dereferenceable(1) %446, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.63, i64 0, i64 0))
%448 = icmp eq i32 %447, 0
%449 = zext i1 %448 to i32
%450 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %449)
%451 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 65)
%452 = sext i32 %451 to i64
%453 = inttoptr i64 %452 to i8*
%454 = tail call i32 @strcmp(i8* dereferenceable(1) %453, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.64, i64 0, i64 0))
%455 = icmp eq i32 %454, 0
%456 = zext i1 %455 to i32
%457 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %456)
%458 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 66)
%459 = sext i32 %458 to i64
%460 = inttoptr i64 %459 to i8*
%461 = tail call i32 @strcmp(i8* dereferenceable(1) %460, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.65, i64 0, i64 0))
%462 = icmp eq i32 %461, 0
%463 = zext i1 %462 to i32
%464 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %463)
%465 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 67)
%466 = sext i32 %465 to i64
%467 = inttoptr i64 %466 to i8*
%468 = tail call i32 @strcmp(i8* dereferenceable(1) %467, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.66, i64 0, i64 0))
%469 = icmp eq i32 %468, 0
%470 = zext i1 %469 to i32
%471 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %470)
%472 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 68)
%473 = sext i32 %472 to i64
%474 = inttoptr i64 %473 to i8*
%475 = tail call i32 @strcmp(i8* dereferenceable(1) %474, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.67, i64 0, i64 0))
%476 = icmp eq i32 %475, 0
%477 = zext i1 %476 to i32
%478 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %477)
%479 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 69)
%480 = sext i32 %479 to i64
%481 = inttoptr i64 %480 to i8*
%482 = tail call i32 @strcmp(i8* dereferenceable(1) %481, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0))
%483 = icmp eq i32 %482, 0
%484 = zext i1 %483 to i32
%485 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %484)
%486 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 70)
%487 = sext i32 %486 to i64
%488 = inttoptr i64 %487 to i8*
%489 = tail call i32 @strcmp(i8* dereferenceable(1) %488, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0))
%490 = icmp eq i32 %489, 0
%491 = zext i1 %490 to i32
%492 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %491)
%493 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 71)
%494 = sext i32 %493 to i64
%495 = inttoptr i64 %494 to i8*
%496 = tail call i32 @strcmp(i8* dereferenceable(1) %495, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.70, i64 0, i64 0))
%497 = icmp eq i32 %496, 0
%498 = zext i1 %497 to i32
%499 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %498)
%500 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 72)
%501 = sext i32 %500 to i64
%502 = inttoptr i64 %501 to i8*
%503 = tail call i32 @strcmp(i8* dereferenceable(1) %502, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.71, i64 0, i64 0))
%504 = icmp eq i32 %503, 0
%505 = zext i1 %504 to i32
%506 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %505)
%507 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 73)
%508 = sext i32 %507 to i64
%509 = inttoptr i64 %508 to i8*
%510 = tail call i32 @strcmp(i8* dereferenceable(1) %509, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.72, i64 0, i64 0))
%511 = icmp eq i32 %510, 0
%512 = zext i1 %511 to i32
%513 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %512)
%514 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 74)
%515 = sext i32 %514 to i64
%516 = inttoptr i64 %515 to i8*
%517 = tail call i32 @strcmp(i8* dereferenceable(1) %516, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.73, i64 0, i64 0))
%518 = icmp eq i32 %517, 0
%519 = zext i1 %518 to i32
%520 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %519)
%521 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 75)
%522 = sext i32 %521 to i64
%523 = inttoptr i64 %522 to i8*
%524 = tail call i32 @strcmp(i8* dereferenceable(1) %523, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.74, i64 0, i64 0))
%525 = icmp eq i32 %524, 0
%526 = zext i1 %525 to i32
%527 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %526)
%528 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 76)
%529 = sext i32 %528 to i64
%530 = inttoptr i64 %529 to i8*
%531 = tail call i32 @strcmp(i8* dereferenceable(1) %530, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i64 0, i64 0))
%532 = icmp eq i32 %531, 0
%533 = zext i1 %532 to i32
%534 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %533)
%535 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 77)
%536 = sext i32 %535 to i64
%537 = inttoptr i64 %536 to i8*
%538 = tail call i32 @strcmp(i8* dereferenceable(1) %537, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.76, i64 0, i64 0))
%539 = icmp eq i32 %538, 0
%540 = zext i1 %539 to i32
%541 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %540)
%542 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 78)
%543 = sext i32 %542 to i64
%544 = inttoptr i64 %543 to i8*
%545 = tail call i32 @strcmp(i8* dereferenceable(1) %544, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.77, i64 0, i64 0))
%546 = icmp eq i32 %545, 0
%547 = zext i1 %546 to i32
%548 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %547)
%549 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 79)
%550 = sext i32 %549 to i64
%551 = inttoptr i64 %550 to i8*
%552 = tail call i32 @strcmp(i8* dereferenceable(1) %551, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.78, i64 0, i64 0))
%553 = icmp eq i32 %552, 0
%554 = zext i1 %553 to i32
%555 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %554)
%556 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 80)
%557 = sext i32 %556 to i64
%558 = inttoptr i64 %557 to i8*
%559 = tail call i32 @strcmp(i8* dereferenceable(1) %558, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.79, i64 0, i64 0))
%560 = icmp eq i32 %559, 0
%561 = zext i1 %560 to i32
%562 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %561)
%563 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 81)
%564 = sext i32 %563 to i64
%565 = inttoptr i64 %564 to i8*
%566 = tail call i32 @strcmp(i8* dereferenceable(1) %565, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.80, i64 0, i64 0))
%567 = icmp eq i32 %566, 0
%568 = zext i1 %567 to i32
%569 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %568)
%570 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 82)
%571 = sext i32 %570 to i64
%572 = inttoptr i64 %571 to i8*
%573 = tail call i32 @strcmp(i8* dereferenceable(1) %572, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.81, i64 0, i64 0))
%574 = icmp eq i32 %573, 0
%575 = zext i1 %574 to i32
%576 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %575)
%577 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 83)
%578 = sext i32 %577 to i64
%579 = inttoptr i64 %578 to i8*
%580 = tail call i32 @strcmp(i8* dereferenceable(1) %579, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.82, i64 0, i64 0))
%581 = icmp eq i32 %580, 0
%582 = zext i1 %581 to i32
%583 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %582)
%584 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 84)
%585 = sext i32 %584 to i64
%586 = inttoptr i64 %585 to i8*
%587 = tail call i32 @strcmp(i8* dereferenceable(1) %586, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.83, i64 0, i64 0))
%588 = icmp eq i32 %587, 0
%589 = zext i1 %588 to i32
%590 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %589)
%591 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 85)
%592 = sext i32 %591 to i64
%593 = inttoptr i64 %592 to i8*
%594 = tail call i32 @strcmp(i8* dereferenceable(1) %593, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.84, i64 0, i64 0))
%595 = icmp eq i32 %594, 0
%596 = zext i1 %595 to i32
%597 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %596)
%598 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 86)
%599 = sext i32 %598 to i64
%600 = inttoptr i64 %599 to i8*
%601 = tail call i32 @strcmp(i8* dereferenceable(1) %600, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.85, i64 0, i64 0))
%602 = icmp eq i32 %601, 0
%603 = zext i1 %602 to i32
%604 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %603)
%605 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 87)
%606 = sext i32 %605 to i64
%607 = inttoptr i64 %606 to i8*
%608 = tail call i32 @strcmp(i8* dereferenceable(1) %607, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.86, i64 0, i64 0))
%609 = icmp eq i32 %608, 0
%610 = zext i1 %609 to i32
%611 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %610)
%612 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 88)
%613 = sext i32 %612 to i64
%614 = inttoptr i64 %613 to i8*
%615 = tail call i32 @strcmp(i8* dereferenceable(1) %614, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.87, i64 0, i64 0))
%616 = icmp eq i32 %615, 0
%617 = zext i1 %616 to i32
%618 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %617)
%619 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 89)
%620 = sext i32 %619 to i64
%621 = inttoptr i64 %620 to i8*
%622 = tail call i32 @strcmp(i8* dereferenceable(1) %621, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.88, i64 0, i64 0))
%623 = icmp eq i32 %622, 0
%624 = zext i1 %623 to i32
%625 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %624)
%626 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 90)
%627 = sext i32 %626 to i64
%628 = inttoptr i64 %627 to i8*
%629 = tail call i32 @strcmp(i8* dereferenceable(1) %628, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.89, i64 0, i64 0))
%630 = icmp eq i32 %629, 0
%631 = zext i1 %630 to i32
%632 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %631)
%633 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 91)
%634 = sext i32 %633 to i64
%635 = inttoptr i64 %634 to i8*
%636 = tail call i32 @strcmp(i8* dereferenceable(1) %635, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.90, i64 0, i64 0))
%637 = icmp eq i32 %636, 0
%638 = zext i1 %637 to i32
%639 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %638)
%640 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 92)
%641 = sext i32 %640 to i64
%642 = inttoptr i64 %641 to i8*
%643 = tail call i32 @strcmp(i8* dereferenceable(1) %642, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.91, i64 0, i64 0))
%644 = icmp eq i32 %643, 0
%645 = zext i1 %644 to i32
%646 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %645)
%647 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 93)
%648 = sext i32 %647 to i64
%649 = inttoptr i64 %648 to i8*
%650 = tail call i32 @strcmp(i8* dereferenceable(1) %649, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.92, i64 0, i64 0))
%651 = icmp eq i32 %650, 0
%652 = zext i1 %651 to i32
%653 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %652)
%654 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 94)
%655 = sext i32 %654 to i64
%656 = inttoptr i64 %655 to i8*
%657 = tail call i32 @strcmp(i8* dereferenceable(1) %656, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.93, i64 0, i64 0))
%658 = icmp eq i32 %657, 0
%659 = zext i1 %658 to i32
%660 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %659)
%661 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 95)
%662 = sext i32 %661 to i64
%663 = inttoptr i64 %662 to i8*
%664 = tail call i32 @strcmp(i8* dereferenceable(1) %663, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.94, i64 0, i64 0))
%665 = icmp eq i32 %664, 0
%666 = zext i1 %665 to i32
%667 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %666)
%668 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 96)
%669 = sext i32 %668 to i64
%670 = inttoptr i64 %669 to i8*
%671 = tail call i32 @strcmp(i8* dereferenceable(1) %670, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.95, i64 0, i64 0))
%672 = icmp eq i32 %671, 0
%673 = zext i1 %672 to i32
%674 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %673)
%675 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 97)
%676 = sext i32 %675 to i64
%677 = inttoptr i64 %676 to i8*
%678 = tail call i32 @strcmp(i8* dereferenceable(1) %677, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.96, i64 0, i64 0))
%679 = icmp eq i32 %678, 0
%680 = zext i1 %679 to i32
%681 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %680)
%682 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 98)
%683 = sext i32 %682 to i64
%684 = inttoptr i64 %683 to i8*
%685 = tail call i32 @strcmp(i8* dereferenceable(1) %684, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.97, i64 0, i64 0))
%686 = icmp eq i32 %685, 0
%687 = zext i1 %686 to i32
%688 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %687)
%689 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 99)
%690 = sext i32 %689 to i64
%691 = inttoptr i64 %690 to i8*
%692 = tail call i32 @strcmp(i8* dereferenceable(1) %691, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.98, i64 0, i64 0))
%693 = icmp eq i32 %692, 0
%694 = zext i1 %693 to i32
%695 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %694)
%696 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 100)
%697 = sext i32 %696 to i64
%698 = inttoptr i64 %697 to i8*
%699 = tail call i32 @strcmp(i8* dereferenceable(1) %698, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.99, i64 0, i64 0))
%700 = icmp eq i32 %699, 0
%701 = zext i1 %700 to i32
%702 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %701)
%703 = tail call i32 (i32, ...) bitcast (i32 (...)* @intToRoman to i32 (i32, ...)*)(i32 1994)
%704 = sext i32 %703 to i64
%705 = inttoptr i64 %704 to i8*
%706 = tail call i32 @strcmp(i8* dereferenceable(1) %705, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.100, i64 0, i64 0))
%707 = icmp eq i32 %706, 0
%708 = zext i1 %707 to i32
%709 = tail call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %708)
ret i32 0
}