#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 *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(stderr,
          "Usage: jstat [-a] [-e events] [-I interval] [-C cpus] [-A] program\n"
          "--all -a            Measure global system\n"
          "-e --events list    Comma separate list of events to measure. Use "
          "{} for groups\n"
          "-I N --interval N   Print events every N ms\n"
          "-C CPUS --cpu CPUS  Only measure on CPUs. List of numbers or ranges "
          "a-b\n"
          "-A --no-aggr        Print values for individual CPUs\n"
          "-v --verbose        Print perf_event_open arguments\n"
          "-o file             Output results to file\n"
          "--append            (with -o) Append results to file\n"
          "-D N --delay N      Wait N ms after starting program before "
          "measurement\n"
          "--merge             Sum multiple instances of uncore events\n"
          "Run event_download.py once first to use symbolic events\n"
          "Run listevents to show available events\n");
  exit(1);
}


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

LLVM IR (-O0):
@stderr = global i32 0
@.str = [735 x i8] c"Usage: jstat [-a] [-e events] [-I interval] [-C cpus] [-A] program\0A--all -a Measure global system\0A-e --events list Comma separate list of events to measure. Use {} for groups\0A-I N --interval N Print events every N ms\0A-C CPUS --cpu CPUS Only measure on CPUs. List of numbers or ranges a-b\0A-A --no-aggr Print values for individual CPUs\0A-v --verbose Print perf_event_open arguments\0A-o file Output results to file\0A--append (with -o) Append results to file\0A-D N --delay N Wait N ms after starting program before measurement\0A--merge Sum multiple instances of uncore events\0ARun event_download.py once first to use symbolic events\0ARun listevents to show available events\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([735 x i8], [735 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [735 x i8] c"Usage: jstat [-a] [-e events] [-I interval] [-C cpus] [-A] program\0A--all -a Measure global system\0A-e --events list Comma separate list of events to measure. Use {} for groups\0A-I N --interval N Print events every N ms\0A-C CPUS --cpu CPUS Only measure on CPUs. List of numbers or ranges a-b\0A-A --no-aggr Print values for individual CPUs\0A-v --verbose Print perf_event_open arguments\0A-o file Output results to file\0A--append (with -o) Append results to file\0A-D N --delay N Wait N ms after starting program before measurement\0A--merge Sum multiple instances of uncore events\0ARun event_download.py once first to use symbolic events\0ARun listevents to show available events\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([735 x i8], [735 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}