#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_reassign [--address=A,A...] [--dummy] [--eight=0|1] "
          "[--grown]\n"
          "                   [--help] [--hex] [--longlist=0|1] [--primary] "
          "[--verbose]\n"
          "                   [--version] DEVICE\n"
          "  where:\n"
          "    --address=A,A...|-a A,A...    comma separated logical block "
          "addresses\n"
          "                                  one or more, assumed to be "
          "decimal\n"
          "    --address=-|-a -    read stdin for logical block "
          "addresses\n"
          "    --dummy|-d          prepare but do not execute REASSIGN "
          "BLOCKS command\n"
          "    --eight=0|1\n"
          "      -e 0|1            force eight byte (64 bit) lbas "
          "when 1,\n"
          "                        four byte (32 bit) lbas when 0 "
          "(def)\n"
          "    --grown|-g          fetch grown defect list length, "
          "don't reassign\n"
          "    --help|-h           print out usage message\n"
          "    --hex|-H            print response in hex (for '-g' or "
          "'-p')\n"
          "    --longlist=0|1\n"
          "       -l 0|1           use 4 byte list length when 1, safe to "
          "ignore\n"
          "                        (def: 0 (2 byte list length))\n"
          "    --primary|-p        fetch primary defect list length, "
          "don't reassign\n"
          "    --verbose|-v        increase verbosity\n"
          "    --version|-V        print version string and exit\n\n"
          "Perform a SCSI REASSIGN BLOCKS command (or READ DEFECT LIST)\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 = [1177 x i8] c"Usage: sg_reassign [--address=A,A...] [--dummy] [--eight=0|1] [--grown]\0A [--help] [--hex] [--longlist=0|1] [--primary] [--verbose]\0A [--version] DEVICE\0A where:\0A --address=A,A...|-a A,A... comma separated logical block addresses\0A one or more, assumed to be decimal\0A --address=-|-a - read stdin for logical block addresses\0A --dummy|-d prepare but do not execute REASSIGN BLOCKS command\0A --eight=0|1\0A -e 0|1 force eight byte (64 bit) lbas when 1,\0A four byte (32 bit) lbas when 0 (def)\0A --grown|-g fetch grown defect list length, don't reassign\0A --help|-h print out usage message\0A --hex|-H print response in hex (for '-g' or '-p')\0A --longlist=0|1\0A -l 0|1 use 4 byte list length when 1, safe to ignore\0A (def: 0 (2 byte list length))\0A --primary|-p fetch primary defect list length, don't reassign\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0APerform a SCSI REASSIGN BLOCKS command (or READ DEFECT LIST)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1177 x i8], [1177 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1177 x i8] c"Usage: sg_reassign [--address=A,A...] [--dummy] [--eight=0|1] [--grown]\0A [--help] [--hex] [--longlist=0|1] [--primary] [--verbose]\0A [--version] DEVICE\0A where:\0A --address=A,A...|-a A,A... comma separated logical block addresses\0A one or more, assumed to be decimal\0A --address=-|-a - read stdin for logical block addresses\0A --dummy|-d prepare but do not execute REASSIGN BLOCKS command\0A --eight=0|1\0A -e 0|1 force eight byte (64 bit) lbas when 1,\0A four byte (32 bit) lbas when 0 (def)\0A --grown|-g fetch grown defect list length, don't reassign\0A --help|-h print out usage message\0A --hex|-H print response in hex (for '-g' or '-p')\0A --longlist=0|1\0A -l 0|1 use 4 byte list length when 1, safe to ignore\0A (def: 0 (2 byte list length))\0A --primary|-p fetch primary defect list length, don't reassign\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0APerform a SCSI REASSIGN BLOCKS command (or READ DEFECT LIST)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1177 x i8], [1177 x i8]* @.str, i64 0, i64 0))
ret void
}