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


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

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

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

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