#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*/ exit(int);
int /*<<< orphan*/ putchar(char);
int /*<<< orphan*/ puts(char *);
void usage_long() {
  puts("usage: zar [options] {zarfile} [input files]");
  putchar('\n');
  puts("\t-h,                        \tshort help.");
  puts("\t--help,                    \tlong help.");
  puts("\t-c, --create,              \tcreate an archive.");
  puts("\t-t, --list,                \tlist archive members.");
  puts("\t-i, --info,                \tinfo about archive.");
  puts("\t-x, --extract,             \tlist archive members.");
  puts("\t-C DIR, --directory DIR    \twhere to extract archive.");
  puts("\t-f FILE, --file FILE,      \tspecify ZAR archive file.");
  puts("\t-v, --verbose,             \tchitty, chatty two shoes.");
  puts("\t-D NUM, --debug-level NUM  \tSet debug level.");
  exit(64);
}


x86 assembly (clang, -O0):
<usage_long>:
push   %rbp
mov    %rsp,%rbp
lea    0xec5(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xedc(%rip),%rdi
call   1040 <puts@plt>
lea    0xef9(%rip),%rdi
call   1040 <puts@plt>
lea    0xf15(%rip),%rdi
call   1040 <puts@plt>
lea    0xf39(%rip),%rdi
call   1040 <puts@plt>
lea    0xf60(%rip),%rdi
call   1040 <puts@plt>
lea    0xf85(%rip),%rdi
call   1040 <puts@plt>
lea    0xfac(%rip),%rdi
call   1040 <puts@plt>
lea    0xfd7(%rip),%rdi
call   1040 <puts@plt>
lea    0x1002(%rip),%rdi
call   1040 <puts@plt>
lea    0x102d(%rip),%rdi
call   1040 <puts@plt>
mov    $0x40,%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<usage_long>:
push   %rax
lea    0xec8(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xedf(%rip),%rdi
call   1040 <puts@plt>
lea    0xefc(%rip),%rdi
call   1040 <puts@plt>
lea    0xf18(%rip),%rdi
call   1040 <puts@plt>
lea    0xf3c(%rip),%rdi
call   1040 <puts@plt>
lea    0xf63(%rip),%rdi
call   1040 <puts@plt>
lea    0xf88(%rip),%rdi
call   1040 <puts@plt>
lea    0xfaf(%rip),%rdi
call   1040 <puts@plt>
lea    0xfda(%rip),%rdi
call   1040 <puts@plt>
lea    0x1005(%rip),%rdi
call   1040 <puts@plt>
lea    0x1030(%rip),%rdi
call   1040 <puts@plt>
mov    $0x40,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [45 x i8] c"usage: zar [options] {zarfile} [input files]\00"
@.str.1 = [41 x i8] c"\09-h, \09short help.\00"
@.str.2 = [40 x i8] c"\09--help, \09long help.\00"
@.str.3 = [48 x i8] c"\09-c, --create, \09create an archive.\00"
@.str.4 = [51 x i8] c"\09-t, --list, \09list archive members.\00"
@.str.5 = [49 x i8] c"\09-i, --info, \09info about archive.\00"
@.str.6 = [51 x i8] c"\09-x, --extract, \09list archive members.\00"
@.str.7 = [55 x i8] c"\09-C DIR, --directory DIR \09where to extract archive.\00"
@.str.8 = [55 x i8] c"\09-f FILE, --file FILE, \09specify ZAR archive file.\00"
@.str.9 = [55 x i8] c"\09-v, --verbose, \09chitty, chatty two shoes.\00"
@.str.10 = [46 x i8] c"\09-D NUM, --debug-level NUM \09Set debug level.\00"
define void @usage_long() {
%1 = call i32 @puts(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @putchar(i8 signext 10)
%3 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @puts(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.2, i64 0, i64 0))
%5 = call i32 @puts(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @puts(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @puts(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.5, i64 0, i64 0))
%8 = call i32 @puts(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.6, i64 0, i64 0))
%9 = call i32 @puts(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.7, i64 0, i64 0))
%10 = call i32 @puts(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.8, i64 0, i64 0))
%11 = call i32 @puts(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0))
%12 = call i32 @puts(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.10, i64 0, i64 0))
%13 = call i32 @exit(i32 64)
unreachable
}

LLVM IR (-O2):
@.str = [45 x i8] c"usage: zar [options] {zarfile} [input files]\00"
@.str.1 = [41 x i8] c"\09-h, \09short help.\00"
@.str.2 = [40 x i8] c"\09--help, \09long help.\00"
@.str.3 = [48 x i8] c"\09-c, --create, \09create an archive.\00"
@.str.4 = [51 x i8] c"\09-t, --list, \09list archive members.\00"
@.str.5 = [49 x i8] c"\09-i, --info, \09info about archive.\00"
@.str.6 = [51 x i8] c"\09-x, --extract, \09list archive members.\00"
@.str.7 = [55 x i8] c"\09-C DIR, --directory DIR \09where to extract archive.\00"
@.str.8 = [55 x i8] c"\09-f FILE, --file FILE, \09specify ZAR archive file.\00"
@.str.9 = [55 x i8] c"\09-v, --verbose, \09chitty, chatty two shoes.\00"
@.str.10 = [46 x i8] c"\09-D NUM, --debug-level NUM \09Set debug level.\00"
define void @usage_long() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @putchar(i8 signext 10)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.2, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.4, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.5, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.6, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.7, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.8, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.9, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.10, i64 0, i64 0))
%13 = tail call i32 @exit(i32 64)
unreachable
}