#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: yget command [options] pkg1 [pkg2 ...]\n\nyget is a simple "
      "command line interface for downloading and\ninstalling packages. The "
      "most frequently used commands are update and install.\n\nCommands:\n  "
      "--install           Install packages and dependencies (pkg is leafpad "
      "not leafpad.ypk)\n  --reinstall         Reinstall packages and "
      "dependencies (pkg is leafpad not leafpad.ypk)\n  --install-dev       "
      "Install build-dependencies for packages (pkg is leafpad not "
      "leafpad.ypk)\n  --remove            Remove package\n  --search          "
      "  Search the package list for a regex pattern\n  --show              "
      "Show a readable record for the package\n  --status            Show the "
      "infomation of a installed packages\n  --clean             Erase "
      "downloaded archive files\n  --autoremove        Remove automatically "
      "all unused packages\n  --upgrade           Perform an upgrade\n  "
      "--update            Retrieve new lists of packages\n  --color           "
      "  Colorize the output\n\nOptions:\n  -p                  Instead of "
      "actually install, simply display what to do\n  -y                  "
      "Assume Yes to all queries\n  -d		      Download only - do NOT "
      "install\n  -f | --force        Force install, override problems\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    0x1376(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

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

LLVM IR (-O0):
@.str = [1188 x i8] c"Usage: yget command [options] pkg1 [pkg2 ...]\0A\0Ayget is a simple command line interface for downloading and\0Ainstalling packages. The most frequently used commands are update and install.\0A\0ACommands:\0A --install Install packages and dependencies (pkg is leafpad not leafpad.ypk)\0A --reinstall Reinstall packages and dependencies (pkg is leafpad not leafpad.ypk)\0A --install-dev Install build-dependencies for packages (pkg is leafpad not leafpad.ypk)\0A --remove Remove package\0A --search Search the package list for a regex pattern\0A --show Show a readable record for the package\0A --status Show the infomation of a installed packages\0A --clean Erase downloaded archive files\0A --autoremove Remove automatically all unused packages\0A --upgrade Perform an upgrade\0A --update Retrieve new lists of packages\0A --color Colorize the output\0A\0AOptions:\0A -p Instead of actually install, simply display what to do\0A -y Assume Yes to all queries\0A -d\09\09 Download only - do NOT install\0A -f | --force Force install, override problems\0A\00"
@.str.1 = [4 x i8] c"%s\0A\00"
define void @usage() {
%1 = alloca i8*
store i8* getelementptr inbounds ([1188 x i8], [1188 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 = [1188 x i8] c"Usage: yget command [options] pkg1 [pkg2 ...]\0A\0Ayget is a simple command line interface for downloading and\0Ainstalling packages. The most frequently used commands are update and install.\0A\0ACommands:\0A --install Install packages and dependencies (pkg is leafpad not leafpad.ypk)\0A --reinstall Reinstall packages and dependencies (pkg is leafpad not leafpad.ypk)\0A --install-dev Install build-dependencies for packages (pkg is leafpad not leafpad.ypk)\0A --remove Remove package\0A --search Search the package list for a regex pattern\0A --show Show a readable record for the package\0A --status Show the infomation of a installed packages\0A --clean Erase downloaded archive files\0A --autoremove Remove automatically all unused packages\0A --upgrade Perform an upgrade\0A --update Retrieve new lists of packages\0A --color Colorize the output\0A\0AOptions:\0A -p Instead of actually install, simply display what to do\0A -y Assume Yes to all queries\0A -d\09\09 Download only - do NOT install\0A -f | --force Force install, override problems\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 ([1188 x i8], [1188 x i8]* @.str, i64 0, i64 0))
ret void
}