#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 const *);
int /*<<< orphan*/ stderr;
void usage(const char *name) {
  fprintf(stderr,
          "Usage: %s <-s socket> <-n value_spec> <-H hostname> [options]\n"
          "\n"
          "Valid options are:\n"
          "  -s <socket>    Path to collectd's UNIX-socket.\n"
          "  -n <v_spec>    Value specification to get from collectd.\n"
          "                 Format: `plugin-instance/type-instance'\n"
          "  -d <ds>        Select the DS to examine. May be repeated to "
          "examine multiple\n"
          "                 DSes. By default all DSes are used.\n"
          "  -g <consol>    Method to use to consolidate several DSes.\n"
          "                 See below for a list of valid arguments.\n"
          "  -H <host>      Hostname to query the values for.\n"
          "  -c <range>     Critical range\n"
          "  -w <range>     Warning range\n"
          "\n"
          "Consolidation functions:\n"
          "  none:          Apply the warning- and critical-ranges to each "
          "data-source\n"
          "                 individually.\n"
          "  average:       Calculate the average of all matching DSes and "
          "apply the\n"
          "                 warning- and critical-ranges to the calculated "
          "average.\n"
          "  sum:           Apply the ranges to the sum of all DSes.\n"
          "  percentage:    Apply the ranges to the ratio (in percent) of the "
          "first value\n"
          "                 and the sum of all values."
          "\n",
          name);
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ead(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xec0(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    %rdi,%rdx
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1073 x i8] c"Usage: %s <-s socket> <-n value_spec> <-H hostname> [options]\0A\0AValid options are:\0A -s <socket> Path to collectd's UNIX-socket.\0A -n <v_spec> Value specification to get from collectd.\0A Format: `plugin-instance/type-instance'\0A -d <ds> Select the DS to examine. May be repeated to examine multiple\0A DSes. By default all DSes are used.\0A -g <consol> Method to use to consolidate several DSes.\0A See below for a list of valid arguments.\0A -H <host> Hostname to query the values for.\0A -c <range> Critical range\0A -w <range> Warning range\0A\0AConsolidation functions:\0A none: Apply the warning- and critical-ranges to each data-source\0A individually.\0A average: Calculate the average of all matching DSes and apply the\0A warning- and critical-ranges to the calculated average.\0A sum: Apply the ranges to the sum of all DSes.\0A percentage: Apply the ranges to the ratio (in percent) of the first value\0A and the sum of all values.\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1073 x i8], [1073 x i8]* @.str, i64 0, i64 0), i8* %4)
%6 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1073 x i8] c"Usage: %s <-s socket> <-n value_spec> <-H hostname> [options]\0A\0AValid options are:\0A -s <socket> Path to collectd's UNIX-socket.\0A -n <v_spec> Value specification to get from collectd.\0A Format: `plugin-instance/type-instance'\0A -d <ds> Select the DS to examine. May be repeated to examine multiple\0A DSes. By default all DSes are used.\0A -g <consol> Method to use to consolidate several DSes.\0A See below for a list of valid arguments.\0A -H <host> Hostname to query the values for.\0A -c <range> Critical range\0A -w <range> Warning range\0A\0AConsolidation functions:\0A none: Apply the warning- and critical-ranges to each data-source\0A individually.\0A average: Calculate the average of all matching DSes and apply the\0A warning- and critical-ranges to the calculated average.\0A sum: Apply the ranges to the sum of all DSes.\0A percentage: Apply the ranges to the ratio (in percent) of the first value\0A and the sum of all values.\0A\00"
define void @usage(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1073 x i8], [1073 x i8]* @.str, i64 0, i64 0), i8* %0)
%4 = tail call i32 @exit(i32 1)
unreachable
}