#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*/ fprintf(int /*<<< orphan*/, char *, char *);
int /*<<< orphan*/ stderr;
void prhelp(char *name) {
  fprintf(
      stderr,
      "Usage: %s [OPTION] [FILE]...\n"
      "Access an X server selection for reading or writing.\n"
      "\n"
      "  -i, -in          read text into X selection from standard input or "
      "files\n"
      "                   (default)\n"
      "  -o, -out         prints the selection to standard out (generally for\n"
      "                   piping to a file or program)\n"
      "  -l, -loops       number of selection requests to "
      "wait for before exiting\n"
      "  -d, -display     X display to connect to (eg "
      "localhost:0\")\n"
      "  -h, -help        usage information\n"
      "      -selection   selection to access (\"primary\", "
      "\"secondary\", \"clipboard\" or \"buffer-cut\")\n"
      "      -noutf8      don't treat text as utf-8, use old unicode\n"
      "      -version     version information\n"
      "      -silent      errors only, run in background (default)\n"
      "      -quiet       run in foreground, show what's happening\n"
      "      -verbose     running commentary\n"
      "\n"
      "Report bugs to <astrand@lysator.liu.se>\n",
      name);
  exit(EXIT_SUCCESS);
}


x86 assembly (clang, -O0):
<prhelp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ead(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xec0(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e8c(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<prhelp>:
push   %rax
mov    %rdi,%rdx
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2e98(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [873 x i8] c"Usage: %s [OPTION] [FILE]...\0AAccess an X server selection for reading or writing.\0A\0A -i, -in read text into X selection from standard input or files\0A (default)\0A -o, -out prints the selection to standard out (generally for\0A piping to a file or program)\0A -l, -loops number of selection requests to wait for before exiting\0A -d, -display X display to connect to (eg localhost:0\22)\0A -h, -help usage information\0A -selection selection to access (\22primary\22, \22secondary\22, \22clipboard\22 or \22buffer-cut\22)\0A -noutf8 don't treat text as utf-8, use old unicode\0A -version version information\0A -silent errors only, run in background (default)\0A -quiet run in foreground, show what's happening\0A -verbose running commentary\0A\0AReport bugs to <astrand@lysator.liu.se>\0A\00"
@EXIT_SUCCESS = global i32 0
define void @prhelp(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([873 x i8], [873 x i8]* @.str, i64 0, i64 0), i8* %4)
%6 = load i32, i32* @EXIT_SUCCESS
%7 = call i32 @exit(i32 %6)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [873 x i8] c"Usage: %s [OPTION] [FILE]...\0AAccess an X server selection for reading or writing.\0A\0A -i, -in read text into X selection from standard input or files\0A (default)\0A -o, -out prints the selection to standard out (generally for\0A piping to a file or program)\0A -l, -loops number of selection requests to wait for before exiting\0A -d, -display X display to connect to (eg localhost:0\22)\0A -h, -help usage information\0A -selection selection to access (\22primary\22, \22secondary\22, \22clipboard\22 or \22buffer-cut\22)\0A -noutf8 don't treat text as utf-8, use old unicode\0A -version version information\0A -silent errors only, run in background (default)\0A -quiet run in foreground, show what's happening\0A -verbose running commentary\0A\0AReport bugs to <astrand@lysator.liu.se>\0A\00"
@EXIT_SUCCESS = global i32 0
define void @prhelp(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([873 x i8], [873 x i8]* @.str, i64 0, i64 0), i8* %0)
%4 = load i32, i32* @EXIT_SUCCESS
%5 = tail call i32 @exit(i32 %4)
unreachable
}