#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 *, char const *);
void showHelp(const char *pcArgv0) {
  printf(
      "Usage: %s [OPTION | FILE]...\n"
      "A crossassembler for 6510, 65816 and compatible CPUs.\n"
      "\n"
      "Options:\n"
      "  -d,  --debug <FILENAME>       write debug output to <FILENAME>.\n"
      "                                default is no debug output.\n"
      "  -D<VAR>=<VAL>                 define variable <VAR> with value "
      "<VAL>.\n"
      "  -e,  --error-log <FILENAME>   log all errors to <FILENAME>.\n"
      "                                default is no errorlogging.\n"
      "  -h,  --help                   display this help and exit.\n"
      "  -I<PATH>                      add <PATH> to include paths.\n"
      "  -l,  --label-log <FILENAME>   write all labels with their value to "
      "<FILENAME>.\n"
      "                                default is no label log.\n"
      "  -me, --max-errors <NUMBER>    stop after <NUMBER> errors, 0 means "
      "endless.\n"
      "                                default is 20.\n"
      "  -mw, --max-warnings <NUMBER>  stop after <NUMBER> warnings, 0 means "
      "endless.\n"
      "                                default is 20.\n"
      "  -o,  --output <FILENAME>      write output to <FILENAME>.\n"
      "                                default is a.out .\n"
      "  -r,  --simple-redefine        allow simple redefines.\n"
      "                                default is off.\n"
      "  -v,  --verbose                be verbose.\n"
      "                                default is verbose off.\n"
      "       --version                display version information and exit.\n"
      "  -W<TAG>                       modify warning level.\n"
      "\n"
      "Non-option arguments are filenames of assembler sources. They are "
      "searched\n"
      "in the directory where dreamass was invoked from. If this fails, all "
      "include\n"
      "paths are searched in the order of their appearance on the comandline.\n"
      "Files included from within the assembler source are searched the same "
      "way.\n"
      "\n"
      "Examples:\n"
      "  dreamass main.src                             assemble main.src to "
      "a.out\n"
      "  dreamass -o main.prg main.src                 assemble main.src to "
      "main.prg\n"
      "  dreamass -Dcars=20 race.src                   define cars=20 and "
      "assemble race.src\n"
      "  dreamass -DData=\"names.db\" addressbook.src    define "
      "Data=\"names.db\" and assemble addressbook.src\n"
      "\n"
      "Email bug reports to DocBacardi@the-dreams.de.\n"
      "DreamAss home page: http://rrtools.berlios.de\n",
      pcArgv0);
}


x86 assembly (clang, -O0):
<showHelp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<showHelp>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [2104 x i8] c"Usage: %s [OPTION | FILE]...\0AA crossassembler for 6510, 65816 and compatible CPUs.\0A\0AOptions:\0A -d, --debug <FILENAME> write debug output to <FILENAME>.\0A default is no debug output.\0A -D<VAR>=<VAL> define variable <VAR> with value <VAL>.\0A -e, --error-log <FILENAME> log all errors to <FILENAME>.\0A default is no errorlogging.\0A -h, --help display this help and exit.\0A -I<PATH> add <PATH> to include paths.\0A -l, --label-log <FILENAME> write all labels with their value to <FILENAME>.\0A default is no label log.\0A -me, --max-errors <NUMBER> stop after <NUMBER> errors, 0 means endless.\0A default is 20.\0A -mw, --max-warnings <NUMBER> stop after <NUMBER> warnings, 0 means endless.\0A default is 20.\0A -o, --output <FILENAME> write output to <FILENAME>.\0A default is a.out .\0A -r, --simple-redefine allow simple redefines.\0A default is off.\0A -v, --verbose be verbose.\0A default is verbose off.\0A --version display version information and exit.\0A -W<TAG> modify warning level.\0A\0ANon-option arguments are filenames of assembler sources. They are searched\0Ain the directory where dreamass was invoked from. If this fails, all include\0Apaths are searched in the order of their appearance on the comandline.\0AFiles included from within the assembler source are searched the same way.\0A\0AExamples:\0A dreamass main.src assemble main.src to a.out\0A dreamass -o main.prg main.src assemble main.src to main.prg\0A dreamass -Dcars=20 race.src define cars=20 and assemble race.src\0A dreamass -DData=\22names.db\22 addressbook.src define Data=\22names.db\22 and assemble addressbook.src\0A\0AEmail bug reports to DocBacardi@the-dreams.de.\0ADreamAss home page: http://rrtools.berlios.de\0A\00"
define void @showHelp(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([2104 x i8], [2104 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [2104 x i8] c"Usage: %s [OPTION | FILE]...\0AA crossassembler for 6510, 65816 and compatible CPUs.\0A\0AOptions:\0A -d, --debug <FILENAME> write debug output to <FILENAME>.\0A default is no debug output.\0A -D<VAR>=<VAL> define variable <VAR> with value <VAL>.\0A -e, --error-log <FILENAME> log all errors to <FILENAME>.\0A default is no errorlogging.\0A -h, --help display this help and exit.\0A -I<PATH> add <PATH> to include paths.\0A -l, --label-log <FILENAME> write all labels with their value to <FILENAME>.\0A default is no label log.\0A -me, --max-errors <NUMBER> stop after <NUMBER> errors, 0 means endless.\0A default is 20.\0A -mw, --max-warnings <NUMBER> stop after <NUMBER> warnings, 0 means endless.\0A default is 20.\0A -o, --output <FILENAME> write output to <FILENAME>.\0A default is a.out .\0A -r, --simple-redefine allow simple redefines.\0A default is off.\0A -v, --verbose be verbose.\0A default is verbose off.\0A --version display version information and exit.\0A -W<TAG> modify warning level.\0A\0ANon-option arguments are filenames of assembler sources. They are searched\0Ain the directory where dreamass was invoked from. If this fails, all include\0Apaths are searched in the order of their appearance on the comandline.\0AFiles included from within the assembler source are searched the same way.\0A\0AExamples:\0A dreamass main.src assemble main.src to a.out\0A dreamass -o main.prg main.src assemble main.src to main.prg\0A dreamass -Dcars=20 race.src define cars=20 and assemble race.src\0A dreamass -DData=\22names.db\22 addressbook.src define Data=\22names.db\22 and assemble addressbook.src\0A\0AEmail bug reports to DocBacardi@the-dreams.de.\0ADreamAss home page: http://rrtools.berlios.de\0A\00"
define void @showHelp(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([2104 x i8], [2104 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}