#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 print_usage() {
  printf(
      "armake\n"
      "\n"
      "Usage:\n"
      "    armake binarize [-f] [-w <wname>] [-i <includefolder>] <source> "
      "[<target>]\n"
      "    armake build [-f] [-p] [-w <wname>] [-i <includefolder>] [-x "
      "<xlist>] [-k <privatekey>] [-s <signature>] [-e <headerextension>] "
      "<folder> <pbo>\n"
      "    armake inspect <pbo>\n"
      "    armake unpack [-f] [-i <includepattern>] [-x <excludepattern>] "
      "<pbo> <folder>\n"
      "    armake cat <pbo> <name>\n"
      "    armake derapify [-f] [-d <indentation>] [<source> [<target>]]\n"
      "    armake keygen [-f] <keyname>\n"
      "    armake sign [-f] [-s <signature>] <privatekey> <pbo>\n"
      "    armake paa2img [-f] <source> <target>\n"
      "    armake img2paa [-f] [-z] [-t <paatype>] <source> <target>\n"
      "    armake (-h | --help)\n"
      "    armake (-v | --version)\n"
      "\n"
      "Commands:\n"
      "    binarize    Binarize a file.\n"
      "    build       Pack a folder into a PBO.\n"
      "    inspect     Inspect a PBO and list contained files.\n"
      "    unpack      Unpack a PBO into a folder.\n"
      "    cat         Read the named file from the target PBO to stdout.\n"
      "    derapify    Derapify a config. Pass no target for stdout and no "
      "source for stdin.\n"
      "    keygen      Generate a keypair with the specified path (extensions "
      "are added).\n"
      "    sign        Sign a PBO with the given private key.\n"
      "    paa2img     Convert PAA to image (PNG only).\n"
      "    img2paa     Convert image to PAA.\n"
      "\n"
      "Options:\n"
      "    -f --force      Overwrite the target file/folder if it already "
      "exists.\n"
      "    -p --packonly   Don't binarize models, configs etc.\n"
      "    -w --warning    Warning to disable (repeatable).\n"
      "    -i --include    Folder to search for includes, defaults to CWD "
      "(repeatable).\n"
      "                        For unpack: pattern to include in output folder "
      "(repeatable).\n"
      "    -x --exclude    Glob patterns to exclude from PBO (repeatable).\n"
      "                        For unpack: pattern to exclude from output "
      "folder (repeatable).\n"
      "    -e --headerext  Header extension (repeatable).\n"
      "                        Example: foo=bar\n"
      "    -k --key        Private key to use for signing the PBO.\n"
      "    -s --signature  Signature name to use for signing the PBO.\n"
      "    -d --indent     String to use for indentation. "
      " (4 spaces) by default.\n"
      "    -z --compress   Compress final PAA where possible.\n"
      "    -t --type       PAA type. One of: DXT1, DXT3, DXT5, ARGB4444, "
      "ARGB1555, AI88\n"
      "                        Currently only DXT1 and DXT5 are implemented.\n"
      "    -h --help       Show usage information and exit.\n"
      "    -v --version    Print the version number and exit.\n"
      "\n"
      "Warnings:\n"
      "    By default, armake prints all warnings. You can mute trivial "
      "warnings\n"
      "    using the name that is printed along with them.\n"
      "\n"
      "    Example: \"-w unquoted-string\" disables warnings about improperly "
      "quoted\n"
      "             strings.\n"
      "\n"
      "BI tools on Windows:\n"
      "    Since armake's P3D converter is not finished yet, armake attempts "
      "to find\n"
      "    and use BI's binarize.exe on Windows systems. If you don't want "
      "this to\n"
      "    happen and use armake's instead, pass the environment variable "
      "NATIVEBIN.\n"
      "\n"
      "    Since binarize.exe's output is usually excessively verbose, it is "
      "hidden\n"
      "    by default. Pass BIOUTPUT to display it.\n");
}


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

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

LLVM IR (-O0):
@.str = [2988 x i8] c"armake\0A\0AUsage:\0A armake binarize [-f] [-w <wname>] [-i <includefolder>] <source> [<target>]\0A armake build [-f] [-p] [-w <wname>] [-i <includefolder>] [-x <xlist>] [-k <privatekey>] [-s <signature>] [-e <headerextension>] <folder> <pbo>\0A armake inspect <pbo>\0A armake unpack [-f] [-i <includepattern>] [-x <excludepattern>] <pbo> <folder>\0A armake cat <pbo> <name>\0A armake derapify [-f] [-d <indentation>] [<source> [<target>]]\0A armake keygen [-f] <keyname>\0A armake sign [-f] [-s <signature>] <privatekey> <pbo>\0A armake paa2img [-f] <source> <target>\0A armake img2paa [-f] [-z] [-t <paatype>] <source> <target>\0A armake (-h | --help)\0A armake (-v | --version)\0A\0ACommands:\0A binarize Binarize a file.\0A build Pack a folder into a PBO.\0A inspect Inspect a PBO and list contained files.\0A unpack Unpack a PBO into a folder.\0A cat Read the named file from the target PBO to stdout.\0A derapify Derapify a config. Pass no target for stdout and no source for stdin.\0A keygen Generate a keypair with the specified path (extensions are added).\0A sign Sign a PBO with the given private key.\0A paa2img Convert PAA to image (PNG only).\0A img2paa Convert image to PAA.\0A\0AOptions:\0A -f --force Overwrite the target file/folder if it already exists.\0A -p --packonly Don't binarize models, configs etc.\0A -w --warning Warning to disable (repeatable).\0A -i --include Folder to search for includes, defaults to CWD (repeatable).\0A For unpack: pattern to include in output folder (repeatable).\0A -x --exclude Glob patterns to exclude from PBO (repeatable).\0A For unpack: pattern to exclude from output folder (repeatable).\0A -e --headerext Header extension (repeatable).\0A Example: foo=bar\0A -k --key Private key to use for signing the PBO.\0A -s --signature Signature name to use for signing the PBO.\0A -d --indent String to use for indentation. (4 spaces) by default.\0A -z --compress Compress final PAA where possible.\0A -t --type PAA type. One of: DXT1, DXT3, DXT5, ARGB4444, ARGB1555, AI88\0A Currently only DXT1 and DXT5 are implemented.\0A -h --help Show usage information and exit.\0A -v --version Print the version number and exit.\0A\0AWarnings:\0A By default, armake prints all warnings. You can mute trivial warnings\0A using the name that is printed along with them.\0A\0A Example: \22-w unquoted-string\22 disables warnings about improperly quoted\0A strings.\0A\0ABI tools on Windows:\0A Since armake's P3D converter is not finished yet, armake attempts to find\0A and use BI's binarize.exe on Windows systems. If you don't want this to\0A happen and use armake's instead, pass the environment variable NATIVEBIN.\0A\0A Since binarize.exe's output is usually excessively verbose, it is hidden\0A by default. Pass BIOUTPUT to display it.\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2988 x i8], [2988 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [2987 x i8] c"armake\0A\0AUsage:\0A armake binarize [-f] [-w <wname>] [-i <includefolder>] <source> [<target>]\0A armake build [-f] [-p] [-w <wname>] [-i <includefolder>] [-x <xlist>] [-k <privatekey>] [-s <signature>] [-e <headerextension>] <folder> <pbo>\0A armake inspect <pbo>\0A armake unpack [-f] [-i <includepattern>] [-x <excludepattern>] <pbo> <folder>\0A armake cat <pbo> <name>\0A armake derapify [-f] [-d <indentation>] [<source> [<target>]]\0A armake keygen [-f] <keyname>\0A armake sign [-f] [-s <signature>] <privatekey> <pbo>\0A armake paa2img [-f] <source> <target>\0A armake img2paa [-f] [-z] [-t <paatype>] <source> <target>\0A armake (-h | --help)\0A armake (-v | --version)\0A\0ACommands:\0A binarize Binarize a file.\0A build Pack a folder into a PBO.\0A inspect Inspect a PBO and list contained files.\0A unpack Unpack a PBO into a folder.\0A cat Read the named file from the target PBO to stdout.\0A derapify Derapify a config. Pass no target for stdout and no source for stdin.\0A keygen Generate a keypair with the specified path (extensions are added).\0A sign Sign a PBO with the given private key.\0A paa2img Convert PAA to image (PNG only).\0A img2paa Convert image to PAA.\0A\0AOptions:\0A -f --force Overwrite the target file/folder if it already exists.\0A -p --packonly Don't binarize models, configs etc.\0A -w --warning Warning to disable (repeatable).\0A -i --include Folder to search for includes, defaults to CWD (repeatable).\0A For unpack: pattern to include in output folder (repeatable).\0A -x --exclude Glob patterns to exclude from PBO (repeatable).\0A For unpack: pattern to exclude from output folder (repeatable).\0A -e --headerext Header extension (repeatable).\0A Example: foo=bar\0A -k --key Private key to use for signing the PBO.\0A -s --signature Signature name to use for signing the PBO.\0A -d --indent String to use for indentation. (4 spaces) by default.\0A -z --compress Compress final PAA where possible.\0A -t --type PAA type. One of: DXT1, DXT3, DXT5, ARGB4444, ARGB1555, AI88\0A Currently only DXT1 and DXT5 are implemented.\0A -h --help Show usage information and exit.\0A -v --version Print the version number and exit.\0A\0AWarnings:\0A By default, armake prints all warnings. You can mute trivial warnings\0A using the name that is printed along with them.\0A\0A Example: \22-w unquoted-string\22 disables warnings about improperly quoted\0A strings.\0A\0ABI tools on Windows:\0A Since armake's P3D converter is not finished yet, armake attempts to find\0A and use BI's binarize.exe on Windows systems. If you don't want this to\0A happen and use armake's instead, pass the environment variable NATIVEBIN.\0A\0A Since binarize.exe's output is usually excessively verbose, it is hidden\0A by default. Pass BIOUTPUT to display it.\00"
define void @print_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2987 x i8], [2987 x i8]* @str, i64 0, i64 0))
ret void
}