#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("ACME - the ACME Crossassembler for Multiple Environments\n"
       "  Copyright (C) 1998-"
       "2019"
       " 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://sourceforge.net/p/acme-crossass/"
       "\n"
       "\n"
       "Usage:\n"
       "acme [OPTION...] [FILE]...\n"
       "\n"
       "Options:\n"
       "  -h, --"
       "help"
       "             show this help and exit\n"
       "  -f, --"
       "format"
       " FORMAT    set output file format\n"
       "  -o, --"
       "outfile"
       " FILE     set output file name\n"
       "  -r, --"
       "report"
       " FILE      set report file name\n"
       "  -l, --"
       "symbollist"
       " FILE  set symbol list file name\n"
       "      --"
       "labeldump"
       "        (old name for --"
       "symbollist"
       ")\n"
       "      --"
       "vicelabels"
       " FILE  set file name for label dump in VICE format\n"
       "      --"
       "setpc"
       " NUMBER     set program counter\n"
       "      --"
       "cpu"
       " CPU          set 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"
       "  -DSYMBOL=VALUE         define global symbol\n"
       "  -I PATH/TO/DIR         add search path for input files\n"
       "  -W"
       "no-label-indent"
       "      suppress warnings about indented labels\n"
       "  -W"
       "no-old-for"
       "           suppress warnings about old \"!for\" syntax\n"
       "  -W"
       "type-mismatch"
       "        enable type checking (warn about type mismatch)\n"
       "      --"
       "use-stdout"
       "       fix for 'Relaunch64' IDE (see docs)\n"
       "      --"
       "msvc"
       "             output errors in MS VS format\n"
       "      --"
       "color"
       "            uses ANSI color codes for error output\n"
       "      --"
       "fullstop"
       "         use '.' as pseudo opcode prefix\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    0xf10(%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    0xf13(%rip),%rdi
call   1040 <puts@plt>
mov    0x2e89(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [94 x i8] c"ACME - the ACME Crossassembler for Multiple Environments\0A Copyright (C) 1998-2019 Marco Baye\00"
@.str.1 = [1750 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://sourceforge.net/p/acme-crossass/\0A\0AUsage:\0Aacme [OPTION...] [FILE]...\0A\0AOptions:\0A -h, --help show this help and exit\0A -f, --format FORMAT set output file format\0A -o, --outfile FILE set output file name\0A -r, --report FILE set report file name\0A -l, --symbollist FILE set symbol list file name\0A --labeldump (old name for --symbollist)\0A --vicelabels FILE set file name for label dump in VICE format\0A --setpc NUMBER set program counter\0A --cpu CPU set 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 -DSYMBOL=VALUE define global symbol\0A -I PATH/TO/DIR add search path for input files\0A -Wno-label-indent suppress warnings about indented labels\0A -Wno-old-for suppress warnings about old \22!for\22 syntax\0A -Wtype-mismatch enable type checking (warn about type mismatch)\0A --use-stdout fix for 'Relaunch64' IDE (see docs)\0A --msvc output errors in MS VS format\0A --color uses ANSI color codes for error output\0A --fullstop use '.' as pseudo opcode prefix\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 ([94 x i8], [94 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @show_version(i32 0)
%3 = call i32 @puts(i8* getelementptr inbounds ([1750 x i8], [1750 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 = [94 x i8] c"ACME - the ACME Crossassembler for Multiple Environments\0A Copyright (C) 1998-2019 Marco Baye\00"
@.str.1 = [1750 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://sourceforge.net/p/acme-crossass/\0A\0AUsage:\0Aacme [OPTION...] [FILE]...\0A\0AOptions:\0A -h, --help show this help and exit\0A -f, --format FORMAT set output file format\0A -o, --outfile FILE set output file name\0A -r, --report FILE set report file name\0A -l, --symbollist FILE set symbol list file name\0A --labeldump (old name for --symbollist)\0A --vicelabels FILE set file name for label dump in VICE format\0A --setpc NUMBER set program counter\0A --cpu CPU set 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 -DSYMBOL=VALUE define global symbol\0A -I PATH/TO/DIR add search path for input files\0A -Wno-label-indent suppress warnings about indented labels\0A -Wno-old-for suppress warnings about old \22!for\22 syntax\0A -Wtype-mismatch enable type checking (warn about type mismatch)\0A --use-stdout fix for 'Relaunch64' IDE (see docs)\0A --msvc output errors in MS VS format\0A --color uses ANSI color codes for error output\0A --fullstop use '.' as pseudo opcode prefix\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 ([94 x i8], [94 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 ([1750 x i8], [1750 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @EXIT_SUCCESS
%5 = tail call i32 @exit(i32 %4)
unreachable
}