#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: cerebro_admin [OPTIONS] -m <metric_name> [-r | -u | -p | -s]\n"
      "\n"
      "OPTIONS:\n"
      "  -h         Print help and exit\n"
      "  -v         Print version and exit\n"
      "  -m STRING  Specify the metric name\n"
      "  -r         Register the metric name\n"
      "  -u         Unregister the metric name\n"
      "  -p         Update the metric's value\n"
      "  -s         Resend the metric\n"
      "  -f         Flush the metric\n"
      "  -t INT     Specify metric type\n"
      "     %d - none (default)\n"
      "     %d - int32\n"
      "     %d - u_int32\n"
      "     %d - float\n"
      "     %d - double\n"
      "     %d - string\n"
      "     %d - int64\n"
      "     %d - u_int64\n"
      "  -l STRING  Specify metric value\n"
      "  -N         Propogate updated data immediately\n",
      0, 1, 2, 3, 4, 5, 6, 7);
  fprintf(stderr, "\n");
  exit(1);
}


x86 assembly (clang, -O0):
<_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    0x2eb1(%rip),%rax
mov    (%rax),%edi
lea    0xec8(%rip),%rsi
xor    %edx,%edx
mov    $0x1,%ecx
mov    $0x2,%r8d
mov    $0x3,%r9d
movl   $0x4,(%rsp)
movl   $0x5,0x8(%rsp)
movl   $0x6,0x10(%rsp)
movl   $0x7,0x18(%rsp)
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2e68(%rip),%rax
mov    (%rax),%edi
lea    0x10ea(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<_usage>:
push   %rbx
mov    0x2eb8(%rip),%rbx
mov    (%rbx),%edi
lea    0xecf(%rip),%rsi
xor    %edx,%edx
mov    $0x1,%ecx
mov    $0x2,%r8d
mov    $0x3,%r9d
xor    %eax,%eax
push   $0x7
push   $0x6
push   $0x5
push   $0x4
call   1030 <fprintf@plt>
add    $0x20,%rsp
mov    (%rbx),%edi
lea    0x110b(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [621 x i8] c"Usage: cerebro_admin [OPTIONS] -m <metric_name> [-r | -u | -p | -s]\0A\0AOPTIONS:\0A -h Print help and exit\0A -v Print version and exit\0A -m STRING Specify the metric name\0A -r Register the metric name\0A -u Unregister the metric name\0A -p Update the metric's value\0A -s Resend the metric\0A -f Flush the metric\0A -t INT Specify metric type\0A %d - none (default)\0A %d - int32\0A %d - u_int32\0A %d - float\0A %d - double\0A %d - string\0A %d - int64\0A %d - u_int64\0A -l STRING Specify metric value\0A -N Propogate updated data immediately\0A\00"
@.str.1 = [2 x i8] c"\0A\00"
define void @_usage() {
%1 = load i32, i32* @stderr
%2 = call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([621 x i8], [621 x i8]* @.str, i64 0, i64 0), i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7)
%3 = load i32, i32* @stderr
%4 = call i32 (i32, i8*, ...) @fprintf(i32 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%5 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [621 x i8] c"Usage: cerebro_admin [OPTIONS] -m <metric_name> [-r | -u | -p | -s]\0A\0AOPTIONS:\0A -h Print help and exit\0A -v Print version and exit\0A -m STRING Specify the metric name\0A -r Register the metric name\0A -u Unregister the metric name\0A -p Update the metric's value\0A -s Resend the metric\0A -f Flush the metric\0A -t INT Specify metric type\0A %d - none (default)\0A %d - int32\0A %d - u_int32\0A %d - float\0A %d - double\0A %d - string\0A %d - int64\0A %d - u_int64\0A -l STRING Specify metric value\0A -N Propogate updated data immediately\0A\00"
@.str.1 = [2 x i8] c"\0A\00"
define void @_usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([621 x i8], [621 x i8]* @.str, i64 0, i64 0), i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7)
%3 = load i32, i32* @stderr
%4 = tail call i32 (i32, i8*, ...) @fprintf(i32 %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%5 = tail call i32 @exit(i32 1)
unreachable
}