#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdout;
void usage() {
  fprintf(
      stdout,
      "Usage: simplify [options] [<file>|-]\nOptions:\n  -h, --help    print "
      "help message\n  -V, --version print version information\n  -v, "
      "--verbose verbose mode (\"human\" readable including statistics)\n  -S, "
      "--stats   print transformation statistics to stderr\n  \n  -t, --taut   "
      " remove tautologies (d)\n  -c, --contra  remove contradictions (d)\n  "
      "-T, --trivial reduce trivial rules (d)\n  -C, --compute remove compute "
      "atoms (d)\n  -n, --nonmin  remove non-minimal (d)\n  -l, --litnon  "
      "remove literal non-minimal (d)\n  -p, --partev  partially evaluate "
      "simple unique heads\n  -P, --partev-full  partially evaluate all unique "
      "heads\n  -L, --loop    loop transformations until exhausted\n  -s, "
      "--smodels run program through smodels -internal\n  \n  -A, --all     "
      "turn on all of above\n  -N, --none    turn off all of above\n  \n(d) "
      "denotes that the flag is turned on by default, the default argument "
      "wouldthus be -NtcTCnl\nArguments parsed in order, so that simplify -cNt "
      "would only remove tautologies.\n");
  return;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stdout = global i32 0
@.str = [977 x i8] c"Usage: simplify [options] [<file>|-]\0AOptions:\0A -h, --help print help message\0A -V, --version print version information\0A -v, --verbose verbose mode (\22human\22 readable including statistics)\0A -S, --stats print transformation statistics to stderr\0A \0A -t, --taut remove tautologies (d)\0A -c, --contra remove contradictions (d)\0A -T, --trivial reduce trivial rules (d)\0A -C, --compute remove compute atoms (d)\0A -n, --nonmin remove non-minimal (d)\0A -l, --litnon remove literal non-minimal (d)\0A -p, --partev partially evaluate simple unique heads\0A -P, --partev-full partially evaluate all unique heads\0A -L, --loop loop transformations until exhausted\0A -s, --smodels run program through smodels -internal\0A \0A -A, --all turn on all of above\0A -N, --none turn off all of above\0A \0A(d) denotes that the flag is turned on by default, the default argument wouldthus be -NtcTCnl\0AArguments parsed in order, so that simplify -cNt would only remove tautologies.\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([977 x i8], [977 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [977 x i8] c"Usage: simplify [options] [<file>|-]\0AOptions:\0A -h, --help print help message\0A -V, --version print version information\0A -v, --verbose verbose mode (\22human\22 readable including statistics)\0A -S, --stats print transformation statistics to stderr\0A \0A -t, --taut remove tautologies (d)\0A -c, --contra remove contradictions (d)\0A -T, --trivial reduce trivial rules (d)\0A -C, --compute remove compute atoms (d)\0A -n, --nonmin remove non-minimal (d)\0A -l, --litnon remove literal non-minimal (d)\0A -p, --partev partially evaluate simple unique heads\0A -P, --partev-full partially evaluate all unique heads\0A -L, --loop loop transformations until exhausted\0A -s, --smodels run program through smodels -internal\0A \0A -A, --all turn on all of above\0A -N, --none turn off all of above\0A \0A(d) denotes that the flag is turned on by default, the default argument wouldthus be -NtcTCnl\0AArguments parsed in order, so that simplify -cNt would only remove tautologies.\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([977 x i8], [977 x i8]* @.str, i64 0, i64 0))
ret void
}