#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 *, char *);
void usage() {
  char *usage =
      "Usage: ypkg command pkg1 [pkg2 ...]\n\nypkg is a simple command line "
      "for dealing with ypk package.\n\nCommands:\n  -h|--help                 "
      "  Show usage\n  -C|--remove                 Remove package\n  "
      "-I|--install                Install package (pkg is leafpa.ypk not "
      "leafpad)\n  -c|--check                  Check dependencies of package "
      "(pkg is leafpad.ypk not leafpad)\n  -l|--list-files             List "
      "all files of installed package\n  -k|--depend                 Show "
      "dependency of package\n  -x|--unpack-binary          Unpack ypk package "
      "\n  -X|--unpack-info            Unpack ypkinfo \n  -b|--pack-directory  "
      "       Pack directory to package\n  -L|--list-installed         List "
      "all installed packages\n  -s|--whatrequires           Show which "
      "package needs package\n  -S|--whatprovides           Search which "
      "package provide this file\n  --compare-version           Comprare two "
      "version strings \n  --color                     Colorize the output\n\n "
      " --absolute                  with -S, use absolute path\n\nOptions:\n  "
      "-f|--force                  Override problems, Only work with install\n "
      "      ";
  printf("%s\n", usage);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0xee1(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0x1312(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0x1329(%rip),%rdi
lea    0xee2(%rip),%rsi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [1088 x i8] c"Usage: ypkg command pkg1 [pkg2 ...]\0A\0Aypkg is a simple command line for dealing with ypk package.\0A\0ACommands:\0A -h|--help Show usage\0A -C|--remove Remove package\0A -I|--install Install package (pkg is leafpa.ypk not leafpad)\0A -c|--check Check dependencies of package (pkg is leafpad.ypk not leafpad)\0A -l|--list-files List all files of installed package\0A -k|--depend Show dependency of package\0A -x|--unpack-binary Unpack ypk package \0A -X|--unpack-info Unpack ypkinfo \0A -b|--pack-directory Pack directory to package\0A -L|--list-installed List all installed packages\0A -s|--whatrequires Show which package needs package\0A -S|--whatprovides Search which package provide this file\0A --compare-version Comprare two version strings \0A --color Colorize the output\0A\0A --absolute with -S, use absolute path\0A\0AOptions:\0A -f|--force Override problems, Only work with install\0A \00"
@.str.1 = [4 x i8] c"%s\0A\00"
define void @usage() {
%1 = alloca i8*
store i8* getelementptr inbounds ([1088 x i8], [1088 x i8]* @.str, i64 0, i64 0), i8** %1
%2 = load i8*, i8** %1
%3 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8* %2)
ret void
}

LLVM IR (-O2):
@.str = [1088 x i8] c"Usage: ypkg command pkg1 [pkg2 ...]\0A\0Aypkg is a simple command line for dealing with ypk package.\0A\0ACommands:\0A -h|--help Show usage\0A -C|--remove Remove package\0A -I|--install Install package (pkg is leafpa.ypk not leafpad)\0A -c|--check Check dependencies of package (pkg is leafpad.ypk not leafpad)\0A -l|--list-files List all files of installed package\0A -k|--depend Show dependency of package\0A -x|--unpack-binary Unpack ypk package \0A -X|--unpack-info Unpack ypkinfo \0A -b|--pack-directory Pack directory to package\0A -L|--list-installed List all installed packages\0A -s|--whatrequires Show which package needs package\0A -S|--whatprovides Search which package provide this file\0A --compare-version Comprare two version strings \0A --color Colorize the output\0A\0A --absolute with -S, use absolute path\0A\0AOptions:\0A -f|--force Override problems, Only work with install\0A \00"
@.str.1 = [4 x i8] c"%s\0A\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([1088 x i8], [1088 x i8]* @.str, i64 0, i64 0))
ret void
}