#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, char const *);
void opts_print_help(FILE *out, const char *prog_name) {
  fprintf(
      out,
      "Usage: %s [OPTION...]\n"
      "\n"
      "  -h, --help                 this thing.\n"
      "  -v, --provider=PATH        a path to wsrep provider library file.\n"
      "  -a, --address=STRING       list of node addresses in the group.\n"
      "                             If not set the node assumes that it is the "
      "first\n"
      "                             node in the group (default)\n"
      "  -o, --options=STRING       a string of wsrep provider options.\n"
      "  -n, --name=STRING          human-readable node name.\n"
      "  -f, --data-dir=PATH        a directory to save working data in.\n"
      "                             Should be private to the process.\n"
      "  -t, --base-host=ADDRESS    address of this node at which other "
      "members can\n"
      "                             connect to it\n"
      "  -p, --base-port=NUM        base port which the node shall listen for\n"
      "                             connections from other members. This port "
      "will be\n"
      "                             used for replication, port+1 for IST and "
      "port+2\n"
      "                             for SST. Default: 4567\n"
      "  -m, --masters=NUM          number of concurrent master workers.\n"
      "  -s, --slaves=NUM           number of concurrent slave workers.\n"
      "                             (can't be less than 1)\n"
      "  -w, --size=NUM             desirable size of the resulting writesets\n"
      "                             (approximate lower boundary). Default: 1K\n"
      "  -r, --records=NUM          number of records in the store. Default: "
      "1M\n"
      "  -x, --ops=NUM              number of operations per transaction. "
      "Default: 1\n"
      "  -d, --delay=NUM            delay in milliseconds between \"commits\"\n"
      "                             (per master thread).\n"
      "  -b, --bootstrap            bootstrap the cluster with this node.\n"
      "                             Default: 'Yes' if --address is not given, "
      "'No'\n"
      "                             otherwise.\n"
      "  -i, --period               period in seconds between performance "
      "stats output\n"
      "\n",
      prog_name);
}


x86 assembly (clang, -O0):
<opts_print_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rdx
lea    0xed1(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<opts_print_help>:
mov    %rsi,%rdx
lea    0xee6(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@.str = [1841 x i8] c"Usage: %s [OPTION...]\0A\0A -h, --help this thing.\0A -v, --provider=PATH a path to wsrep provider library file.\0A -a, --address=STRING list of node addresses in the group.\0A If not set the node assumes that it is the first\0A node in the group (default)\0A -o, --options=STRING a string of wsrep provider options.\0A -n, --name=STRING human-readable node name.\0A -f, --data-dir=PATH a directory to save working data in.\0A Should be private to the process.\0A -t, --base-host=ADDRESS address of this node at which other members can\0A connect to it\0A -p, --base-port=NUM base port which the node shall listen for\0A connections from other members. This port will be\0A used for replication, port+1 for IST and port+2\0A for SST. Default: 4567\0A -m, --masters=NUM number of concurrent master workers.\0A -s, --slaves=NUM number of concurrent slave workers.\0A (can't be less than 1)\0A -w, --size=NUM desirable size of the resulting writesets\0A (approximate lower boundary). Default: 1K\0A -r, --records=NUM number of records in the store. Default: 1M\0A -x, --ops=NUM number of operations per transaction. Default: 1\0A -d, --delay=NUM delay in milliseconds between \22commits\22\0A (per master thread).\0A -b, --bootstrap bootstrap the cluster with this node.\0A Default: 'Yes' if --address is not given, 'No'\0A otherwise.\0A -i, --period period in seconds between performance stats output\0A\0A\00"
define void @opts_print_help(i32* %0, i8* %1) {
%3 = alloca i32*
%4 = alloca i8*
store i32* %0, i32** %3
store i8* %1, i8** %4
%5 = load i32*, i32** %3
%6 = load i8*, i8** %4
%7 = call i32 @fprintf(i32* %5, i8* getelementptr inbounds ([1841 x i8], [1841 x i8]* @.str, i64 0, i64 0), i8* %6)
ret void
}

LLVM IR (-O2):
@.str = [1841 x i8] c"Usage: %s [OPTION...]\0A\0A -h, --help this thing.\0A -v, --provider=PATH a path to wsrep provider library file.\0A -a, --address=STRING list of node addresses in the group.\0A If not set the node assumes that it is the first\0A node in the group (default)\0A -o, --options=STRING a string of wsrep provider options.\0A -n, --name=STRING human-readable node name.\0A -f, --data-dir=PATH a directory to save working data in.\0A Should be private to the process.\0A -t, --base-host=ADDRESS address of this node at which other members can\0A connect to it\0A -p, --base-port=NUM base port which the node shall listen for\0A connections from other members. This port will be\0A used for replication, port+1 for IST and port+2\0A for SST. Default: 4567\0A -m, --masters=NUM number of concurrent master workers.\0A -s, --slaves=NUM number of concurrent slave workers.\0A (can't be less than 1)\0A -w, --size=NUM desirable size of the resulting writesets\0A (approximate lower boundary). Default: 1K\0A -r, --records=NUM number of records in the store. Default: 1M\0A -x, --ops=NUM number of operations per transaction. Default: 1\0A -d, --delay=NUM delay in milliseconds between \22commits\22\0A (per master thread).\0A -b, --bootstrap bootstrap the cluster with this node.\0A Default: 'Yes' if --address is not given, 'No'\0A otherwise.\0A -i, --period period in seconds between performance stats output\0A\0A\00"
define void @opts_print_help(i32* nocapture %0, i8* %1) {
%3 = tail call i32 @fprintf(i32* %0, i8* getelementptr inbounds ([1841 x i8], [1841 x i8]* @.str, i64 0, i64 0), i8* %1)
ret void
}