#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*/ fprintf(int /*<<< orphan*/, char *, char const *);
int /*<<< orphan*/ stderr;
void vypisChyby(int chyba) {
  const char *zprava[] = {
      "",
      "Zadali jste spatne argumenty, zadejte --help pro upresneni",
      "Soubor se nepodarilo otevrit, je mozne, ze neexistuje",
      "Cisla v souboru pro definici bludiste musi byt jednotlive cifry "
      "oddelene mezerou a musi byt v intervalu <0,7>",
      "Alokace se nepodařila",
      "Prvni radek muze obsahovat pouze platne ",
      "Nadefinovali jste si jiny pocet bunek matice nez jste zadali",
      "Zadane bludiste neni validni",
      "Zadane startovni policko neni spravne",
      "Ze zadaneho policka neni cesty ven"};
  fprintf(stderr, "%s\n", zprava[chyba]);
  return;
}


x86 assembly (clang, -O0):
<vypisChyby>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %edi,-0x4(%rbp)
lea    -0x60(%rbp),%rdi
lea    0x2c8a(%rip),%rsi
mov    $0x50,%edx
call   1040 <memcpy@plt>
mov    0x2e91(%rip),%rax
mov    (%rax),%edi
movslq -0x4(%rbp),%rax
mov    -0x60(%rbp,%rax,8),%rdx
lea    0x1069(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<vypisChyby>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%eax
movslq %edi,%rcx
lea    0x10a5(%rip),%rsi
movslq (%rsi,%rcx,4),%rdx
add    %rsi,%rdx
lea    0x1091(%rip),%rsi
mov    %eax,%edi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@.str = [1 x i8] zeroinitializer
@.str.1 = [59 x i8] c"Zadali jste spatne argumenty, zadejte --help pro upresneni\00"
@.str.2 = [54 x i8] c"Soubor se nepodarilo otevrit, je mozne, ze neexistuje\00"
@.str.3 = [110 x i8] c"Cisla v souboru pro definici bludiste musi byt jednotlive cifry oddelene mezerou a musi byt v intervalu <0,7>\00"
@.str.4 = [23 x i8] c"Alokace se nepoda\C5\99ila\00"
@.str.5 = [41 x i8] c"Prvni radek muze obsahovat pouze platne \00"
@.str.6 = [61 x i8] c"Nadefinovali jste si jiny pocet bunek matice nez jste zadali\00"
@.str.7 = [29 x i8] c"Zadane bludiste neni validni\00"
@.str.8 = [38 x i8] c"Zadane startovni policko neni spravne\00"
@.str.9 = [35 x i8] c"Ze zadaneho policka neni cesty ven\00"
@__const.vypisChyby.zprava = [10 x i8*] [i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.9, i32 0, i32 0)]
@stderr = global i32 0
@.str.10 = [4 x i8] c"%s\0A\00"
define void @vypisChyby(i32 %0) {
%2 = alloca i32
%3 = alloca [10 x i8*]
store i32 %0, i32* %2
%4 = bitcast [10 x i8*]* %3 to i8*
%5 = load i32, i32* @stderr
%6 = load i32, i32* %2
%7 = sext i32 %6 to i64
%8 = getelementptr inbounds [10 x i8*], [10 x i8*]* %3, i64 0, i64 %7
%9 = load i8*, i8** %8
%10 = call i32 @fprintf(i32 %5, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i8* %9)
ret void
}

LLVM IR (-O2):
@.str = [1 x i8] zeroinitializer
@.str.1 = [59 x i8] c"Zadali jste spatne argumenty, zadejte --help pro upresneni\00"
@.str.2 = [54 x i8] c"Soubor se nepodarilo otevrit, je mozne, ze neexistuje\00"
@.str.3 = [110 x i8] c"Cisla v souboru pro definici bludiste musi byt jednotlive cifry oddelene mezerou a musi byt v intervalu <0,7>\00"
@.str.4 = [23 x i8] c"Alokace se nepoda\C5\99ila\00"
@.str.5 = [41 x i8] c"Prvni radek muze obsahovat pouze platne \00"
@.str.6 = [61 x i8] c"Nadefinovali jste si jiny pocet bunek matice nez jste zadali\00"
@.str.7 = [29 x i8] c"Zadane bludiste neni validni\00"
@.str.8 = [38 x i8] c"Zadane startovni policko neni spravne\00"
@.str.9 = [35 x i8] c"Ze zadaneho policka neni cesty ven\00"
@reltable.vypisChyby = [10 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([59 x i8]* @.str.1 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([54 x i8]* @.str.2 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([110 x i8]* @.str.3 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([23 x i8]* @.str.4 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.5 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([61 x i8]* @.str.6 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([29 x i8]* @.str.7 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([38 x i8]* @.str.8 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([35 x i8]* @.str.9 to i64), i64 ptrtoint ([10 x i32]* @reltable.vypisChyby to i64)) to i32)]
@stderr = global i32 0
@.str.10 = [4 x i8] c"%s\0A\00"
define void @vypisChyby(i32 %0) {
%2 = load i32, i32* @stderr
%3 = sext i32 %0 to i64
%4 = shl i64 %3, 2
%5 = call i8* @llvm.load.relative.i64(i8* bitcast ([10 x i32]* @reltable.vypisChyby to i8*), i64 %4)
%6 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i8* %5)
ret void
}