#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*/ getdosver(int *, int *, int *, int *, int *, int *, int *,
                             int *, int *, int *, int *, int *, int *, int *,
                             int *, int *, int *);
int /*<<< orphan*/ printf(char *, ...);
int main() {
  int dos_major, dos_minor, dostype, dos_sim_major, dos_sim_minor, dos_oem,
      desq_ma, desq_mi, _4dos_ma, _4dos_mi, ndos_ma, ndos_mi, win_ma, win_mi,
      win_mode, softice_ma, softice_mi;
  printf("%s %s %d.%s%s", "DOS", "UNAME", 0, "07", "");
  printf("\nCopyright (c) %s\n\n", "2002 Claunia.com");
  getdosver(&dostype, &dos_major, &dos_minor, &dos_sim_major, &dos_sim_minor,
            &dos_oem, &desq_ma, &desq_mi, &_4dos_ma, &_4dos_mi, &ndos_ma,
            &ndos_mi, &win_ma, &win_mi, &win_mode, &softice_ma, &softice_mi);
  if (dostype == 1) {
    printf("\nMS-DOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 2) {
    printf("\nPC-DOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 3) {
    printf("\nDR-DOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 4) {
    printf("\nFreeDOS %s 1.1.%d\n", "version", dos_major);
    printf(" %s %d.%d\n", "simulating DOS version", dos_sim_major,
           dos_sim_minor);
  }
  if (dostype == 5) {
    printf("\nWindows 95\n", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 6) {
    printf("\nWindows NT, Windows 2000 %s Windows XP\n", "or");
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 7) {
    printf("\nOS/2 ");
    if (dos_major == 10) {
      printf("1.%d\n", dos_minor);
    } else if (dos_major == 20 && dos_minor < 30) {
      printf("2.%d\n", dos_minor);
    } else if (dos_major == 20 && dos_minor >= 30) {
      printf("Warp %1.2d\n", (dos_minor / 10));
    } else {
      printf("%s\n", "unknown version");
    }
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 8) {
    printf("\nPTS-DOS, %s\n", "unknown version");
    printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
           dos_sim_minor);
  }
  if (dostype == 9) {
    printf("\nRxDOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 10) {
    printf("\nConcurrent DOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 11) {
    printf("\nNovell DOS %s %d.%d\n", "version", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 12) {
    printf("\nMS-DOS / PC-DOS %s %d.%d\n", "version", dos_major, dos_minor);
  }
  if (dostype == 13) {
    if (win_mi < 10) {
      printf("\nWindows 95 OSR 2 %s OSR 3\n", "or");
    } else if (win_mi >= 10) {
      printf("\nWindows 98 %s 98 S.E.\n", "or");
    } else {
      printf("\nWindows 95 OSR 2 %s\n", "or upper");
    }
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (dostype == 14) {
    printf("\nWindows Millenium\n", dos_major, dos_minor);
    if (dos_major != dos_sim_major || dos_minor != dos_sim_minor) {
      printf("%s %d.%d\n", "simulating DOS version", dos_sim_major,
             dos_sim_minor);
    }
  }
  if (desq_ma >= 2) {
    printf("%s DESQview %d.%d\n", "Running under", desq_ma, desq_mi);
  }
  if (_4dos_ma >= 2) {
    if (_4dos_mi < 10)
      printf("%s 4DOS %d.0%d\n", "Running under", _4dos_ma, _4dos_mi);
    else
      printf("%s 4DOS %d.%d\n", "Running under", _4dos_ma, _4dos_mi);
  }
  if (ndos_ma > 0) {
    printf("%s NDOS %d.%d\n", "Running under", ndos_ma, ndos_mi);
  }
  if (win_ma == 3 && win_mi < 10 && win_mode == 3) {
    printf("%s Windows %d.%d %s\n", "Running under", win_ma, win_mi,
           "in enhanced mode");
  }
  if (win_ma == 3 && win_mi >= 10) {
    if (win_mode == 2) {
      printf("%s Windows %d.%d %s\n", "Running under", win_ma, win_mi,
             "in standard mode");
    } else if (win_mode == 3) {
      printf("%s Windows %d.%d %s\n", "Running under", win_ma, win_mi,
             "in enhanced mode");
    } else {
      printf("%s Windows %d.%d\n", "Running under", win_ma, win_mi);
    }
  }
  if (win_ma == 2 && win_mode == 3) {
    printf("%s Windows/386 %d.%d\n", "Running under", win_ma, win_mi);
  }
  if (softice_ma != 0 && softice_mi == 3) {
    printf("%s %s\n", "Running under", "SoftICE debugger");
  }
  if (dostype == 0) {
    printf("\n%s %d.%d, %s %d.%d", "Unknown DOS version", dos_major, dos_minor,
           "that is simulating DOS", dos_sim_major, dos_sim_minor);
    printf("\n%s %x", "DOS OEM code", dos_oem);
    printf(
        "\n%s\niosglpgc@teleline.es",
        "Please send this info and the operating system name and version to");
    return (1);
  } else {
    return (0);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
movl   $0x0,-0x2c(%rbp)
lea    0xebe(%rip),%rdi
lea    0x1188(%rip),%rsi
lea    0xebe(%rip),%rdx
xor    %ecx,%ecx
lea    0xebb(%rip),%r8
lea    0xeca(%rip),%r9
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xea9(%rip),%rdi
lea    0xeb6(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x38(%rbp),%rdi
lea    -0x30(%rbp),%rsi
lea    -0x34(%rbp),%rdx
lea    -0x3c(%rbp),%rcx
lea    -0x40(%rbp),%r8
lea    -0x44(%rbp),%r9
lea    -0x48(%rbp),%rax
mov    %rax,-0x90(%rbp)
lea    -0x4c(%rbp),%rax
mov    %rax,-0x88(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x80(%rbp)
lea    -0x54(%rbp),%r13
lea    -0x58(%rbp),%r12
lea    -0x5c(%rbp),%r15
lea    -0x60(%rbp),%r14
lea    -0x64(%rbp),%rbx
lea    -0x68(%rbp),%r11
lea    -0x6c(%rbp),%r10
lea    -0x70(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x88(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x80(%rbp),%rax
mov    %rax,0x10(%rsp)
mov    -0x78(%rbp),%rax
mov    %r13,0x18(%rsp)
mov    %r12,0x20(%rsp)
mov    %r15,0x28(%rsp)
mov    %r14,0x30(%rsp)
mov    %rbx,0x38(%rsp)
mov    %r11,0x40(%rsp)
mov    %r10,0x48(%rsp)
mov    %rax,0x50(%rsp)
call   1030 <getdosver@plt>
cmpl   $0x1,-0x38(%rbp)
jne    1284 <main+0x164>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xdfe(%rip),%rdi
lea    0xe18(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    1264 <main+0x144>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     127f <main+0x15f>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xed3(%rip),%rdi
lea    0xdd6(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1284 <main+0x164>
cmpl   $0x2,-0x38(%rbp)
jne    12e1 <main+0x1c1>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xdca(%rip),%rdi
lea    0xdbb(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    12c1 <main+0x1a1>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     12dc <main+0x1bc>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xe76(%rip),%rdi
lea    0xd79(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    12e1 <main+0x1c1>
cmpl   $0x3,-0x38(%rbp)
jne    133e <main+0x21e>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xd7f(%rip),%rdi
lea    0xd5e(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    131e <main+0x1fe>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1339 <main+0x219>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xe19(%rip),%rdi
lea    0xd1c(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    133e <main+0x21e>
cmpl   $0x4,-0x38(%rbp)
jne    137b <main+0x25b>
mov    -0x30(%rbp),%edx
lea    0xd37(%rip),%rdi
lea    0xd04(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xdd6(%rip),%rdi
lea    0xcda(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x5,-0x38(%rbp)
jne    13d1 <main+0x2b1>
mov    -0x30(%rbp),%esi
mov    -0x34(%rbp),%edx
lea    0xd0b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    13b1 <main+0x291>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     13cc <main+0x2ac>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xd86(%rip),%rdi
lea    0xc89(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    13d1 <main+0x2b1>
cmpl   $0x6,-0x38(%rbp)
jne    1428 <main+0x308>
lea    0xcc8(%rip),%rdi
lea    0xcea(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    1408 <main+0x2e8>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1423 <main+0x303>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xd2f(%rip),%rdi
lea    0xc32(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1428 <main+0x308>
cmpl   $0x7,-0x38(%rbp)
jne    1515 <main+0x3f5>
lea    0xc9d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0xa,-0x30(%rbp)
jne    1460 <main+0x340>
mov    -0x34(%rbp),%esi
lea    0xc43(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    14dd <main+0x3bd>
cmpl   $0x14,-0x30(%rbp)
jne    148a <main+0x36a>
cmpl   $0x1e,-0x34(%rbp)
jge    148a <main+0x36a>
mov    -0x34(%rbp),%esi
lea    0xc5f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    14d8 <main+0x3b8>
cmpl   $0x14,-0x30(%rbp)
jne    14be <main+0x39e>
cmpl   $0x1e,-0x34(%rbp)
jl     14be <main+0x39e>
mov    -0x34(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    0xc31(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    14d3 <main+0x3b3>
lea    0xc44(%rip),%rdi
lea    0xc23(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    14d8 <main+0x3b8>
jmp    14dd <main+0x3bd>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    14f5 <main+0x3d5>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1510 <main+0x3f0>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xc42(%rip),%rdi
lea    0xb45(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1515 <main+0x3f5>
cmpl   $0x8,-0x38(%rbp)
jne    154f <main+0x42f>
lea    0xbd9(%rip),%rdi
lea    0xbc2(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xc03(%rip),%rdi
lea    0xb06(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x9,-0x38(%rbp)
jne    15ac <main+0x48c>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xba7(%rip),%rdi
lea    0xaf0(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    158c <main+0x46c>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     15a7 <main+0x487>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xbab(%rip),%rdi
lea    0xaae(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    15ac <main+0x48c>
cmpl   $0xa,-0x38(%rbp)
jne    1609 <main+0x4e9>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xb5b(%rip),%rdi
lea    0xa93(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    15e9 <main+0x4c9>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1604 <main+0x4e4>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xb4e(%rip),%rdi
lea    0xa51(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1609 <main+0x4e9>
cmpl   $0xb,-0x38(%rbp)
jne    1666 <main+0x546>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xb18(%rip),%rdi
lea    0xa36(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    1646 <main+0x526>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1661 <main+0x541>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xaf1(%rip),%rdi
lea    0x9f4(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1666 <main+0x546>
cmpl   $0xc,-0x38(%rbp)
jne    168b <main+0x56b>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
lea    0xad1(%rip),%rdi
lea    0x9d9(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0xd,-0x38(%rbp)
jne    172f <main+0x60f>
cmpl   $0xa,-0x64(%rbp)
jge    16b9 <main+0x599>
lea    0xac3(%rip),%rdi
lea    0xa26(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    16f7 <main+0x5d7>
cmpl   $0xa,-0x64(%rbp)
jl     16dd <main+0x5bd>
lea    0xabb(%rip),%rdi
lea    0xa02(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    16f2 <main+0x5d2>
lea    0xab9(%rip),%rdi
lea    0xac8(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    16f7 <main+0x5d7>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    170f <main+0x5ef>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     172a <main+0x60a>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0xa28(%rip),%rdi
lea    0x92b(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    172f <main+0x60f>
cmpl   $0xe,-0x38(%rbp)
jne    1785 <main+0x665>
mov    -0x30(%rbp),%esi
mov    -0x34(%rbp),%edx
lea    0xa76(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jne    1765 <main+0x645>
mov    -0x34(%rbp),%eax
cmp    -0x40(%rbp),%eax
je     1780 <main+0x660>
mov    -0x3c(%rbp),%edx
mov    -0x40(%rbp),%ecx
lea    0x9d2(%rip),%rdi
lea    0x8d5(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1785 <main+0x665>
cmpl   $0x2,-0x48(%rbp)
jl     17aa <main+0x68a>
mov    -0x48(%rbp),%edx
mov    -0x4c(%rbp),%ecx
lea    0xa34(%rip),%rdi
lea    0xa40(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x2,-0x50(%rbp)
jl     17fe <main+0x6de>
cmpl   $0xa,-0x54(%rbp)
jge    17de <main+0x6be>
mov    -0x50(%rbp),%edx
mov    -0x54(%rbp),%ecx
lea    0xa26(%rip),%rdi
lea    0xa11(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    17f9 <main+0x6d9>
mov    -0x50(%rbp),%edx
mov    -0x54(%rbp),%ecx
lea    0xa16(%rip),%rdi
lea    0x9f1(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    17fe <main+0x6de>
cmpl   $0x0,-0x58(%rbp)
jle    1823 <main+0x703>
mov    -0x58(%rbp),%edx
mov    -0x5c(%rbp),%ecx
lea    0x9fb(%rip),%rdi
lea    0x9c7(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x3,-0x60(%rbp)
jne    1863 <main+0x743>
cmpl   $0xa,-0x64(%rbp)
jge    1863 <main+0x743>
cmpl   $0x3,-0x68(%rbp)
jne    1863 <main+0x743>
mov    -0x60(%rbp),%edx
mov    -0x64(%rbp),%ecx
lea    0x9d1(%rip),%rdi
lea    0x98e(%rip),%rsi
lea    0x9d8(%rip),%r8
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x3,-0x60(%rbp)
jne    18fe <main+0x7de>
cmpl   $0xa,-0x64(%rbp)
jl     18fe <main+0x7de>
cmpl   $0x2,-0x68(%rbp)
jne    18a8 <main+0x788>
mov    -0x60(%rbp),%edx
mov    -0x64(%rbp),%ecx
lea    0x991(%rip),%rdi
lea    0x94e(%rip),%rsi
lea    0x9a9(%rip),%r8
mov    $0x0,%al
call   1040 <printf@plt>
jmp    18f9 <main+0x7d9>
cmpl   $0x3,-0x68(%rbp)
jne    18d9 <main+0x7b9>
mov    -0x60(%rbp),%edx
mov    -0x64(%rbp),%ecx
lea    0x960(%rip),%rdi
lea    0x91d(%rip),%rsi
lea    0x967(%rip),%r8
mov    $0x0,%al
call   1040 <printf@plt>
jmp    18f4 <main+0x7d4>
mov    -0x60(%rbp),%edx
mov    -0x64(%rbp),%ecx
lea    0x970(%rip),%rdi
lea    0x8f6(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    18f9 <main+0x7d9>
jmp    18fe <main+0x7de>
cmpl   $0x2,-0x60(%rbp)
jne    192d <main+0x80d>
cmpl   $0x3,-0x68(%rbp)
jne    192d <main+0x80d>
mov    -0x60(%rbp),%edx
mov    -0x64(%rbp),%ecx
lea    0x949(%rip),%rdi
lea    0x8bd(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,-0x6c(%rbp)
je     195d <main+0x83d>
cmpl   $0x3,-0x70(%rbp)
jne    195d <main+0x83d>
lea    0x936(%rip),%rdi
lea    0x894(%rip),%rsi
lea    0x92f(%rip),%rdx
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x0,-0x38(%rbp)
jne    19cc <main+0x8ac>
mov    -0x30(%rbp),%edx
mov    -0x34(%rbp),%ecx
mov    -0x3c(%rbp),%r9d
mov    -0x40(%rbp),%eax
lea    0x91b(%rip),%rdi
lea    0x928(%rip),%rsi
lea    0x935(%rip),%r8
mov    %eax,(%rsp)
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x44(%rbp),%edx
lea    0x938(%rip),%rdi
lea    0x938(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x937(%rip),%rdi
lea    0x949(%rip),%rsi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x1,-0x2c(%rbp)
jmp    19d3 <main+0x8b3>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
lea    0xebb(%rip),%rdi
lea    0x1145(%rip),%rsi
lea    0xebb(%rip),%rdx
lea    0xeba(%rip),%r8
lea    0xec9(%rip),%r9
xor    %ecx,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xea6(%rip),%rdi
lea    0xeb3(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
sub    $0x8,%rsp
lea    0x2c(%rsp),%rbx
lea    0x30(%rsp),%rax
lea    0x24(%rsp),%r15
lea    0x20(%rsp),%r12
lea    0x28(%rsp),%r13
lea    0x34(%rsp),%rbp
lea    0x38(%rsp),%r10
lea    0x3c(%rsp),%r11
lea    0x40(%rsp),%r14
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x1c(%rsp),%rcx
lea    0xc(%rsp),%r8
lea    0x4c(%rsp),%r9
push   %rbx
push   %rax
push   %r15
push   %r12
push   %r13
push   %rbp
push   %r10
push   %r11
push   %r14
lea    0x8c(%rsp),%rax
push   %rax
lea    0x98(%rsp),%rax
push   %rax
call   1040 <getdosver@plt>
add    $0x60,%rsp
mov    0x10(%rsp),%eax
cmp    $0x1,%eax
jne    1251 <main+0x121>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xe2c(%rip),%rdi
lea    0xe46(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1234 <main+0x104>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    1238 <main+0x108>
jmp    124d <main+0x11d>
mov    0x4(%rsp),%ecx
lea    0xef8(%rip),%rdi
lea    0xe08(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x2,%eax
jne    12a2 <main+0x172>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xe00(%rip),%rdi
lea    0xdf1(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1289 <main+0x159>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    128d <main+0x15d>
jmp    12a2 <main+0x172>
mov    0x4(%rsp),%ecx
lea    0xea3(%rip),%rdi
lea    0xdb3(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x3,%eax
je     12c7 <main+0x197>
cmp    $0x4,%eax
je     131c <main+0x1ec>
cmp    $0x5,%eax
je     135f <main+0x22f>
cmp    $0x6,%eax
je     13a3 <main+0x273>
jmp    13e7 <main+0x2b7>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xda1(%rip),%rdi
lea    0xd80(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    12fa <main+0x1ca>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    12fe <main+0x1ce>
jmp    1313 <main+0x1e3>
mov    0x4(%rsp),%ecx
lea    0xe32(%rip),%rdi
lea    0xd42(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x4,%eax
jne    12b0 <main+0x180>
mov    0xc(%rsp),%edx
lea    0xd62(%rip),%rdi
lea    0xd2f(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
mov    0x4(%rsp),%ecx
lea    0xdf2(%rip),%rdi
lea    0xd03(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x5,%eax
jne    12b9 <main+0x189>
lea    0xfb2(%rip),%rdi
call   1030 <puts@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1381 <main+0x251>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    1385 <main+0x255>
jmp    139a <main+0x26a>
mov    0x4(%rsp),%ecx
lea    0xdab(%rip),%rdi
lea    0xcbb(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x6,%eax
jne    13e7 <main+0x2b7>
lea    0xcf3(%rip),%rdi
lea    0xd15(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    13ce <main+0x29e>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    13d2 <main+0x2a2>
jmp    13e7 <main+0x2b7>
mov    0x4(%rsp),%ecx
lea    0xd5e(%rip),%rdi
lea    0xc6e(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x7,%eax
je     1410 <main+0x2e0>
cmp    $0x8,%eax
je     14b6 <main+0x386>
cmp    $0x9,%eax
je     14f5 <main+0x3c5>
cmp    $0xa,%eax
je     154a <main+0x41a>
jmp    1596 <main+0x466>
lea    0xcb2(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xc(%rsp),%eax
cmp    $0xa,%eax
jne    1434 <main+0x304>
mov    0x8(%rsp),%esi
lea    0xc65(%rip),%rdi
jmp    1473 <main+0x343>
mov    0x8(%rsp),%esi
cmp    $0x14,%eax
jne    144b <main+0x31b>
cmp    $0x1d,%esi
jg     144b <main+0x31b>
lea    0xc87(%rip),%rdi
jmp    1473 <main+0x343>
cmp    $0x14,%eax
jne    18dc <main+0x7ac>
cmp    $0x1e,%esi
jl     18dc <main+0x7ac>
mov    %esi,%eax
mov    $0xcccccccd,%esi
imul   %rax,%rsi
shr    $0x23,%rsi
lea    0xc63(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1490 <main+0x360>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    1494 <main+0x364>
jmp    14a9 <main+0x379>
mov    0x4(%rsp),%ecx
lea    0xc9c(%rip),%rdi
lea    0xbac(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x8,%eax
jne    13f9 <main+0x2c9>
lea    0xc35(%rip),%rdi
lea    0xc1e(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
mov    0x4(%rsp),%ecx
lea    0xc5d(%rip),%rdi
lea    0xb6d(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0x9,%eax
jne    1402 <main+0x2d2>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xbfc(%rip),%rdi
lea    0xb52(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1528 <main+0x3f8>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    152c <main+0x3fc>
jmp    1541 <main+0x411>
mov    0x4(%rsp),%ecx
lea    0xc04(%rip),%rdi
lea    0xb14(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0xa,%eax
jne    1596 <main+0x466>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xbb8(%rip),%rdi
lea    0xafd(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    157d <main+0x44d>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    1581 <main+0x451>
jmp    1596 <main+0x466>
mov    0x4(%rsp),%ecx
lea    0xbaf(%rip),%rdi
lea    0xabf(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0xb,%eax
je     15bb <main+0x48b>
cmp    $0xc,%eax
je     1610 <main+0x4e0>
cmp    $0xd,%eax
je     163a <main+0x50a>
cmp    $0xe,%eax
je     1697 <main+0x567>
jmp    16d2 <main+0x5a2>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xb61(%rip),%rdi
lea    0xa8c(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    15ee <main+0x4be>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    15f2 <main+0x4c2>
jmp    1607 <main+0x4d7>
mov    0x4(%rsp),%ecx
lea    0xb3e(%rip),%rdi
lea    0xa4e(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0xc,%eax
jne    15a4 <main+0x474>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
lea    0xb22(%rip),%rdi
lea    0xa37(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0xd,%eax
jne    15ad <main+0x47d>
cmpl   $0xa,0x18(%rsp)
lea    0xb16(%rip),%rax
lea    0xb2b(%rip),%rdi
cmovl  %rax,%rdi
lea    0xa6e(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    1675 <main+0x545>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    1679 <main+0x549>
jmp    168e <main+0x55e>
mov    0x4(%rsp),%ecx
lea    0xab7(%rip),%rdi
lea    0x9c7(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%eax
cmp    $0xe,%eax
jne    16d2 <main+0x5a2>
lea    0xc67(%rip),%rdi
call   1030 <puts@plt>
mov    0x14(%rsp),%edx
cmp    %edx,0xc(%rsp)
jne    16b9 <main+0x589>
mov    0x4(%rsp),%ecx
cmp    %ecx,0x8(%rsp)
jne    16bd <main+0x58d>
jmp    16d2 <main+0x5a2>
mov    0x4(%rsp),%ecx
lea    0xa73(%rip),%rdi
lea    0x983(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x40(%rsp),%edx
cmp    $0x2,%edx
jl     16f4 <main+0x5c4>
mov    0x3c(%rsp),%ecx
lea    0xaaa(%rip),%rdi
lea    0xab6(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x38(%rsp),%edx
cmp    $0x2,%edx
jl     1724 <main+0x5f4>
mov    0x34(%rsp),%ecx
cmp    $0xa,%ecx
lea    0xaa6(%rip),%rax
lea    0xaaf(%rip),%rdi
cmovl  %rax,%rdi
lea    0xa86(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x30(%rsp),%edx
test   %edx,%edx
jle    1745 <main+0x615>
mov    0x2c(%rsp),%ecx
lea    0xa99(%rip),%rdi
lea    0xa65(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x20(%rsp),%eax
mov    0x18(%rsp),%ecx
cmp    $0x3,%eax
jne    1787 <main+0x657>
cmp    $0x9,%ecx
jg     1787 <main+0x657>
cmpl   $0x3,0x1c(%rsp)
jne    1787 <main+0x657>
lea    0xa7a(%rip),%rdi
lea    0xa37(%rip),%rsi
lea    0xa81(%rip),%r8
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x20(%rsp),%eax
mov    0x18(%rsp),%ecx
cmp    $0x3,%eax
jne    17db <main+0x6ab>
cmp    $0xa,%ecx
jl     17db <main+0x6ab>
mov    0x1c(%rsp),%eax
cmp    $0x3,%eax
je     17ba <main+0x68a>
cmp    $0x2,%eax
jne    18b2 <main+0x782>
lea    0xa35(%rip),%rdi
lea    0x9f2(%rip),%rsi
lea    0xa4d(%rip),%r8
jmp    17cf <main+0x69f>
lea    0xa1e(%rip),%rdi
lea    0x9db(%rip),%rsi
lea    0xa25(%rip),%r8
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
cmpl   $0x2,0x20(%rsp)
jne    1807 <main+0x6d7>
cmpl   $0x3,0x1c(%rsp)
jne    1807 <main+0x6d7>
mov    0x18(%rsp),%ecx
lea    0xa34(%rip),%rdi
lea    0x9a8(%rip),%rsi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
cmpl   $0x0,0x28(%rsp)
je     1831 <main+0x701>
cmpl   $0x3,0x24(%rsp)
jne    1831 <main+0x701>
lea    0xa22(%rip),%rdi
lea    0x980(%rip),%rsi
lea    0xa1b(%rip),%rdx
xor    %eax,%eax
call   1050 <printf@plt>
xor    %eax,%eax
cmpl   $0x0,0x10(%rsp)
jne    18a3 <main+0x773>
mov    0xc(%rsp),%edx
mov    0x8(%rsp),%ecx
mov    0x14(%rsp),%r9d
mov    0x4(%rsp),%ebp
sub    $0x8,%rsp
lea    0xa00(%rip),%rdi
lea    0xa0d(%rip),%rsi
lea    0xa1a(%rip),%r8
xor    %eax,%eax
push   %rbp
call   1050 <printf@plt>
add    $0x10,%rsp
mov    0x44(%rsp),%edx
lea    0xa1a(%rip),%rdi
lea    0xa1a(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xa19(%rip),%rdi
lea    0xa2b(%rip),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x95d(%rip),%rdi
lea    0x8e3(%rip),%rsi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
cmpl   $0x2,0x20(%rsp)
je     17e2 <main+0x6b2>
jmp    1807 <main+0x6d7>
lea    0x7ff(%rip),%rdi
call   1030 <puts@plt>
jmp    147a <main+0x34a>

LLVM IR (-O0):
@.str = [14 x i8] c"%s %s %d.%s%s\00"
@.str.1 = [4 x i8] c"DOS\00"
@.str.2 = [6 x i8] c"UNAME\00"
@.str.3 = [3 x i8] c"07\00"
@.str.4 = [1 x i8] zeroinitializer
@.str.5 = [20 x i8] c"\0ACopyright (c) %s\0A\0A\00"
@.str.6 = [17 x i8] c"2002 Claunia.com\00"
@.str.7 = [18 x i8] c"\0AMS-DOS %s %d.%d\0A\00"
@.str.8 = [8 x i8] c"version\00"
@.str.9 = [10 x i8] c"%s %d.%d\0A\00"
@.str.10 = [23 x i8] c"simulating DOS version\00"
@.str.11 = [18 x i8] c"\0APC-DOS %s %d.%d\0A\00"
@.str.12 = [18 x i8] c"\0ADR-DOS %s %d.%d\0A\00"
@.str.13 = [20 x i8] c"\0AFreeDOS %s 1.1.%d\0A\00"
@.str.14 = [11 x i8] c" %s %d.%d\0A\00"
@.str.15 = [13 x i8] c"\0AWindows 95\0A\00"
@.str.16 = [41 x i8] c"\0AWindows NT, Windows 2000 %s Windows XP\0A\00"
@.str.17 = [3 x i8] c"or\00"
@.str.18 = [7 x i8] c"\0AOS/2 \00"
@.str.19 = [6 x i8] c"1.%d\0A\00"
@.str.20 = [6 x i8] c"2.%d\0A\00"
@.str.21 = [12 x i8] c"Warp %1.2d\0A\00"
@.str.22 = [4 x i8] c"%s\0A\00"
@.str.23 = [16 x i8] c"unknown version\00"
@.str.24 = [14 x i8] c"\0APTS-DOS, %s\0A\00"
@.str.25 = [17 x i8] c"\0ARxDOS %s %d.%d\0A\00"
@.str.26 = [26 x i8] c"\0AConcurrent DOS %s %d.%d\0A\00"
@.str.27 = [22 x i8] c"\0ANovell DOS %s %d.%d\0A\00"
@.str.28 = [27 x i8] c"\0AMS-DOS / PC-DOS %s %d.%d\0A\00"
@.str.29 = [28 x i8] c"\0AWindows 95 OSR 2 %s OSR 3\0A\00"
@.str.30 = [24 x i8] c"\0AWindows 98 %s 98 S.E.\0A\00"
@.str.31 = [22 x i8] c"\0AWindows 95 OSR 2 %s\0A\00"
@.str.32 = [9 x i8] c"or upper\00"
@.str.33 = [20 x i8] c"\0AWindows Millenium\0A\00"
@.str.34 = [19 x i8] c"%s DESQview %d.%d\0A\00"
@.str.35 = [14 x i8] c"Running under\00"
@.str.36 = [16 x i8] c"%s 4DOS %d.0%d\0A\00"
@.str.37 = [15 x i8] c"%s 4DOS %d.%d\0A\00"
@.str.38 = [15 x i8] c"%s NDOS %d.%d\0A\00"
@.str.39 = [21 x i8] c"%s Windows %d.%d %s\0A\00"
@.str.40 = [17 x i8] c"in enhanced mode\00"
@.str.41 = [17 x i8] c"in standard mode\00"
@.str.42 = [18 x i8] c"%s Windows %d.%d\0A\00"
@.str.43 = [22 x i8] c"%s Windows/386 %d.%d\0A\00"
@.str.44 = [7 x i8] c"%s %s\0A\00"
@.str.45 = [17 x i8] c"SoftICE debugger\00"
@.str.46 = [20 x i8] c"\0A%s %d.%d, %s %d.%d\00"
@.str.47 = [20 x i8] c"Unknown DOS version\00"
@.str.48 = [23 x i8] c"that is simulating DOS\00"
@.str.49 = [7 x i8] c"\0A%s %x\00"
@.str.50 = [13 x i8] c"DOS OEM code\00"
@.str.51 = [25 x i8] c"\0A%s\0Aiosglpgc@teleline.es\00"
@.str.52 = [67 x i8] c"Please send this info and the operating system name and version to\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
store i32 0, i32* %1
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.4, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.6, i64 0, i64 0))
%21 = call i32 @getdosver(i32* %4, i32* %2, i32* %3, i32* %5, i32* %6, i32* %7, i32* %8, i32* %9, i32* %10, i32* %11, i32* %12, i32* %13, i32* %14, i32* %15, i32* %16, i32* %17, i32* %18)
%22 = load i32, i32* %4
%23 = icmp eq i32 %22, 1
br i1 %23, label %24, label %40
24: ; preds = %0
%25 = load i32, i32* %2
%26 = load i32, i32* %3
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %25, i32 %26)
%28 = load i32, i32* %2
%29 = load i32, i32* %5
%30 = icmp ne i32 %28, %29
br i1 %30, label %35, label %31
31: ; preds = %24
%32 = load i32, i32* %3
%33 = load i32, i32* %6
%34 = icmp ne i32 %32, %33
br i1 %34, label %35, label %39
35: ; preds = %31, %24
%36 = load i32, i32* %5
%37 = load i32, i32* %6
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %36, i32 %37)
br label %39
39: ; preds = %35, %31
br label %40
40: ; preds = %39, %0
%41 = load i32, i32* %4
%42 = icmp eq i32 %41, 2
br i1 %42, label %43, label %59
43: ; preds = %40
%44 = load i32, i32* %2
%45 = load i32, i32* %3
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %44, i32 %45)
%47 = load i32, i32* %2
%48 = load i32, i32* %5
%49 = icmp ne i32 %47, %48
br i1 %49, label %54, label %50
50: ; preds = %43
%51 = load i32, i32* %3
%52 = load i32, i32* %6
%53 = icmp ne i32 %51, %52
br i1 %53, label %54, label %58
54: ; preds = %50, %43
%55 = load i32, i32* %5
%56 = load i32, i32* %6
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %55, i32 %56)
br label %58
58: ; preds = %54, %50
br label %59
59: ; preds = %58, %40
%60 = load i32, i32* %4
%61 = icmp eq i32 %60, 3
br i1 %61, label %62, label %78
62: ; preds = %59
%63 = load i32, i32* %2
%64 = load i32, i32* %3
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %63, i32 %64)
%66 = load i32, i32* %2
%67 = load i32, i32* %5
%68 = icmp ne i32 %66, %67
br i1 %68, label %73, label %69
69: ; preds = %62
%70 = load i32, i32* %3
%71 = load i32, i32* %6
%72 = icmp ne i32 %70, %71
br i1 %72, label %73, label %77
73: ; preds = %69, %62
%74 = load i32, i32* %5
%75 = load i32, i32* %6
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %74, i32 %75)
br label %77
77: ; preds = %73, %69
br label %78
78: ; preds = %77, %59
%79 = load i32, i32* %4
%80 = icmp eq i32 %79, 4
br i1 %80, label %81, label %87
81: ; preds = %78
%82 = load i32, i32* %2
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %82)
%84 = load i32, i32* %5
%85 = load i32, i32* %6
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %84, i32 %85)
br label %87
87: ; preds = %81, %78
%88 = load i32, i32* %4
%89 = icmp eq i32 %88, 5
br i1 %89, label %90, label %106
90: ; preds = %87
%91 = load i32, i32* %2
%92 = load i32, i32* %3
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i64 0, i64 0), i32 %91, i32 %92)
%94 = load i32, i32* %2
%95 = load i32, i32* %5
%96 = icmp ne i32 %94, %95
br i1 %96, label %101, label %97
97: ; preds = %90
%98 = load i32, i32* %3
%99 = load i32, i32* %6
%100 = icmp ne i32 %98, %99
br i1 %100, label %101, label %105
101: ; preds = %97, %90
%102 = load i32, i32* %5
%103 = load i32, i32* %6
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %102, i32 %103)
br label %105
105: ; preds = %101, %97
br label %106
106: ; preds = %105, %87
%107 = load i32, i32* %4
%108 = icmp eq i32 %107, 6
br i1 %108, label %109, label %123
109: ; preds = %106
%110 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%111 = load i32, i32* %2
%112 = load i32, i32* %5
%113 = icmp ne i32 %111, %112
br i1 %113, label %118, label %114
114: ; preds = %109
%115 = load i32, i32* %3
%116 = load i32, i32* %6
%117 = icmp ne i32 %115, %116
br i1 %117, label %118, label %122
118: ; preds = %114, %109
%119 = load i32, i32* %5
%120 = load i32, i32* %6
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %119, i32 %120)
br label %122
122: ; preds = %118, %114
br label %123
123: ; preds = %122, %106
%124 = load i32, i32* %4
%125 = icmp eq i32 %124, 7
br i1 %125, label %126, label %169
126: ; preds = %123
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0))
%128 = load i32, i32* %2
%129 = icmp eq i32 %128, 10
br i1 %129, label %130, label %133
130: ; preds = %126
%131 = load i32, i32* %3
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), i32 %131)
br label %156
133: ; preds = %126
%134 = load i32, i32* %2
%135 = icmp eq i32 %134, 20
br i1 %135, label %136, label %142
136: ; preds = %133
%137 = load i32, i32* %3
%138 = icmp slt i32 %137, 30
br i1 %138, label %139, label %142
139: ; preds = %136
%140 = load i32, i32* %3
%141 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i32 %140)
br label %155
142: ; preds = %136, %133
%143 = load i32, i32* %2
%144 = icmp eq i32 %143, 20
br i1 %144, label %145, label %152
145: ; preds = %142
%146 = load i32, i32* %3
%147 = icmp sge i32 %146, 30
br i1 %147, label %148, label %152
148: ; preds = %145
%149 = load i32, i32* %3
%150 = sdiv i32 %149, 10
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.21, i64 0, i64 0), i32 %150)
br label %154
152: ; preds = %145, %142
%153 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0))
br label %154
154: ; preds = %152, %148
br label %155
155: ; preds = %154, %139
br label %156
156: ; preds = %155, %130
%157 = load i32, i32* %2
%158 = load i32, i32* %5
%159 = icmp ne i32 %157, %158
br i1 %159, label %164, label %160
160: ; preds = %156
%161 = load i32, i32* %3
%162 = load i32, i32* %6
%163 = icmp ne i32 %161, %162
br i1 %163, label %164, label %168
164: ; preds = %160, %156
%165 = load i32, i32* %5
%166 = load i32, i32* %6
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %165, i32 %166)
br label %168
168: ; preds = %164, %160
br label %169
169: ; preds = %168, %123
%170 = load i32, i32* %4
%171 = icmp eq i32 %170, 8
br i1 %171, label %172, label %177
172: ; preds = %169
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0))
%174 = load i32, i32* %5
%175 = load i32, i32* %6
%176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %174, i32 %175)
br label %177
177: ; preds = %172, %169
%178 = load i32, i32* %4
%179 = icmp eq i32 %178, 9
br i1 %179, label %180, label %196
180: ; preds = %177
%181 = load i32, i32* %2
%182 = load i32, i32* %3
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %181, i32 %182)
%184 = load i32, i32* %2
%185 = load i32, i32* %5
%186 = icmp ne i32 %184, %185
br i1 %186, label %191, label %187
187: ; preds = %180
%188 = load i32, i32* %3
%189 = load i32, i32* %6
%190 = icmp ne i32 %188, %189
br i1 %190, label %191, label %195
191: ; preds = %187, %180
%192 = load i32, i32* %5
%193 = load i32, i32* %6
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %192, i32 %193)
br label %195
195: ; preds = %191, %187
br label %196
196: ; preds = %195, %177
%197 = load i32, i32* %4
%198 = icmp eq i32 %197, 10
br i1 %198, label %199, label %215
199: ; preds = %196
%200 = load i32, i32* %2
%201 = load i32, i32* %3
%202 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %200, i32 %201)
%203 = load i32, i32* %2
%204 = load i32, i32* %5
%205 = icmp ne i32 %203, %204
br i1 %205, label %210, label %206
206: ; preds = %199
%207 = load i32, i32* %3
%208 = load i32, i32* %6
%209 = icmp ne i32 %207, %208
br i1 %209, label %210, label %214
210: ; preds = %206, %199
%211 = load i32, i32* %5
%212 = load i32, i32* %6
%213 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %211, i32 %212)
br label %214
214: ; preds = %210, %206
br label %215
215: ; preds = %214, %196
%216 = load i32, i32* %4
%217 = icmp eq i32 %216, 11
br i1 %217, label %218, label %234
218: ; preds = %215
%219 = load i32, i32* %2
%220 = load i32, i32* %3
%221 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %219, i32 %220)
%222 = load i32, i32* %2
%223 = load i32, i32* %5
%224 = icmp ne i32 %222, %223
br i1 %224, label %229, label %225
225: ; preds = %218
%226 = load i32, i32* %3
%227 = load i32, i32* %6
%228 = icmp ne i32 %226, %227
br i1 %228, label %229, label %233
229: ; preds = %225, %218
%230 = load i32, i32* %5
%231 = load i32, i32* %6
%232 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %230, i32 %231)
br label %233
233: ; preds = %229, %225
br label %234
234: ; preds = %233, %215
%235 = load i32, i32* %4
%236 = icmp eq i32 %235, 12
br i1 %236, label %237, label %241
237: ; preds = %234
%238 = load i32, i32* %2
%239 = load i32, i32* %3
%240 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %238, i32 %239)
br label %241
241: ; preds = %237, %234
%242 = load i32, i32* %4
%243 = icmp eq i32 %242, 13
br i1 %243, label %244, label %270
244: ; preds = %241
%245 = load i32, i32* %15
%246 = icmp slt i32 %245, 10
br i1 %246, label %247, label %249
247: ; preds = %244
%248 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
br label %257
249: ; preds = %244
%250 = load i32, i32* %15
%251 = icmp sge i32 %250, 10
br i1 %251, label %252, label %254
252: ; preds = %249
%253 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.30, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
br label %256
254: ; preds = %249
%255 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.32, i64 0, i64 0))
br label %256
256: ; preds = %254, %252
br label %257
257: ; preds = %256, %247
%258 = load i32, i32* %2
%259 = load i32, i32* %5
%260 = icmp ne i32 %258, %259
br i1 %260, label %265, label %261
261: ; preds = %257
%262 = load i32, i32* %3
%263 = load i32, i32* %6
%264 = icmp ne i32 %262, %263
br i1 %264, label %265, label %269
265: ; preds = %261, %257
%266 = load i32, i32* %5
%267 = load i32, i32* %6
%268 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %266, i32 %267)
br label %269
269: ; preds = %265, %261
br label %270
270: ; preds = %269, %241
%271 = load i32, i32* %4
%272 = icmp eq i32 %271, 14
br i1 %272, label %273, label %289
273: ; preds = %270
%274 = load i32, i32* %2
%275 = load i32, i32* %3
%276 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.33, i64 0, i64 0), i32 %274, i32 %275)
%277 = load i32, i32* %2
%278 = load i32, i32* %5
%279 = icmp ne i32 %277, %278
br i1 %279, label %284, label %280
280: ; preds = %273
%281 = load i32, i32* %3
%282 = load i32, i32* %6
%283 = icmp ne i32 %281, %282
br i1 %283, label %284, label %288
284: ; preds = %280, %273
%285 = load i32, i32* %5
%286 = load i32, i32* %6
%287 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %285, i32 %286)
br label %288
288: ; preds = %284, %280
br label %289
289: ; preds = %288, %270
%290 = load i32, i32* %8
%291 = icmp sge i32 %290, 2
br i1 %291, label %292, label %296
292: ; preds = %289
%293 = load i32, i32* %8
%294 = load i32, i32* %9
%295 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.34, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %293, i32 %294)
br label %296
296: ; preds = %292, %289
%297 = load i32, i32* %10
%298 = icmp sge i32 %297, 2
br i1 %298, label %299, label %311
299: ; preds = %296
%300 = load i32, i32* %11
%301 = icmp slt i32 %300, 10
br i1 %301, label %302, label %306
302: ; preds = %299
%303 = load i32, i32* %10
%304 = load i32, i32* %11
%305 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %303, i32 %304)
br label %310
306: ; preds = %299
%307 = load i32, i32* %10
%308 = load i32, i32* %11
%309 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.37, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %307, i32 %308)
br label %310
310: ; preds = %306, %302
br label %311
311: ; preds = %310, %296
%312 = load i32, i32* %12
%313 = icmp sgt i32 %312, 0
br i1 %313, label %314, label %318
314: ; preds = %311
%315 = load i32, i32* %12
%316 = load i32, i32* %13
%317 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %315, i32 %316)
br label %318
318: ; preds = %314, %311
%319 = load i32, i32* %14
%320 = icmp eq i32 %319, 3
br i1 %320, label %321, label %331
321: ; preds = %318
%322 = load i32, i32* %15
%323 = icmp slt i32 %322, 10
br i1 %323, label %324, label %331
324: ; preds = %321
%325 = load i32, i32* %16
%326 = icmp eq i32 %325, 3
br i1 %326, label %327, label %331
327: ; preds = %324
%328 = load i32, i32* %14
%329 = load i32, i32* %15
%330 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %328, i32 %329, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.40, i64 0, i64 0))
br label %331
331: ; preds = %327, %324, %321, %318
%332 = load i32, i32* %14
%333 = icmp eq i32 %332, 3
br i1 %333, label %334, label %357
334: ; preds = %331
%335 = load i32, i32* %15
%336 = icmp sge i32 %335, 10
br i1 %336, label %337, label %357
337: ; preds = %334
%338 = load i32, i32* %16
%339 = icmp eq i32 %338, 2
br i1 %339, label %340, label %344
340: ; preds = %337
%341 = load i32, i32* %14
%342 = load i32, i32* %15
%343 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %341, i32 %342, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.41, i64 0, i64 0))
br label %356
344: ; preds = %337
%345 = load i32, i32* %16
%346 = icmp eq i32 %345, 3
br i1 %346, label %347, label %351
347: ; preds = %344
%348 = load i32, i32* %14
%349 = load i32, i32* %15
%350 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %348, i32 %349, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.40, i64 0, i64 0))
br label %355
351: ; preds = %344
%352 = load i32, i32* %14
%353 = load i32, i32* %15
%354 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.42, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %352, i32 %353)
br label %355
355: ; preds = %351, %347
br label %356
356: ; preds = %355, %340
br label %357
357: ; preds = %356, %334, %331
%358 = load i32, i32* %14
%359 = icmp eq i32 %358, 2
br i1 %359, label %360, label %367
360: ; preds = %357
%361 = load i32, i32* %16
%362 = icmp eq i32 %361, 3
br i1 %362, label %363, label %367
363: ; preds = %360
%364 = load i32, i32* %14
%365 = load i32, i32* %15
%366 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %364, i32 %365)
br label %367
367: ; preds = %363, %360, %357
%368 = load i32, i32* %17
%369 = icmp ne i32 %368, 0
br i1 %369, label %370, label %375
370: ; preds = %367
%371 = load i32, i32* %18
%372 = icmp eq i32 %371, 3
br i1 %372, label %373, label %375
373: ; preds = %370
%374 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
br label %375
375: ; preds = %373, %370, %367
%376 = load i32, i32* %4
%377 = icmp eq i32 %376, 0
br i1 %377, label %378, label %387
378: ; preds = %375
%379 = load i32, i32* %2
%380 = load i32, i32* %3
%381 = load i32, i32* %5
%382 = load i32, i32* %6
%383 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.47, i64 0, i64 0), i32 %379, i32 %380, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.48, i64 0, i64 0), i32 %381, i32 %382)
%384 = load i32, i32* %7
%385 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.50, i64 0, i64 0), i32 %384)
%386 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.51, i64 0, i64 0), i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.52, i64 0, i64 0))
store i32 1, i32* %1
br label %388
387: ; preds = %375
store i32 0, i32* %1
br label %388
388: ; preds = %387, %378
%389 = load i32, i32* %1
ret i32 %389
}

LLVM IR (-O2):
@.str = [14 x i8] c"%s %s %d.%s%s\00"
@.str.1 = [4 x i8] c"DOS\00"
@.str.2 = [6 x i8] c"UNAME\00"
@.str.3 = [3 x i8] c"07\00"
@.str.4 = [1 x i8] zeroinitializer
@.str.5 = [20 x i8] c"\0ACopyright (c) %s\0A\0A\00"
@.str.6 = [17 x i8] c"2002 Claunia.com\00"
@.str.7 = [18 x i8] c"\0AMS-DOS %s %d.%d\0A\00"
@.str.8 = [8 x i8] c"version\00"
@.str.9 = [10 x i8] c"%s %d.%d\0A\00"
@.str.10 = [23 x i8] c"simulating DOS version\00"
@.str.11 = [18 x i8] c"\0APC-DOS %s %d.%d\0A\00"
@.str.12 = [18 x i8] c"\0ADR-DOS %s %d.%d\0A\00"
@.str.13 = [20 x i8] c"\0AFreeDOS %s 1.1.%d\0A\00"
@.str.14 = [11 x i8] c" %s %d.%d\0A\00"
@.str.16 = [41 x i8] c"\0AWindows NT, Windows 2000 %s Windows XP\0A\00"
@.str.17 = [3 x i8] c"or\00"
@.str.18 = [7 x i8] c"\0AOS/2 \00"
@.str.19 = [6 x i8] c"1.%d\0A\00"
@.str.20 = [6 x i8] c"2.%d\0A\00"
@.str.21 = [12 x i8] c"Warp %1.2d\0A\00"
@.str.23 = [16 x i8] c"unknown version\00"
@.str.24 = [14 x i8] c"\0APTS-DOS, %s\0A\00"
@.str.25 = [17 x i8] c"\0ARxDOS %s %d.%d\0A\00"
@.str.26 = [26 x i8] c"\0AConcurrent DOS %s %d.%d\0A\00"
@.str.27 = [22 x i8] c"\0ANovell DOS %s %d.%d\0A\00"
@.str.28 = [27 x i8] c"\0AMS-DOS / PC-DOS %s %d.%d\0A\00"
@.str.29 = [28 x i8] c"\0AWindows 95 OSR 2 %s OSR 3\0A\00"
@.str.30 = [24 x i8] c"\0AWindows 98 %s 98 S.E.\0A\00"
@.str.34 = [19 x i8] c"%s DESQview %d.%d\0A\00"
@.str.35 = [14 x i8] c"Running under\00"
@.str.36 = [16 x i8] c"%s 4DOS %d.0%d\0A\00"
@.str.37 = [15 x i8] c"%s 4DOS %d.%d\0A\00"
@.str.38 = [15 x i8] c"%s NDOS %d.%d\0A\00"
@.str.39 = [21 x i8] c"%s Windows %d.%d %s\0A\00"
@.str.40 = [17 x i8] c"in enhanced mode\00"
@.str.41 = [17 x i8] c"in standard mode\00"
@.str.42 = [18 x i8] c"%s Windows %d.%d\0A\00"
@.str.43 = [22 x i8] c"%s Windows/386 %d.%d\0A\00"
@.str.44 = [7 x i8] c"%s %s\0A\00"
@.str.45 = [17 x i8] c"SoftICE debugger\00"
@.str.46 = [20 x i8] c"\0A%s %d.%d, %s %d.%d\00"
@.str.47 = [20 x i8] c"Unknown DOS version\00"
@.str.48 = [23 x i8] c"that is simulating DOS\00"
@.str.49 = [7 x i8] c"\0A%s %x\00"
@.str.50 = [13 x i8] c"DOS OEM code\00"
@.str.51 = [25 x i8] c"\0A%s\0Aiosglpgc@teleline.es\00"
@.str.52 = [67 x i8] c"Please send this info and the operating system name and version to\00"
@str = [19 x i8] c"\0AWindows Millenium\00"
@str.53 = [12 x i8] c"\0AWindows 95\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = bitcast i32* %1 to i8*
%19 = bitcast i32* %2 to i8*
%20 = bitcast i32* %3 to i8*
%21 = bitcast i32* %4 to i8*
%22 = bitcast i32* %5 to i8*
%23 = bitcast i32* %6 to i8*
%24 = bitcast i32* %7 to i8*
%25 = bitcast i32* %8 to i8*
%26 = bitcast i32* %9 to i8*
%27 = bitcast i32* %10 to i8*
%28 = bitcast i32* %11 to i8*
%29 = bitcast i32* %12 to i8*
%30 = bitcast i32* %13 to i8*
%31 = bitcast i32* %14 to i8*
%32 = bitcast i32* %15 to i8*
%33 = bitcast i32* %16 to i8*
%34 = bitcast i32* %17 to i8*
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.4, i64 0, i64 0))
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.6, i64 0, i64 0))
%37 = call i32 @getdosver(i32* %3, i32* %1, i32* %2, i32* %4, i32* %5, i32* %6, i32* %7, i32* %8, i32* %9, i32* %10, i32* %11, i32* %12, i32* %13, i32* %14, i32* %15, i32* %16, i32* %17)
%38 = load i32, i32* %3
%39 = icmp eq i32 %38, 1
br i1 %39, label %40, label %58
40: ; preds = %0
%41 = load i32, i32* %1
%42 = load i32, i32* %2
%43 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %41, i32 %42)
%44 = load i32, i32* %1
%45 = load i32, i32* %4
%46 = icmp eq i32 %44, %45
br i1 %46, label %49, label %47
47: ; preds = %40
%48 = load i32, i32* %5
br label %53
49: ; preds = %40
%50 = load i32, i32* %2
%51 = load i32, i32* %5
%52 = icmp eq i32 %50, %51
br i1 %52, label %56, label %53
53: ; preds = %47, %49
%54 = phi i32 [ %48, %47 ], [ %51, %49 ]
%55 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %45, i32 %54)
br label %56
56: ; preds = %53, %49
%57 = load i32, i32* %3
br label %58
58: ; preds = %56, %0
%59 = phi i32 [ %57, %56 ], [ %38, %0 ]
%60 = icmp eq i32 %59, 2
br i1 %60, label %61, label %77
61: ; preds = %58
%62 = load i32, i32* %1
%63 = load i32, i32* %2
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %62, i32 %63)
%65 = load i32, i32* %1
%66 = load i32, i32* %4
%67 = icmp eq i32 %65, %66
br i1 %67, label %70, label %68
68: ; preds = %61
%69 = load i32, i32* %5
br label %74
70: ; preds = %61
%71 = load i32, i32* %2
%72 = load i32, i32* %5
%73 = icmp eq i32 %71, %72
br i1 %73, label %77, label %74
74: ; preds = %68, %70
%75 = phi i32 [ %69, %68 ], [ %72, %70 ]
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %66, i32 %75)
br label %77
77: ; preds = %70, %74, %58
%78 = load i32, i32* %3
%79 = icmp eq i32 %78, 3
br i1 %79, label %80, label %98
80: ; preds = %77
%81 = load i32, i32* %1
%82 = load i32, i32* %2
%83 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %81, i32 %82)
%84 = load i32, i32* %1
%85 = load i32, i32* %4
%86 = icmp eq i32 %84, %85
br i1 %86, label %89, label %87
87: ; preds = %80
%88 = load i32, i32* %5
br label %93
89: ; preds = %80
%90 = load i32, i32* %2
%91 = load i32, i32* %5
%92 = icmp eq i32 %90, %91
br i1 %92, label %96, label %93
93: ; preds = %87, %89
%94 = phi i32 [ %88, %87 ], [ %91, %89 ]
%95 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %85, i32 %94)
br label %96
96: ; preds = %93, %89
%97 = load i32, i32* %3
br label %98
98: ; preds = %96, %77
%99 = phi i32 [ %97, %96 ], [ %78, %77 ]
%100 = icmp eq i32 %99, 4
br i1 %100, label %101, label %108
101: ; preds = %98
%102 = load i32, i32* %1
%103 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %102)
%104 = load i32, i32* %4
%105 = load i32, i32* %5
%106 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %104, i32 %105)
%107 = load i32, i32* %3
br label %108
108: ; preds = %101, %98
%109 = phi i32 [ %107, %101 ], [ %99, %98 ]
%110 = icmp eq i32 %109, 5
br i1 %110, label %111, label %127
111: ; preds = %108
%112 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.53, i64 0, i64 0))
%113 = load i32, i32* %1
%114 = load i32, i32* %4
%115 = icmp eq i32 %113, %114
br i1 %115, label %118, label %116
116: ; preds = %111
%117 = load i32, i32* %5
br label %122
118: ; preds = %111
%119 = load i32, i32* %2
%120 = load i32, i32* %5
%121 = icmp eq i32 %119, %120
br i1 %121, label %125, label %122
122: ; preds = %116, %118
%123 = phi i32 [ %117, %116 ], [ %120, %118 ]
%124 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %114, i32 %123)
br label %125
125: ; preds = %122, %118
%126 = load i32, i32* %3
br label %127
127: ; preds = %125, %108
%128 = phi i32 [ %126, %125 ], [ %109, %108 ]
%129 = icmp eq i32 %128, 6
br i1 %129, label %130, label %144
130: ; preds = %127
%131 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%132 = load i32, i32* %1
%133 = load i32, i32* %4
%134 = icmp eq i32 %132, %133
br i1 %134, label %137, label %135
135: ; preds = %130
%136 = load i32, i32* %5
br label %141
137: ; preds = %130
%138 = load i32, i32* %2
%139 = load i32, i32* %5
%140 = icmp eq i32 %138, %139
br i1 %140, label %144, label %141
141: ; preds = %135, %137
%142 = phi i32 [ %136, %135 ], [ %139, %137 ]
%143 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %133, i32 %142)
br label %144
144: ; preds = %137, %141, %127
%145 = load i32, i32* %3
%146 = icmp eq i32 %145, 7
br i1 %146, label %147, label %184
147: ; preds = %144
%148 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0))
%149 = load i32, i32* %1
%150 = icmp eq i32 %149, 10
br i1 %150, label %151, label %154
151: ; preds = %147
%152 = load i32, i32* %2
%153 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), i32 %152)
br label %169
154: ; preds = %147
%155 = icmp eq i32 %149, 20
%156 = load i32, i32* %2
%157 = icmp slt i32 %156, 30
%158 = select i1 %155, i1 %157, i1 false
br i1 %158, label %159, label %161
159: ; preds = %154
%160 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i32 %156)
br label %169
161: ; preds = %154
%162 = icmp sgt i32 %156, 29
%163 = select i1 %155, i1 %162, i1 false
br i1 %163, label %164, label %167
164: ; preds = %161
%165 = udiv i32 %156, 10
%166 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.21, i64 0, i64 0), i32 %165)
br label %169
167: ; preds = %161
%168 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0))
br label %169
169: ; preds = %159, %167, %164, %151
%170 = load i32, i32* %1
%171 = load i32, i32* %4
%172 = icmp eq i32 %170, %171
br i1 %172, label %175, label %173
173: ; preds = %169
%174 = load i32, i32* %5
br label %179
175: ; preds = %169
%176 = load i32, i32* %2
%177 = load i32, i32* %5
%178 = icmp eq i32 %176, %177
br i1 %178, label %182, label %179
179: ; preds = %173, %175
%180 = phi i32 [ %174, %173 ], [ %177, %175 ]
%181 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %171, i32 %180)
br label %182
182: ; preds = %179, %175
%183 = load i32, i32* %3
br label %184
184: ; preds = %182, %144
%185 = phi i32 [ %183, %182 ], [ %145, %144 ]
%186 = icmp eq i32 %185, 8
br i1 %186, label %187, label %193
187: ; preds = %184
%188 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.23, i64 0, i64 0))
%189 = load i32, i32* %4
%190 = load i32, i32* %5
%191 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %189, i32 %190)
%192 = load i32, i32* %3
br label %193
193: ; preds = %187, %184
%194 = phi i32 [ %192, %187 ], [ %185, %184 ]
%195 = icmp eq i32 %194, 9
br i1 %195, label %196, label %214
196: ; preds = %193
%197 = load i32, i32* %1
%198 = load i32, i32* %2
%199 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %197, i32 %198)
%200 = load i32, i32* %1
%201 = load i32, i32* %4
%202 = icmp eq i32 %200, %201
br i1 %202, label %205, label %203
203: ; preds = %196
%204 = load i32, i32* %5
br label %209
205: ; preds = %196
%206 = load i32, i32* %2
%207 = load i32, i32* %5
%208 = icmp eq i32 %206, %207
br i1 %208, label %212, label %209
209: ; preds = %203, %205
%210 = phi i32 [ %204, %203 ], [ %207, %205 ]
%211 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %201, i32 %210)
br label %212
212: ; preds = %209, %205
%213 = load i32, i32* %3
br label %214
214: ; preds = %212, %193
%215 = phi i32 [ %213, %212 ], [ %194, %193 ]
%216 = icmp eq i32 %215, 10
br i1 %216, label %217, label %233
217: ; preds = %214
%218 = load i32, i32* %1
%219 = load i32, i32* %2
%220 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %218, i32 %219)
%221 = load i32, i32* %1
%222 = load i32, i32* %4
%223 = icmp eq i32 %221, %222
br i1 %223, label %226, label %224
224: ; preds = %217
%225 = load i32, i32* %5
br label %230
226: ; preds = %217
%227 = load i32, i32* %2
%228 = load i32, i32* %5
%229 = icmp eq i32 %227, %228
br i1 %229, label %233, label %230
230: ; preds = %224, %226
%231 = phi i32 [ %225, %224 ], [ %228, %226 ]
%232 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %222, i32 %231)
br label %233
233: ; preds = %226, %230, %214
%234 = load i32, i32* %3
%235 = icmp eq i32 %234, 11
br i1 %235, label %236, label %254
236: ; preds = %233
%237 = load i32, i32* %1
%238 = load i32, i32* %2
%239 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %237, i32 %238)
%240 = load i32, i32* %1
%241 = load i32, i32* %4
%242 = icmp eq i32 %240, %241
br i1 %242, label %245, label %243
243: ; preds = %236
%244 = load i32, i32* %5
br label %249
245: ; preds = %236
%246 = load i32, i32* %2
%247 = load i32, i32* %5
%248 = icmp eq i32 %246, %247
br i1 %248, label %252, label %249
249: ; preds = %243, %245
%250 = phi i32 [ %244, %243 ], [ %247, %245 ]
%251 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %241, i32 %250)
br label %252
252: ; preds = %249, %245
%253 = load i32, i32* %3
br label %254
254: ; preds = %252, %233
%255 = phi i32 [ %253, %252 ], [ %234, %233 ]
%256 = icmp eq i32 %255, 12
br i1 %256, label %257, label %262
257: ; preds = %254
%258 = load i32, i32* %1
%259 = load i32, i32* %2
%260 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 %258, i32 %259)
%261 = load i32, i32* %3
br label %262
262: ; preds = %257, %254
%263 = phi i32 [ %261, %257 ], [ %255, %254 ]
%264 = icmp eq i32 %263, 13
br i1 %264, label %265, label %284
265: ; preds = %262
%266 = load i32, i32* %14
%267 = icmp slt i32 %266, 10
%268 = select i1 %267, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.30, i64 0, i64 0)
%269 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %268, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%270 = load i32, i32* %1
%271 = load i32, i32* %4
%272 = icmp eq i32 %270, %271
br i1 %272, label %275, label %273
273: ; preds = %265
%274 = load i32, i32* %5
br label %279
275: ; preds = %265
%276 = load i32, i32* %2
%277 = load i32, i32* %5
%278 = icmp eq i32 %276, %277
br i1 %278, label %282, label %279
279: ; preds = %273, %275
%280 = phi i32 [ %274, %273 ], [ %277, %275 ]
%281 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %271, i32 %280)
br label %282
282: ; preds = %279, %275
%283 = load i32, i32* %3
br label %284
284: ; preds = %282, %262
%285 = phi i32 [ %283, %282 ], [ %263, %262 ]
%286 = icmp eq i32 %285, 14
br i1 %286, label %287, label %301
287: ; preds = %284
%288 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str, i64 0, i64 0))
%289 = load i32, i32* %1
%290 = load i32, i32* %4
%291 = icmp eq i32 %289, %290
br i1 %291, label %294, label %292
292: ; preds = %287
%293 = load i32, i32* %5
br label %298
294: ; preds = %287
%295 = load i32, i32* %2
%296 = load i32, i32* %5
%297 = icmp eq i32 %295, %296
br i1 %297, label %301, label %298
298: ; preds = %292, %294
%299 = phi i32 [ %293, %292 ], [ %296, %294 ]
%300 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.10, i64 0, i64 0), i32 %290, i32 %299)
br label %301
301: ; preds = %294, %298, %284
%302 = load i32, i32* %7
%303 = icmp sgt i32 %302, 1
br i1 %303, label %304, label %307
304: ; preds = %301
%305 = load i32, i32* %8
%306 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.34, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %302, i32 %305)
br label %307
307: ; preds = %304, %301
%308 = load i32, i32* %9
%309 = icmp sgt i32 %308, 1
br i1 %309, label %310, label %315
310: ; preds = %307
%311 = load i32, i32* %10
%312 = icmp slt i32 %311, 10
%313 = select i1 %312, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.37, i64 0, i64 0)
%314 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %313, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %308, i32 %311)
br label %315
315: ; preds = %310, %307
%316 = load i32, i32* %11
%317 = icmp sgt i32 %316, 0
br i1 %317, label %318, label %321
318: ; preds = %315
%319 = load i32, i32* %12
%320 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 %316, i32 %319)
br label %321
321: ; preds = %318, %315
%322 = load i32, i32* %13
%323 = icmp eq i32 %322, 3
%324 = load i32, i32* %14
%325 = icmp slt i32 %324, 10
%326 = select i1 %323, i1 %325, i1 false
%327 = load i32, i32* %15
%328 = icmp eq i32 %327, 3
%329 = select i1 %326, i1 %328, i1 false
br i1 %329, label %330, label %334
330: ; preds = %321
%331 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 3, i32 %324, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.40, i64 0, i64 0))
%332 = load i32, i32* %13
%333 = load i32, i32* %14
br label %334
334: ; preds = %330, %321
%335 = phi i32 [ %333, %330 ], [ %324, %321 ]
%336 = phi i32 [ %332, %330 ], [ %322, %321 ]
%337 = icmp eq i32 %336, 3
%338 = icmp sgt i32 %335, 9
%339 = select i1 %337, i1 %338, i1 false
br i1 %339, label %340, label %348
340: ; preds = %334
%341 = load i32, i32* %15
switch i32 %341, label %346 [
i32 2, label %342
i32 3, label %344
]
342: ; preds = %340
%343 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 3, i32 %335, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.41, i64 0, i64 0))
br label %348
344: ; preds = %340
%345 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.39, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 3, i32 %335, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.40, i64 0, i64 0))
br label %348
346: ; preds = %340
%347 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.42, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 3, i32 %335)
br label %348
348: ; preds = %342, %346, %344, %334
%349 = load i32, i32* %13
%350 = icmp eq i32 %349, 2
%351 = load i32, i32* %15
%352 = icmp eq i32 %351, 3
%353 = select i1 %350, i1 %352, i1 false
br i1 %353, label %354, label %357
354: ; preds = %348
%355 = load i32, i32* %14
%356 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i32 2, i32 %355)
br label %357
357: ; preds = %354, %348
%358 = load i32, i32* %16
%359 = icmp ne i32 %358, 0
%360 = load i32, i32* %17
%361 = icmp eq i32 %360, 3
%362 = select i1 %359, i1 %361, i1 false
br i1 %362, label %363, label %365
363: ; preds = %357
%364 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.35, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.45, i64 0, i64 0))
br label %365
365: ; preds = %363, %357
%366 = load i32, i32* %3
%367 = icmp eq i32 %366, 0
br i1 %367, label %368, label %377
368: ; preds = %365
%369 = load i32, i32* %1
%370 = load i32, i32* %2
%371 = load i32, i32* %4
%372 = load i32, i32* %5
%373 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.47, i64 0, i64 0), i32 %369, i32 %370, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.48, i64 0, i64 0), i32 %371, i32 %372)
%374 = load i32, i32* %6
%375 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.50, i64 0, i64 0), i32 %374)
%376 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.51, i64 0, i64 0), i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.52, i64 0, i64 0))
br label %377
377: ; preds = %365, %368
%378 = phi i32 [ 1, %368 ], [ 0, %365 ]
ret i32 %378
}