#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 print_help(void) {
  printf("FLAGS              : Show the current flags (with numbers).\n"
         "SETFLAGS <n>       : Set flag number <n>.\n"
         "UNSETFLAGS <n>     : Unset flag number <n>.\n"
         "SETSMART [<entry> <name>] : Setup handling of consistently misnamed "
         "files.\n"
         "LOAD <filename>    : Add a (new) PAR file to the current list.\n"
         "SEARCH             : Search for PAR files matching the current "
         "filelist.\n"
         "UNLOAD <entry>     : Remove a PAR file from the list.\n"
         "PARLIST            : Show the current list of PAR files.\n"
         "FILELIST           : Show the current list of data files.\n"
         "DIRLIST            : Show the currently cached directory entries.\n"
         "CHECK <entry>      : Check the MD5sum of a file.\n"
         "FIND <entry>       : Find a file by its filename.\n"
         "FIXNAME [<entry>]  : Fix faulty filenames [of <entry>].\n"
         "GETSTATUS <entry>  : Get the status bits of an entry.\n"
         "SETSTATUS <entry> <status> : Set the status bits of an entry.\n"
         "RECOVER [<entry>]  : Recover missing files [only <entry>]\n"
         "ADDFILE <filename> : Add a data file to the current filelist.\n"
         "REMOVEFILE <entry> : Remove a data file from the current filelist.\n"
         "ADDPARS <number>   : Add new PAR files until there are <number>.\n"
         "CREATE [<entry>]   : Create PAR files [only <entry>].\n"
         "HELP               : Show this help.\n"
         "QUIT               : Quit.\n");
}


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

x86 assembly (clang, -O2):
<print_help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1234 x i8] c"FLAGS : Show the current flags (with numbers).\0ASETFLAGS <n> : Set flag number <n>.\0AUNSETFLAGS <n> : Unset flag number <n>.\0ASETSMART [<entry> <name>] : Setup handling of consistently misnamed files.\0ALOAD <filename> : Add a (new) PAR file to the current list.\0ASEARCH : Search for PAR files matching the current filelist.\0AUNLOAD <entry> : Remove a PAR file from the list.\0APARLIST : Show the current list of PAR files.\0AFILELIST : Show the current list of data files.\0ADIRLIST : Show the currently cached directory entries.\0ACHECK <entry> : Check the MD5sum of a file.\0AFIND <entry> : Find a file by its filename.\0AFIXNAME [<entry>] : Fix faulty filenames [of <entry>].\0AGETSTATUS <entry> : Get the status bits of an entry.\0ASETSTATUS <entry> <status> : Set the status bits of an entry.\0ARECOVER [<entry>] : Recover missing files [only <entry>]\0AADDFILE <filename> : Add a data file to the current filelist.\0AREMOVEFILE <entry> : Remove a data file from the current filelist.\0AADDPARS <number> : Add new PAR files until there are <number>.\0ACREATE [<entry>] : Create PAR files [only <entry>].\0AHELP : Show this help.\0AQUIT : Quit.\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1234 x i8], [1234 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1233 x i8] c"FLAGS : Show the current flags (with numbers).\0ASETFLAGS <n> : Set flag number <n>.\0AUNSETFLAGS <n> : Unset flag number <n>.\0ASETSMART [<entry> <name>] : Setup handling of consistently misnamed files.\0ALOAD <filename> : Add a (new) PAR file to the current list.\0ASEARCH : Search for PAR files matching the current filelist.\0AUNLOAD <entry> : Remove a PAR file from the list.\0APARLIST : Show the current list of PAR files.\0AFILELIST : Show the current list of data files.\0ADIRLIST : Show the currently cached directory entries.\0ACHECK <entry> : Check the MD5sum of a file.\0AFIND <entry> : Find a file by its filename.\0AFIXNAME [<entry>] : Fix faulty filenames [of <entry>].\0AGETSTATUS <entry> : Get the status bits of an entry.\0ASETSTATUS <entry> <status> : Set the status bits of an entry.\0ARECOVER [<entry>] : Recover missing files [only <entry>]\0AADDFILE <filename> : Add a data file to the current filelist.\0AREMOVEFILE <entry> : Remove a data file from the current filelist.\0AADDPARS <number> : Add new PAR files until there are <number>.\0ACREATE [<entry>] : Create PAR files [only <entry>].\0AHELP : Show this help.\0AQUIT : Quit.\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1233 x i8], [1233 x i8]* @str, i64 0, i64 0))
ret void
}