#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_wr_mode [--contents=H,H...] [--dbd] [--force] [--help]\n"
          "                  [--len=10|6] [--mask=M,M...] "
          "[--page=PG[,SPG]] [--save]\n"
          "                  [--verbose] [--version] DEVICE\n"
          "  where:\n"
          "    --contents=H,H... | -c H,H...    comma separated string "
          "of hex numbers\n"
          "                                     that is mode page contents "
          "to write\n"
          "    --contents=- | -c -   read stdin for mode page contents"
          " to write\n"
          "    --dbd | -d            disable block descriptors (DBD bit"
          " in cdb)\n"
          "    --force | -f          force the contents to be written\n"
          "    --help | -h           print out usage message\n"
          "    --len=10|6 | -l 10|6    use 10 byte (def) or 6 byte "
          "variants of\n"
          "                            SCSI MODE SENSE/SELECT commands\n"
          "    --mask=M,M... | -m M,M...   comma separated "
          "string of hex\n"
          "                                numbers that mask contents"
          " to write\n"
          "    --page=PG | -p PG     page_code to be written (in hex)\n"
          "    --page=PG,SPG | -p PG,SPG    page and subpage code to "
          "be\n"
          "                                 written (in hex)\n"
          "    --save | -s           set 'save page' (SP) bit; default "
          "don't so\n"
          "                          only 'current' values changed\n"
          "    --verbose | -v        increase verbosity\n"
          "    --version | -V        print version string and exit\n\n"
          "writes given mode page with SCSI MODE SELECT (10 or 6) "
          "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>
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 = [1311 x i8] c"Usage: sg_wr_mode [--contents=H,H...] [--dbd] [--force] [--help]\0A [--len=10|6] [--mask=M,M...] [--page=PG[,SPG]] [--save]\0A [--verbose] [--version] DEVICE\0A where:\0A --contents=H,H... | -c H,H... comma separated string of hex numbers\0A that is mode page contents to write\0A --contents=- | -c - read stdin for mode page contents to write\0A --dbd | -d disable block descriptors (DBD bit in cdb)\0A --force | -f force the contents to be written\0A --help | -h print out usage message\0A --len=10|6 | -l 10|6 use 10 byte (def) or 6 byte variants of\0A SCSI MODE SENSE/SELECT commands\0A --mask=M,M... | -m M,M... comma separated string of hex\0A numbers that mask contents to write\0A --page=PG | -p PG page_code to be written (in hex)\0A --page=PG,SPG | -p PG,SPG page and subpage code to be\0A written (in hex)\0A --save | -s set 'save page' (SP) bit; default don't so\0A only 'current' values changed\0A --verbose | -v increase verbosity\0A --version | -V print version string and exit\0A\0Awrites given mode page with SCSI MODE SELECT (10 or 6) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1311 x i8] c"Usage: sg_wr_mode [--contents=H,H...] [--dbd] [--force] [--help]\0A [--len=10|6] [--mask=M,M...] [--page=PG[,SPG]] [--save]\0A [--verbose] [--version] DEVICE\0A where:\0A --contents=H,H... | -c H,H... comma separated string of hex numbers\0A that is mode page contents to write\0A --contents=- | -c - read stdin for mode page contents to write\0A --dbd | -d disable block descriptors (DBD bit in cdb)\0A --force | -f force the contents to be written\0A --help | -h print out usage message\0A --len=10|6 | -l 10|6 use 10 byte (def) or 6 byte variants of\0A SCSI MODE SENSE/SELECT commands\0A --mask=M,M... | -m M,M... comma separated string of hex\0A numbers that mask contents to write\0A --page=PG | -p PG page_code to be written (in hex)\0A --page=PG,SPG | -p PG,SPG page and subpage code to be\0A written (in hex)\0A --save | -s set 'save page' (SP) bit; default don't so\0A only 'current' values changed\0A --verbose | -v increase verbosity\0A --version | -V print version string and exit\0A\0Awrites given mode page with SCSI MODE SELECT (10 or 6) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0))
ret void
}