#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     : S3 access key ID (required)\n"
      "   S3_SECRET_ACCESS_KEY : S3 secret access key (required)\n"
      "   S3_HOSTNAME          : specify alternative S3 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"
      "   test                 : Tests a bucket for existence and "
      "accessibility\n"
      "     <bucket>           : Bucket to test\n"
      "\n"
      "   create               : Create a new bucket\n"
      "     <bucket>           : Bucket to create\n"
      "     [cannedAcl]        : Canned ACL for the bucket (see Canned ACLs)\n"
      "     [location]         : Location for bucket (for example, EU)\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"
      "   getlogging           : Get the logging status of a bucket\n"
      "     <bucket>           : Bucket to get the logging status of\n"
      "     [filename]         : Output filename for ACL (default is stdout)\n"
      "\n"
      "   setlogging           : Set the logging status of a bucket\n"
      "     <bucket>           : Bucket to set the logging status of\n"
      "     [targetBucket]     : Target bucket to log to; if not present, "
      "disables\n"
      "                          logging\n"
      "     [targetPrefix]     : Key prefix to use for logs\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"
      "     [useServerSideEncryption] : Whether or not to use server-side\n"
      "                          encryption for 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, \"torrent\"\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: Email, 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"
      "  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    $0x1c26,%esi
mov    $0x1,%edx
call   1040 <fwrite@plt>
mov    $0xffffffff,%edi
call   1030 <exit@plt>

LLVM IR (-O0):
@.str = [7207 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 : S3 access key ID (required)\0A S3_SECRET_ACCESS_KEY : S3 secret access key (required)\0A S3_HOSTNAME : specify alternative S3 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 test : Tests a bucket for existence and accessibility\0A <bucket> : Bucket to test\0A\0A create : Create a new bucket\0A <bucket> : Bucket to create\0A [cannedAcl] : Canned ACL for the bucket (see Canned ACLs)\0A [location] : Location for bucket (for example, EU)\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 getlogging : Get the logging status of a bucket\0A <bucket> : Bucket to get the logging status of\0A [filename] : Output filename for ACL (default is stdout)\0A\0A setlogging : Set the logging status of a bucket\0A <bucket> : Bucket to set the logging status of\0A [targetBucket] : Target bucket to log to; if not present, disables\0A logging\0A [targetPrefix] : Key prefix to use for logs\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 [useServerSideEncryption] : Whether or not to use server-side\0A encryption for 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, \22torrent\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: Email, 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 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 ([7207 x i8], [7207 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @exit(i32 -1)
unreachable
}

LLVM IR (-O2):
@.str = [7207 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 : S3 access key ID (required)\0A S3_SECRET_ACCESS_KEY : S3 secret access key (required)\0A S3_HOSTNAME : specify alternative S3 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 test : Tests a bucket for existence and accessibility\0A <bucket> : Bucket to test\0A\0A create : Create a new bucket\0A <bucket> : Bucket to create\0A [cannedAcl] : Canned ACL for the bucket (see Canned ACLs)\0A [location] : Location for bucket (for example, EU)\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 getlogging : Get the logging status of a bucket\0A <bucket> : Bucket to get the logging status of\0A [filename] : Output filename for ACL (default is stdout)\0A\0A setlogging : Set the logging status of a bucket\0A <bucket> : Bucket to set the logging status of\0A [targetBucket] : Target bucket to log to; if not present, disables\0A logging\0A [targetPrefix] : Key prefix to use for logs\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 [useServerSideEncryption] : Whether or not to use server-side\0A encryption for 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, \22torrent\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: Email, 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 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 ([7207 x i8], [7207 x i8]* @.str, i64 0, i64 0), i64 7206, i64 1, i32* %0)
%3 = tail call i32 @exit(i32 -1)
unreachable
}