#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_old() {
  fprintf(stderr,
          "Usage:  sg_opcodes [-a] [-H] [-o=OP] [-r] [-R] [-s=SA]"
          " [-t] [-u]\n"
          "                   [-v] [-V] DEVICE\n"
          "  where:\n"
          "    -a    output list of operation codes sorted "
          "alphabetically\n"
          "    -H    print response in hex\n"
          "    -o=OP    first byte of command to query (in hex)\n"
          "    -r    output response in binary to stdout\n"
          "    -R    set RCTD (return command timeout "
          "descriptor) bit\n"
          "    -s=SA    in addition to opcode (in hex)\n"
          "    -t    output list of supported task management functions\n"
          "    -u    output list of operation codes as is (unsorted)\n"
          "    -v    verbose\n"
          "    -V    output version string\n"
          "    -?    output this usage message\n\n"
          "Performs a SCSI REPORT SUPPORTED OPERATION CODES (or REPORT "
          "TASK MANAGEMENT\nFUNCTIONS) command\n");
}


x86 assembly (clang, -O0):
<usage_old>:
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_old>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [709 x i8] c"Usage: sg_opcodes [-a] [-H] [-o=OP] [-r] [-R] [-s=SA] [-t] [-u]\0A [-v] [-V] DEVICE\0A where:\0A -a output list of operation codes sorted alphabetically\0A -H print response in hex\0A -o=OP first byte of command to query (in hex)\0A -r output response in binary to stdout\0A -R set RCTD (return command timeout descriptor) bit\0A -s=SA in addition to opcode (in hex)\0A -t output list of supported task management functions\0A -u output list of operation codes as is (unsorted)\0A -v verbose\0A -V output version string\0A -? output this usage message\0A\0APerforms a SCSI REPORT SUPPORTED OPERATION CODES (or REPORT TASK MANAGEMENT\0AFUNCTIONS) command\0A\00"
define void @usage_old() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([709 x i8], [709 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [709 x i8] c"Usage: sg_opcodes [-a] [-H] [-o=OP] [-r] [-R] [-s=SA] [-t] [-u]\0A [-v] [-V] DEVICE\0A where:\0A -a output list of operation codes sorted alphabetically\0A -H print response in hex\0A -o=OP first byte of command to query (in hex)\0A -r output response in binary to stdout\0A -R set RCTD (return command timeout descriptor) bit\0A -s=SA in addition to opcode (in hex)\0A -t output list of supported task management functions\0A -u output list of operation codes as is (unsorted)\0A -v verbose\0A -V output version string\0A -? output this usage message\0A\0APerforms a SCSI REPORT SUPPORTED OPERATION CODES (or REPORT TASK MANAGEMENT\0AFUNCTIONS) command\0A\00"
define void @usage_old() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([709 x i8], [709 x i8]* @.str, i64 0, i64 0))
ret void
}