#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(int /*<<< orphan*/);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stdout;
void usage(void) {
  fputs("C  (pronounced  large-C)  is  a psuedo interpreter of the C "
        "programming\n"
        "language.\n"
        "\n"
        "Without the need of manual compilation, developers can  rapidly  "
        "create\n"
        "scripts  or write one-liners using the C programming language that "
        "runs\n"
        "at native-code speed.\n"
        "\n"
        "Usage: C [options] [sourcefile] [arguments]\n"
        "\n"
        "Options:\n"
        " -c<gcc_option>    pass a compiler option to GCC\n"
        " -d                use debugger\n"
        " -e <expression>   executes the expression\n"
        " -i<include_file>  add an include file\n"
        " -k                keep temporary files\n"
        " -l<gcc_option>    pass a linker option to GCC\n"
        " -m                use main function\n"
        " -p                use C++ (implies -m)\n"
        " -S                show disassembly\n"
        " -h, --help        displays this help message\n"
        " --version         displays version number\n"
        "\n"
        "Examples:\n"
        " % C -cWall -cO2 -e 'printf(\"hello world\\n\")'\n"
        " % C -p -e 'int main(int,char**) { cout << \"hello\" << endl; }'\n",
        stdout);
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%esi
lea    0xecc(%rip),%rdi
call   1030 <fputs@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%esi
lea    0xecf(%rip),%rdi
call   1030 <fputs@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [877 x i8] c"C (pronounced large-C) is a psuedo interpreter of the C programming\0Alanguage.\0A\0AWithout the need of manual compilation, developers can rapidly create\0Ascripts or write one-liners using the C programming language that runs\0Aat native-code speed.\0A\0AUsage: C [options] [sourcefile] [arguments]\0A\0AOptions:\0A -c<gcc_option> pass a compiler option to GCC\0A -d use debugger\0A -e <expression> executes the expression\0A -i<include_file> add an include file\0A -k keep temporary files\0A -l<gcc_option> pass a linker option to GCC\0A -m use main function\0A -p use C++ (implies -m)\0A -S show disassembly\0A -h, --help displays this help message\0A --version displays version number\0A\0AExamples:\0A % C -cWall -cO2 -e 'printf(\22hello world\\n\22)'\0A % C -p -e 'int main(int,char**) { cout << \22hello\22 << endl; }'\0A\00"
@stdout = global i32 0
define void @usage() {
%1 = load i32, i32* @stdout
%2 = call i32 @fputs(i8* getelementptr inbounds ([877 x i8], [877 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [877 x i8] c"C (pronounced large-C) is a psuedo interpreter of the C programming\0Alanguage.\0A\0AWithout the need of manual compilation, developers can rapidly create\0Ascripts or write one-liners using the C programming language that runs\0Aat native-code speed.\0A\0AUsage: C [options] [sourcefile] [arguments]\0A\0AOptions:\0A -c<gcc_option> pass a compiler option to GCC\0A -d use debugger\0A -e <expression> executes the expression\0A -i<include_file> add an include file\0A -k keep temporary files\0A -l<gcc_option> pass a linker option to GCC\0A -m use main function\0A -p use C++ (implies -m)\0A -S show disassembly\0A -h, --help displays this help message\0A --version displays version number\0A\0AExamples:\0A % C -cWall -cO2 -e 'printf(\22hello world\\n\22)'\0A % C -p -e 'int main(int,char**) { cout << \22hello\22 << endl; }'\0A\00"
@stdout = global i32 0
define void @usage() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([877 x i8], [877 x i8]* @.str, i64 0, i64 0), i32 %1)
%3 = tail call i32 @exit(i32 0)
unreachable
}