#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*/ printf(char *);
void about(void) {
  printf("svnrev 1.12."
         "4499"
         "\n\n");
  printf("Copyright 2005-2011 ITB CompuPhase. See http://www.compuphase.com/ "
         "for source\ncode and documentation\n\n");
  printf(
      "Usage: svnrev [options] <input> [input [...]]\n\n"
      "Options:\n"
      "-jname\t\tJava: this option writes a java package file instead of a "
      "C/C++\n"
      "\t\theader file. The name of the Java package must follow the\n"
      "\t\toption (this is not the filename).\n\n"
      "-cname\t\tC#: this option writes a c-sharp class file instead of a "
      "C/C++\n"
      "\t\theader file. The name of the namespace and class must follow\n"
      "\t\tthe option. Namespace and class names are separated by a\n"
      "\t\tperiod (namespace.class).\n\n"
      "-Oname\t\tOracle: this option creates a Oracle package file instead of\n"
      "\t\ta C/C++ header file. The name of the package must follow the\n"
      "\t\toption.\n\n"
      "-P\t\tProperty file: This option creates a \"property file\", that can\n"
      "\t\tthen be used with ant.\n\n"
      "-pfilename\tC#: Assembly Property Filename (AssemblyInfo.cs)\n"
      "\t\tthe AssemblyVersion and AssemblyFileVersion will be updated.\n\n"
      "-ofilename\tOutput filename for the file with the build number. When "
      "no\n"
      "\t\tfilename follows \"-o\", the result is written to stdout. The\n"
      "\t\tdefault filename is \"svnrev.h\" for C/C++, \"SvnRevision.java\"\n"
      "\t\tfor Java and \"SvnRevision.cs\" for C#.\n\n"
      "-i\t\tIncremental: this option should be used when the list of input\n"
      "\t\tfiles is a subset of all files in the project. When -i is\n"
      "\t\tpresent, svnrev also scans the output file that was generated\n"
      "\t\ton a previous run.\n\n"
      "-fpattern\tFormat: adds text before or after the build number in the\n"
      "\t\tconstant SVN_REVSTR. The pattern has the form \"text#text\"\n"
      "\t\t(without the quotes) where \"text\" is arbitrary text and \"#\"\n"
      "\t\twill be replaced by the build number.\n\n"
      "-mname\t\tMacro prefix: by default all generated constants start with\n"
      "\t\tSVN_REV, but this can be changed with this option.\n\n"
      "-n\t\tIgnore line endings (CR versus LF versus CR+LF) when comparing\n"
      "\t\tthe working copy to the base.\n\n"
      "-v\t\tVerbose: prints the names of files that are modified since the\n"
      "\t\tlast commit (into version control) to stderr.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<about>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0xedc(%rip),%rdi
call   1030 <printf@plt>
lea    0xf37(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<about>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
lea    0xede(%rip),%rdi
call   1030 <puts@plt>
lea    0xf38(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [19 x i8] c"svnrev 1.12.4499\0A\0A\00"
@.str.1 = [103 x i8] c"Copyright 2005-2011 ITB CompuPhase. See http://www.compuphase.com/ for source\0Acode and documentation\0A\0A\00"
@.str.2 = [1827 x i8] c"Usage: svnrev [options] <input> [input [...]]\0A\0AOptions:\0A-jname\09\09Java: this option writes a java package file instead of a C/C++\0A\09\09header file. The name of the Java package must follow the\0A\09\09option (this is not the filename).\0A\0A-cname\09\09C#: this option writes a c-sharp class file instead of a C/C++\0A\09\09header file. The name of the namespace and class must follow\0A\09\09the option. Namespace and class names are separated by a\0A\09\09period (namespace.class).\0A\0A-Oname\09\09Oracle: this option creates a Oracle package file instead of\0A\09\09a C/C++ header file. The name of the package must follow the\0A\09\09option.\0A\0A-P\09\09Property file: This option creates a \22property file\22, that can\0A\09\09then be used with ant.\0A\0A-pfilename\09C#: Assembly Property Filename (AssemblyInfo.cs)\0A\09\09the AssemblyVersion and AssemblyFileVersion will be updated.\0A\0A-ofilename\09Output filename for the file with the build number. When no\0A\09\09filename follows \22-o\22, the result is written to stdout. The\0A\09\09default filename is \22svnrev.h\22 for C/C++, \22SvnRevision.java\22\0A\09\09for Java and \22SvnRevision.cs\22 for C#.\0A\0A-i\09\09Incremental: this option should be used when the list of input\0A\09\09files is a subset of all files in the project. When -i is\0A\09\09present, svnrev also scans the output file that was generated\0A\09\09on a previous run.\0A\0A-fpattern\09Format: adds text before or after the build number in the\0A\09\09constant SVN_REVSTR. The pattern has the form \22text#text\22\0A\09\09(without the quotes) where \22text\22 is arbitrary text and \22#\22\0A\09\09will be replaced by the build number.\0A\0A-mname\09\09Macro prefix: by default all generated constants start with\0A\09\09SVN_REV, but this can be changed with this option.\0A\0A-n\09\09Ignore line endings (CR versus LF versus CR+LF) when comparing\0A\09\09the working copy to the base.\0A\0A-v\09\09Verbose: prints the names of files that are modified since the\0A\09\09last commit (into version control) to stderr.\0A\00"
define void @about() {
%1 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([103 x i8], [103 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([1827 x i8], [1827 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [18 x i8] c"svnrev 1.12.4499\0A\00"
@str.3 = [102 x i8] c"Copyright 2005-2011 ITB CompuPhase. See http://www.compuphase.com/ for source\0Acode and documentation\0A\00"
@str.4 = [1826 x i8] c"Usage: svnrev [options] <input> [input [...]]\0A\0AOptions:\0A-jname\09\09Java: this option writes a java package file instead of a C/C++\0A\09\09header file. The name of the Java package must follow the\0A\09\09option (this is not the filename).\0A\0A-cname\09\09C#: this option writes a c-sharp class file instead of a C/C++\0A\09\09header file. The name of the namespace and class must follow\0A\09\09the option. Namespace and class names are separated by a\0A\09\09period (namespace.class).\0A\0A-Oname\09\09Oracle: this option creates a Oracle package file instead of\0A\09\09a C/C++ header file. The name of the package must follow the\0A\09\09option.\0A\0A-P\09\09Property file: This option creates a \22property file\22, that can\0A\09\09then be used with ant.\0A\0A-pfilename\09C#: Assembly Property Filename (AssemblyInfo.cs)\0A\09\09the AssemblyVersion and AssemblyFileVersion will be updated.\0A\0A-ofilename\09Output filename for the file with the build number. When no\0A\09\09filename follows \22-o\22, the result is written to stdout. The\0A\09\09default filename is \22svnrev.h\22 for C/C++, \22SvnRevision.java\22\0A\09\09for Java and \22SvnRevision.cs\22 for C#.\0A\0A-i\09\09Incremental: this option should be used when the list of input\0A\09\09files is a subset of all files in the project. When -i is\0A\09\09present, svnrev also scans the output file that was generated\0A\09\09on a previous run.\0A\0A-fpattern\09Format: adds text before or after the build number in the\0A\09\09constant SVN_REVSTR. The pattern has the form \22text#text\22\0A\09\09(without the quotes) where \22text\22 is arbitrary text and \22#\22\0A\09\09will be replaced by the build number.\0A\0A-mname\09\09Macro prefix: by default all generated constants start with\0A\09\09SVN_REV, but this can be changed with this option.\0A\0A-n\09\09Ignore line endings (CR versus LF versus CR+LF) when comparing\0A\09\09the working copy to the base.\0A\0A-v\09\09Verbose: prints the names of files that are modified since the\0A\09\09last commit (into version control) to stderr.\00"
define void @about() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([102 x i8], [102 x i8]* @str.3, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1826 x i8], [1826 x i8]* @str.4, i64 0, i64 0))
%4 = tail call i32 @exit(i32 1)
unreachable
}