#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*/ stderr;
void ModelsExplanation(void) {
  fprintf(stderr, "                                                            "
                  "           \n"
                  "  -rm <c>:<d>:<i>:<m/e>  reference context model (ex:-rm "
                  "13:100:0:0/0), \n"
                  "  -rm <c>:<d>:<i>:<m/e>  reference context model (ex:-rm "
                  "18:1000:0:1/1000),\n"
                  "  ...                                                       "
                  "           \n"
                  "  -tm <c>:<d>:<i>:<m/e>  target context model (ex:-tm "
                  "4:1:0:0/0),      \n"
                  "  -tm <c>:<d>:<i>:<m/e>  target context model (ex:-tm "
                  "18:20:1:2/10),   \n"
                  "  ...                                                       "
                  "           \n"
                  "                         target and reference templates use "
                  "<c> for    \n"
                  "                         context-order size, <d> for alpha "
                  "(1/<d>),    \n"
                  "                         <i> (0 or 1) to set the usage of "
                  "inverted     \n"
                  "                         repeats (1 to use) and <m> to the "
                  "maximum     \n"
                  "                         allowed mutation on the context "
                  "without       \n"
                  "                         being discarded (usefull in deep "
                  "contexts),   \n"
                  "                         under the estimator <e>,           "
                  "           \n");
}


x86 assembly (clang, -O0):
<ModelsExplanation>:
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):
<ModelsExplanation>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1014 x i8] c" \0A -rm <c>:<d>:<i>:<m/e> reference context model (ex:-rm 13:100:0:0/0), \0A -rm <c>:<d>:<i>:<m/e> reference context model (ex:-rm 18:1000:0:1/1000),\0A ... \0A -tm <c>:<d>:<i>:<m/e> target context model (ex:-tm 4:1:0:0/0), \0A -tm <c>:<d>:<i>:<m/e> target context model (ex:-tm 18:20:1:2/10), \0A ... \0A target and reference templates use <c> for \0A context-order size, <d> for alpha (1/<d>), \0A <i> (0 or 1) to set the usage of inverted \0A repeats (1 to use) and <m> to the maximum \0A allowed mutation on the context without \0A being discarded (usefull in deep contexts), \0A under the estimator <e>, \0A\00"
define void @ModelsExplanation() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1014 x i8], [1014 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1014 x i8] c" \0A -rm <c>:<d>:<i>:<m/e> reference context model (ex:-rm 13:100:0:0/0), \0A -rm <c>:<d>:<i>:<m/e> reference context model (ex:-rm 18:1000:0:1/1000),\0A ... \0A -tm <c>:<d>:<i>:<m/e> target context model (ex:-tm 4:1:0:0/0), \0A -tm <c>:<d>:<i>:<m/e> target context model (ex:-tm 18:20:1:2/10), \0A ... \0A target and reference templates use <c> for \0A context-order size, <d> for alpha (1/<d>), \0A <i> (0 or 1) to set the usage of inverted \0A repeats (1 to use) and <m> to the maximum \0A allowed mutation on the context without \0A being discarded (usefull in deep contexts), \0A under the estimator <e>, \0A\00"
define void @ModelsExplanation() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1014 x i8], [1014 x i8]* @.str, i64 0, i64 0))
ret void
}