#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_get_lba_status  [--brief] [--help] [--hex] [--lba=LBA]\n"
          "                          [--maxlen=LEN] [--raw] [--verbose] "
          "[--version]\n"
          "                          DEVICE\n"
          "  where:\n"
          "    --brief|-b        a descriptor per line: "
          "<lba_hex blocks_hex p_status>\n"
          "                      use twice ('-bb') for given LBA "
          "provisioning status\n"
          "    --help|-h         print out usage message\n"
          "    --hex|-H          output in hexadecimal\n"
          "    --lba=LBA|-l LBA    starting LBA (logical block address) "
          "(def: 0)\n"
          "    --maxlen=LEN|-m LEN    max response length (allocation "
          "length in cdb)\n"
          "                           (def: 0 -> %d bytes)\n",
          24);
  fprintf(stderr, "    --raw|-r          output in binary\n"
                  "    --verbose|-v      increase verbosity\n"
                  "    --version|-V      print version string and exit\n\n"
                  "Performs a SCSI GET LBA STATUS command (SBC-3)\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
mov    $0x18,%edx
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2ea9(%rip),%rax
mov    (%rax),%edi
lea    0x1124(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rbx
mov    0x2ec8(%rip),%rbx
mov    (%rbx),%edi
lea    0xedf(%rip),%rsi
mov    $0x18,%edx
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%rbx),%edi
lea    0x112e(%rip),%rsi
xor    %eax,%eax
pop    %rbx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [612 x i8] c"Usage: sg_get_lba_status [--brief] [--help] [--hex] [--lba=LBA]\0A [--maxlen=LEN] [--raw] [--verbose] [--version]\0A DEVICE\0A where:\0A --brief|-b a descriptor per line: <lba_hex blocks_hex p_status>\0A use twice ('-bb') for given LBA provisioning status\0A --help|-h print out usage message\0A --hex|-H output in hexadecimal\0A --lba=LBA|-l LBA starting LBA (logical block address) (def: 0)\0A --maxlen=LEN|-m LEN max response length (allocation length in cdb)\0A (def: 0 -> %d bytes)\0A\00"
@.str.1 = [181 x i8] c" --raw|-r output in binary\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0APerforms a SCSI GET LBA STATUS command (SBC-3)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([612 x i8], [612 x i8]* @.str, i64 0, i64 0), i32 24)
%3 = load i32, i32* @stderr
%4 = call i32 (i32, i8*, ...) @fprintf(i32 %3, i8* getelementptr inbounds ([181 x i8], [181 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [612 x i8] c"Usage: sg_get_lba_status [--brief] [--help] [--hex] [--lba=LBA]\0A [--maxlen=LEN] [--raw] [--verbose] [--version]\0A DEVICE\0A where:\0A --brief|-b a descriptor per line: <lba_hex blocks_hex p_status>\0A use twice ('-bb') for given LBA provisioning status\0A --help|-h print out usage message\0A --hex|-H output in hexadecimal\0A --lba=LBA|-l LBA starting LBA (logical block address) (def: 0)\0A --maxlen=LEN|-m LEN max response length (allocation length in cdb)\0A (def: 0 -> %d bytes)\0A\00"
@.str.1 = [181 x i8] c" --raw|-r output in binary\0A --verbose|-v increase verbosity\0A --version|-V print version string and exit\0A\0APerforms a SCSI GET LBA STATUS command (SBC-3)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 (i32, i8*, ...) @fprintf(i32 %1, i8* getelementptr inbounds ([612 x i8], [612 x i8]* @.str, i64 0, i64 0), i32 24)
%3 = load i32, i32* @stderr
%4 = tail call i32 (i32, i8*, ...) @fprintf(i32 %3, i8* getelementptr inbounds ([181 x i8], [181 x i8]* @.str.1, i64 0, i64 0))
ret void
}