#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_raw [OPTION]* DEVICE CDB0 CDB1 ...\n"
          "\n"
          "Options:\n"
          "  -b, --binary           Dump data in binary form, even when "
          "writing to stdout\n"
          "  -h, --help             Show this message and exit\n"
          "  -i, --infile=IFILE     Read data to send from IFILE (default: "
          "stdin)\n"
          "  -k, --skip=LEN         Skip the first LEN bytes when reading "
          "data to send\n"
          "  -n, --nosense          Don't display sense information\n"
          "  -o, --outfile=OFILE    Write binary data to OFILE (def: "
          "hexdump to stdout)\n"
          "  -r, --request=RLEN     Request up to RLEN bytes of data\n"
          "  -s, --send=SLEN        Send SLEN bytes of data\n"
          "  -t, --timeout=SEC      Timeout in seconds (default: 20)\n"
          "  -v, --verbose          Increase verbosity\n"
          "  -V, --version          Show version information and exit\n"
          "\n"
          "Between 6 and 256 command bytes (two hex digits each) can be\n"
          "specified and will be sent to DEVICE.\n"
          "\n"
          "Example: Perform INQUIRY on /dev/sg0:\n"
          "  sg_raw -r 1k /dev/sg0 12 00 00 00 60 00\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 = [917 x i8] c"Usage: sg_raw [OPTION]* DEVICE CDB0 CDB1 ...\0A\0AOptions:\0A -b, --binary Dump data in binary form, even when writing to stdout\0A -h, --help Show this message and exit\0A -i, --infile=IFILE Read data to send from IFILE (default: stdin)\0A -k, --skip=LEN Skip the first LEN bytes when reading data to send\0A -n, --nosense Don't display sense information\0A -o, --outfile=OFILE Write binary data to OFILE (def: hexdump to stdout)\0A -r, --request=RLEN Request up to RLEN bytes of data\0A -s, --send=SLEN Send SLEN bytes of data\0A -t, --timeout=SEC Timeout in seconds (default: 20)\0A -v, --verbose Increase verbosity\0A -V, --version Show version information and exit\0A\0ABetween 6 and 256 command bytes (two hex digits each) can be\0Aspecified and will be sent to DEVICE.\0A\0AExample: Perform INQUIRY on /dev/sg0:\0A sg_raw -r 1k /dev/sg0 12 00 00 00 60 00\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([917 x i8], [917 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [917 x i8] c"Usage: sg_raw [OPTION]* DEVICE CDB0 CDB1 ...\0A\0AOptions:\0A -b, --binary Dump data in binary form, even when writing to stdout\0A -h, --help Show this message and exit\0A -i, --infile=IFILE Read data to send from IFILE (default: stdin)\0A -k, --skip=LEN Skip the first LEN bytes when reading data to send\0A -n, --nosense Don't display sense information\0A -o, --outfile=OFILE Write binary data to OFILE (def: hexdump to stdout)\0A -r, --request=RLEN Request up to RLEN bytes of data\0A -s, --send=SLEN Send SLEN bytes of data\0A -t, --timeout=SEC Timeout in seconds (default: 20)\0A -v, --verbose Increase verbosity\0A -V, --version Show version information and exit\0A\0ABetween 6 and 256 command bytes (two hex digits each) can be\0Aspecified and will be sent to DEVICE.\0A\0AExample: Perform INQUIRY on /dev/sg0:\0A sg_raw -r 1k /dev/sg0 12 00 00 00 60 00\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([917 x i8], [917 x i8]* @.str, i64 0, i64 0))
ret void
}