#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_old() {
  printf("Usage:  sg_logs [-a] [-A] [-b] [-c=PC] [-h] [-H] [-l] [-L] "
         "[-m=LEN] [-n]\n"
         "                [-p=PG[,SPG]] [-paramp=PP] [-pcb] [-ppc] "
         "[-r] [-select]\n"
         "                [-sp] [-t] [-T] [-v] [-V] [-?] DEVICE\n"
         "  where:\n"
         "    -a     fetch and decode all log pages\n"
         "    -A     fetch and decode all log pages and subpages\n"
         "    -b     shorten the output of some log pages\n"
         "    -c=PC  page control(PC) (default: 1)\n"
         "                  0: current threshhold, 1: current cumulative\n"
         "                  2: default threshhold, 3: default cumulative\n"
         "    -h     output in hex (default: decode if known)\n"
         "    -H     output in hex (same as '-h')\n"
         "    -l     list supported log page names (equivalent to "
         "'-p=0')\n"
         "    -L     list supported log page and subpages names "
         "(equivalent to\n"
         "           '-p=0,ff')\n"
         "    -m=LEN   max response length (decimal) (def: 0 "
         "-> everything)\n"
         "    -n       decode some pages into multiple name=value "
         "lines\n"
         "    -p=PG    page code in hex (def: 0)\n"
         "    -p=PG,SPG    both in hex, (defs: 0,0)\n"
         "    -paramp=PP   (in hex) (def: 0)\n"
         "    -pcb   show parameter control bytes in decoded "
         "output\n");
  printf("    -ppc   set the Parameter Pointer Control (PPC) bit "
         "(def: 0)\n"
         "    -r     reset log parameters (takes PC and SP into "
         "account)\n"
         "           (uses PCR bit in LOG SELECT)\n"
         "    -select  perform LOG SELECT using SP and PC values\n"
         "    -sp    set the Saving Parameters (SP) bit (def: 0)\n"
         "    -t     outputs temperature log page (0xd)\n"
         "    -T     outputs transport (protocol specific port) log "
         "page (0x18)\n"
         "    -v     increase verbosity\n"
         "    -V     output version string\n"
         "    -?     output this usage message\n\n"
         "Performs a SCSI LOG SENSE (or LOG SELECT) command\n");
}


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

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

LLVM IR (-O0):
@.str = [1070 x i8] c"Usage: sg_logs [-a] [-A] [-b] [-c=PC] [-h] [-H] [-l] [-L] [-m=LEN] [-n]\0A [-p=PG[,SPG]] [-paramp=PP] [-pcb] [-ppc] [-r] [-select]\0A [-sp] [-t] [-T] [-v] [-V] [-?] DEVICE\0A where:\0A -a fetch and decode all log pages\0A -A fetch and decode all log pages and subpages\0A -b shorten the output of some log pages\0A -c=PC page control(PC) (default: 1)\0A 0: current threshhold, 1: current cumulative\0A 2: default threshhold, 3: default cumulative\0A -h output in hex (default: decode if known)\0A -H output in hex (same as '-h')\0A -l list supported log page names (equivalent to '-p=0')\0A -L list supported log page and subpages names (equivalent to\0A '-p=0,ff')\0A -m=LEN max response length (decimal) (def: 0 -> everything)\0A -n decode some pages into multiple name=value lines\0A -p=PG page code in hex (def: 0)\0A -p=PG,SPG both in hex, (defs: 0,0)\0A -paramp=PP (in hex) (def: 0)\0A -pcb show parameter control bytes in decoded output\0A\00"
@.str.1 = [545 x i8] c" -ppc set the Parameter Pointer Control (PPC) bit (def: 0)\0A -r reset log parameters (takes PC and SP into account)\0A (uses PCR bit in LOG SELECT)\0A -select perform LOG SELECT using SP and PC values\0A -sp set the Saving Parameters (SP) bit (def: 0)\0A -t outputs temperature log page (0xd)\0A -T outputs transport (protocol specific port) log page (0x18)\0A -v increase verbosity\0A -V output version string\0A -? output this usage message\0A\0APerforms a SCSI LOG SENSE (or LOG SELECT) command\0A\00"
define void @usage_old() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1070 x i8], [1070 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([545 x i8], [545 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1069 x i8] c"Usage: sg_logs [-a] [-A] [-b] [-c=PC] [-h] [-H] [-l] [-L] [-m=LEN] [-n]\0A [-p=PG[,SPG]] [-paramp=PP] [-pcb] [-ppc] [-r] [-select]\0A [-sp] [-t] [-T] [-v] [-V] [-?] DEVICE\0A where:\0A -a fetch and decode all log pages\0A -A fetch and decode all log pages and subpages\0A -b shorten the output of some log pages\0A -c=PC page control(PC) (default: 1)\0A 0: current threshhold, 1: current cumulative\0A 2: default threshhold, 3: default cumulative\0A -h output in hex (default: decode if known)\0A -H output in hex (same as '-h')\0A -l list supported log page names (equivalent to '-p=0')\0A -L list supported log page and subpages names (equivalent to\0A '-p=0,ff')\0A -m=LEN max response length (decimal) (def: 0 -> everything)\0A -n decode some pages into multiple name=value lines\0A -p=PG page code in hex (def: 0)\0A -p=PG,SPG both in hex, (defs: 0,0)\0A -paramp=PP (in hex) (def: 0)\0A -pcb show parameter control bytes in decoded output\00"
@str.2 = [544 x i8] c" -ppc set the Parameter Pointer Control (PPC) bit (def: 0)\0A -r reset log parameters (takes PC and SP into account)\0A (uses PCR bit in LOG SELECT)\0A -select perform LOG SELECT using SP and PC values\0A -sp set the Saving Parameters (SP) bit (def: 0)\0A -t outputs temperature log page (0xd)\0A -T outputs transport (protocol specific port) log page (0x18)\0A -v increase verbosity\0A -V output version string\0A -? output this usage message\0A\0APerforms a SCSI LOG SENSE (or LOG SELECT) command\00"
define void @usage_old() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1069 x i8], [1069 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([544 x i8], [544 x i8]* @str.2, i64 0, i64 0))
ret void
}