#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);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
void Usage(int verbose) {
  fputs("\n"
        "              C Cross Referencing & Documenting tool - Version 1.5d\n"
        "              -----------------------------------------------------\n"
        "\n"
        "(c) Andrew M. Bishop 1995,96,97,98,99, [       "
        "amb@gedanken.demon.co.uk       ]\n"
        "                     2000,01,02        "
        "[http://www.gedanken.demon.co.uk/cxref/]\n"
        "\n"
        "Usage: cxref filename [ ... filename]\n"
        "             [-Odirname] [-Nbasename] [-Rdirname]\n"
        "             [-all-comments] [-no-comments]\n"
        "             [-verbatim-comments] [-block-comments]\n"
        "             [-xref[-all][-file][-func][-var][-type]]\n"
        "             [-warn[-all][-comment][-xref]]\n"
        "             [-index[-all][-file][-func][-var][-type]]\n"
        "             [-latex209|-latex2e] [-html20|-html32] [-rtf] [-sgml] "
        "[-raw]\n"
        "             [-Idirname] [-Ddefine] [-Udefine]\n"
        "             [-CPP cpp_program] [-- cpp_arg [ ... cpp_arg]]\n"
        "\n"
        "Usage: cxref filename [ ... filename] -delete\n"
        "             [-Odirname] [-Nbasename] [-Rdirname]\n"
        "\n",
        stderr);
  if (verbose)
    fputs(
        "filename ...           : Files to document.\n"
        "-delete                : Delete all references to the named files.\n"
        "\n"
        "-Odirname              : The output directory for the documentation.\n"
        "-Nbasename             : The base filename for the output "
        "documentation.\n"
        "-Rdirname              : The root directory of the source tree.\n"
        "\n"
        "-all-comments          : Use all comments.\n"
        "-verbatim-comments     : Insert the comments verbatim in the output.\n"
        "-block-comments        : The comments are in block style.\n"
        "-no-comments           : Ignore all of the comments.\n"
        "\n"
        "-xref[-*]              : Do cross referencing (of specified types).\n"
        "-warn[-*]              : Produce warnings (of comments or cross "
        "references).\n"
        "\n"
        "-index[-*]             : Produce a cross reference index (of "
        "specified types).\n"
        "\n"
        "-latex209 | -latex2e   : Produce LaTeX output (version 2.09 or 2e - "
        "default=2e).\n"
        "-html20 | -html32      : Produce HTML output (version 2.0 or 3.2 - "
        "default=3.2).\n"
        "-rtf                   : Produce RTF output (version 1.x).\n"
        "-sgml                  : Produce SGML output (for SGML tools version "
        "1.0.x).\n"
        "-raw                   : Produce raw output .\n"
        "\n"
        "-I*, -D*, -U*          : The usual compiler switches.\n"
        "-CPP cpp_program       : The cpp program to use.\n"
        "                       : (default '"
        "gcc -E -C -dD -dI"
        "')\n"
        "-- cpp_arg ...         : All arguments after the '--' are passed to "
        "cpp.\n"
        "\n"
        "The file .cxref in the current directory can also contain any of "
        "these arguments\n"
        "one per line, (except for filename and -delete).\n",
        stderr);
  else
    fputs("Run cxref with no arguments to get more verbose help\n", stderr);
  exit(1);
}


x86 assembly (clang, -O0):
<Usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    0x2eae(%rip),%rax
mov    (%rax),%esi
lea    0xec5(%rip),%rdi
call   1030 <fputs@plt>
cmpl   $0x0,-0x4(%rbp)
je     1164 <Usage+0x44>
mov    0x2e8f(%rip),%rax
mov    (%rax),%esi
lea    0x123a(%rip),%rdi
call   1030 <fputs@plt>
jmp    1179 <Usage+0x59>
mov    0x2e75(%rip),%rax
mov    (%rax),%esi
lea    0x17e5(%rip),%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<Usage>:
push   %r14
push   %rbx
push   %rax
mov    %edi,%ebx
mov    0x2eb3(%rip),%r14
mov    (%r14),%esi
lea    0xec9(%rip),%rdi
call   1030 <fputs@plt>
test   %ebx,%ebx
mov    (%r14),%esi
lea    0x1811(%rip),%rax
lea    0x1245(%rip),%rdi
cmove  %rax,%rdi
call   1030 <fputs@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [916 x i8] c"\0A C Cross Referencing & Documenting tool - Version 1.5d\0A -----------------------------------------------------\0A\0A(c) Andrew M. Bishop 1995,96,97,98,99, [ amb@gedanken.demon.co.uk ]\0A 2000,01,02 [http://www.gedanken.demon.co.uk/cxref/]\0A\0AUsage: cxref filename [ ... filename]\0A [-Odirname] [-Nbasename] [-Rdirname]\0A [-all-comments] [-no-comments]\0A [-verbatim-comments] [-block-comments]\0A [-xref[-all][-file][-func][-var][-type]]\0A [-warn[-all][-comment][-xref]]\0A [-index[-all][-file][-func][-var][-type]]\0A [-latex209|-latex2e] [-html20|-html32] [-rtf] [-sgml] [-raw]\0A [-Idirname] [-Ddefine] [-Udefine]\0A [-CPP cpp_program] [-- cpp_arg [ ... cpp_arg]]\0A\0AUsage: cxref filename [ ... filename] -delete\0A [-Odirname] [-Nbasename] [-Rdirname]\0A\0A\00"
@stderr = global i32 0
@.str.1 = [1477 x i8] c"filename ... : Files to document.\0A-delete : Delete all references to the named files.\0A\0A-Odirname : The output directory for the documentation.\0A-Nbasename : The base filename for the output documentation.\0A-Rdirname : The root directory of the source tree.\0A\0A-all-comments : Use all comments.\0A-verbatim-comments : Insert the comments verbatim in the output.\0A-block-comments : The comments are in block style.\0A-no-comments : Ignore all of the comments.\0A\0A-xref[-*] : Do cross referencing (of specified types).\0A-warn[-*] : Produce warnings (of comments or cross references).\0A\0A-index[-*] : Produce a cross reference index (of specified types).\0A\0A-latex209 | -latex2e : Produce LaTeX output (version 2.09 or 2e - default=2e).\0A-html20 | -html32 : Produce HTML output (version 2.0 or 3.2 - default=3.2).\0A-rtf : Produce RTF output (version 1.x).\0A-sgml : Produce SGML output (for SGML tools version 1.0.x).\0A-raw : Produce raw output .\0A\0A-I*, -D*, -U* : The usual compiler switches.\0A-CPP cpp_program : The cpp program to use.\0A : (default 'gcc -E -C -dD -dI')\0A-- cpp_arg ... : All arguments after the '--' are passed to cpp.\0A\0AThe file .cxref in the current directory can also contain any of these arguments\0Aone per line, (except for filename and -delete).\0A\00"
@.str.2 = [54 x i8] c"Run cxref with no arguments to get more verbose help\0A\00"
define void @Usage(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* @stderr
%4 = call i32 @fputs(i8* getelementptr inbounds ([916 x i8], [916 x i8]* @.str, i64 0, i64 0), i32 %3)
%5 = load i32, i32* %2
%6 = icmp ne i32 %5, 0
br i1 %6, label %7, label %10
7: ; preds = %1
%8 = load i32, i32* @stderr
%9 = call i32 @fputs(i8* getelementptr inbounds ([1477 x i8], [1477 x i8]* @.str.1, i64 0, i64 0), i32 %8)
br label %13
10: ; preds = %1
%11 = load i32, i32* @stderr
%12 = call i32 @fputs(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i64 0, i64 0), i32 %11)
br label %13
13: ; preds = %10, %7
%14 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [916 x i8] c"\0A C Cross Referencing & Documenting tool - Version 1.5d\0A -----------------------------------------------------\0A\0A(c) Andrew M. Bishop 1995,96,97,98,99, [ amb@gedanken.demon.co.uk ]\0A 2000,01,02 [http://www.gedanken.demon.co.uk/cxref/]\0A\0AUsage: cxref filename [ ... filename]\0A [-Odirname] [-Nbasename] [-Rdirname]\0A [-all-comments] [-no-comments]\0A [-verbatim-comments] [-block-comments]\0A [-xref[-all][-file][-func][-var][-type]]\0A [-warn[-all][-comment][-xref]]\0A [-index[-all][-file][-func][-var][-type]]\0A [-latex209|-latex2e] [-html20|-html32] [-rtf] [-sgml] [-raw]\0A [-Idirname] [-Ddefine] [-Udefine]\0A [-CPP cpp_program] [-- cpp_arg [ ... cpp_arg]]\0A\0AUsage: cxref filename [ ... filename] -delete\0A [-Odirname] [-Nbasename] [-Rdirname]\0A\0A\00"
@stderr = global i32 0
@.str.1 = [1477 x i8] c"filename ... : Files to document.\0A-delete : Delete all references to the named files.\0A\0A-Odirname : The output directory for the documentation.\0A-Nbasename : The base filename for the output documentation.\0A-Rdirname : The root directory of the source tree.\0A\0A-all-comments : Use all comments.\0A-verbatim-comments : Insert the comments verbatim in the output.\0A-block-comments : The comments are in block style.\0A-no-comments : Ignore all of the comments.\0A\0A-xref[-*] : Do cross referencing (of specified types).\0A-warn[-*] : Produce warnings (of comments or cross references).\0A\0A-index[-*] : Produce a cross reference index (of specified types).\0A\0A-latex209 | -latex2e : Produce LaTeX output (version 2.09 or 2e - default=2e).\0A-html20 | -html32 : Produce HTML output (version 2.0 or 3.2 - default=3.2).\0A-rtf : Produce RTF output (version 1.x).\0A-sgml : Produce SGML output (for SGML tools version 1.0.x).\0A-raw : Produce raw output .\0A\0A-I*, -D*, -U* : The usual compiler switches.\0A-CPP cpp_program : The cpp program to use.\0A : (default 'gcc -E -C -dD -dI')\0A-- cpp_arg ... : All arguments after the '--' are passed to cpp.\0A\0AThe file .cxref in the current directory can also contain any of these arguments\0Aone per line, (except for filename and -delete).\0A\00"
@.str.2 = [54 x i8] c"Run cxref with no arguments to get more verbose help\0A\00"
define void @Usage(i32 %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fputs(i8* getelementptr inbounds ([916 x i8], [916 x i8]* @.str, i64 0, i64 0), i32 %2)
%4 = icmp eq i32 %0, 0
%5 = load i32, i32* @stderr
%6 = select i1 %4, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([1477 x i8], [1477 x i8]* @.str.1, i64 0, i64 0)
%7 = tail call i32 @fputs(i8* %6, i32 %5)
%8 = tail call i32 @exit(i32 1)
unreachable
}