#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*/ fprintf(int /*<<< orphan*/, char const *const, char *,
                           char *, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  static const char *const format =
      "%s %s: extract FreeType API names from header files\n"
      "\n"
      "This program extracts the list of public FreeType API functions.\n"
      "It receives a list of header files as an argument and\n"
      "generates a sorted list of unique identifiers in various formats.\n"
      "\n"
      "usage: %s header1 [options] [header2 ...]\n"
      "\n"
      "options:   -       parse the contents of stdin, ignore arguments\n"
      "           -v      verbose mode, output sent to standard error\n"
      "           -oFILE  write output to FILE instead of standard output\n"
      "           -dNAME  indicate DLL file name, 'freetype.dll' by default\n"
      "           -w      output .DEF file for Visual C++ and Mingw\n"
      "           -wB     output .DEF file for Borland C++\n"
      "           -wW     output Watcom Linker Response File\n"
      "           -wN     output NetWare Import File\n"
      "           -wL     output version map for GNU or Solaris linker\n"
      "\n";
  fprintf(stderr, format, "apinames", "0.3", "apinames");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
lea    0x11fe(%rip),%r8
lea    0x1200(%rip),%rcx
mov    %r8,%rdx
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
lea    0x120a(%rip),%rcx
lea    0x11fa(%rip),%rdx
mov    %rdx,%r8
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@usage.format = internal constant i8* getelementptr inbounds ([825 x i8], [825 x i8]* @.str, i32 0, i32 0)
@.str = [825 x i8] c"%s %s: extract FreeType API names from header files\0A\0AThis program extracts the list of public FreeType API functions.\0AIt receives a list of header files as an argument and\0Agenerates a sorted list of unique identifiers in various formats.\0A\0Ausage: %s header1 [options] [header2 ...]\0A\0Aoptions: - parse the contents of stdin, ignore arguments\0A -v verbose mode, output sent to standard error\0A -oFILE write output to FILE instead of standard output\0A -dNAME indicate DLL file name, 'freetype.dll' by default\0A -w output .DEF file for Visual C++ and Mingw\0A -wB output .DEF file for Borland C++\0A -wW output Watcom Linker Response File\0A -wN output NetWare Import File\0A -wL output version map for GNU or Solaris linker\0A\0A\00"
@stderr = global i32 0
@.str.1 = [9 x i8] c"apinames\00"
@.str.2 = [4 x i8] c"0.3\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([825 x i8], [825 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [825 x i8] c"%s %s: extract FreeType API names from header files\0A\0AThis program extracts the list of public FreeType API functions.\0AIt receives a list of header files as an argument and\0Agenerates a sorted list of unique identifiers in various formats.\0A\0Ausage: %s header1 [options] [header2 ...]\0A\0Aoptions: - parse the contents of stdin, ignore arguments\0A -v verbose mode, output sent to standard error\0A -oFILE write output to FILE instead of standard output\0A -dNAME indicate DLL file name, 'freetype.dll' by default\0A -w output .DEF file for Visual C++ and Mingw\0A -wB output .DEF file for Borland C++\0A -wW output Watcom Linker Response File\0A -wN output NetWare Import File\0A -wL output version map for GNU or Solaris linker\0A\0A\00"
@stderr = global i32 0
@.str.1 = [9 x i8] c"apinames\00"
@.str.2 = [4 x i8] c"0.3\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([825 x i8], [825 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}