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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void show_help() {
  printf("Argumenty programu:\n\n");
  printf("\t--help \tzpůsobí, že program vytiskne nápovědu používání programu "
         "a skončí.\n");
  printf("\t--test \tpouze zkontroluje, že soubor daný druhým argumentem "
         "programu obsahuje řádnou definici bitmapového obrázku. V případě, že "
         "formát obrázku odpovídá definici (viz níže), vytiskne Valid. V "
         "opačném případě (např. ilegálních znaků, chybějících údajů nebo "
         "špatných hodnot) program tiskne Invalid.\n");
  printf("\t--hline \tv daném obrázku nalezne a vytiskne počáteční a koncovou "
         "souřadnici první nejdelší horizontální úsečky.\n");
  printf("\t--vline \tv daném obrázku nalezne a vytiskne počáteční a koncovou "
         "souřadnici první nejdelší vertikální úsečky.\n");
  printf("\t--square \tv daném obrázku nalezne a vytiskne počáteční a koncovou "
         "souřadnici prvního největšího čtverce.\n");
}


x86 assembly (clang, -O0):
<show_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xeef(%rip),%rdi
call   1030 <printf@plt>
lea    0xf3b(%rip),%rdi
call   1030 <printf@plt>
lea    0x107b(%rip),%rdi
call   1030 <printf@plt>
lea    0x10ef(%rip),%rdi
call   1030 <printf@plt>
lea    0x1161(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<show_help>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xef1(%rip),%rdi
call   1030 <puts@plt>
lea    0xf3c(%rip),%rdi
call   1030 <puts@plt>
lea    0x107b(%rip),%rdi
call   1030 <puts@plt>
lea    0x10ee(%rip),%rdi
call   1030 <puts@plt>
lea    0x115f(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [22 x i8] c"Argumenty programu:\0A\0A\00"
@.str.1 = [88 x i8] c"\09--help \09zp\C5\AFsob\C3\AD, \C5\BEe program vytiskne n\C3\A1pov\C4\9Bdu pou\C5\BE\C3\ADv\C3\A1n\C3\AD programu a skon\C4\8D\C3\AD.\0A\00"
@.str.2 = [332 x i8] c"\09--test \09pouze zkontroluje, \C5\BEe soubor dan\C3\BD druh\C3\BDm argumentem programu obsahuje \C5\99\C3\A1dnou definici bitmapov\C3\A9ho obr\C3\A1zku. V p\C5\99\C3\ADpad\C4\9B, \C5\BEe form\C3\A1t obr\C3\A1zku odpov\C3\ADd\C3\A1 definici (viz n\C3\AD\C5\BEe), vytiskne Valid. V opa\C4\8Dn\C3\A9m p\C5\99\C3\ADpad\C4\9B (nap\C5\99. ileg\C3\A1ln\C3\ADch znak\C5\AF, chyb\C4\9Bj\C3\ADc\C3\ADch \C3\BAdaj\C5\AF nebo \C5\A1patn\C3\BDch hodnot) program tiskne Invalid.\0A\00"
@.str.3 = [128 x i8] c"\09--hline \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\AD nejdel\C5\A1\C3\AD horizont\C3\A1ln\C3\AD \C3\BAse\C4\8Dky.\0A\00"
@.str.4 = [126 x i8] c"\09--vline \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\AD nejdel\C5\A1\C3\AD vertik\C3\A1ln\C3\AD \C3\BAse\C4\8Dky.\0A\00"
@.str.5 = [119 x i8] c"\09--square \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\ADho nejv\C4\9Bt\C5\A1\C3\ADho \C4\8Dtverce.\0A\00"
define void @show_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([332 x i8], [332 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([126 x i8], [126 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([119 x i8], [119 x i8]* @.str.5, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [21 x i8] c"Argumenty programu:\0A\00"
@str.6 = [87 x i8] c"\09--help \09zp\C5\AFsob\C3\AD, \C5\BEe program vytiskne n\C3\A1pov\C4\9Bdu pou\C5\BE\C3\ADv\C3\A1n\C3\AD programu a skon\C4\8D\C3\AD.\00"
@str.7 = [331 x i8] c"\09--test \09pouze zkontroluje, \C5\BEe soubor dan\C3\BD druh\C3\BDm argumentem programu obsahuje \C5\99\C3\A1dnou definici bitmapov\C3\A9ho obr\C3\A1zku. V p\C5\99\C3\ADpad\C4\9B, \C5\BEe form\C3\A1t obr\C3\A1zku odpov\C3\ADd\C3\A1 definici (viz n\C3\AD\C5\BEe), vytiskne Valid. V opa\C4\8Dn\C3\A9m p\C5\99\C3\ADpad\C4\9B (nap\C5\99. ileg\C3\A1ln\C3\ADch znak\C5\AF, chyb\C4\9Bj\C3\ADc\C3\ADch \C3\BAdaj\C5\AF nebo \C5\A1patn\C3\BDch hodnot) program tiskne Invalid.\00"
@str.8 = [127 x i8] c"\09--hline \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\AD nejdel\C5\A1\C3\AD horizont\C3\A1ln\C3\AD \C3\BAse\C4\8Dky.\00"
@str.9 = [125 x i8] c"\09--vline \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\AD nejdel\C5\A1\C3\AD vertik\C3\A1ln\C3\AD \C3\BAse\C4\8Dky.\00"
@str.10 = [118 x i8] c"\09--square \09v dan\C3\A9m obr\C3\A1zku nalezne a vytiskne po\C4\8D\C3\A1te\C4\8Dn\C3\AD a koncovou sou\C5\99adnici prvn\C3\ADho nejv\C4\9Bt\C5\A1\C3\ADho \C4\8Dtverce.\00"
define void @show_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([87 x i8], [87 x i8]* @str.6, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([331 x i8], [331 x i8]* @str.7, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([127 x i8], [127 x i8]* @str.8, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([125 x i8], [125 x i8]* @str.9, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([118 x i8], [118 x i8]* @str.10, i64 0, i64 0))
ret void
}