#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_write_same [--16] [--32] [--grpnum=GN] [--help] [--in=IF]\n"
          "                     [--lba=LBA] [--lbdata] [--num=NUM] "
          "[--pbdata]\n"
          "                     [--timeout=TO] [--unmap] [--verbose] "
          "[--version]\n"
          "                     [--wrprotect=WRP] [xferlen=LEN] DEVICE\n"
          "  where:\n"
          "    --16|-S              do WRITE SAME(16) (def: 10 unless "
          "'--unmap' given\n"
          "                         or LBA+NUM needs more than 32 bits)\n"
          "    --32|-T              do WRITE SAME(32) (def: 10 or 16)\n"
          "    --grpnum=GN|-g GN    GN is group number field (def: 0)\n"
          "    --help|-h            print out usage message\n"
          "    --in=IF|-i IF        IF is file to fetch one block of data "
          "from (use LEN\n"
          "                         bytes or whole file). Block written to "
          "DEVICE\n"
          "    --lba=LBA|-l LBA     LBA is the logical block address to "
          "start (def: 0)\n"
          "    --lbdata|-L          set LBDATA bit\n"
          "    --num=NUM|-n NUM     NUM is number of logical blocks to write "
          "(def: 1)\n"
          "                         [Beware NUM==0 means rest of device]\n"
          "    --pbdata|-P          set PBDATA bit\n"
          "    --timeout=TO|-t TO    command timeout (unit: seconds) (def: "
          "60)\n"
          "    --unmap|-U           set UNMAP bit\n"
          "    --verbose|-v         increase verbosity\n"
          "    --version|-V         print version string then exit\n"
          "    --wrprotect=WPR|-w WPR    WPR is the WRPROTECT field value "
          "(def: 0)\n"
          "    --xferlen=LEN|-x LEN    LEN is number of bytes from IF to "
          "send to\n"
          "                            DEVICE (def: IF file length)\n\n"
          "Performs a SCSI WRITE SAME (10, 16 or 32) 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 = [1476 x i8] c"Usage: sg_write_same [--16] [--32] [--grpnum=GN] [--help] [--in=IF]\0A [--lba=LBA] [--lbdata] [--num=NUM] [--pbdata]\0A [--timeout=TO] [--unmap] [--verbose] [--version]\0A [--wrprotect=WRP] [xferlen=LEN] DEVICE\0A where:\0A --16|-S do WRITE SAME(16) (def: 10 unless '--unmap' given\0A or LBA+NUM needs more than 32 bits)\0A --32|-T do WRITE SAME(32) (def: 10 or 16)\0A --grpnum=GN|-g GN GN is group number field (def: 0)\0A --help|-h print out usage message\0A --in=IF|-i IF IF is file to fetch one block of data from (use LEN\0A bytes or whole file). Block written to DEVICE\0A --lba=LBA|-l LBA LBA is the logical block address to start (def: 0)\0A --lbdata|-L set LBDATA bit\0A --num=NUM|-n NUM NUM is number of logical blocks to write (def: 1)\0A [Beware NUM==0 means rest of device]\0A --pbdata|-P set PBDATA bit\0A --timeout=TO|-t TO command timeout (unit: seconds) (def: 60)\0A --unmap|-U set UNMAP bit\0A --verbose|-v increase verbosity\0A --version|-V print version string then exit\0A --wrprotect=WPR|-w WPR WPR is the WRPROTECT field value (def: 0)\0A --xferlen=LEN|-x LEN LEN is number of bytes from IF to send to\0A DEVICE (def: IF file length)\0A\0APerforms a SCSI WRITE SAME (10, 16 or 32) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1476 x i8], [1476 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1476 x i8] c"Usage: sg_write_same [--16] [--32] [--grpnum=GN] [--help] [--in=IF]\0A [--lba=LBA] [--lbdata] [--num=NUM] [--pbdata]\0A [--timeout=TO] [--unmap] [--verbose] [--version]\0A [--wrprotect=WRP] [xferlen=LEN] DEVICE\0A where:\0A --16|-S do WRITE SAME(16) (def: 10 unless '--unmap' given\0A or LBA+NUM needs more than 32 bits)\0A --32|-T do WRITE SAME(32) (def: 10 or 16)\0A --grpnum=GN|-g GN GN is group number field (def: 0)\0A --help|-h print out usage message\0A --in=IF|-i IF IF is file to fetch one block of data from (use LEN\0A bytes or whole file). Block written to DEVICE\0A --lba=LBA|-l LBA LBA is the logical block address to start (def: 0)\0A --lbdata|-L set LBDATA bit\0A --num=NUM|-n NUM NUM is number of logical blocks to write (def: 1)\0A [Beware NUM==0 means rest of device]\0A --pbdata|-P set PBDATA bit\0A --timeout=TO|-t TO command timeout (unit: seconds) (def: 60)\0A --unmap|-U set UNMAP bit\0A --verbose|-v increase verbosity\0A --version|-V print version string then exit\0A --wrprotect=WPR|-w WPR WPR is the WRPROTECT field value (def: 0)\0A --xferlen=LEN|-x LEN LEN is number of bytes from IF to send to\0A DEVICE (def: IF file length)\0A\0APerforms a SCSI WRITE SAME (10, 16 or 32) command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1476 x i8], [1476 x i8]* @.str, i64 0, i64 0))
ret void
}