#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*/ printf(char *);
void usage() {
  printf("Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] "
         "[--list] [--pf]\n"
         "                   [--raw=H,H...] [--selftest=ST] "
         "[--test] [--uoff]\n"
         "                   [--verbose] [--version] "
         "[DEVICE]\n"
         "  where:\n"
         "    --doff|-d       device online (def: 0, only with '--test')\n"
         "    --extdur|-e     duration of an extended self-test (from mode "
         "page 0xa)\n"
         "    --help|-h       print usage message then exit\n"
         "    --hex|H         output in hex\n"
         "    --list|-l       list supported page codes (with or without "
         "DEVICE)\n"
         "    --pf|-p         set PF bit (def: 0)\n"
         "    --raw=H,H...|-r H,H...    sequence of hex bytes to form "
         "diag page to send\n"
         "    --raw=-|-r -    read stdin for sequence of bytes to send\n"
         "    --selftest=ST|-s ST    self-test code, default: 0 "
         "(inactive)\n"
         "                           1->background short, 2->background "
         "extended\n"
         "                           4->abort test\n"
         "                           5->foreground short, 6->foreground "
         "extended\n"
         "    --test|-t       default self-test\n"
         "    --uoff|-u       unit offline (def: 0, only with '--test')\n"
         "    --verbose|-v    increase verbosity\n"
         "    --version|-V    output version string then exit\n\n"
         "Performs a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC "
         "RESULTS) command\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1192 x i8] c"Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list] [--pf]\0A [--raw=H,H...] [--selftest=ST] [--test] [--uoff]\0A [--verbose] [--version] [DEVICE]\0A where:\0A --doff|-d device online (def: 0, only with '--test')\0A --extdur|-e duration of an extended self-test (from mode page 0xa)\0A --help|-h print usage message then exit\0A --hex|H output in hex\0A --list|-l list supported page codes (with or without DEVICE)\0A --pf|-p set PF bit (def: 0)\0A --raw=H,H...|-r H,H... sequence of hex bytes to form diag page to send\0A --raw=-|-r - read stdin for sequence of bytes to send\0A --selftest=ST|-s ST self-test code, default: 0 (inactive)\0A 1->background short, 2->background extended\0A 4->abort test\0A 5->foreground short, 6->foreground extended\0A --test|-t default self-test\0A --uoff|-u unit offline (def: 0, only with '--test')\0A --verbose|-v increase verbosity\0A --version|-V output version string then exit\0A\0APerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1192 x i8], [1192 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1191 x i8] c"Usage: sg_senddiag [--doff] [--extdur] [--help] [--hex] [--list] [--pf]\0A [--raw=H,H...] [--selftest=ST] [--test] [--uoff]\0A [--verbose] [--version] [DEVICE]\0A where:\0A --doff|-d device online (def: 0, only with '--test')\0A --extdur|-e duration of an extended self-test (from mode page 0xa)\0A --help|-h print usage message then exit\0A --hex|H output in hex\0A --list|-l list supported page codes (with or without DEVICE)\0A --pf|-p set PF bit (def: 0)\0A --raw=H,H...|-r H,H... sequence of hex bytes to form diag page to send\0A --raw=-|-r - read stdin for sequence of bytes to send\0A --selftest=ST|-s ST self-test code, default: 0 (inactive)\0A 1->background short, 2->background extended\0A 4->abort test\0A 5->foreground short, 6->foreground extended\0A --test|-t default self-test\0A --uoff|-u unit offline (def: 0, only with '--test')\0A --verbose|-v increase verbosity\0A --version|-V output version string then exit\0A\0APerforms a SCSI SEND DIAGNOSTIC (and/or a RECEIVE DIAGNOSTIC RESULTS) command\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1191 x i8], [1191 x i8]* @str, i64 0, i64 0))
ret void
}