#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 *);
void macula_ShowHelp(FILE *outfile) {
  fprintf(
      outfile,
      "Fit or inject a Macula spot model [in]to the light curves. The "
      "reference for macula is \"Kipping 2012, arXiv:1209.2985\", please be "
      "sure to cite this paper if you make use of Macula. The user must give "
      "either the \"inject\" keyword or the \"fit\" keyword to indicate "
      "whether the model should be injected into the light curve, or fitted to "
      "it. If fitting, give the \"amoeba\" keyword to do downhill simplex "
      "fitting, or the \"lm\" to use the Levenberg-Marquardt fitting "
      "algorithm. After that the user specifies how the initialize the "
      "parameters used by this model. The parameters include:\n"
      "\t\"Prot\" - the equatorial rotation period [input lc time units].\n"
      "\t\"istar\" - the inclination of the star [radians].\n"
      "\t\"kappa2\" - quadratic differential rotation coeff.\n"
      "\t\"kappa4\" - quartic differential rotation coeff.\n"
      "\t\"c1\" - 1st of four-coeff stellar LD terms.\n"
      "\t\"c2\" - 2nd of four-coeff stellar LD terms.\n"
      "\t\"c3\" - 3rd of four-coeff stellar LD terms.\n"
      "\t\"c4\" - 4th of four-coeff stellar LD terms.\n"
      "\t\"d1\" - 1st of four-coeff spot LD terms.\n"
      "\t\"d2\" - 2nd of four-coeff spot LD terms.\n"
      "\t\"d3\" - 3rd of four-coeff spot LD terms.\n"
      "\t\"d4\" - 4th of four-coeff spot LD terms.\n"
      "\t\"blend\" - blend parameter.\n"
      "You must specify the number of spots to use, with the parameter NSpot.\n"
      "For each spot, the following parameters are required:\n"
      "\t\"Lambda0\" - Longitude of spot at its time of maximum size "
      "[radians].\n"
      "\t\"Phi0\" - Latitude of spot at its time of maximum size [radians].\n"
      "\t\"alphamax\" - Maximum angular size of spot [radians].\n"
      "\t\"fspot\" - Spot-to-star flux contrast.\n"
      "\t\"tmax\" - Reference time of maximum spot size [input lc time "
      "units].\n"
      "\t\"life\" - Lifetime of spot (FWHM) [input lc time units].\n"
      "\t\"ingress\" - ingress duration of spot [input lc time units].\n"
      "\t\"egress\" - egress duration of spot [input lc time units].\n"
      "For each parameter the user specifies the source for the initial value. "
      "This can either be the keyword \"fix\" followed by the value to use for "
      "all light curves, \"list\" to read the parameter from the light curve "
      "list (use the \"column\" keyword followed by a number to indicate the "
      "column number from the list to use, otherwise the next column in the "
      "list will be assumed), \"fixcolumn\" followed by the name or number of "
      "an output column from a previously executed command, or \"expr\" "
      "followed by an analytic expression. For each parameter the user can "
      "give the \"vary\" keyword which indicated that the parameter is to be "
      "varied in a fit. If not given, the parameter will be fixed in the fit. "
      "Following the parameters are number of optional keywords that control "
      "the behavior of the command. If the user gives the \"fluxinput\" "
      "command, then the light curve input into the command will be assumed to "
      "be in flux units, by default magnitudes are assumed. If the user gives "
      "the \"fluxoutput\" command, the output light curve and models will be "
      "in flux units, by default they are in magnitudes. The user may use the "
      "\"correctlc\" keyword to subtract the best-fit model from the light "
      "curve, the \"omodel\" keyword to output the model for each light curve, "
      "and the \"ocurve\" keyword to output a model curve file sampled at "
      "uniform spacing. If the \"omodel\" keyword is given, the user should "
      "specify the directory to output the model light curves to. By default "
      "the output light curve will have the name outdir/BASELC_NAME.macula "
      "where BASELC_Name is the basename of the input light curve. The user "
      "may, however, give the \"format\" keyword followed by a format string "
      "to specify arbitrary filenames. The syntax is the same as for the "
      "\"-o\" VARTOOLS command. If the \"tdelv\" keyword is given, then "
      "predicted transit depth variations will be included in the output "
      "model.  For \"ocurve\" the default output name is "
      "outdir/BASELC_NAME.maculacurve. In addition to the options available "
      "for \"omodel\", the user may also specify the time step size to use in "
      "generating the curve.\nAgain, if you use this routine, cite:\n\tKipping "
      "2012, arXiv:1209.2985.\n\n");
}


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

x86 assembly (clang, -O2):
<macula_ShowHelp>:
mov    %rdi,%rcx
lea    0xee6(%rip),%rdi
mov    $0xf23,%esi
mov    $0x1,%edx
jmp    1030 <fwrite@plt>

LLVM IR (-O0):
@.str = [3876 x i8] c"Fit or inject a Macula spot model [in]to the light curves. The reference for macula is \22Kipping 2012, arXiv:1209.2985\22, please be sure to cite this paper if you make use of Macula. The user must give either the \22inject\22 keyword or the \22fit\22 keyword to indicate whether the model should be injected into the light curve, or fitted to it. If fitting, give the \22amoeba\22 keyword to do downhill simplex fitting, or the \22lm\22 to use the Levenberg-Marquardt fitting algorithm. After that the user specifies how the initialize the parameters used by this model. The parameters include:\0A\09\22Prot\22 - the equatorial rotation period [input lc time units].\0A\09\22istar\22 - the inclination of the star [radians].\0A\09\22kappa2\22 - quadratic differential rotation coeff.\0A\09\22kappa4\22 - quartic differential rotation coeff.\0A\09\22c1\22 - 1st of four-coeff stellar LD terms.\0A\09\22c2\22 - 2nd of four-coeff stellar LD terms.\0A\09\22c3\22 - 3rd of four-coeff stellar LD terms.\0A\09\22c4\22 - 4th of four-coeff stellar LD terms.\0A\09\22d1\22 - 1st of four-coeff spot LD terms.\0A\09\22d2\22 - 2nd of four-coeff spot LD terms.\0A\09\22d3\22 - 3rd of four-coeff spot LD terms.\0A\09\22d4\22 - 4th of four-coeff spot LD terms.\0A\09\22blend\22 - blend parameter.\0AYou must specify the number of spots to use, with the parameter NSpot.\0AFor each spot, the following parameters are required:\0A\09\22Lambda0\22 - Longitude of spot at its time of maximum size [radians].\0A\09\22Phi0\22 - Latitude of spot at its time of maximum size [radians].\0A\09\22alphamax\22 - Maximum angular size of spot [radians].\0A\09\22fspot\22 - Spot-to-star flux contrast.\0A\09\22tmax\22 - Reference time of maximum spot size [input lc time units].\0A\09\22life\22 - Lifetime of spot (FWHM) [input lc time units].\0A\09\22ingress\22 - ingress duration of spot [input lc time units].\0A\09\22egress\22 - egress duration of spot [input lc time units].\0AFor each parameter the user specifies the source for the initial value. This can either be the keyword \22fix\22 followed by the value to use for all light curves, \22list\22 to read the parameter from the light curve list (use the \22column\22 keyword followed by a number to indicate the column number from the list to use, otherwise the next column in the list will be assumed), \22fixcolumn\22 followed by the name or number of an output column from a previously executed command, or \22expr\22 followed by an analytic expression. For each parameter the user can give the \22vary\22 keyword which indicated that the parameter is to be varied in a fit. If not given, the parameter will be fixed in the fit. Following the parameters are number of optional keywords that control the behavior of the command. If the user gives the \22fluxinput\22 command, then the light curve input into the command will be assumed to be in flux units, by default magnitudes are assumed. If the user gives the \22fluxoutput\22 command, the output light curve and models will be in flux units, by default they are in magnitudes. The user may use the \22correctlc\22 keyword to subtract the best-fit model from the light curve, the \22omodel\22 keyword to output the model for each light curve, and the \22ocurve\22 keyword to output a model curve file sampled at uniform spacing. If the \22omodel\22 keyword is given, the user should specify the directory to output the model light curves to. By default the output light curve will have the name outdir/BASELC_NAME.macula where BASELC_Name is the basename of the input light curve. The user may, however, give the \22format\22 keyword followed by a format string to specify arbitrary filenames. The syntax is the same as for the \22-o\22 VARTOOLS command. If the \22tdelv\22 keyword is given, then predicted transit depth variations will be included in the output model. For \22ocurve\22 the default output name is outdir/BASELC_NAME.maculacurve. In addition to the options available for \22omodel\22, the user may also specify the time step size to use in generating the curve.\0AAgain, if you use this routine, cite:\0A\09Kipping 2012, arXiv:1209.2985.\0A\0A\00"
define void @macula_ShowHelp(i32* %0) {
%2 = alloca i32*
store i32* %0, i32** %2
%3 = load i32*, i32** %2
%4 = call i32 @fprintf(i32* %3, i8* getelementptr inbounds ([3876 x i8], [3876 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [3876 x i8] c"Fit or inject a Macula spot model [in]to the light curves. The reference for macula is \22Kipping 2012, arXiv:1209.2985\22, please be sure to cite this paper if you make use of Macula. The user must give either the \22inject\22 keyword or the \22fit\22 keyword to indicate whether the model should be injected into the light curve, or fitted to it. If fitting, give the \22amoeba\22 keyword to do downhill simplex fitting, or the \22lm\22 to use the Levenberg-Marquardt fitting algorithm. After that the user specifies how the initialize the parameters used by this model. The parameters include:\0A\09\22Prot\22 - the equatorial rotation period [input lc time units].\0A\09\22istar\22 - the inclination of the star [radians].\0A\09\22kappa2\22 - quadratic differential rotation coeff.\0A\09\22kappa4\22 - quartic differential rotation coeff.\0A\09\22c1\22 - 1st of four-coeff stellar LD terms.\0A\09\22c2\22 - 2nd of four-coeff stellar LD terms.\0A\09\22c3\22 - 3rd of four-coeff stellar LD terms.\0A\09\22c4\22 - 4th of four-coeff stellar LD terms.\0A\09\22d1\22 - 1st of four-coeff spot LD terms.\0A\09\22d2\22 - 2nd of four-coeff spot LD terms.\0A\09\22d3\22 - 3rd of four-coeff spot LD terms.\0A\09\22d4\22 - 4th of four-coeff spot LD terms.\0A\09\22blend\22 - blend parameter.\0AYou must specify the number of spots to use, with the parameter NSpot.\0AFor each spot, the following parameters are required:\0A\09\22Lambda0\22 - Longitude of spot at its time of maximum size [radians].\0A\09\22Phi0\22 - Latitude of spot at its time of maximum size [radians].\0A\09\22alphamax\22 - Maximum angular size of spot [radians].\0A\09\22fspot\22 - Spot-to-star flux contrast.\0A\09\22tmax\22 - Reference time of maximum spot size [input lc time units].\0A\09\22life\22 - Lifetime of spot (FWHM) [input lc time units].\0A\09\22ingress\22 - ingress duration of spot [input lc time units].\0A\09\22egress\22 - egress duration of spot [input lc time units].\0AFor each parameter the user specifies the source for the initial value. This can either be the keyword \22fix\22 followed by the value to use for all light curves, \22list\22 to read the parameter from the light curve list (use the \22column\22 keyword followed by a number to indicate the column number from the list to use, otherwise the next column in the list will be assumed), \22fixcolumn\22 followed by the name or number of an output column from a previously executed command, or \22expr\22 followed by an analytic expression. For each parameter the user can give the \22vary\22 keyword which indicated that the parameter is to be varied in a fit. If not given, the parameter will be fixed in the fit. Following the parameters are number of optional keywords that control the behavior of the command. If the user gives the \22fluxinput\22 command, then the light curve input into the command will be assumed to be in flux units, by default magnitudes are assumed. If the user gives the \22fluxoutput\22 command, the output light curve and models will be in flux units, by default they are in magnitudes. The user may use the \22correctlc\22 keyword to subtract the best-fit model from the light curve, the \22omodel\22 keyword to output the model for each light curve, and the \22ocurve\22 keyword to output a model curve file sampled at uniform spacing. If the \22omodel\22 keyword is given, the user should specify the directory to output the model light curves to. By default the output light curve will have the name outdir/BASELC_NAME.macula where BASELC_Name is the basename of the input light curve. The user may, however, give the \22format\22 keyword followed by a format string to specify arbitrary filenames. The syntax is the same as for the \22-o\22 VARTOOLS command. If the \22tdelv\22 keyword is given, then predicted transit depth variations will be included in the output model. For \22ocurve\22 the default output name is outdir/BASELC_NAME.maculacurve. In addition to the options available for \22omodel\22, the user may also specify the time step size to use in generating the curve.\0AAgain, if you use this routine, cite:\0A\09Kipping 2012, arXiv:1209.2985.\0A\0A\00"
define void @macula_ShowHelp(i32* nocapture %0) {
%2 = tail call i64 @fwrite(i8* getelementptr inbounds ([3876 x i8], [3876 x i8]* @.str, i64 0, i64 0), i64 3875, i64 1, i32* %0)
ret void
}