#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 *, char *, char *, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(stderr,
          "Usage: %s [-h | -e | -p | -C] [-v N] [-o fn] [-c fn]\n\n"
          "Use exactly one of the following:\n"
          "-h\twrite HTML page with inline attributes\n"
          "-e\twrite HTML page with link to external CSS\n"
          "-p\twrite HTML fragment containing screen dump only\n"
          "-C\twrite external CSS containing all possible attributes (no VC "
          "dump made)\n"
          "\n"
          "Use zero or more of the following:\n"
          "-v N\tuse virtual console N (default current VC)\n"
          "-o fn\tset HTML filename (default \"%s\")\n"
          "-c fn\tset external CSS filename (default \"%s\")\n"
          "\n"
          "Using \"-\" as a filename causes output to be written to stdout.\n",
          "vcsadump", "vcdump.html", "vcattrib.css");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
lea    0x10dd(%rip),%rdx
lea    0x10df(%rip),%rcx
lea    0x10e4(%rip),%r8
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    0x10e0(%rip),%rdx
lea    0x10e2(%rip),%rcx
lea    0x10e7(%rip),%r8
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [536 x i8] c"Usage: %s [-h | -e | -p | -C] [-v N] [-o fn] [-c fn]\0A\0AUse exactly one of the following:\0A-h\09write HTML page with inline attributes\0A-e\09write HTML page with link to external CSS\0A-p\09write HTML fragment containing screen dump only\0A-C\09write external CSS containing all possible attributes (no VC dump made)\0A\0AUse zero or more of the following:\0A-v N\09use virtual console N (default current VC)\0A-o fn\09set HTML filename (default \22%s\22)\0A-c fn\09set external CSS filename (default \22%s\22)\0A\0AUsing \22-\22 as a filename causes output to be written to stdout.\0A\00"
@.str.1 = [9 x i8] c"vcsadump\00"
@.str.2 = [12 x i8] c"vcdump.html\00"
@.str.3 = [13 x i8] c"vcattrib.css\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([536 x i8], [536 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 ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [536 x i8] c"Usage: %s [-h | -e | -p | -C] [-v N] [-o fn] [-c fn]\0A\0AUse exactly one of the following:\0A-h\09write HTML page with inline attributes\0A-e\09write HTML page with link to external CSS\0A-p\09write HTML fragment containing screen dump only\0A-C\09write external CSS containing all possible attributes (no VC dump made)\0A\0AUse zero or more of the following:\0A-v N\09use virtual console N (default current VC)\0A-o fn\09set HTML filename (default \22%s\22)\0A-c fn\09set external CSS filename (default \22%s\22)\0A\0AUsing \22-\22 as a filename causes output to be written to stdout.\0A\00"
@.str.1 = [9 x i8] c"vcsadump\00"
@.str.2 = [12 x i8] c"vcdump.html\00"
@.str.3 = [13 x i8] c"vcattrib.css\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([536 x i8], [536 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 ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}