#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage() {
  fprintf(stderr,
          "Usage: "
          "sg_ses [--byte1=B1] [--control] [--data=H,H...] [--filter] "
          "[--help]\n"
          "              [--hex] [--inner-hex] [--list] [--page=PG] [--raw] "
          "[--status]\n"
          "              [--verbose] [--version] DEVICE\n"
          "  where:\n"
          "    --byte1=B1|-b B1  byte 1 (2nd byte) for some control "
          "pages\n"
          "    --control|-c        send control information (def: fetch "
          "status)\n"
          "    --data=H,H...|-d H,H...    string of ASCII hex bytes for "
          "control pages\n"
          "    --data=- | -d -     fetch string of ASCII hex bytes from "
          "stdin\n"
          "    --filter|-f         filter out enclosure status clear "
          "flags\n"
          "    --help|-h           print out usage message\n"
          "    --hex|-H            print status response in hex\n"
          "    --inner-hex|-i      print innermost level of a"
          " status page in hex\n"
          "    --list|-l           list known pages and elements (ignore"
          " DEVICE)\n"
          "    --page=PG|-p PG     SES page code PG (prefix with '0x' "
          "for hex; def: 0)\n"
          "    --raw|-r            print status page in ASCII hex suitable "
          "for '-d';\n"
          "                        when used twice outputs page in binary "
          "to stdout\n"
          "    --status|-s         fetch status information\n"
          "    --verbose|-v        increase verbosity\n"
          "    --version|-V        print version string and exit\n\n"
          "Fetches status or sends control data to a SCSI enclosure\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1212 x i8] c"Usage: sg_ses [--byte1=B1] [--control] [--data=H,H...] [--filter] [--help]\0A [--hex] [--inner-hex] [--list] [--page=PG] [--raw] [--status]\0A [--verbose] [--version] DEVICE\0A where:\0A --byte1=B1|-b B1 byte 1 (2nd byte) for some control pages\0A --control|-c send control information (def: fetch status)\0A --data=H,H...|-d H,H... string of ASCII hex bytes for control pages\0A --data=- | -d - fetch string of ASCII hex bytes from stdin\0A --filter|-f filter out enclosure status clear flags\0A --help|-h print out usage message\0A --hex|-H print status response in hex\0A --inner-hex|-i print innermost level of a status page in hex\0A --list|-l list known pages and elements (ignore DEVICE)\0A --page=PG|-p PG SES page code PG (prefix with '0x' for hex; def: 0)\0A --raw|-r print status page in ASCII hex suitable for '-d';\0A when used twice outputs page in binary to stdout\0A --status|-s fetch status information\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0AFetches status or sends control data to a SCSI enclosure\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1212 x i8], [1212 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1212 x i8] c"Usage: sg_ses [--byte1=B1] [--control] [--data=H,H...] [--filter] [--help]\0A [--hex] [--inner-hex] [--list] [--page=PG] [--raw] [--status]\0A [--verbose] [--version] DEVICE\0A where:\0A --byte1=B1|-b B1 byte 1 (2nd byte) for some control pages\0A --control|-c send control information (def: fetch status)\0A --data=H,H...|-d H,H... string of ASCII hex bytes for control pages\0A --data=- | -d - fetch string of ASCII hex bytes from stdin\0A --filter|-f filter out enclosure status clear flags\0A --help|-h print out usage message\0A --hex|-H print status response in hex\0A --inner-hex|-i print innermost level of a status page in hex\0A --list|-l list known pages and elements (ignore DEVICE)\0A --page=PG|-p PG SES page code PG (prefix with '0x' for hex; def: 0)\0A --raw|-r print status page in ASCII hex suitable for '-d';\0A when used twice outputs page in binary to stdout\0A --status|-s fetch status information\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0AFetches status or sends control data to a SCSI enclosure\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1212 x i8], [1212 x i8]* @.str, i64 0, i64 0))
ret void
}