#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 *, ...);
void print_help(char *progname) {
  printf("Usage: %s [options]\n", progname);
  printf(
      "    Join algorithm selection, algorithms : RJ, PRO, PRH, PRHO, NPO, "
      "NPO_st    \n       -a --algo=<name>    Run the hash join algorithm "
      "named <name> [PRO]     \n                                               "
      "                               \n    Other join configuration options, "
      "with default values in [] :             \n       -n --nthreads=<N>  "
      "Number of threads to use <N> [2]                    \n       -r "
      "--r-size=<R>    Number of tuples in build relation R <R> [128000000]\n  "
      "     -s --s-size=<S>    Number of tuples in probe relation S <S> "
      "[128000000]\n       -x --r-seed=<x>    Seed value for generating "
      "relation R <x> [12345]    \n       -y --s-seed=<y>    Seed value for "
      "generating relation S <y> [54321]    \n       -z --skew=<z>      Zipf "
      "skew parameter for probe relation S <z> [0.0]  \n       --non-unique    "
      "   Use non-unique (duplicated) keys in input relations \n       "
      "--full-range       Spread keys in relns. in full 32-bit integer range  "
      "\n       --basic-numa       Numa-localize relations to threads "
      "(Experimental)   \n                                                     "
      "                         \n    Performance profiling options, when "
      "compiled with --enable-perfcounters.  \n       -p --perfconf=<P>  Intel "
      "PCM config file with upto 4 counters [none]   \n       -o --perfout=<O> "
      "  Output file to print performance counters [stdout]  \n                "
      "                                                              \n    "
      "Basic user options                                                      "
      "  \n        -h --help         Show this message                         "
      "          \n        --verbose         Be more verbose -- show misc "
      "extra info             \n        --version         Show version         "
      "                               \n    \n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
mov    %rdi,%rsi
lea    0xed5(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xedc(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [21 x i8] c"Usage: %s [options]\0A\00"
@.str.1 = [1744 x i8] c" Join algorithm selection, algorithms : RJ, PRO, PRH, PRHO, NPO, NPO_st \0A -a --algo=<name> Run the hash join algorithm named <name> [PRO] \0A \0A Other join configuration options, with default values in [] : \0A -n --nthreads=<N> Number of threads to use <N> [2] \0A -r --r-size=<R> Number of tuples in build relation R <R> [128000000]\0A -s --s-size=<S> Number of tuples in probe relation S <S> [128000000]\0A -x --r-seed=<x> Seed value for generating relation R <x> [12345] \0A -y --s-seed=<y> Seed value for generating relation S <y> [54321] \0A -z --skew=<z> Zipf skew parameter for probe relation S <z> [0.0] \0A --non-unique Use non-unique (duplicated) keys in input relations \0A --full-range Spread keys in relns. in full 32-bit integer range \0A --basic-numa Numa-localize relations to threads (Experimental) \0A \0A Performance profiling options, when compiled with --enable-perfcounters. \0A -p --perfconf=<P> Intel PCM config file with upto 4 counters [none] \0A -o --perfout=<O> Output file to print performance counters [stdout] \0A \0A Basic user options \0A -h --help Show this message \0A --verbose Be more verbose -- show misc extra info \0A --version Show version \0A \0A\00"
define void @print_help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([1744 x i8], [1744 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [21 x i8] c"Usage: %s [options]\0A\00"
@str = [1743 x i8] c" Join algorithm selection, algorithms : RJ, PRO, PRH, PRHO, NPO, NPO_st \0A -a --algo=<name> Run the hash join algorithm named <name> [PRO] \0A \0A Other join configuration options, with default values in [] : \0A -n --nthreads=<N> Number of threads to use <N> [2] \0A -r --r-size=<R> Number of tuples in build relation R <R> [128000000]\0A -s --s-size=<S> Number of tuples in probe relation S <S> [128000000]\0A -x --r-seed=<x> Seed value for generating relation R <x> [12345] \0A -y --s-seed=<y> Seed value for generating relation S <y> [54321] \0A -z --skew=<z> Zipf skew parameter for probe relation S <z> [0.0] \0A --non-unique Use non-unique (duplicated) keys in input relations \0A --full-range Spread keys in relns. in full 32-bit integer range \0A --basic-numa Numa-localize relations to threads (Experimental) \0A \0A Performance profiling options, when compiled with --enable-perfcounters. \0A -p --perfconf=<P> Intel PCM config file with upto 4 counters [none] \0A -o --perfout=<O> Output file to print performance counters [stdout] \0A \0A Basic user options \0A -h --help Show this message \0A --verbose Be more verbose -- show misc extra info \0A --version Show version \0A \00"
define void @print_help(i8* %0) {
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), i8* %0)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1743 x i8], [1743 x i8]* @str, i64 0, i64 0))
ret void
}