#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *);
void usageExit(FILE *out) {
  fprintf(
      out,
      "\n Options:\n"
      "\n"
      "   Command Line:\n"
      "\n"
      "   -f/--force           : force operation despite warnings\n"
      "   -h/--vhost-style     : use virtual-host-style URIs (default is "
      "path-style)\n"
      "   -u/--unencrypted     : unencrypted (use HTTP instead of HTTPS)\n"
      "   -s/--show-properties : show response properties on stdout\n"
      "   -r/--retries         : retry retryable failures this number of "
      "times\n"
      "                          (default is 5)\n"
      "\n"
      "   Environment:\n"
      "\n"
      "   S3_ACCESS_KEY_ID     : access key ID (required)\n"
      "   S3_SECRET_ACCESS_KEY : secret access key (required)\n"
      "   S3_HOSTNAME          : specify alternative host (optional)\n"
      "\n"
      " Commands (with <required parameters> and [optional parameters]) :\n"
      "\n"
      "   (NOTE: all command parameters take a value and are specified using "
      "the\n"
      "          pattern parameter=value)\n"
      "\n"
      "   help                 : Prints this help text\n"
      "\n"
      "   list                 : Lists owned buckets\n"
      "     [allDetails]       : Show full details\n"
      "\n"
      "   create               : Create a new bucket\n"
      "     <bucket>           : Bucket to create\n"
      "     [cannedAcl]        : Canned ACL for the bucket (see Canned ACLs)\n"
      "\n"
      "   delete               : Delete a bucket or key\n"
      "     <bucket>[/<key>]   : Bucket or bucket/key to delete\n"
      "\n"
      "   list                 : List bucket contents\n"
      "     <bucket>           : Bucket to list\n"
      "     [prefix]           : Prefix for results set\n"
      "     [marker]           : Where in results set to start listing\n"
      "     [delimiter]        : Delimiter for rolling up results set\n"
      "     [maxkeys]          : Maximum number of keys to return in results "
      "set\n"
      "     [allDetails]       : Show full details for each key\n"
      "\n"
      "   getacl               : Get the ACL of a bucket or key\n"
      "     <bucket>[/<key>]   : Bucket or bucket/key to get the ACL of\n"
      "     [filename]         : Output filename for ACL (default is stdout)\n"
      "\n"
      "   setacl               : Set the ACL of a bucket or key\n"
      "     <bucket>[/<key>]   : Bucket or bucket/key to set the ACL of\n"
      "     [filename]         : Input filename for ACL (default is stdin)\n"
      "\n"
      "   put                  : Puts an object\n"
      "     <bucket>/<key>     : Bucket/key to put object to\n"
      "     [filename]         : Filename to read source data from "
      "(default is stdin)\n"
      "     [contentLength]    : How many bytes of source data to put "
      "(required if\n"
      "                          source file is stdin)\n"
      "     [cacheControl]     : Cache-Control HTTP header string to associate "
      "with\n"
      "                          object\n"
      "     [contentType]      : Content-Type HTTP header string to associate "
      "with\n"
      "                          object\n"
      "     [md5]              : MD5 for validating source data\n"
      "     [contentDispositionFilename] : Content-Disposition filename string "
      "to\n"
      "                          associate with object\n"
      "     [contentEncoding]  : Content-Encoding HTTP header string to "
      "associate\n"
      "                          with object\n"
      "     [expires]          : Expiration date to associate with object\n"
      "     [cannedAcl]        : Canned ACL for the object (see Canned ACLs)\n"
      "     [x-amz-meta-...]]  : Metadata headers to associate with the "
      "object\n"
      "\n"
      "   copy                 : Copies an object; if any options are set, the "
      "entire\n"
      "                          metadata of the object is replaced\n"
      "     <sourcebucket>/<sourcekey> : Source bucket/key\n"
      "     <destbucket>/<destkey> : Destination bucket/key\n"
      "     [cacheControl]     : Cache-Control HTTP header string to associate "
      "with\n"
      "                          object\n"
      "     [contentType]      : Content-Type HTTP header string to associate "
      "with\n"
      "                          object\n"
      "     [contentDispositionFilename] : Content-Disposition filename string "
      "to\n"
      "                          associate with object\n"
      "     [contentEncoding]  : Content-Encoding HTTP header string to "
      "associate\n"
      "                          with object\n"
      "     [expires]          : Expiration date to associate with object\n"
      "     [cannedAcl]        : Canned ACL for the object (see Canned ACLs)\n"
      "     [x-amz-meta-...]]  : Metadata headers to associate with the "
      "object\n"
      "\n"
      "   get                  : Gets an object\n"
      "     <buckey>/<key>     : Bucket/key of object to get\n"
      "     [filename]         : Filename to write object data to (required if "
      "-s\n"
      "                          command line parameter was used)\n"
      "     [ifModifiedSince]  : Only return the object if it has been "
      "modified "
      "since\n"
      "                          this date\n"
      "     [ifNotmodifiedSince] : Only return the object if it has not been "
      "modified\n"
      "                          since this date\n"
      "     [ifMatch]          : Only return the object if its ETag header "
      "matches\n"
      "                          this string\n"
      "     [ifNotMatch]       : Only return the object if its ETag header "
      "does "
      "not\n"
      "                          match this string\n"
      "     [startByte]        : First byte of byte range to return\n"
      "     [byteCount]        : Number of bytes of byte range to return\n"
      "\n"
      "   head                 : Gets only the headers of an object, implies "
      "-s\n"
      "     <bucket>/<key>     : Bucket/key of object to get headers of\n"
      "\n"
      "   gqs                  : Generates an authenticated query string\n"
      "     <bucket>[/<key>]   : Bucket or bucket/key to generate query string "
      "for\n"
      "     [expires]          : Expiration date for query string\n"
      "     [resource]         : Sub-resource of key for query string, without "
      "a\n"
      "                          leading '?', for example, \"meta\"\n"
      "\n"
      " Canned ACLs:\n"
      "\n"
      "  The following canned ACLs are supported:\n"
      "    private (default), public-read, public-read-write, "
      "authenticated-read\n"
      "\n"
      " ACL Format:\n"
      "\n"
      "  For the getacl and setacl commands, the format of the ACL list is:\n"
      "  1) An initial line giving the owner id in this format:\n"
      "       OwnerID <Owner ID> <Owner Display Name>\n"
      "  2) Optional header lines, giving column headers, starting with the\n"
      "     word \"Type\", or with some number of dashes\n"
      "  3) Grant lines, of the form:\n"
      "       <Grant Type> (whitespace) <Grantee> (whitespace) <Permission>\n"
      "     where Grant Type is one of: UserID, or Group, and\n"
      "     Grantee is the identification of the grantee based on this type,\n"
      "     and Permission is one of: READ, WRITE, READ_ACP, or FULL_CONTROL.\n"
      "\n"
      "  Examples:\n"
      "    OwnerID  SINA0000001001HBK3UT        SINA0000001001HBK3UT\n"
      "    Type     Grantee                     Display Name                "
      "Permission\n"
      "    ------   ------------------------    -----------------------     "
      "--------------\n"
      "    UserID   SINA0000001001LNL6CP        SINA0000001001LNL6CP        "
      "READ\n"
      "    UserID   SINA0000001001LNL6CP        SINA0000001001LNL6CP        "
      "WRITE\n"
      "    Group    Authenticated AWS Users                                 "
      "READ\n"
      "    Group    All Users                                               "
      "READ\n"
      "\n"
      "  Note that the easiest way to modify an ACL is to first get it, saving "
      "it\n"
      "  into a file, then modifying the file, and then setting the modified "
      "file\n"
      "  back as the new ACL for the bucket/object.\n"
      "\n"
      " Date Format:\n"
      "\n"
      "  The format for dates used in parameters is as ISO 8601 dates, i.e.\n"
      "  YYYY-MM-DDTHH:MM:SS[+/-dd:dd].  Examples:\n"
      "      2008-07-29T20:36:14\n"
      "      2008-07-29T20:36:14-06:00\n"
      "      2008-07-29T20:36:14+11:30\n"
      "\n");
  exit(-1);
}


x86 assembly (clang, -O0):
<usageExit>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xec9(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0xffffffff,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usageExit>:
push   %rax
mov    %rdi,%rcx
lea    0xed5(%rip),%rdi
mov    $0x1adc,%esi
mov    $0x1,%edx
call   1040 <fwrite@plt>
mov    $0xffffffff,%edi
call   1030 <exit@plt>

LLVM IR (-O0):
@.str = [6877 x i8] c"\0A Options:\0A\0A Command Line:\0A\0A -f/--force : force operation despite warnings\0A -h/--vhost-style : use virtual-host-style URIs (default is path-style)\0A -u/--unencrypted : unencrypted (use HTTP instead of HTTPS)\0A -s/--show-properties : show response properties on stdout\0A -r/--retries : retry retryable failures this number of times\0A (default is 5)\0A\0A Environment:\0A\0A S3_ACCESS_KEY_ID : access key ID (required)\0A S3_SECRET_ACCESS_KEY : secret access key (required)\0A S3_HOSTNAME : specify alternative host (optional)\0A\0A Commands (with <required parameters> and [optional parameters]) :\0A\0A (NOTE: all command parameters take a value and are specified using the\0A pattern parameter=value)\0A\0A help : Prints this help text\0A\0A list : Lists owned buckets\0A [allDetails] : Show full details\0A\0A create : Create a new bucket\0A <bucket> : Bucket to create\0A [cannedAcl] : Canned ACL for the bucket (see Canned ACLs)\0A\0A delete : Delete a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to delete\0A\0A list : List bucket contents\0A <bucket> : Bucket to list\0A [prefix] : Prefix for results set\0A [marker] : Where in results set to start listing\0A [delimiter] : Delimiter for rolling up results set\0A [maxkeys] : Maximum number of keys to return in results set\0A [allDetails] : Show full details for each key\0A\0A getacl : Get the ACL of a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to get the ACL of\0A [filename] : Output filename for ACL (default is stdout)\0A\0A setacl : Set the ACL of a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to set the ACL of\0A [filename] : Input filename for ACL (default is stdin)\0A\0A put : Puts an object\0A <bucket>/<key> : Bucket/key to put object to\0A [filename] : Filename to read source data from (default is stdin)\0A [contentLength] : How many bytes of source data to put (required if\0A source file is stdin)\0A [cacheControl] : Cache-Control HTTP header string to associate with\0A object\0A [contentType] : Content-Type HTTP header string to associate with\0A object\0A [md5] : MD5 for validating source data\0A [contentDispositionFilename] : Content-Disposition filename string to\0A associate with object\0A [contentEncoding] : Content-Encoding HTTP header string to associate\0A with object\0A [expires] : Expiration date to associate with object\0A [cannedAcl] : Canned ACL for the object (see Canned ACLs)\0A [x-amz-meta-...]] : Metadata headers to associate with the object\0A\0A copy : Copies an object; if any options are set, the entire\0A metadata of the object is replaced\0A <sourcebucket>/<sourcekey> : Source bucket/key\0A <destbucket>/<destkey> : Destination bucket/key\0A [cacheControl] : Cache-Control HTTP header string to associate with\0A object\0A [contentType] : Content-Type HTTP header string to associate with\0A object\0A [contentDispositionFilename] : Content-Disposition filename string to\0A associate with object\0A [contentEncoding] : Content-Encoding HTTP header string to associate\0A with object\0A [expires] : Expiration date to associate with object\0A [cannedAcl] : Canned ACL for the object (see Canned ACLs)\0A [x-amz-meta-...]] : Metadata headers to associate with the object\0A\0A get : Gets an object\0A <buckey>/<key> : Bucket/key of object to get\0A [filename] : Filename to write object data to (required if -s\0A command line parameter was used)\0A [ifModifiedSince] : Only return the object if it has been modified since\0A this date\0A [ifNotmodifiedSince] : Only return the object if it has not been modified\0A since this date\0A [ifMatch] : Only return the object if its ETag header matches\0A this string\0A [ifNotMatch] : Only return the object if its ETag header does not\0A match this string\0A [startByte] : First byte of byte range to return\0A [byteCount] : Number of bytes of byte range to return\0A\0A head : Gets only the headers of an object, implies -s\0A <bucket>/<key> : Bucket/key of object to get headers of\0A\0A gqs : Generates an authenticated query string\0A <bucket>[/<key>] : Bucket or bucket/key to generate query string for\0A [expires] : Expiration date for query string\0A [resource] : Sub-resource of key for query string, without a\0A leading '?', for example, \22meta\22\0A\0A Canned ACLs:\0A\0A The following canned ACLs are supported:\0A private (default), public-read, public-read-write, authenticated-read\0A\0A ACL Format:\0A\0A For the getacl and setacl commands, the format of the ACL list is:\0A 1) An initial line giving the owner id in this format:\0A OwnerID <Owner ID> <Owner Display Name>\0A 2) Optional header lines, giving column headers, starting with the\0A word \22Type\22, or with some number of dashes\0A 3) Grant lines, of the form:\0A <Grant Type> (whitespace) <Grantee> (whitespace) <Permission>\0A where Grant Type is one of: UserID, or Group, and\0A Grantee is the identification of the grantee based on this type,\0A and Permission is one of: READ, WRITE, READ_ACP, or FULL_CONTROL.\0A\0A Examples:\0A OwnerID SINA0000001001HBK3UT SINA0000001001HBK3UT\0A Type Grantee Display Name Permission\0A ------ ------------------------ ----------------------- --------------\0A UserID SINA0000001001LNL6CP SINA0000001001LNL6CP READ\0A UserID SINA0000001001LNL6CP SINA0000001001LNL6CP WRITE\0A Group Authenticated AWS Users READ\0A Group All Users READ\0A\0A Note that the easiest way to modify an ACL is to first get it, saving it\0A into a file, then modifying the file, and then setting the modified file\0A back as the new ACL for the bucket/object.\0A\0A Date Format:\0A\0A The format for dates used in parameters is as ISO 8601 dates, i.e.\0A YYYY-MM-DDTHH:MM:SS[+/-dd:dd]. Examples:\0A 2008-07-29T20:36:14\0A 2008-07-29T20:36:14-06:00\0A 2008-07-29T20:36:14+11:30\0A\0A\00"
define void @usageExit(i32* %0) {
%2 = alloca i32*
store i32* %0, i32** %2
%3 = load i32*, i32** %2
%4 = call i32 @fprintf(i32* %3, i8* getelementptr inbounds ([6877 x i8], [6877 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @exit(i32 -1)
unreachable
}

LLVM IR (-O2):
@.str = [6877 x i8] c"\0A Options:\0A\0A Command Line:\0A\0A -f/--force : force operation despite warnings\0A -h/--vhost-style : use virtual-host-style URIs (default is path-style)\0A -u/--unencrypted : unencrypted (use HTTP instead of HTTPS)\0A -s/--show-properties : show response properties on stdout\0A -r/--retries : retry retryable failures this number of times\0A (default is 5)\0A\0A Environment:\0A\0A S3_ACCESS_KEY_ID : access key ID (required)\0A S3_SECRET_ACCESS_KEY : secret access key (required)\0A S3_HOSTNAME : specify alternative host (optional)\0A\0A Commands (with <required parameters> and [optional parameters]) :\0A\0A (NOTE: all command parameters take a value and are specified using the\0A pattern parameter=value)\0A\0A help : Prints this help text\0A\0A list : Lists owned buckets\0A [allDetails] : Show full details\0A\0A create : Create a new bucket\0A <bucket> : Bucket to create\0A [cannedAcl] : Canned ACL for the bucket (see Canned ACLs)\0A\0A delete : Delete a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to delete\0A\0A list : List bucket contents\0A <bucket> : Bucket to list\0A [prefix] : Prefix for results set\0A [marker] : Where in results set to start listing\0A [delimiter] : Delimiter for rolling up results set\0A [maxkeys] : Maximum number of keys to return in results set\0A [allDetails] : Show full details for each key\0A\0A getacl : Get the ACL of a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to get the ACL of\0A [filename] : Output filename for ACL (default is stdout)\0A\0A setacl : Set the ACL of a bucket or key\0A <bucket>[/<key>] : Bucket or bucket/key to set the ACL of\0A [filename] : Input filename for ACL (default is stdin)\0A\0A put : Puts an object\0A <bucket>/<key> : Bucket/key to put object to\0A [filename] : Filename to read source data from (default is stdin)\0A [contentLength] : How many bytes of source data to put (required if\0A source file is stdin)\0A [cacheControl] : Cache-Control HTTP header string to associate with\0A object\0A [contentType] : Content-Type HTTP header string to associate with\0A object\0A [md5] : MD5 for validating source data\0A [contentDispositionFilename] : Content-Disposition filename string to\0A associate with object\0A [contentEncoding] : Content-Encoding HTTP header string to associate\0A with object\0A [expires] : Expiration date to associate with object\0A [cannedAcl] : Canned ACL for the object (see Canned ACLs)\0A [x-amz-meta-...]] : Metadata headers to associate with the object\0A\0A copy : Copies an object; if any options are set, the entire\0A metadata of the object is replaced\0A <sourcebucket>/<sourcekey> : Source bucket/key\0A <destbucket>/<destkey> : Destination bucket/key\0A [cacheControl] : Cache-Control HTTP header string to associate with\0A object\0A [contentType] : Content-Type HTTP header string to associate with\0A object\0A [contentDispositionFilename] : Content-Disposition filename string to\0A associate with object\0A [contentEncoding] : Content-Encoding HTTP header string to associate\0A with object\0A [expires] : Expiration date to associate with object\0A [cannedAcl] : Canned ACL for the object (see Canned ACLs)\0A [x-amz-meta-...]] : Metadata headers to associate with the object\0A\0A get : Gets an object\0A <buckey>/<key> : Bucket/key of object to get\0A [filename] : Filename to write object data to (required if -s\0A command line parameter was used)\0A [ifModifiedSince] : Only return the object if it has been modified since\0A this date\0A [ifNotmodifiedSince] : Only return the object if it has not been modified\0A since this date\0A [ifMatch] : Only return the object if its ETag header matches\0A this string\0A [ifNotMatch] : Only return the object if its ETag header does not\0A match this string\0A [startByte] : First byte of byte range to return\0A [byteCount] : Number of bytes of byte range to return\0A\0A head : Gets only the headers of an object, implies -s\0A <bucket>/<key> : Bucket/key of object to get headers of\0A\0A gqs : Generates an authenticated query string\0A <bucket>[/<key>] : Bucket or bucket/key to generate query string for\0A [expires] : Expiration date for query string\0A [resource] : Sub-resource of key for query string, without a\0A leading '?', for example, \22meta\22\0A\0A Canned ACLs:\0A\0A The following canned ACLs are supported:\0A private (default), public-read, public-read-write, authenticated-read\0A\0A ACL Format:\0A\0A For the getacl and setacl commands, the format of the ACL list is:\0A 1) An initial line giving the owner id in this format:\0A OwnerID <Owner ID> <Owner Display Name>\0A 2) Optional header lines, giving column headers, starting with the\0A word \22Type\22, or with some number of dashes\0A 3) Grant lines, of the form:\0A <Grant Type> (whitespace) <Grantee> (whitespace) <Permission>\0A where Grant Type is one of: UserID, or Group, and\0A Grantee is the identification of the grantee based on this type,\0A and Permission is one of: READ, WRITE, READ_ACP, or FULL_CONTROL.\0A\0A Examples:\0A OwnerID SINA0000001001HBK3UT SINA0000001001HBK3UT\0A Type Grantee Display Name Permission\0A ------ ------------------------ ----------------------- --------------\0A UserID SINA0000001001LNL6CP SINA0000001001LNL6CP READ\0A UserID SINA0000001001LNL6CP SINA0000001001LNL6CP WRITE\0A Group Authenticated AWS Users READ\0A Group All Users READ\0A\0A Note that the easiest way to modify an ACL is to first get it, saving it\0A into a file, then modifying the file, and then setting the modified file\0A back as the new ACL for the bucket/object.\0A\0A Date Format:\0A\0A The format for dates used in parameters is as ISO 8601 dates, i.e.\0A YYYY-MM-DDTHH:MM:SS[+/-dd:dd]. Examples:\0A 2008-07-29T20:36:14\0A 2008-07-29T20:36:14-06:00\0A 2008-07-29T20:36:14+11:30\0A\0A\00"
define void @usageExit(i32* nocapture %0) {
%2 = tail call i64 @fwrite(i8* getelementptr inbounds ([6877 x i8], [6877 x i8]* @.str, i64 0, i64 0), i64 6876, i64 1, i32* %0)
%3 = tail call i32 @exit(i32 -1)
unreachable
}