#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_persist [OPTIONS] [DEVICE]\n"
          "  where OPTIONS include:\n"
          "    --alloc-length=LEN|-l LEN    allocation length hex value "
          "(used with\n"
          "                                 PR In only) (default: 8192 "
          "(2000 in hex))\n"
          "    --clear|-C                 PR Out: Clear\n"
          "    --device=DEVICE|-d DEVICE    query or change DEVICE\n"
          "    --help|-h                  output this usage message\n"
          "    --hex|-H                   output response in hex\n"
          "    --in|-i                    request PR In command (default)\n"
          "    --no-inquiry|-n            skip INQUIRY (default: do "
          "INQUIRY)\n"
          "    --out|-o                   request PR Out command\n"
          "    --param-alltgpt|-Y         PR Out parameter 'ALL_TG_PT'\n"
          "    --param-aptpl|-Z           PR Out parameter 'APTPL'\n"
          "    --param-rk=RK|-K RK        PR Out parameter reservation key\n"
          "                               (RK is in hex)\n"
          "    --param-sark=SARK|-S SARK    PR Out parameter service "
          "action\n"
          "                               reservation key (SARK is in "
          "hex)\n"
          "    --preempt|-P               PR Out: Preempt\n"
          "    --preempt-abort|-A         PR Out: Preempt and Abort\n"
          "    --prout-type=TYPE|-T TYPE    PR Out command type\n"
          "    --read-full-status|-s      PR In: Read Full Status\n"
          "    --read-keys|-k             PR In: Read Keys\n");
  fprintf(stderr,
          "    --read-reservation|-r      PR In: Read Reservation\n"
          "    --read-status|-s           PR In: Read Full Status\n"
          "    --register|-G              PR Out: Register\n"
          "    --register-ignore|-I       PR Out: Register and Ignore\n"
          "    --register-move|-M         PR Out: Register and Move\n"
          "    --relative-target-port=RTPI|-Q RTPI    relative target port "
          "identifier\n"
          "                               for '--register-move'\n"
          "    --release|-L               PR Out: Release\n"
          "    --report-capabilities|-c   PR In: Report Capabilities\n"
          "    --reserve|-R               PR Out: Reserve\n"
          "    --transport-id=TIDS|-X TIDS    one or more "
          "TransportIDs can\n"
          "                               be given in several forms\n"
          "    --unreg|-U                 optional with PR Out Register "
          "and Move\n"
          "    --verbose|-v               output additional debug "
          "information\n"
          "    --version|-V               output version string\n"
          "    -?                         output this usage message\n\n"
          "Performs a SCSI PERSISTENT RESERVE (IN or OUT) command\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>
mov    0x2eb0(%rip),%rax
mov    (%rax),%edi
lea    0x138b(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    0x2ec8(%rip),%rbx
mov    (%rbx),%edi
lea    0xedf(%rip),%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1395(%rip),%rsi
pop    %rbx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1220 x i8] c"Usage: sg_persist [OPTIONS] [DEVICE]\0A where OPTIONS include:\0A --alloc-length=LEN|-l LEN allocation length hex value (used with\0A PR In only) (default: 8192 (2000 in hex))\0A --clear|-C PR Out: Clear\0A --device=DEVICE|-d DEVICE query or change DEVICE\0A --help|-h output this usage message\0A --hex|-H output response in hex\0A --in|-i request PR In command (default)\0A --no-inquiry|-n skip INQUIRY (default: do INQUIRY)\0A --out|-o request PR Out command\0A --param-alltgpt|-Y PR Out parameter 'ALL_TG_PT'\0A --param-aptpl|-Z PR Out parameter 'APTPL'\0A --param-rk=RK|-K RK PR Out parameter reservation key\0A (RK is in hex)\0A --param-sark=SARK|-S SARK PR Out parameter service action\0A reservation key (SARK is in hex)\0A --preempt|-P PR Out: Preempt\0A --preempt-abort|-A PR Out: Preempt and Abort\0A --prout-type=TYPE|-T TYPE PR Out command type\0A --read-full-status|-s PR In: Read Full Status\0A --read-keys|-k PR In: Read Keys\0A\00"
@.str.1 = [979 x i8] c" --read-reservation|-r PR In: Read Reservation\0A --read-status|-s PR In: Read Full Status\0A --register|-G PR Out: Register\0A --register-ignore|-I PR Out: Register and Ignore\0A --register-move|-M PR Out: Register and Move\0A --relative-target-port=RTPI|-Q RTPI relative target port identifier\0A for '--register-move'\0A --release|-L PR Out: Release\0A --report-capabilities|-c PR In: Report Capabilities\0A --reserve|-R PR Out: Reserve\0A --transport-id=TIDS|-X TIDS one or more TransportIDs can\0A be given in several forms\0A --unreg|-U optional with PR Out Register and Move\0A --verbose|-v output additional debug information\0A --version|-V output version string\0A -? output this usage message\0A\0APerforms a SCSI PERSISTENT RESERVE (IN or OUT) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1220 x i8], [1220 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([979 x i8], [979 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1220 x i8] c"Usage: sg_persist [OPTIONS] [DEVICE]\0A where OPTIONS include:\0A --alloc-length=LEN|-l LEN allocation length hex value (used with\0A PR In only) (default: 8192 (2000 in hex))\0A --clear|-C PR Out: Clear\0A --device=DEVICE|-d DEVICE query or change DEVICE\0A --help|-h output this usage message\0A --hex|-H output response in hex\0A --in|-i request PR In command (default)\0A --no-inquiry|-n skip INQUIRY (default: do INQUIRY)\0A --out|-o request PR Out command\0A --param-alltgpt|-Y PR Out parameter 'ALL_TG_PT'\0A --param-aptpl|-Z PR Out parameter 'APTPL'\0A --param-rk=RK|-K RK PR Out parameter reservation key\0A (RK is in hex)\0A --param-sark=SARK|-S SARK PR Out parameter service action\0A reservation key (SARK is in hex)\0A --preempt|-P PR Out: Preempt\0A --preempt-abort|-A PR Out: Preempt and Abort\0A --prout-type=TYPE|-T TYPE PR Out command type\0A --read-full-status|-s PR In: Read Full Status\0A --read-keys|-k PR In: Read Keys\0A\00"
@.str.1 = [979 x i8] c" --read-reservation|-r PR In: Read Reservation\0A --read-status|-s PR In: Read Full Status\0A --register|-G PR Out: Register\0A --register-ignore|-I PR Out: Register and Ignore\0A --register-move|-M PR Out: Register and Move\0A --relative-target-port=RTPI|-Q RTPI relative target port identifier\0A for '--register-move'\0A --release|-L PR Out: Release\0A --report-capabilities|-c PR In: Report Capabilities\0A --reserve|-R PR Out: Reserve\0A --transport-id=TIDS|-X TIDS one or more TransportIDs can\0A be given in several forms\0A --unreg|-U optional with PR Out Register and Move\0A --verbose|-v output additional debug information\0A --version|-V output version string\0A -? output this usage message\0A\0APerforms a SCSI PERSISTENT RESERVE (IN or OUT) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1220 x i8], [1220 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @stderr
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([979 x i8], [979 x i8]* @.str.1, i64 0, i64 0))
ret void
}