#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 /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, char *);
void usage(void) {
  printf("%s", "  NAME                                                         "
               "        \n"
               "         pump -- build persistent pipe engines                 "
               "        \n"
               "                                                               "
               "        \n"
               "  SYNOPSIS                                                     "
               "        \n"
               "         pump [operator] ([option]) [operand]                  "
               "        \n"
               "                                                               "
               "        \n"
               "  DESCRIPTION                                                  "
               "        \n"
               "         Pump does lots of stuff for you that you don't want "
               "to do     \n"
               "         on your own, or you don't have time to do. Maybe you "
               "don't    \n"
               "         want to bother using the crontab, or maybe you want "
               "to set    \n"
               "         up a pipeline but want it to sit still while you play "
               "around  \n"
               "         with something else. Maybe you would rather mv files "
               "than     \n"
               "         wrestle with stdin and getopt(s).                     "
               "        \n"
               "                                                               "
               "        \n"
               "  OPERATORS                                                    "
               "        \n"
               "         The following operators are supported:                "
               "        \n"
               "                                                               "
               "        \n"
               "         init         create a new pump in the working "
               "directory       \n"
               "         logic <path> supply a path to external logic (script) "
               "        \n"
               "         var   <name> print value of an option in the config "
               "file      \n"
               "         config       open the config file for editing in a "
               "text editor\n"
               "                                                               "
               "        \n"
               "  OPTIONS                                                      "
               "        \n"
               "         Options aren't supported yet                          "
               "        \n"
               "                                                               "
               "        \n"
               "  OPERANDS                                                     "
               "        \n"
               "         Tired of writing this now                             "
               "        \n");
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
lea    0xed1(%rip),%rsi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xed8(%rip),%rdi
lea    0xed4(%rip),%rsi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [1945 x i8] c" NAME \0A pump -- build persistent pipe engines \0A \0A SYNOPSIS \0A pump [operator] ([option]) [operand] \0A \0A DESCRIPTION \0A Pump does lots of stuff for you that you don't want to do \0A on your own, or you don't have time to do. Maybe you don't \0A want to bother using the crontab, or maybe you want to set \0A up a pipeline but want it to sit still while you play around \0A with something else. Maybe you would rather mv files than \0A wrestle with stdin and getopt(s). \0A \0A OPERATORS \0A The following operators are supported: \0A \0A init create a new pump in the working directory \0A logic <path> supply a path to external logic (script) \0A var <name> print value of an option in the config file \0A config open the config file for editing in a text editor\0A \0A OPTIONS \0A Options aren't supported yet \0A \0A OPERANDS \0A Tired of writing this now \0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1945 x i8], [1945 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [1945 x i8] c" NAME \0A pump -- build persistent pipe engines \0A \0A SYNOPSIS \0A pump [operator] ([option]) [operand] \0A \0A DESCRIPTION \0A Pump does lots of stuff for you that you don't want to do \0A on your own, or you don't have time to do. Maybe you don't \0A want to bother using the crontab, or maybe you want to set \0A up a pipeline but want it to sit still while you play around \0A with something else. Maybe you would rather mv files than \0A wrestle with stdin and getopt(s). \0A \0A OPERATORS \0A The following operators are supported: \0A \0A init create a new pump in the working directory \0A logic <path> supply a path to external logic (script) \0A var <name> print value of an option in the config file \0A config open the config file for editing in a text editor\0A \0A OPTIONS \0A Options aren't supported yet \0A \0A OPERANDS \0A Tired of writing this now \0A\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1945 x i8], [1945 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}