#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int main(void) {
  unsigned int contatoreNumeri = 1;
  unsigned int contatoreX;
  unsigned int i;
  unsigned int restoX;
  printf("%15s \t%14s", "Numeri Decimali", "Numeri Romani\n");
  do {
    if (contatoreNumeri == 100) {
      printf("%-15d \t%-14c\n", contatoreNumeri, 'C');
    } else if (contatoreNumeri < 10) {
      printf("%-15d  \t", contatoreNumeri);
      if (contatoreNumeri < 4) {
        i = 1;
        while (i <= contatoreNumeri) {
          printf("%c", 'I');
          i++;
        }
      } else if (contatoreNumeri == 4) {
        i = 1;
        printf("%c", 'I');
        printf("%c", 'V');
      } else if (contatoreNumeri > 4 && contatoreNumeri <= 9) {
        printf("%c", 'V');
        i = 1;
        while (i <= (contatoreNumeri - 5)) {
          printf("%c", 'I');
          i++;
        }
      } else if (contatoreNumeri == 9) {
        printf("%c", 'I');
        printf("%c", 'X');
      }
    } else if ((contatoreX = contatoreNumeri / 10) >= 1) {
      printf("%-15d  \t", contatoreNumeri);
      if (contatoreX < 5) {
        if (((restoX = (contatoreNumeri % 10)) == 0)) {
          i = 1;
          do {
            printf("%c", 'X');
            i++;
          } while (i <= contatoreX);
        } else {
          if (restoX < 4) {
            i = 1;
            do {
              printf("%c", 'X');
              i++;
            } while (i <= contatoreX);
            i = 1;
            do {
              printf("%c", 'I');
              i++;
            } while (i <= restoX);
          } else if (restoX == 4) {
            i = 1;
            while (i <= contatoreX) {
              printf("%c", 'X');
              i++;
            }
            printf("%c", 'I');
            printf("%c", 'V');
          } else if (restoX > 4 && restoX <= 9) {
            i = 1;
            while (i <= contatoreX) {
              printf("%c", 'X');
              i++;
            }
            printf("%c", 'V');
            i = 1;
            while (i <= (restoX - 5)) {
              printf("%c", 'I');
              i++;
            }
          }
        }
      } else {
        contatoreX -= 5;
        printf("%c", 'L');
        if (((restoX = ((contatoreNumeri - 50) % 10)) == 0)) {
          i = 1;
          while (i <= contatoreX) {
            printf("%c", 'X');
            i++;
          }
        } else {
          if (restoX < 4) {
            i = 1;
            while (i <= contatoreX) {
              printf("%c", 'X');
              i++;
            }
            i = 1;
            while (i <= restoX) {
              printf("%c", 'I');
              i++;
            }
          } else if (restoX == 4) {
            i = 1;
            while (i <= contatoreX) {
              printf("%c", 'X');
              i++;
            }
            printf("%c", 'I');
            printf("%c", 'V');
          } else if (restoX > 4 && restoX <= 9) {
            i = 1;
            while (i <= contatoreX) {
              printf("%c", 'X');
              i++;
            }
            if (restoX == 4) {
              printf("%c", 'I');
            }
            printf("%c", 'V');
            i = 1;
            while (i <= (restoX - 5)) {
              printf("%c", 'I');
              i++;
            }
          } else if (restoX == 9) {
            printf("%c", 'I');
            printf("%c", 'X');
          }
        }
      }
    }
    printf("\n");
    contatoreNumeri++;
  } while (contatoreNumeri <= (unsigned int)100);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1,-0x8(%rbp)
lea    0xed3(%rip),%rdi
lea    0xed7(%rip),%rsi
lea    0xee0(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x64,-0x8(%rbp)
jne    1167 <main+0x57>
mov    -0x8(%rbp),%esi
lea    0xed4(%rip),%rdi
mov    $0x43,%edx
mov    $0x0,%al
call   1030 <printf@plt>
jmp    170a <main+0x5fa>
cmpl   $0xa,-0x8(%rbp)
jae    12aa <main+0x19a>
mov    -0x8(%rbp),%esi
lea    0xebd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x4,-0x8(%rbp)
jae    11c5 <main+0xb5>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x8(%rbp),%eax
ja     11c0 <main+0xb0>
lea    0xe9b(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1193 <main+0x83>
jmp    12a5 <main+0x195>
cmpl   $0x4,-0x8(%rbp)
jne    1201 <main+0xf1>
movl   $0x1,-0x10(%rbp)
lea    0xe64(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe51(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12a0 <main+0x190>
cmpl   $0x4,-0x8(%rbp)
jbe    1266 <main+0x156>
cmpl   $0x9,-0x8(%rbp)
ja     1266 <main+0x156>
lea    0xe25(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x5,%ecx
cmp    %ecx,%eax
ja     1261 <main+0x151>
lea    0xdfa(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    122f <main+0x11f>
jmp    129b <main+0x18b>
cmpl   $0x9,-0x8(%rbp)
jne    1296 <main+0x186>
lea    0xdca(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdb7(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    129b <main+0x18b>
jmp    12a0 <main+0x190>
jmp    12a5 <main+0x195>
jmp    1705 <main+0x5f5>
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
xor    %edx,%edx
div    %ecx
mov    %eax,-0xc(%rbp)
cmp    $0x1,%eax
jb     1700 <main+0x5f0>
mov    -0x8(%rbp),%esi
lea    0xd6c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x5,-0xc(%rbp)
jae    14ac <main+0x39c>
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
xor    %edx,%edx
div    %ecx
mov    %edx,-0x14(%rbp)
cmp    $0x0,%edx
jne    1329 <main+0x219>
movl   $0x1,-0x10(%rbp)
lea    0xd3e(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jbe    12fc <main+0x1ec>
jmp    14a7 <main+0x397>
cmpl   $0x4,-0x14(%rbp)
jae    1396 <main+0x286>
movl   $0x1,-0x10(%rbp)
lea    0xd00(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jbe    133a <main+0x22a>
movl   $0x1,-0x10(%rbp)
lea    0xcd1(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jbe    1369 <main+0x259>
jmp    14a2 <main+0x392>
cmpl   $0x4,-0x14(%rbp)
jne    13ff <main+0x2ef>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     13d4 <main+0x2c4>
lea    0xc87(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    13a7 <main+0x297>
lea    0xc66(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc53(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    149d <main+0x38d>
cmpl   $0x4,-0x14(%rbp)
jbe    1498 <main+0x388>
cmpl   $0x9,-0x14(%rbp)
ja     1498 <main+0x388>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     1447 <main+0x337>
lea    0xc14(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    141a <main+0x30a>
lea    0xbf3(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x5,%ecx
cmp    %ecx,%eax
ja     1493 <main+0x383>
lea    0xbc8(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1461 <main+0x351>
jmp    1498 <main+0x388>
jmp    149d <main+0x38d>
jmp    14a2 <main+0x392>
jmp    14a7 <main+0x397>
jmp    16fb <main+0x5eb>
mov    -0xc(%rbp),%eax
sub    $0x5,%eax
mov    %eax,-0xc(%rbp)
lea    0xb85(%rip),%rdi
mov    $0x4c,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
sub    $0x32,%eax
mov    $0xa,%ecx
xor    %edx,%edx
div    %ecx
mov    %edx,-0x14(%rbp)
cmp    $0x0,%edx
jne    151c <main+0x40c>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     1517 <main+0x407>
lea    0xb44(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14ea <main+0x3da>
jmp    16f6 <main+0x5e6>
cmpl   $0x4,-0x14(%rbp)
jae    1593 <main+0x483>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     155a <main+0x44a>
lea    0xb01(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    152d <main+0x41d>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
ja     158e <main+0x47e>
lea    0xacd(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1561 <main+0x451>
jmp    16f1 <main+0x5e1>
cmpl   $0x4,-0x14(%rbp)
jne    15fc <main+0x4ec>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     15d1 <main+0x4c1>
lea    0xa8a(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    15a4 <main+0x494>
lea    0xa69(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xa56(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16ec <main+0x5dc>
cmpl   $0x4,-0x14(%rbp)
jbe    16b2 <main+0x5a2>
cmpl   $0x9,-0x14(%rbp)
ja     16b2 <main+0x5a2>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
ja     1644 <main+0x534>
lea    0xa17(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1617 <main+0x507>
cmpl   $0x4,-0x14(%rbp)
jne    1661 <main+0x551>
lea    0x9ec(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x9d9(%rip),%rdi
mov    $0x56,%esi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x5,%ecx
cmp    %ecx,%eax
ja     16ad <main+0x59d>
lea    0x9ae(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    167b <main+0x56b>
jmp    16e7 <main+0x5d7>
cmpl   $0x9,-0x14(%rbp)
jne    16e2 <main+0x5d2>
lea    0x97e(%rip),%rdi
mov    $0x49,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x96b(%rip),%rdi
mov    $0x58,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e7 <main+0x5d7>
jmp    16ec <main+0x5dc>
jmp    16f1 <main+0x5e1>
jmp    16f6 <main+0x5e6>
jmp    16fb <main+0x5eb>
jmp    1700 <main+0x5f0>
jmp    1705 <main+0x5f5>
jmp    170a <main+0x5fa>
lea    0x925(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
cmpl   $0x64,-0x8(%rbp)
jbe    1142 <main+0x32>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
lea    0xece(%rip),%rdi
lea    0xed2(%rip),%rsi
lea    0xedb(%rip),%rdx
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xcccccccd,%r15d
lea    0xee4(%rip),%r12
mov    $0x1,%r13d
jmp    118c <main+0x6c>
nopl   0x0(%rax)
mov    $0x49,%edi
call   1030 <putchar@plt>
mov    $0x56,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%r13d
cmp    $0x64,%r13d
je     1497 <main+0x377>
mov    %r13d,%ebx
imul   %r15,%rbx
shr    $0x23,%rbx
cmp    $0x2,%ebx
mov    $0x1,%eax
cmovb  %eax,%ebx
mov    %r12,%rdi
mov    %r13d,%esi
xor    %eax,%eax
cmp    $0x9,%r13d
ja     11f0 <main+0xd0>
call   1040 <printf@plt>
cmp    $0x3,%r13d
ja     1290 <main+0x170>
mov    %r13d,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    11d0 <main+0xb0>
jmp    1174 <main+0x54>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
call   1040 <printf@plt>
movzbl %r13b,%r14d
cmp    $0x31,%r13d
ja     12e0 <main+0x1c0>
imul   $0xcd,%r14d,%eax
shr    $0xa,%eax
and    $0xfffffffe,%eax
lea    (%rax,%rax,4),%eax
sub    %al,%r14b
je     1270 <main+0x150>
movzbl %r14b,%ebp
cmp    $0x3,%bpl
ja     1396 <main+0x276>
cs nopw 0x0(%rax,%rax,1)
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1230 <main+0x110>
mov    $0x1,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    %ebp,%ebx
jbe    1250 <main+0x130>
jmp    1174 <main+0x54>
cs nopw 0x0(%rax,%rax,1)
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1270 <main+0x150>
jmp    1174 <main+0x54>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    $0x4,%r13d
je     1160 <main+0x40>
mov    $0x56,%edi
call   1030 <putchar@plt>
mov    %r13d,%ebx
add    $0xfffffffb,%ebx
je     1174 <main+0x54>
mov    $0x1,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    %ebx,%ebp
jbe    12c0 <main+0x1a0>
jmp    1174 <main+0x54>
cs nopw 0x0(%rax,%rax,1)
imul   $0xcd,%r14d,%ebx
shr    $0xb,%ebx
add    $0xfffffffb,%ebx
mov    $0x4c,%edi
call   1030 <putchar@plt>
add    $0xce,%r14b
movzbl %r14b,%eax
imul   $0xcd,%eax,%ecx
shr    $0xa,%ecx
and    $0xfffffffe,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %cl,%al
je     1367 <main+0x247>
movzbl %al,%r14d
cmp    $0x3,%r14b
ja     13c4 <main+0x2a4>
test   %ebx,%ebx
je     1341 <main+0x221>
mov    $0x1,%ebp
nopl   0x0(%rax)
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    %ebx,%ebp
jbe    1330 <main+0x210>
mov    $0x1,%ebx
cs nopw 0x0(%rax,%rax,1)
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    %r14d,%ebx
jbe    1350 <main+0x230>
jmp    1174 <main+0x54>
test   %ebx,%ebx
je     1174 <main+0x54>
mov    $0x1,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    %ebx,%ebp
jbe    1380 <main+0x260>
jmp    1174 <main+0x54>
cmp    $0x4,%r14b
jne    13f6 <main+0x2d6>
cmp    $0xa,%r13b
jb     1160 <main+0x40>
cs nopw 0x0(%rax,%rax,1)
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    13b0 <main+0x290>
jmp    1160 <main+0x40>
cmp    $0x4,%al
jne    1446 <main+0x326>
test   %ebx,%ebx
je     1160 <main+0x40>
mov    $0x1,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    %ebx,%ebp
jbe    13e0 <main+0x2c0>
jmp    1160 <main+0x40>
cmp    $0xa,%r13b
jb     140f <main+0x2ef>
nopl   0x0(%rax)
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1400 <main+0x2e0>
mov    $0x56,%edi
call   1030 <putchar@plt>
add    $0xfffffffb,%ebp
je     1174 <main+0x54>
mov    $0x1,%ebx
nopw   0x0(%rax,%rax,1)
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    %ebp,%ebx
jbe    1430 <main+0x310>
jmp    1174 <main+0x54>
test   %ebx,%ebx
je     1461 <main+0x341>
mov    $0x1,%ebp
nop
mov    $0x58,%edi
call   1030 <putchar@plt>
add    $0x1,%ebp
cmp    %ebx,%ebp
jbe    1450 <main+0x330>
mov    $0x56,%edi
call   1030 <putchar@plt>
add    $0xfffffffb,%r14d
je     1174 <main+0x54>
mov    $0x1,%ebx
nopw   0x0(%rax,%rax,1)
mov    $0x49,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    %r14d,%ebx
jbe    1480 <main+0x360>
jmp    1174 <main+0x54>
lea    0xb8c(%rip),%rdi
mov    $0x64,%esi
mov    $0x43,%edx
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [11 x i8] c"%15s \09%14s\00"
@.str.1 = [16 x i8] c"Numeri Decimali\00"
@.str.2 = [15 x i8] c"Numeri Romani\0A\00"
@.str.3 = [14 x i8] c"%-15d \09%-14c\0A\00"
@.str.4 = [9 x i8] c"%-15d \09\00"
@.str.5 = [3 x i8] c"%c\00"
@.str.6 = [2 x i8] c"\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 0, i32* %1
store i32 1, i32* %2
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.2, i64 0, i64 0))
br label %7
7: ; preds = %261, %0
%8 = load i32, i32* %2
%9 = icmp eq i32 %8, 100
br i1 %9, label %10, label %13
10: ; preds = %7
%11 = load i32, i32* %2
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), i32 %11, i32 67)
br label %257
13: ; preds = %7
%14 = load i32, i32* %2
%15 = icmp ult i32 %14, 10
br i1 %15, label %16, label %65
16: ; preds = %13
%17 = load i32, i32* %2
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %17)
%19 = load i32, i32* %2
%20 = icmp ult i32 %19, 4
br i1 %20, label %21, label %31
21: ; preds = %16
store i32 1, i32* %4
br label %22
22: ; preds = %26, %21
%23 = load i32, i32* %4
%24 = load i32, i32* %2
%25 = icmp ule i32 %23, %24
br i1 %25, label %26, label %30
26: ; preds = %22
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%28 = load i32, i32* %4
%29 = add i32 %28, 1
store i32 %29, i32* %4
br label %22
30: ; preds = %22
br label %64
31: ; preds = %16
%32 = load i32, i32* %2
%33 = icmp eq i32 %32, 4
br i1 %33, label %34, label %37
34: ; preds = %31
store i32 1, i32* %4
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%36 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
br label %63
37: ; preds = %31
%38 = load i32, i32* %2
%39 = icmp ugt i32 %38, 4
br i1 %39, label %40, label %55
40: ; preds = %37
%41 = load i32, i32* %2
%42 = icmp ule i32 %41, 9
br i1 %42, label %43, label %55
43: ; preds = %40
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
store i32 1, i32* %4
br label %45
45: ; preds = %50, %43
%46 = load i32, i32* %4
%47 = load i32, i32* %2
%48 = sub i32 %47, 5
%49 = icmp ule i32 %46, %48
br i1 %49, label %50, label %54
50: ; preds = %45
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%52 = load i32, i32* %4
%53 = add i32 %52, 1
store i32 %53, i32* %4
br label %45
54: ; preds = %45
br label %62
55: ; preds = %40, %37
%56 = load i32, i32* %2
%57 = icmp eq i32 %56, 9
br i1 %57, label %58, label %61
58: ; preds = %55
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
br label %61
61: ; preds = %58, %55
br label %62
62: ; preds = %61, %54
br label %63
63: ; preds = %62, %34
br label %64
64: ; preds = %63, %30
br label %256
65: ; preds = %13
%66 = load i32, i32* %2
%67 = udiv i32 %66, 10
store i32 %67, i32* %3
%68 = icmp uge i32 %67, 1
br i1 %68, label %69, label %255
69: ; preds = %65
%70 = load i32, i32* %2
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %70)
%72 = load i32, i32* %3
%73 = icmp ult i32 %72, 5
br i1 %73, label %74, label %156
74: ; preds = %69
%75 = load i32, i32* %2
%76 = urem i32 %75, 10
store i32 %76, i32* %5
%77 = icmp eq i32 %76, 0
br i1 %77, label %78, label %88
78: ; preds = %74
store i32 1, i32* %4
br label %79
79: ; preds = %83, %78
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%81 = load i32, i32* %4
%82 = add i32 %81, 1
store i32 %82, i32* %4
br label %83
83: ; preds = %79
%84 = load i32, i32* %4
%85 = load i32, i32* %3
%86 = icmp ule i32 %84, %85
br i1 %86, label %79, label %87
87: ; preds = %83
br label %155
88: ; preds = %74
%89 = load i32, i32* %5
%90 = icmp ult i32 %89, 4
br i1 %90, label %91, label %110
91: ; preds = %88
store i32 1, i32* %4
br label %92
92: ; preds = %96, %91
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%94 = load i32, i32* %4
%95 = add i32 %94, 1
store i32 %95, i32* %4
br label %96
96: ; preds = %92
%97 = load i32, i32* %4
%98 = load i32, i32* %3
%99 = icmp ule i32 %97, %98
br i1 %99, label %92, label %100
100: ; preds = %96
store i32 1, i32* %4
br label %101
101: ; preds = %105, %100
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%103 = load i32, i32* %4
%104 = add i32 %103, 1
store i32 %104, i32* %4
br label %105
105: ; preds = %101
%106 = load i32, i32* %4
%107 = load i32, i32* %5
%108 = icmp ule i32 %106, %107
br i1 %108, label %101, label %109
109: ; preds = %105
br label %154
110: ; preds = %88
%111 = load i32, i32* %5
%112 = icmp eq i32 %111, 4
br i1 %112, label %113, label %125
113: ; preds = %110
store i32 1, i32* %4
br label %114
114: ; preds = %118, %113
%115 = load i32, i32* %4
%116 = load i32, i32* %3
%117 = icmp ule i32 %115, %116
br i1 %117, label %118, label %122
118: ; preds = %114
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%120 = load i32, i32* %4
%121 = add i32 %120, 1
store i32 %121, i32* %4
br label %114
122: ; preds = %114
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
br label %153
125: ; preds = %110
%126 = load i32, i32* %5
%127 = icmp ugt i32 %126, 4
br i1 %127, label %128, label %152
128: ; preds = %125
%129 = load i32, i32* %5
%130 = icmp ule i32 %129, 9
br i1 %130, label %131, label %152
131: ; preds = %128
store i32 1, i32* %4
br label %132
132: ; preds = %136, %131
%133 = load i32, i32* %4
%134 = load i32, i32* %3
%135 = icmp ule i32 %133, %134
br i1 %135, label %136, label %140
136: ; preds = %132
%137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%138 = load i32, i32* %4
%139 = add i32 %138, 1
store i32 %139, i32* %4
br label %132
140: ; preds = %132
%141 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
store i32 1, i32* %4
br label %142
142: ; preds = %147, %140
%143 = load i32, i32* %4
%144 = load i32, i32* %5
%145 = sub i32 %144, 5
%146 = icmp ule i32 %143, %145
br i1 %146, label %147, label %151
147: ; preds = %142
%148 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%149 = load i32, i32* %4
%150 = add i32 %149, 1
store i32 %150, i32* %4
br label %142
151: ; preds = %142
br label %152
152: ; preds = %151, %128, %125
br label %153
153: ; preds = %152, %122
br label %154
154: ; preds = %153, %109
br label %155
155: ; preds = %154, %87
br label %254
156: ; preds = %69
%157 = load i32, i32* %3
%158 = sub i32 %157, 5
store i32 %158, i32* %3
%159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 76)
%160 = load i32, i32* %2
%161 = sub i32 %160, 50
%162 = urem i32 %161, 10
store i32 %162, i32* %5
%163 = icmp eq i32 %162, 0
br i1 %163, label %164, label %174
164: ; preds = %156
store i32 1, i32* %4
br label %165
165: ; preds = %169, %164
%166 = load i32, i32* %4
%167 = load i32, i32* %3
%168 = icmp ule i32 %166, %167
br i1 %168, label %169, label %173
169: ; preds = %165
%170 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%171 = load i32, i32* %4
%172 = add i32 %171, 1
store i32 %172, i32* %4
br label %165
173: ; preds = %165
br label %253
174: ; preds = %156
%175 = load i32, i32* %5
%176 = icmp ult i32 %175, 4
br i1 %176, label %177, label %196
177: ; preds = %174
store i32 1, i32* %4
br label %178
178: ; preds = %182, %177
%179 = load i32, i32* %4
%180 = load i32, i32* %3
%181 = icmp ule i32 %179, %180
br i1 %181, label %182, label %186
182: ; preds = %178
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%184 = load i32, i32* %4
%185 = add i32 %184, 1
store i32 %185, i32* %4
br label %178
186: ; preds = %178
store i32 1, i32* %4
br label %187
187: ; preds = %191, %186
%188 = load i32, i32* %4
%189 = load i32, i32* %5
%190 = icmp ule i32 %188, %189
br i1 %190, label %191, label %195
191: ; preds = %187
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%193 = load i32, i32* %4
%194 = add i32 %193, 1
store i32 %194, i32* %4
br label %187
195: ; preds = %187
br label %252
196: ; preds = %174
%197 = load i32, i32* %5
%198 = icmp eq i32 %197, 4
br i1 %198, label %199, label %211
199: ; preds = %196
store i32 1, i32* %4
br label %200
200: ; preds = %204, %199
%201 = load i32, i32* %4
%202 = load i32, i32* %3
%203 = icmp ule i32 %201, %202
br i1 %203, label %204, label %208
204: ; preds = %200
%205 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%206 = load i32, i32* %4
%207 = add i32 %206, 1
store i32 %207, i32* %4
br label %200
208: ; preds = %200
%209 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
br label %251
211: ; preds = %196
%212 = load i32, i32* %5
%213 = icmp ugt i32 %212, 4
br i1 %213, label %214, label %243
214: ; preds = %211
%215 = load i32, i32* %5
%216 = icmp ule i32 %215, 9
br i1 %216, label %217, label %243
217: ; preds = %214
store i32 1, i32* %4
br label %218
218: ; preds = %222, %217
%219 = load i32, i32* %4
%220 = load i32, i32* %3
%221 = icmp ule i32 %219, %220
br i1 %221, label %222, label %226
222: ; preds = %218
%223 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
%224 = load i32, i32* %4
%225 = add i32 %224, 1
store i32 %225, i32* %4
br label %218
226: ; preds = %218
%227 = load i32, i32* %5
%228 = icmp eq i32 %227, 4
br i1 %228, label %229, label %231
229: ; preds = %226
%230 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
br label %231
231: ; preds = %229, %226
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 86)
store i32 1, i32* %4
br label %233
233: ; preds = %238, %231
%234 = load i32, i32* %4
%235 = load i32, i32* %5
%236 = sub i32 %235, 5
%237 = icmp ule i32 %234, %236
br i1 %237, label %238, label %242
238: ; preds = %233
%239 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%240 = load i32, i32* %4
%241 = add i32 %240, 1
store i32 %241, i32* %4
br label %233
242: ; preds = %233
br label %250
243: ; preds = %214, %211
%244 = load i32, i32* %5
%245 = icmp eq i32 %244, 9
br i1 %245, label %246, label %249
246: ; preds = %243
%247 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 73)
%248 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 88)
br label %249
249: ; preds = %246, %243
br label %250
250: ; preds = %249, %242
br label %251
251: ; preds = %250, %208
br label %252
252: ; preds = %251, %195
br label %253
253: ; preds = %252, %173
br label %254
254: ; preds = %253, %155
br label %255
255: ; preds = %254, %65
br label %256
256: ; preds = %255, %64
br label %257
257: ; preds = %256, %10
%258 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%259 = load i32, i32* %2
%260 = add i32 %259, 1
store i32 %260, i32* %2
br label %261
261: ; preds = %257
%262 = load i32, i32* %2
%263 = icmp ule i32 %262, 100
br i1 %263, label %7, label %264
264: ; preds = %261
ret i32 0
}

LLVM IR (-O2):
@.str = [11 x i8] c"%15s \09%14s\00"
@.str.1 = [16 x i8] c"Numeri Decimali\00"
@.str.2 = [15 x i8] c"Numeri Romani\0A\00"
@.str.3 = [14 x i8] c"%-15d \09%-14c\0A\00"
@.str.4 = [9 x i8] c"%-15d \09\00"
define i32 @main() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.2, i64 0, i64 0))
br label %2
2: ; preds = %0, %133
%3 = phi i32 [ 1, %0 ], [ %138, %133 ]
%4 = phi i32 [ 1, %0 ], [ %135, %133 ]
%5 = phi i32 [ 2, %0 ], [ %136, %133 ]
%6 = icmp ult i32 %4, 10
br i1 %6, label %7, label %26
7: ; preds = %2
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %4)
%9 = icmp ult i32 %4, 4
br i1 %9, label %10, label %15
10: ; preds = %7, %10
%11 = phi i32 [ %13, %10 ], [ 1, %7 ]
%12 = tail call i32 @putchar(i32 73)
%13 = add nuw nsw i32 %11, 1
%14 = icmp eq i32 %13, %5
br i1 %14, label %133, label %10
15: ; preds = %7
%16 = icmp eq i32 %4, 4
br i1 %16, label %130, label %17
17: ; preds = %15
%18 = tail call i32 @putchar(i32 86)
%19 = add nsw i32 %4, -5
%20 = icmp eq i32 %19, 0
br i1 %20, label %133, label %21
21: ; preds = %17, %21
%22 = phi i32 [ %24, %21 ], [ 1, %17 ]
%23 = tail call i32 @putchar(i32 73)
%24 = add i32 %22, 1
%25 = icmp ugt i32 %24, %19
br i1 %25, label %133, label %21
26: ; preds = %2
%27 = trunc i32 %4 to i8
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32 %4)
%29 = icmp ult i32 %4, 50
br i1 %29, label %30, label %75
30: ; preds = %26
%31 = urem i8 %27, 10
%32 = zext i8 %31 to i32
%33 = icmp eq i8 %31, 0
br i1 %33, label %34, label %39
34: ; preds = %30, %34
%35 = phi i32 [ %37, %34 ], [ 1, %30 ]
%36 = tail call i32 @putchar(i32 88)
%37 = add nuw nsw i32 %35, 1
%38 = icmp eq i32 %35, %3
br i1 %38, label %133, label %34
39: ; preds = %30
%40 = icmp ult i8 %31, 4
br i1 %40, label %41, label %51
41: ; preds = %39, %41
%42 = phi i32 [ %44, %41 ], [ 1, %39 ]
%43 = tail call i32 @putchar(i32 88)
%44 = add nuw nsw i32 %42, 1
%45 = icmp eq i32 %42, %3
br i1 %45, label %46, label %41
46: ; preds = %41, %46
%47 = phi i32 [ %49, %46 ], [ 1, %41 ]
%48 = tail call i32 @putchar(i32 73)
%49 = add i32 %47, 1
%50 = icmp ugt i32 %49, %32
br i1 %50, label %133, label %46
51: ; preds = %39
%52 = icmp eq i8 %31, 4
%53 = icmp ult i8 %27, 10
br i1 %52, label %55, label %54
54: ; preds = %51
br i1 %53, label %66, label %61
55: ; preds = %51
br i1 %53, label %130, label %56
56: ; preds = %55, %56
%57 = phi i32 [ %59, %56 ], [ 1, %55 ]
%58 = tail call i32 @putchar(i32 88)
%59 = add nuw nsw i32 %57, 1
%60 = icmp eq i32 %57, %3
br i1 %60, label %130, label %56
61: ; preds = %54, %61
%62 = phi i32 [ %64, %61 ], [ 1, %54 ]
%63 = tail call i32 @putchar(i32 88)
%64 = add nuw nsw i32 %62, 1
%65 = icmp eq i32 %62, %3
br i1 %65, label %66, label %61
66: ; preds = %61, %54
%67 = tail call i32 @putchar(i32 86)
%68 = add nsw i32 %32, -5
%69 = icmp eq i32 %68, 0
br i1 %69, label %133, label %70
70: ; preds = %66, %70
%71 = phi i32 [ %73, %70 ], [ 1, %66 ]
%72 = tail call i32 @putchar(i32 73)
%73 = add i32 %71, 1
%74 = icmp ugt i32 %73, %68
br i1 %74, label %133, label %70
75: ; preds = %26
%76 = udiv i8 %27, 10
%77 = zext i8 %76 to i32
%78 = add nsw i32 %77, -5
%79 = tail call i32 @putchar(i32 76)
%80 = add i8 %27, -50
%81 = urem i8 %80, 10
%82 = zext i8 %81 to i32
%83 = icmp eq i8 %81, 0
br i1 %83, label %84, label %91
84: ; preds = %75
%85 = icmp eq i32 %78, 0
br i1 %85, label %133, label %86
86: ; preds = %84, %86
%87 = phi i32 [ %89, %86 ], [ 1, %84 ]
%88 = tail call i32 @putchar(i32 88)
%89 = add i32 %87, 1
%90 = icmp ugt i32 %89, %78
br i1 %90, label %133, label %86
91: ; preds = %75
%92 = icmp ult i8 %81, 4
br i1 %92, label %93, label %106
93: ; preds = %91
%94 = icmp eq i32 %78, 0
br i1 %94, label %100, label %95
95: ; preds = %93, %95
%96 = phi i32 [ %98, %95 ], [ 1, %93 ]
%97 = tail call i32 @putchar(i32 88)
%98 = add i32 %96, 1
%99 = icmp ugt i32 %98, %78
br i1 %99, label %100, label %95
100: ; preds = %95, %93
br label %101
101: ; preds = %100, %101
%102 = phi i32 [ %104, %101 ], [ 1, %100 ]
%103 = tail call i32 @putchar(i32 73)
%104 = add i32 %102, 1
%105 = icmp ugt i32 %104, %82
br i1 %105, label %133, label %101
106: ; preds = %91
%107 = icmp eq i8 %81, 4
%108 = icmp eq i32 %78, 0
br i1 %107, label %110, label %109
109: ; preds = %106
br i1 %108, label %121, label %116
110: ; preds = %106
br i1 %108, label %130, label %111
111: ; preds = %110, %111
%112 = phi i32 [ %114, %111 ], [ 1, %110 ]
%113 = tail call i32 @putchar(i32 88)
%114 = add i32 %112, 1
%115 = icmp ugt i32 %114, %78
br i1 %115, label %130, label %111
116: ; preds = %109, %116
%117 = phi i32 [ %119, %116 ], [ 1, %109 ]
%118 = tail call i32 @putchar(i32 88)
%119 = add i32 %117, 1
%120 = icmp ugt i32 %119, %78
br i1 %120, label %121, label %116
121: ; preds = %116, %109
%122 = tail call i32 @putchar(i32 86)
%123 = add nsw i32 %82, -5
%124 = icmp eq i32 %123, 0
br i1 %124, label %133, label %125
125: ; preds = %121, %125
%126 = phi i32 [ %128, %125 ], [ 1, %121 ]
%127 = tail call i32 @putchar(i32 73)
%128 = add i32 %126, 1
%129 = icmp ugt i32 %128, %123
br i1 %129, label %133, label %125
130: ; preds = %111, %56, %110, %55, %15
%131 = tail call i32 @putchar(i32 73)
%132 = tail call i32 @putchar(i32 86)
br label %133
133: ; preds = %125, %101, %86, %70, %46, %34, %21, %10, %130, %121, %84, %66, %17
%134 = tail call i32 @putchar(i32 10)
%135 = add nuw nsw i32 %4, 1
%136 = add nuw nsw i32 %5, 1
%137 = udiv i32 %135, 10
%138 = call i32 @llvm.umax.i32(i32 %137, i32 1)
%139 = icmp eq i32 %135, 100
br i1 %139, label %140, label %2
140: ; preds = %133
%141 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), i32 100, i32 67)
%142 = tail call i32 @putchar(i32 10)
ret i32 0
}