#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*/ printf(char *);
void usage() {
  printf("Usage: sg_logs [--all] [--brief] [--control=PC] [--help] [--hex] "
         "[--list]\n"
         "               [--maxlen=LEN] [--name] [--page=PG[,SPG]] "
         "[--paramp=PP] [--pcb]\n"
         "               [--ppc] [--raw] [--reset] [--select] [--sp] "
         "[--temperature]\n"
         "               [--transport] [--verbose] [--version] DEVICE\n"
         "  where:\n"
         "    --all|-a        fetch and decode all log pages\n"
         "                    use twice to fetch and decode all log pages "
         "and subpages\n"
         "    --brief|-b      shorten the output of some log pages\n"
         "    --control=PC|-c PC    page control(PC) (default: 1)\n"
         "                          0: current threshhold, 1: current "
         "cumulative\n"
         "                          2: default threshhold, 3: default "
         "cumulative\n"
         "    --help|-h       print usage message then exit\n"
         "    --hex|-H        output response in hex (default: decode if "
         "known)\n"
         "    --list|-l       list supported log page names (equivalent to "
         "'-p 0')\n"
         "                    use twice to list supported log page and "
         "subpage names\n"
         "    --maxlen=LEN|-m LEN    max response length (def: 0 "
         "-> everything)\n"
         "                           when > 1 will request LEN bytes\n"
         "    --name|-n       decode some pages into multiple name=value "
         "lines\n"
         "    --page=PG|-p PG    page code (in decimal)\n"
         "    --page=PG,SPG|-p PG,SPG\n"
         "                    page code plus subpage code (both default "
         "to 0)\n"
         "    --paramp=PP|-P PP    parameter pointer (decimal) (def: 0)\n"
         "    --pcb|-q        show parameter control bytes in decoded "
         "output\n");
  printf("    --ppc|-Q        set the Parameter Pointer Control (PPC) bit "
         "(def: 0)\n"
         "                    the PPC bit made obsolete in SPC-4 rev 18\n"
         "    --raw|-r        output response in binary to stdout\n"
         "    --reset|-R      reset log parameters (takes PC and SP into "
         "account)\n"
         "                    (uses PCR bit in LOG SELECT)\n"
         "    --select|-S     perform LOG SELECT using SP and PC values\n"
         "    --sp|-s         set the Saving Parameters (SP) bit (def: 0)\n"
         "    --temperature|-t    decode temperature (log page 0xd or "
         "0x2f)\n"
         "    --transport|-T    decode transport (protocol specific port "
         "0x18) log page\n"
         "    --verbose|-v    increase verbosity\n"
         "    --version|-V    output version string then exit\n\n"
         "Performs a SCSI LOG SENSE (or LOG SELECT) command\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1463(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0x1465(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1418 x i8] c"Usage: sg_logs [--all] [--brief] [--control=PC] [--help] [--hex] [--list]\0A [--maxlen=LEN] [--name] [--page=PG[,SPG]] [--paramp=PP] [--pcb]\0A [--ppc] [--raw] [--reset] [--select] [--sp] [--temperature]\0A [--transport] [--verbose] [--version] DEVICE\0A where:\0A --all|-a fetch and decode all log pages\0A use twice to fetch and decode all log pages and subpages\0A --brief|-b shorten the output of some log pages\0A --control=PC|-c PC page control(PC) (default: 1)\0A 0: current threshhold, 1: current cumulative\0A 2: default threshhold, 3: default cumulative\0A --help|-h print usage message then exit\0A --hex|-H output response in hex (default: decode if known)\0A --list|-l list supported log page names (equivalent to '-p 0')\0A use twice to list supported log page and subpage names\0A --maxlen=LEN|-m LEN max response length (def: 0 -> everything)\0A when > 1 will request LEN bytes\0A --name|-n decode some pages into multiple name=value lines\0A --page=PG|-p PG page code (in decimal)\0A --page=PG,SPG|-p PG,SPG\0A page code plus subpage code (both default to 0)\0A --paramp=PP|-P PP parameter pointer (decimal) (def: 0)\0A --pcb|-q show parameter control bytes in decoded output\0A\00"
@.str.1 = [725 x i8] c" --ppc|-Q set the Parameter Pointer Control (PPC) bit (def: 0)\0A the PPC bit made obsolete in SPC-4 rev 18\0A --raw|-r output response in binary to stdout\0A --reset|-R reset log parameters (takes PC and SP into account)\0A (uses PCR bit in LOG SELECT)\0A --select|-S perform LOG SELECT using SP and PC values\0A --sp|-s set the Saving Parameters (SP) bit (def: 0)\0A --temperature|-t decode temperature (log page 0xd or 0x2f)\0A --transport|-T decode transport (protocol specific port 0x18) log page\0A --verbose|-v increase verbosity\0A --version|-V output version string then exit\0A\0APerforms a SCSI LOG SENSE (or LOG SELECT) command\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1418 x i8], [1418 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([725 x i8], [725 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1417 x i8] c"Usage: sg_logs [--all] [--brief] [--control=PC] [--help] [--hex] [--list]\0A [--maxlen=LEN] [--name] [--page=PG[,SPG]] [--paramp=PP] [--pcb]\0A [--ppc] [--raw] [--reset] [--select] [--sp] [--temperature]\0A [--transport] [--verbose] [--version] DEVICE\0A where:\0A --all|-a fetch and decode all log pages\0A use twice to fetch and decode all log pages and subpages\0A --brief|-b shorten the output of some log pages\0A --control=PC|-c PC page control(PC) (default: 1)\0A 0: current threshhold, 1: current cumulative\0A 2: default threshhold, 3: default cumulative\0A --help|-h print usage message then exit\0A --hex|-H output response in hex (default: decode if known)\0A --list|-l list supported log page names (equivalent to '-p 0')\0A use twice to list supported log page and subpage names\0A --maxlen=LEN|-m LEN max response length (def: 0 -> everything)\0A when > 1 will request LEN bytes\0A --name|-n decode some pages into multiple name=value lines\0A --page=PG|-p PG page code (in decimal)\0A --page=PG,SPG|-p PG,SPG\0A page code plus subpage code (both default to 0)\0A --paramp=PP|-P PP parameter pointer (decimal) (def: 0)\0A --pcb|-q show parameter control bytes in decoded output\00"
@str.2 = [724 x i8] c" --ppc|-Q set the Parameter Pointer Control (PPC) bit (def: 0)\0A the PPC bit made obsolete in SPC-4 rev 18\0A --raw|-r output response in binary to stdout\0A --reset|-R reset log parameters (takes PC and SP into account)\0A (uses PCR bit in LOG SELECT)\0A --select|-S perform LOG SELECT using SP and PC values\0A --sp|-s set the Saving Parameters (SP) bit (def: 0)\0A --temperature|-t decode temperature (log page 0xd or 0x2f)\0A --transport|-T decode transport (protocol specific port 0x18) log page\0A --verbose|-v increase verbosity\0A --version|-V output version string then exit\0A\0APerforms a SCSI LOG SENSE (or LOG SELECT) command\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1417 x i8], [1417 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([724 x i8], [724 x i8]* @str.2, i64 0, i64 0))
ret void
}