#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 */
scalar_t__ EOF;
int atoi(char *);
scalar_t__ isprint(char);
int palindrom(char *, int);
scalar_t__ pretecenie(char *, int);
int /*<<< orphan*/ printf(char *, ...);
int prvocislo(int);
scalar_t__ scanf(char *, char *);
int /*<<< orphan*/ spravcas(char *);
char zisti(char *, int);
int main(int argc, char *argv[]) {
  (void)(argv);
  if (argc > 1) {
    printf("Chyba pri spusteni programu. Prosim, spustite program bez "
           "argumentov!");
  } else {
    char vstup[102];
    while (scanf("%101s", vstup) != EOF) {
      int dlzka = 0;
      while (vstup[dlzka] != '\0') {
        dlzka++;
      }
      if (dlzka > 100) {
        printf("Na vstupe sa nachadza  slovo, resp. cislo vacsie ako 100 "
               "znakov. Prosim, zadajte slovo, resp. cislo max. do 100 znakov "
               "a opakujte.");
        return 0;
      }
      dlzka--;
      int i = 0;
      while (vstup[i] != '\0') {
        if (isprint(vstup[i]) == 0) {
          printf("Na vstupe sa nachadzaju netisknutelne znaky. Prosim, zadajte "
                 "tisknutelne znaky a spustite program znovu.");
          return 0;
        }
        i++;
      }
      char udaj = zisti(vstup, dlzka);
      if (udaj == 'c') {
        int novadlzka;
        i = 0;
        char opravenyvstup[101];
        if ((vstup[0] == 45)) {
          while (vstup[i + 1] == '0')
            i++;
          novadlzka = dlzka - i;
          opravenyvstup[0] = '-';
          for (int j = 1; j <= novadlzka; j++) {
            opravenyvstup[j] = vstup[j + i];
          }
          opravenyvstup[novadlzka + 1] = '\0';
        } else if ((vstup[0] == 43) || vstup[0] == 48) {
          while (vstup[i + 1] == '0')
            i++;
          novadlzka = dlzka - i;
          for (int j = 0; j <= novadlzka; j++) {
            opravenyvstup[j] = vstup[j + i + 1];
          }
          opravenyvstup[novadlzka + 1] = '\0';
        } else {
          novadlzka = dlzka;
          for (i = 0; i <= dlzka; i++)
            opravenyvstup[i] = vstup[i];
          opravenyvstup[dlzka + 1] = '\0';
        }
        if (pretecenie(opravenyvstup, novadlzka) == 0)
          printf("number: %s\n", opravenyvstup);
        else {
          int number = atoi(opravenyvstup);
          if (prvocislo(number) == 1)
            printf("number: %d (prime)\n", number);
          else
            printf("number: %d\n", number);
        }
      } else if (udaj == 'd') {
        spravcas(vstup);
        printf("\n");
      } else if (udaj == 's') {
        if (palindrom(vstup, dlzka) == 1)
          printf("word: %s (palindrome)\n", vstup);
        else
          printf("word: %s\n", vstup);
      } else {
        printf("Neocakavane vstupne data. Zadajte platne data a spustite "
               "program este raz!");
        return 0;
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x1,-0x8(%rbp)
jle    11c6 <main+0x36>
lea    0xe46(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1624 <main+0x494>
jmp    11cb <main+0x3b>
lea    -0x80(%rbp),%rsi
lea    0xe70(%rip),%rdi
call   1070 <scanf@plt>
mov    0x2e06(%rip),%rcx
cmp    (%rcx),%rax
je     161f <main+0x48f>
movl   $0x0,-0x84(%rbp)
movslq -0x84(%rbp),%rax
movsbl -0x80(%rbp,%rax,1),%eax
cmp    $0x0,%eax
je     121e <main+0x8e>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    11f5 <main+0x65>
cmpl   $0x64,-0x84(%rbp)
jle    1245 <main+0xb5>
lea    0xe1a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    162b <main+0x49b>
mov    -0x84(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
movl   $0x0,-0x88(%rbp)
movslq -0x88(%rbp),%rax
movsbl -0x80(%rbp,%rax,1),%eax
cmp    $0x0,%eax
je     12bc <main+0x12c>
movslq -0x88(%rbp),%rax
movsbl -0x80(%rbp,%rax,1),%edi
call   1080 <isprint@plt>
cmp    $0x0,%rax
jne    12a8 <main+0x118>
lea    0xe3a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    162b <main+0x49b>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    125e <main+0xce>
lea    -0x80(%rbp),%rdi
mov    -0x84(%rbp),%esi
call   1040 <zisti@plt>
mov    %al,-0x89(%rbp)
movsbl -0x89(%rbp),%eax
cmp    $0x63,%eax
jne    1574 <main+0x3e4>
movl   $0x0,-0x88(%rbp)
movsbl -0x80(%rbp),%eax
cmp    $0x2d,%eax
jne    13ab <main+0x21b>
jmp    12fd <main+0x16d>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x80(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jne    132a <main+0x19a>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    12fd <main+0x16d>
mov    -0x84(%rbp),%eax
sub    -0x88(%rbp),%eax
mov    %eax,-0x90(%rbp)
movb   $0x2d,-0x100(%rbp)
movl   $0x1,-0x104(%rbp)
mov    -0x104(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     1393 <main+0x203>
mov    -0x104(%rbp),%eax
add    -0x88(%rbp),%eax
cltq
mov    -0x80(%rbp,%rax,1),%cl
movslq -0x104(%rbp),%rax
mov    %cl,-0x100(%rbp,%rax,1)
mov    -0x104(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x104(%rbp)
jmp    134d <main+0x1bd>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x0,-0x100(%rbp,%rax,1)
jmp    14e1 <main+0x351>
movsbl -0x80(%rbp),%eax
cmp    $0x2b,%eax
je     13c5 <main+0x235>
movsbl -0x80(%rbp),%eax
cmp    $0x30,%eax
jne    1474 <main+0x2e4>
jmp    13ca <main+0x23a>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x80(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jne    13f7 <main+0x267>
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    13ca <main+0x23a>
mov    -0x84(%rbp),%eax
sub    -0x88(%rbp),%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x108(%rbp)
mov    -0x108(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     145c <main+0x2cc>
mov    -0x108(%rbp),%eax
add    -0x88(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0x80(%rbp,%rax,1),%cl
movslq -0x108(%rbp),%rax
mov    %cl,-0x100(%rbp,%rax,1)
mov    -0x108(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x108(%rbp)
jmp    1413 <main+0x283>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x0,-0x100(%rbp,%rax,1)
jmp    14dc <main+0x34c>
mov    -0x84(%rbp),%eax
mov    %eax,-0x90(%rbp)
movl   $0x0,-0x88(%rbp)
mov    -0x88(%rbp),%eax
cmp    -0x84(%rbp),%eax
jg     14c9 <main+0x339>
movslq -0x88(%rbp),%rax
mov    -0x80(%rbp,%rax,1),%cl
movslq -0x88(%rbp),%rax
mov    %cl,-0x100(%rbp,%rax,1)
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    148a <main+0x2fa>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x0,-0x100(%rbp,%rax,1)
jmp    14e1 <main+0x351>
lea    -0x100(%rbp),%rdi
mov    -0x90(%rbp),%esi
call   1050 <pretecenie@plt>
cmp    $0x0,%rax
jne    1517 <main+0x387>
lea    -0x100(%rbp),%rsi
lea    0xc2d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    156f <main+0x3df>
lea    -0x100(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x10c(%rbp)
mov    -0x10c(%rbp),%edi
call   1060 <prvocislo@plt>
cmp    $0x1,%eax
jne    1556 <main+0x3c6>
mov    -0x10c(%rbp),%esi
lea    0xbfa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    156a <main+0x3da>
mov    -0x10c(%rbp),%esi
lea    0xbf5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    156f <main+0x3df>
jmp    161a <main+0x48a>
movsbl -0x89(%rbp),%eax
cmp    $0x64,%eax
jne    15a0 <main+0x410>
lea    -0x80(%rbp),%rdi
call   10a0 <spravcas@plt>
lea    0xbc2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1615 <main+0x485>
movsbl -0x89(%rbp),%eax
cmp    $0x73,%eax
jne    15f6 <main+0x466>
lea    -0x80(%rbp),%rdi
mov    -0x84(%rbp),%esi
call   1090 <palindrom@plt>
cmp    $0x1,%eax
jne    15df <main+0x44f>
lea    -0x80(%rbp),%rsi
lea    0xb91(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15f1 <main+0x461>
lea    -0x80(%rbp),%rsi
lea    0xb91(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1610 <main+0x480>
lea    0xb88(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    162b <main+0x49b>
jmp    1615 <main+0x485>
jmp    161a <main+0x48a>
jmp    11cb <main+0x3b>
jmp    1624 <main+0x494>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xd8,%rsp
cmp    $0x2,%edi
jl     11d2 <main+0x22>
lea    0xe33(%rip),%rdi
jmp    155a <main+0x3aa>
lea    0xe6d(%rip),%rdi
mov    %rsp,%rsi
call   1090 <scanf@plt>
mov    0x2e00(%rip),%r14
cmp    (%r14),%rax
je     1561 <main+0x3b1>
lea    0x1(%rsp),%r13
mov    %rsp,%r15
xor    %ecx,%ecx
jmp    122c <main+0x7c>
mov    %r15,%rdi
call   10c0 <spravcas@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe30(%rip),%rdi
mov    %r15,%rsi
call   1090 <scanf@plt>
mov    $0x0,%ecx
cmp    (%r14),%rax
je     1561 <main+0x3b1>
mov    %rcx,%rbp
add    $0x1,%rcx
cmpb   $0x0,(%rsp,%rbp,1)
jne    122c <main+0x7c>
cmp    $0x64,%ebp
ja     1575 <main+0x3c5>
mov    (%rsp),%al
test   %al,%al
je     126c <main+0xbc>
mov    %r13,%rbx
nopl   0x0(%rax)
movsbl %al,%edi
call   10a0 <isprint@plt>
test   %rax,%rax
je     1553 <main+0x3a3>
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
jne    1250 <main+0xa0>
lea    -0x1(%rbp),%r12d
mov    %r15,%rdi
mov    %r12d,%esi
call   1050 <zisti@plt>
cmp    $0x73,%al
je     12ef <main+0x13f>
cmp    $0x64,%al
je     11fd <main+0x4d>
cmp    $0x63,%al
jne    157e <main+0x3ce>
mov    (%rsp),%al
cmp    $0x2b,%al
je     130f <main+0x15f>
cmp    $0x30,%al
je     130f <main+0x15f>
cmp    $0x2d,%al
jne    1465 <main+0x2b5>
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmpb   $0x30,0x1(%rsp,%rbx,1)
lea    0x1(%rbx),%rbx
je     12b0 <main+0x100>
mov    %r13,%r14
mov    %rbp,%r12
sub    %rbx,%r12
movb   $0x2d,0x70(%rsp)
test   %r12d,%r12d
jle    12e8 <main+0x138>
mov    %ebx,%eax
lea    (%rsp,%rax,1),%rsi
mov    %ebx,%edx
not    %edx
add    %ebp,%edx
add    $0x1,%rdx
lea    0x71(%rsp),%rdi
call   1060 <memcpy@plt>
sub    %ebx,%ebp
jmp    13dd <main+0x22d>
mov    %r15,%rdi
mov    %r12d,%esi
call   10b0 <palindrom@plt>
cmp    $0x1,%eax
jne    141d <main+0x26d>
lea    0xe5a(%rip),%rdi
jmp    1424 <main+0x274>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rax,%rcx
add    $0x1,%rax
cmpb   $0x30,0x1(%rsp,%rcx,1)
je     1320 <main+0x170>
mov    %rbp,%r12
sub    %rax,%r12
test   %r12d,%r12d
js     13d8 <main+0x228>
lea    0x1(%r12),%r9
mov    %r9d,%r10d
cmp    $0x8,%r10
jae    148b <main+0x2db>
xor    %edx,%edx
mov    %ebp,%esi
sub    %edx,%esi
sub    %eax,%esi
add    $0x1,%esi
mov    %rdx,%rdi
not    %rdi
add    %rdi,%r10
test   $0x3,%sil
je     1395 <main+0x1e5>
mov    %ebp,%ebx
sub    %cl,%bl
sub    %dl,%bl
movzbl %bl,%edi
and    $0x3,%edi
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rax,%rdx,1),%esi
movzbl (%rsp,%rsi,1),%ebx
mov    %bl,0x70(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0xffffffffffffffff,%rdi
jne    1380 <main+0x1d0>
cmp    $0x3,%r10
jb     13d8 <main+0x228>
mov    %ebp,%esi
sub    %ecx,%esi
nop
lea    (%rax,%rdx,1),%rcx
mov    %ecx,%edi
movzbl (%rsp,%rdi,1),%ebx
mov    %bl,0x70(%rsp,%rdx,1)
lea    0x1(%rcx),%edi
movzbl (%rsp,%rdi,1),%ebx
mov    %bl,0x71(%rsp,%rdx,1)
lea    0x2(%rcx),%edi
movzbl (%rsp,%rdi,1),%ebx
mov    %bl,0x72(%rsp,%rdx,1)
add    $0x3,%ecx
movzbl (%rsp,%rcx,1),%ecx
mov    %cl,0x73(%rsp,%rdx,1)
add    $0x4,%rdx
cmp    %rdx,%rsi
jne    13a0 <main+0x1f0>
mov    %r13,%r14
sub    %eax,%ebp
add    $0x1,%ebp
movslq %ebp,%r13
lea    0x70(%rsp),%rbx
movb   $0x0,0x70(%rsp,%r13,1)
mov    %rbx,%rdi
mov    %r12d,%esi
call   1070 <pretecenie@plt>
test   %rax,%rax
je     1433 <main+0x283>
mov    %rbx,%rdi
call   10d0 <atoi@plt>
mov    %eax,%ebp
mov    %eax,%edi
call   1080 <prvocislo@plt>
cmp    $0x1,%eax
jne    1446 <main+0x296>
lea    0xd29(%rip),%rdi
jmp    144d <main+0x29d>
lea    0xd57(%rip),%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    120f <main+0x5f>
lea    0xcfe(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    1456 <main+0x2a6>
lea    0xd0b(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%r13
mov    0x2b88(%rip),%r14
jmp    120f <main+0x5f>
mov    %r13,%r14
mov    %ebp,%r13d
lea    0x70(%rsp),%rbx
test   %ebp,%ebp
je     13e8 <main+0x238>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    %r13,%rdx
call   1060 <memcpy@plt>
jmp    13e8 <main+0x238>
lea    -0x1(%r10),%rdx
mov    %eax,%edi
not    %edi
cmp    %edx,%edi
jb     134f <main+0x19f>
shr    $0x20,%rdx
mov    $0x0,%edx
jne    1351 <main+0x1a1>
cmp    $0x20,%r10d
jae    14b4 <main+0x304>
xor    %edx,%edx
jmp    1509 <main+0x359>
mov    %r9d,%r8d
and    $0x1f,%r8d
mov    %r10,%rdx
sub    %r8,%rdx
mov    %ebp,%edi
sub    %ecx,%edi
mov    %ebp,%ebx
sub    %cl,%bl
movzbl %bl,%ebx
and    $0x1f,%ebx
sub    %rbx,%rdi
xor    %ebx,%ebx
lea    (%rax,%rbx,1),%esi
movups (%rsp,%rsi,1),%xmm0
movups 0x10(%rsp,%rsi,1),%xmm1
movaps %xmm0,0x70(%rsp,%rbx,1)
movaps %xmm1,0x80(%rsp,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%rdi
jne    14d4 <main+0x324>
test   %r8,%r8
je     13d8 <main+0x228>
cmp    $0x8,%r8d
jb     1351 <main+0x1a1>
mov    %rdx,%rdi
mov    %r9d,%edx
and    $0x7,%r9d
sub    %r9,%rdx
mov    %ebp,%esi
sub    %ecx,%esi
mov    %ebp,%ebx
sub    %cl,%bl
movzbl %bl,%ebx
and    $0x7,%ebx
sub    %rbx,%rsi
nopw   0x0(%rax,%rax,1)
lea    (%rax,%rdi,1),%ebx
mov    (%rsp,%rbx,1),%rbx
mov    %rbx,0x70(%rsp,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%rsi
jne    1530 <main+0x380>
test   %r9,%r9
jne    1351 <main+0x1a1>
jmp    13d8 <main+0x228>
lea    0xb75(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xd8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xad0(%rip),%rdi
jmp    155a <main+0x3aa>
lea    0xc00(%rip),%rdi
jmp    155a <main+0x3aa>

LLVM IR (-O0):
@.str = [70 x i8] c"Chyba pri spusteni programu. Prosim, spustite program bez argumentov!\00"
@.str.1 = [6 x i8] c"%101s\00"
@EOF = global i64 0
@.str.2 = [131 x i8] c"Na vstupe sa nachadza slovo, resp. cislo vacsie ako 100 znakov. Prosim, zadajte slovo, resp. cislo max. do 100 znakov a opakujte.\00"
@.str.3 = [105 x i8] c"Na vstupe sa nachadzaju netisknutelne znaky. Prosim, zadajte tisknutelne znaky a spustite program znovu.\00"
@.str.4 = [12 x i8] c"number: %s\0A\00"
@.str.5 = [20 x i8] c"number: %d (prime)\0A\00"
@.str.6 = [12 x i8] c"number: %d\0A\00"
@.str.7 = [2 x i8] c"\0A\00"
@.str.8 = [23 x i8] c"word: %s (palindrome)\0A\00"
@.str.9 = [10 x i8] c"word: %s\0A\00"
@.str.10 = [75 x i8] c"Neocakavane vstupne data. Zadajte platne data a spustite program este raz!\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [102 x i8]
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8
%10 = alloca i32
%11 = alloca [101 x i8]
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%15 = load i8**, i8*** %5
%16 = load i32, i32* %4
%17 = icmp sgt i32 %16, 1
br i1 %17, label %18, label %20
18: ; preds = %2
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str, i64 0, i64 0))
br label %239
20: ; preds = %2
br label %21
21: ; preds = %237, %20
%22 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%23 = call i64 @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i8* %22)
%24 = load i64, i64* @EOF
%25 = icmp ne i64 %23, %24
br i1 %25, label %26, label %238
26: ; preds = %21
store i32 0, i32* %7
br label %27
27: ; preds = %34, %26
%28 = load i32, i32* %7
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %29
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp ne i32 %32, 0
br i1 %33, label %34, label %37
34: ; preds = %27
%35 = load i32, i32* %7
%36 = add nsw i32 %35, 1
store i32 %36, i32* %7
br label %27
37: ; preds = %27
%38 = load i32, i32* %7
%39 = icmp sgt i32 %38, 100
br i1 %39, label %40, label %42
40: ; preds = %37
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([131 x i8], [131 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %3
br label %240
42: ; preds = %37
%43 = load i32, i32* %7
%44 = add nsw i32 %43, -1
store i32 %44, i32* %7
store i32 0, i32* %8
br label %45
45: ; preds = %61, %42
%46 = load i32, i32* %8
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %47
%49 = load i8, i8* %48
%50 = sext i8 %49 to i32
%51 = icmp ne i32 %50, 0
br i1 %51, label %52, label %64
52: ; preds = %45
%53 = load i32, i32* %8
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %54
%56 = load i8, i8* %55
%57 = call i64 @isprint(i8 signext %56)
%58 = icmp eq i64 %57, 0
br i1 %58, label %59, label %61
59: ; preds = %52
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([105 x i8], [105 x i8]* @.str.3, i64 0, i64 0))
store i32 0, i32* %3
br label %240
61: ; preds = %52
%62 = load i32, i32* %8
%63 = add nsw i32 %62, 1
store i32 %63, i32* %8
br label %45
64: ; preds = %45
%65 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%66 = load i32, i32* %7
%67 = call signext i8 @zisti(i8* %65, i32 %66)
store i8 %67, i8* %9
%68 = load i8, i8* %9
%69 = sext i8 %68 to i32
%70 = icmp eq i32 %69, 99
br i1 %70, label %71, label %209
71: ; preds = %64
store i32 0, i32* %8
%72 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 45
br i1 %75, label %76, label %115
76: ; preds = %71
br label %77
77: ; preds = %85, %76
%78 = load i32, i32* %8
%79 = add nsw i32 %78, 1
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %80
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = icmp eq i32 %83, 48
br i1 %84, label %85, label %88
85: ; preds = %77
%86 = load i32, i32* %8
%87 = add nsw i32 %86, 1
store i32 %87, i32* %8
br label %77
88: ; preds = %77
%89 = load i32, i32* %7
%90 = load i32, i32* %8
%91 = sub nsw i32 %89, %90
store i32 %91, i32* %10
%92 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 0
store i8 45, i8* %92
store i32 1, i32* %12
br label %93
93: ; preds = %107, %88
%94 = load i32, i32* %12
%95 = load i32, i32* %10
%96 = icmp sle i32 %94, %95
br i1 %96, label %97, label %110
97: ; preds = %93
%98 = load i32, i32* %12
%99 = load i32, i32* %8
%100 = add nsw i32 %98, %99
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %101
%103 = load i8, i8* %102
%104 = load i32, i32* %12
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %105
store i8 %103, i8* %106
br label %107
107: ; preds = %97
%108 = load i32, i32* %12
%109 = add nsw i32 %108, 1
store i32 %109, i32* %12
br label %93
110: ; preds = %93
%111 = load i32, i32* %10
%112 = add nsw i32 %111, 1
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %113
store i8 0, i8* %114
br label %187
115: ; preds = %71
%116 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%117 = load i8, i8* %116
%118 = sext i8 %117 to i32
%119 = icmp eq i32 %118, 43
br i1 %119, label %125, label %120
120: ; preds = %115
%121 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%122 = load i8, i8* %121
%123 = sext i8 %122 to i32
%124 = icmp eq i32 %123, 48
br i1 %124, label %125, label %164
125: ; preds = %120, %115
br label %126
126: ; preds = %134, %125
%127 = load i32, i32* %8
%128 = add nsw i32 %127, 1
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %129
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 48
br i1 %133, label %134, label %137
134: ; preds = %126
%135 = load i32, i32* %8
%136 = add nsw i32 %135, 1
store i32 %136, i32* %8
br label %126
137: ; preds = %126
%138 = load i32, i32* %7
%139 = load i32, i32* %8
%140 = sub nsw i32 %138, %139
store i32 %140, i32* %10
store i32 0, i32* %13
br label %141
141: ; preds = %156, %137
%142 = load i32, i32* %13
%143 = load i32, i32* %10
%144 = icmp sle i32 %142, %143
br i1 %144, label %145, label %159
145: ; preds = %141
%146 = load i32, i32* %13
%147 = load i32, i32* %8
%148 = add nsw i32 %146, %147
%149 = add nsw i32 %148, 1
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %150
%152 = load i8, i8* %151
%153 = load i32, i32* %13
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %154
store i8 %152, i8* %155
br label %156
156: ; preds = %145
%157 = load i32, i32* %13
%158 = add nsw i32 %157, 1
store i32 %158, i32* %13
br label %141
159: ; preds = %141
%160 = load i32, i32* %10
%161 = add nsw i32 %160, 1
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %162
store i8 0, i8* %163
br label %186
164: ; preds = %120
%165 = load i32, i32* %7
store i32 %165, i32* %10
store i32 0, i32* %8
br label %166
166: ; preds = %178, %164
%167 = load i32, i32* %8
%168 = load i32, i32* %7
%169 = icmp sle i32 %167, %168
br i1 %169, label %170, label %181
170: ; preds = %166
%171 = load i32, i32* %8
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 %172
%174 = load i8, i8* %173
%175 = load i32, i32* %8
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %176
store i8 %174, i8* %177
br label %178
178: ; preds = %170
%179 = load i32, i32* %8
%180 = add nsw i32 %179, 1
store i32 %180, i32* %8
br label %166
181: ; preds = %166
%182 = load i32, i32* %7
%183 = add nsw i32 %182, 1
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 %184
store i8 0, i8* %185
br label %186
186: ; preds = %181, %159
br label %187
187: ; preds = %186, %110
%188 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 0
%189 = load i32, i32* %10
%190 = call i64 @pretecenie(i8* %188, i32 %189)
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %195
192: ; preds = %187
%193 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 0
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8* %193)
br label %208
195: ; preds = %187
%196 = getelementptr inbounds [101 x i8], [101 x i8]* %11, i64 0, i64 0
%197 = call i32 @atoi(i8* %196)
store i32 %197, i32* %14
%198 = load i32, i32* %14
%199 = call i32 @prvocislo(i32 %198)
%200 = icmp eq i32 %199, 1
br i1 %200, label %201, label %204
201: ; preds = %195
%202 = load i32, i32* %14
%203 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i32 %202)
br label %207
204: ; preds = %195
%205 = load i32, i32* %14
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0), i32 %205)
br label %207
207: ; preds = %204, %201
br label %208
208: ; preds = %207, %192
br label %237
209: ; preds = %64
%210 = load i8, i8* %9
%211 = sext i8 %210 to i32
%212 = icmp eq i32 %211, 100
br i1 %212, label %213, label %217
213: ; preds = %209
%214 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%215 = call i32 @spravcas(i8* %214)
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %236
217: ; preds = %209
%218 = load i8, i8* %9
%219 = sext i8 %218 to i32
%220 = icmp eq i32 %219, 115
br i1 %220, label %221, label %233
221: ; preds = %217
%222 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%223 = load i32, i32* %7
%224 = call i32 @palindrom(i8* %222, i32 %223)
%225 = icmp eq i32 %224, 1
br i1 %225, label %226, label %229
226: ; preds = %221
%227 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.8, i64 0, i64 0), i8* %227)
br label %232
229: ; preds = %221
%230 = getelementptr inbounds [102 x i8], [102 x i8]* %6, i64 0, i64 0
%231 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* %230)
br label %232
232: ; preds = %229, %226
br label %235
233: ; preds = %217
%234 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.10, i64 0, i64 0))
store i32 0, i32* %3
br label %240
235: ; preds = %232
br label %236
236: ; preds = %235, %213
br label %237
237: ; preds = %236, %208
br label %21
238: ; preds = %21
br label %239
239: ; preds = %238, %18
store i32 0, i32* %3
br label %240
240: ; preds = %239, %233, %59, %40
%241 = load i32, i32* %3
ret i32 %241
}

LLVM IR (-O2):
@.str = [70 x i8] c"Chyba pri spusteni programu. Prosim, spustite program bez argumentov!\00"
@.str.1 = [6 x i8] c"%101s\00"
@EOF = global i64 0
@.str.2 = [131 x i8] c"Na vstupe sa nachadza slovo, resp. cislo vacsie ako 100 znakov. Prosim, zadajte slovo, resp. cislo max. do 100 znakov a opakujte.\00"
@.str.3 = [105 x i8] c"Na vstupe sa nachadzaju netisknutelne znaky. Prosim, zadajte tisknutelne znaky a spustite program znovu.\00"
@.str.4 = [12 x i8] c"number: %s\0A\00"
@.str.5 = [20 x i8] c"number: %d (prime)\0A\00"
@.str.6 = [12 x i8] c"number: %d\0A\00"
@.str.8 = [23 x i8] c"word: %s (palindrome)\0A\00"
@.str.9 = [10 x i8] c"word: %s\0A\00"
@.str.10 = [75 x i8] c"Neocakavane vstupne data. Zadajte platne data a spustite program este raz!\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [102 x i8]
%4 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 0
%5 = alloca [101 x i8]
%6 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 0
%7 = icmp sgt i32 %0, 1
br i1 %7, label %8, label %10
8: ; preds = %2
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str, i64 0, i64 0))
br label %225
10: ; preds = %2
%11 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 0
%12 = call i64 @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i8* %11)
%13 = load i64, i64* @EOF
%14 = icmp eq i64 %12, %13
br i1 %14, label %224, label %15
15: ; preds = %10
%16 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 0
%17 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 1
br label %18
18: ; preds = %24, %15
%19 = phi i64 [ 0, %15 ], [ %25, %24 ]
%20 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %19
%21 = load i8, i8* %20
%22 = icmp eq i8 %21, 0
%23 = add nuw i64 %19, 1
br i1 %22, label %26, label %24
24: ; preds = %18, %217
%25 = phi i64 [ %23, %18 ], [ 0, %217 ]
br label %18
26: ; preds = %18
%27 = trunc i64 %19 to i32
%28 = and i64 %19, 4294967295
%29 = icmp ugt i32 %27, 100
br i1 %29, label %221, label %30
30: ; preds = %26
%31 = add nsw i32 %27, -1
%32 = load i8, i8* %11
%33 = icmp eq i8 %32, 0
br i1 %33, label %44, label %38
34: ; preds = %38
%35 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %43
%36 = load i8, i8* %35
%37 = icmp eq i8 %36, 0
br i1 %37, label %44, label %38
38: ; preds = %30, %34
%39 = phi i64 [ %43, %34 ], [ 0, %30 ]
%40 = phi i8 [ %36, %34 ], [ %32, %30 ]
%41 = call i64 @isprint(i8 signext %40)
%42 = icmp eq i64 %41, 0
%43 = add nuw i64 %39, 1
br i1 %42, label %221, label %34
44: ; preds = %34, %30
%45 = call signext i8 @zisti(i8* %11, i32 %31)
switch i8 %45, label %221 [
i8 99, label %46
i8 100, label %207
i8 115, label %210
]
46: ; preds = %44
%47 = load i8, i8* %11
switch i8 %47, label %49 [
i8 45, label %52
i8 48, label %48
i8 43, label %48
]
48: ; preds = %46, %46
br label %73
49: ; preds = %46
%50 = icmp eq i32 %27, 0
br i1 %50, label %190, label %51
51: ; preds = %49
br label %190
52: ; preds = %46, %52
%53 = phi i64 [ %54, %52 ], [ 0, %46 ]
%54 = add nuw nsw i64 %53, 1
%55 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %54
%56 = load i8, i8* %55
%57 = icmp eq i8 %56, 48
br i1 %57, label %52, label %58
58: ; preds = %52
%59 = trunc i64 %53 to i32
%60 = sub nsw i32 %31, %59
store i8 45, i8* %16
%61 = icmp slt i32 %60, 1
br i1 %61, label %70, label %62
62: ; preds = %58
%63 = add nuw i64 %53, 1
%64 = and i64 %63, 4294967295
%65 = getelementptr [102 x i8], [102 x i8]* %3, i64 0, i64 %64
%66 = add i64 %19, 4294967294
%67 = sub i64 %66, %53
%68 = and i64 %67, 4294967295
%69 = add nuw nsw i64 %68, 1
br label %70
70: ; preds = %62, %58
%71 = add nsw i32 %60, 1
%72 = sext i32 %71 to i64
br label %190
73: ; preds = %48, %73
%74 = phi i64 [ %75, %73 ], [ 0, %48 ]
%75 = add nuw nsw i64 %74, 1
%76 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %75
%77 = load i8, i8* %76
%78 = icmp eq i8 %77, 48
br i1 %78, label %73, label %79
79: ; preds = %73
%80 = trunc i64 %74 to i32
%81 = sub nsw i32 %31, %80
%82 = icmp slt i32 %81, 0
br i1 %82, label %160, label %83
83: ; preds = %79
%84 = add nuw i64 %74, 1
%85 = sub i64 %19, %74
%86 = and i64 %85, 4294967295
%87 = icmp ult i64 %86, 8
br i1 %87, label %139, label %88
88: ; preds = %83
%89 = add nsw i64 %86, -1
%90 = trunc i64 %89 to i32
%91 = sub i32 -2, %80
%92 = icmp ult i32 %91, %90
%93 = icmp ugt i64 %89, 4294967295
%94 = or i1 %92, %93
br i1 %94, label %139, label %95
95: ; preds = %88
%96 = icmp ult i64 %86, 32
br i1 %96, label %120, label %97
97: ; preds = %95
%98 = and i64 %85, 31
%99 = sub nsw i64 %86, %98
br label %100
100: ; preds = %100, %97
%101 = phi i64 [ 0, %97 ], [ %114, %100 ]
%102 = add i64 %84, %101
%103 = and i64 %102, 4294967295
%104 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %103
%105 = bitcast i8* %104 to <16 x i8>*
%106 = load <16 x i8>, <16 x i8>* %105
%107 = getelementptr inbounds i8, i8* %104, i64 16
%108 = bitcast i8* %107 to <16 x i8>*
%109 = load <16 x i8>, <16 x i8>* %108
%110 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %101
%111 = bitcast i8* %110 to <16 x i8>*
store <16 x i8> %106, <16 x i8>* %111
%112 = getelementptr inbounds i8, i8* %110, i64 16
%113 = bitcast i8* %112 to <16 x i8>*
store <16 x i8> %109, <16 x i8>* %113
%114 = add nuw i64 %101, 32
%115 = icmp eq i64 %114, %99
br i1 %115, label %116, label %100
116: ; preds = %100
%117 = icmp eq i64 %98, 0
br i1 %117, label %160, label %118
118: ; preds = %116
%119 = icmp ult i64 %98, 8
br i1 %119, label %139, label %120
120: ; preds = %95, %118
%121 = phi i64 [ %99, %118 ], [ 0, %95 ]
%122 = sub i64 %19, %74
%123 = and i64 %122, 4294967295
%124 = and i64 %122, 7
%125 = sub nsw i64 %123, %124
br label %126
126: ; preds = %126, %120
%127 = phi i64 [ %121, %120 ], [ %135, %126 ]
%128 = add i64 %84, %127
%129 = and i64 %128, 4294967295
%130 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %129
%131 = bitcast i8* %130 to <8 x i8>*
%132 = load <8 x i8>, <8 x i8>* %131
%133 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %127
%134 = bitcast i8* %133 to <8 x i8>*
store <8 x i8> %132, <8 x i8>* %134
%135 = add nuw i64 %127, 8
%136 = icmp eq i64 %135, %125
br i1 %136, label %137, label %126
137: ; preds = %126
%138 = icmp eq i64 %124, 0
br i1 %138, label %160, label %139
139: ; preds = %88, %83, %118, %137
%140 = phi i64 [ 0, %83 ], [ 0, %88 ], [ %99, %118 ], [ %125, %137 ]
%141 = sub i64 %85, %140
%142 = xor i64 %140, -1
%143 = add nsw i64 %86, %142
%144 = and i64 %141, 3
%145 = icmp eq i64 %144, 0
br i1 %145, label %157, label %146
146: ; preds = %139, %146
%147 = phi i64 [ %154, %146 ], [ %140, %139 ]
%148 = phi i64 [ %155, %146 ], [ 0, %139 ]
%149 = add i64 %84, %147
%150 = and i64 %149, 4294967295
%151 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %150
%152 = load i8, i8* %151
%153 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %147
store i8 %152, i8* %153
%154 = add nuw nsw i64 %147, 1
%155 = add i64 %148, 1
%156 = icmp eq i64 %155, %144
br i1 %156, label %157, label %146
157: ; preds = %146, %139
%158 = phi i64 [ %140, %139 ], [ %154, %146 ]
%159 = icmp ult i64 %143, 3
br i1 %159, label %160, label %163
160: ; preds = %157, %163, %116, %137, %79
%161 = add nsw i32 %81, 1
%162 = sext i32 %161 to i64
br label %190
163: ; preds = %157, %163
%164 = phi i64 [ %188, %163 ], [ %158, %157 ]
%165 = add i64 %84, %164
%166 = and i64 %165, 4294967295
%167 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %166
%168 = load i8, i8* %167
%169 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %164
store i8 %168, i8* %169
%170 = add nuw nsw i64 %164, 1
%171 = add i64 %84, %170
%172 = and i64 %171, 4294967295
%173 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %172
%174 = load i8, i8* %173
%175 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %170
store i8 %174, i8* %175
%176 = add nuw nsw i64 %164, 2
%177 = add i64 %84, %176
%178 = and i64 %177, 4294967295
%179 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %178
%180 = load i8, i8* %179
%181 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %176
store i8 %180, i8* %181
%182 = add nuw nsw i64 %164, 3
%183 = add i64 %84, %182
%184 = and i64 %183, 4294967295
%185 = getelementptr inbounds [102 x i8], [102 x i8]* %3, i64 0, i64 %184
%186 = load i8, i8* %185
%187 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %182
store i8 %186, i8* %187
%188 = add nuw nsw i64 %164, 4
%189 = icmp eq i64 %188, %86
br i1 %189, label %160, label %163
190: ; preds = %49, %51, %160, %70
%191 = phi i64 [ %162, %160 ], [ %72, %70 ], [ %28, %51 ], [ %28, %49 ]
%192 = phi i32 [ %81, %160 ], [ %60, %70 ], [ %31, %51 ], [ %31, %49 ]
%193 = getelementptr inbounds [101 x i8], [101 x i8]* %5, i64 0, i64 %191
store i8 0, i8* %193
%194 = call i64 @pretecenie(i8* %16, i32 %192)
%195 = icmp eq i64 %194, 0
br i1 %195, label %196, label %198
196: ; preds = %190
%197 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8* %16)
br label %206
198: ; preds = %190
%199 = call i32 @atoi(i8* %16)
%200 = call i32 @prvocislo(i32 %199)
%201 = icmp eq i32 %200, 1
br i1 %201, label %202, label %204
202: ; preds = %198
%203 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i32 %199)
br label %206
204: ; preds = %198
%205 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0), i32 %199)
br label %206
206: ; preds = %202, %204, %196
br label %217
207: ; preds = %44
%208 = call i32 @spravcas(i8* %11)
%209 = call i32 @putchar(i32 10)
br label %217
210: ; preds = %44
%211 = call i32 @palindrom(i8* %11, i32 %31)
%212 = icmp eq i32 %211, 1
br i1 %212, label %213, label %215
213: ; preds = %210
%214 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.8, i64 0, i64 0), i8* %11)
br label %217
215: ; preds = %210
%216 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), i8* %11)
br label %217
217: ; preds = %206, %215, %213, %207
%218 = call i64 @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i8* %11)
%219 = load i64, i64* @EOF
%220 = icmp eq i64 %218, %219
br i1 %220, label %224, label %24
221: ; preds = %44, %26, %38
%222 = phi i8* [ getelementptr inbounds ([105 x i8], [105 x i8]* @.str.3, i64 0, i64 0), %38 ], [ getelementptr inbounds ([131 x i8], [131 x i8]* @.str.2, i64 0, i64 0), %26 ], [ getelementptr inbounds ([75 x i8], [75 x i8]* @.str.10, i64 0, i64 0), %44 ]
%223 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %222)
br label %224
224: ; preds = %217, %221, %10
br label %225
225: ; preds = %224, %8
ret i32 0
}