#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.5."
         "3852"
         "\n\n");
  printf("Usage: svnrev [-ofilename] [-i] [-jpackage] <input> [input [...]]\n\n"
         "The -o option sets the filename for the output file with the build "
         "number.\n"
         "When no filename follows \"-o\", the result is written to stdout. "
         "The default\n"
         "filename is \"svnrev.h\" for C/C++ and \"VersionInfo.java\" for "
         "Java.\n\n"
         "The -i option should be used when the file list is only a partial "
         "set of all\n"
         "files. With this option, svnrev also scans the output file that was "
         "generated\n"
         "on a previous run.\n\n"
         "The -j option writes a java package file instead of a C/C++ header "
         "file. The\n"
         "name of the package must follow the option.\n\n"
         "The -m option provides a simple revision string only.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<about>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0xedb(%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    0xedd(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [18 x i8] c"svnrev 1.5.3852\0A\0A\00"
@.str.1 = [637 x i8] c"Usage: svnrev [-ofilename] [-i] [-jpackage] <input> [input [...]]\0A\0AThe -o option sets the filename for the output file with the build number.\0AWhen no filename follows \22-o\22, the result is written to stdout. The default\0Afilename is \22svnrev.h\22 for C/C++ and \22VersionInfo.java\22 for Java.\0A\0AThe -i option should be used when the file list is only a partial set of all\0Afiles. With this option, svnrev also scans the output file that was generated\0Aon a previous run.\0A\0AThe -j option writes a java package file instead of a C/C++ header file. The\0Aname of the package must follow the option.\0A\0AThe -m option provides a simple revision string only.\0A\00"
define void @about() {
%1 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([637 x i8], [637 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [17 x i8] c"svnrev 1.5.3852\0A\00"
@str.2 = [636 x i8] c"Usage: svnrev [-ofilename] [-i] [-jpackage] <input> [input [...]]\0A\0AThe -o option sets the filename for the output file with the build number.\0AWhen no filename follows \22-o\22, the result is written to stdout. The default\0Afilename is \22svnrev.h\22 for C/C++ and \22VersionInfo.java\22 for Java.\0A\0AThe -i option should be used when the file list is only a partial set of all\0Afiles. With this option, svnrev also scans the output file that was generated\0Aon a previous run.\0A\0AThe -j option writes a java package file instead of a C/C++ header file. The\0Aname of the package must follow the option.\0A\0AThe -m option provides a simple revision string only.\00"
define void @about() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([636 x i8], [636 x i8]* @str.2, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}