#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_format [--cmplst=0|1] [--count=COUNT] [--dcrt] "
         "[--early]\n"
         "                 [--fmtpinfo=FPI] [--format] [--help] "
         "[--long] [--pfu=PFU]\n"
         "                 [--pie=PIE] [--pinfo] [--resize] "
         "[--rto_req] [--security]\n"
         "                 [--six] [--size=SIZE] [--verbose] "
         "[--version] [--wait]\n"
         "                 DEVICE\n"
         "  where:\n"
         "    --cmplst=0|1\n"
         "      -C 0|1        sets CMPLST bit in format cdb "
         "(default: 1)\n"
         "    --count=COUNT|-c COUNT    number of blocks to "
         "report after format or\n"
         "                              resize. With format "
         "defaults to same as current\n"
         "    --dcrt|-D       disable certification (doesn't "
         "verify media)\n"
         "    --early|-e      exit once format started (user can "
         "monitor progress)\n"
         "    --fmtpinfo=FPI|-f FPI    FMTPINFO field value "
         "(default: 0)\n"
         "    --format|-F     format unit (default: report current "
         "count and size)\n"
         "    --help|-h       prints out this usage message\n"
         "    --long|-l       allow for 64 bit lbas (default: assume "
         "32 bit lbas)\n"
         "    --pfu=PFU|-P PFU    Protection Field Usage value "
         "(default: 0)\n"
         "    --pie=PIE|-q PIE    Protection Information Exponent "
         "(default: 0)\n"
         "    --pinfo|-p      set upper bit of FMTPINFO field\n"
         "                    (deprecated use '--fmtpinfo=FPI' "
         "instead)\n");
  printf("    --resize|-r     resize (rather than format) to COUNT "
         "value\n"
         "    --rto_req|-R    set lower bit of FMTPINFO field\n"
         "                    (deprecated use '--fmtpinfo=FPI' "
         "instead)\n"
         "    --security|-S    set security initialization (SI) bit\n"
         "    --six|-6        use 6 byte MODE SENSE/SELECT to probe "
         "device\n"
         "                    (def: use 10 byte MODE SENSE/SELECT)\n"
         "    --size=SIZE|-s SIZE    bytes per block, defaults to "
         "DEVICE's current\n"
         "                           block size. Only needed to "
         "change current block\n"
         "                           size\n"
         "    --verbose|-v    increase verbosity\n"
         "    --version|-V    print version details and exit\n"
         "    --wait|-w       format command waits until format "
         "operation completes\n"
         "                    (default: set IMMED=1 and poll with "
         "Test Unit Ready)\n\n"
         "\tExample: sg_format --format /dev/sdc\n\n"
         "This utility formats or resizes SCSI disks.\n");
  printf("WARNING: This utility will destroy all the data on "
         "DEVICE when\n\t '--format' is given. Check that you "
         "have the correct DEVICE.\n");
}


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

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0x138a(%rip),%rdi
call   1030 <puts@plt>
lea    0x16d8(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1199 x i8] c"usage: sg_format [--cmplst=0|1] [--count=COUNT] [--dcrt] [--early]\0A [--fmtpinfo=FPI] [--format] [--help] [--long] [--pfu=PFU]\0A [--pie=PIE] [--pinfo] [--resize] [--rto_req] [--security]\0A [--six] [--size=SIZE] [--verbose] [--version] [--wait]\0A DEVICE\0A where:\0A --cmplst=0|1\0A -C 0|1 sets CMPLST bit in format cdb (default: 1)\0A --count=COUNT|-c COUNT number of blocks to report after format or\0A resize. With format defaults to same as current\0A --dcrt|-D disable certification (doesn't verify media)\0A --early|-e exit once format started (user can monitor progress)\0A --fmtpinfo=FPI|-f FPI FMTPINFO field value (default: 0)\0A --format|-F format unit (default: report current count and size)\0A --help|-h prints out this usage message\0A --long|-l allow for 64 bit lbas (default: assume 32 bit lbas)\0A --pfu=PFU|-P PFU Protection Field Usage value (default: 0)\0A --pie=PIE|-q PIE Protection Information Exponent (default: 0)\0A --pinfo|-p set upper bit of FMTPINFO field\0A (deprecated use '--fmtpinfo=FPI' instead)\0A\00"
@.str.1 = [859 x i8] c" --resize|-r resize (rather than format) to COUNT value\0A --rto_req|-R set lower bit of FMTPINFO field\0A (deprecated use '--fmtpinfo=FPI' instead)\0A --security|-S set security initialization (SI) bit\0A --six|-6 use 6 byte MODE SENSE/SELECT to probe device\0A (def: use 10 byte MODE SENSE/SELECT)\0A --size=SIZE|-s SIZE bytes per block, defaults to DEVICE's current\0A block size. Only needed to change current block\0A size\0A --verbose|-v increase verbosity\0A --version|-V print version details and exit\0A --wait|-w format command waits until format operation completes\0A (default: set IMMED=1 and poll with Test Unit Ready)\0A\0A\09Example: sg_format --format /dev/sdc\0A\0AThis utility formats or resizes SCSI disks.\0A\00"
@.str.2 = [127 x i8] c"WARNING: This utility will destroy all the data on DEVICE when\0A\09 '--format' is given. Check that you have the correct DEVICE.\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1199 x i8], [1199 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([859 x i8], [859 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.2, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1198 x i8] c"usage: sg_format [--cmplst=0|1] [--count=COUNT] [--dcrt] [--early]\0A [--fmtpinfo=FPI] [--format] [--help] [--long] [--pfu=PFU]\0A [--pie=PIE] [--pinfo] [--resize] [--rto_req] [--security]\0A [--six] [--size=SIZE] [--verbose] [--version] [--wait]\0A DEVICE\0A where:\0A --cmplst=0|1\0A -C 0|1 sets CMPLST bit in format cdb (default: 1)\0A --count=COUNT|-c COUNT number of blocks to report after format or\0A resize. With format defaults to same as current\0A --dcrt|-D disable certification (doesn't verify media)\0A --early|-e exit once format started (user can monitor progress)\0A --fmtpinfo=FPI|-f FPI FMTPINFO field value (default: 0)\0A --format|-F format unit (default: report current count and size)\0A --help|-h prints out this usage message\0A --long|-l allow for 64 bit lbas (default: assume 32 bit lbas)\0A --pfu=PFU|-P PFU Protection Field Usage value (default: 0)\0A --pie=PIE|-q PIE Protection Information Exponent (default: 0)\0A --pinfo|-p set upper bit of FMTPINFO field\0A (deprecated use '--fmtpinfo=FPI' instead)\00"
@str.3 = [858 x i8] c" --resize|-r resize (rather than format) to COUNT value\0A --rto_req|-R set lower bit of FMTPINFO field\0A (deprecated use '--fmtpinfo=FPI' instead)\0A --security|-S set security initialization (SI) bit\0A --six|-6 use 6 byte MODE SENSE/SELECT to probe device\0A (def: use 10 byte MODE SENSE/SELECT)\0A --size=SIZE|-s SIZE bytes per block, defaults to DEVICE's current\0A block size. Only needed to change current block\0A size\0A --verbose|-v increase verbosity\0A --version|-V print version details and exit\0A --wait|-w format command waits until format operation completes\0A (default: set IMMED=1 and poll with Test Unit Ready)\0A\0A\09Example: sg_format --format /dev/sdc\0A\0AThis utility formats or resizes SCSI disks.\00"
@str.4 = [126 x i8] c"WARNING: This utility will destroy all the data on DEVICE when\0A\09 '--format' is given. Check that you have the correct DEVICE.\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1198 x i8], [1198 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([858 x i8], [858 x i8]* @str.3, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([126 x i8], [126 x i8]* @str.4, i64 0, i64 0))
ret void
}