#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*/ EXIT_SUCCESS;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ puts(char *);
int /*<<< orphan*/ show_version(int /*<<< orphan*/);
void show_help_and_exit(void) {
  puts("\n"
       "ACME - the ACME Crossassembler for Multiple Environments\n"
       "  Copyright (C) 1998-"
       "2006"
       " Marco Baye");
  show_version(0);
  puts("ACME comes with ABSOLUTELY NO WARRANTY; for details read the help "
       "file.\n"
       "  This is free software, and you are welcome to redistribute it under\n"
       "  certain conditions; as outlined in the GNU General Public License.\n"
       "Dedicated to the wisest being I ever had the pleasure of reading\n"
       "  books of (currently spending some time dead for tax reasons).\n"
       "The newest version can be found at the ACME homepage:\n"
       "  "
       "http://home.pages.de/~mac_bacon/smorbrod/acme/"
       "\n"
       "\n"
       "Usage: acme [OPTION...] [FILE]...\n"
       "  -h, --"
       "help"
       "             show this help and exit.\n"
       "  -f, --"
       "format"
       " FORMAT    select output format.\n"
       "  -o, --"
       "outfile"
       " FILE     select output file.\n"
       "  -l, --"
       "labeldump"
       " FILE   select label dump file.\n"
       "      --"
       "setpc"
       " NUMBER     set program counter.\n"
       "      --"
       "cpu"
       " CPU          select target processor.\n"
       "      --"
       "initmem"
       " NUMBER   define 'empty' memory.\n"
       "      --"
       "maxerrors"
       " NUMBER set number of errors before exiting.\n"
       "      --"
       "maxdepth"
       " NUMBER  set recursion depth for macro calls and !src.\n"
       "  -vDIGIT                set verbosity level.\n"
       "  -V, --"
       "version"
       "          show version and exit.\n");
  exit(EXIT_SUCCESS);
}


x86 assembly (clang, -O0):
<show_help_and_exit>:
push   %rbp
mov    %rsp,%rbp
lea    0xec5(%rip),%rdi
call   1040 <puts@plt>
xor    %edi,%edi
call   1030 <show_version@plt>
lea    0xf11(%rip),%rdi
call   1040 <puts@plt>
mov    0x2e86(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<show_help_and_exit>:
push   %rax
lea    0xec8(%rip),%rdi
call   1040 <puts@plt>
xor    %edi,%edi
call   1030 <show_version@plt>
lea    0xf14(%rip),%rdi
call   1040 <puts@plt>
mov    0x2e89(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [95 x i8] c"\0AACME - the ACME Crossassembler for Multiple Environments\0A Copyright (C) 1998-2006 Marco Baye\00"
@.str.1 = [1041 x i8] c"ACME comes with ABSOLUTELY NO WARRANTY; for details read the help file.\0A This is free software, and you are welcome to redistribute it under\0A certain conditions; as outlined in the GNU General Public License.\0ADedicated to the wisest being I ever had the pleasure of reading\0A books of (currently spending some time dead for tax reasons).\0AThe newest version can be found at the ACME homepage:\0A http://home.pages.de/~mac_bacon/smorbrod/acme/\0A\0AUsage: acme [OPTION...] [FILE]...\0A -h, --help show this help and exit.\0A -f, --format FORMAT select output format.\0A -o, --outfile FILE select output file.\0A -l, --labeldump FILE select label dump file.\0A --setpc NUMBER set program counter.\0A --cpu CPU select target processor.\0A --initmem NUMBER define 'empty' memory.\0A --maxerrors NUMBER set number of errors before exiting.\0A --maxdepth NUMBER set recursion depth for macro calls and !src.\0A -vDIGIT set verbosity level.\0A -V, --version show version and exit.\0A\00"
@EXIT_SUCCESS = global i32 0
define void @show_help_and_exit() {
%1 = call i32 @puts(i8* getelementptr inbounds ([95 x i8], [95 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @show_version(i32 0)
%3 = call i32 @puts(i8* getelementptr inbounds ([1041 x i8], [1041 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @EXIT_SUCCESS
%5 = call i32 @exit(i32 %4)
unreachable
}

LLVM IR (-O2):
@.str = [95 x i8] c"\0AACME - the ACME Crossassembler for Multiple Environments\0A Copyright (C) 1998-2006 Marco Baye\00"
@.str.1 = [1041 x i8] c"ACME comes with ABSOLUTELY NO WARRANTY; for details read the help file.\0A This is free software, and you are welcome to redistribute it under\0A certain conditions; as outlined in the GNU General Public License.\0ADedicated to the wisest being I ever had the pleasure of reading\0A books of (currently spending some time dead for tax reasons).\0AThe newest version can be found at the ACME homepage:\0A http://home.pages.de/~mac_bacon/smorbrod/acme/\0A\0AUsage: acme [OPTION...] [FILE]...\0A -h, --help show this help and exit.\0A -f, --format FORMAT select output format.\0A -o, --outfile FILE select output file.\0A -l, --labeldump FILE select label dump file.\0A --setpc NUMBER set program counter.\0A --cpu CPU select target processor.\0A --initmem NUMBER define 'empty' memory.\0A --maxerrors NUMBER set number of errors before exiting.\0A --maxdepth NUMBER set recursion depth for macro calls and !src.\0A -vDIGIT set verbosity level.\0A -V, --version show version and exit.\0A\00"
@EXIT_SUCCESS = global i32 0
define void @show_help_and_exit() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([95 x i8], [95 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @show_version(i32 0)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1041 x i8], [1041 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @EXIT_SUCCESS
%5 = tail call i32 @exit(i32 %4)
unreachable
}