#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 ftuneven_ShowHelp(FILE *outfile) {
  fprintf(
      outfile,
      "Compute the complex Fourier transform of a time series with arbitrary "
      "spacing using a method developed by Jeff Scargle with support from NASA "
      "grant NNX16AL02G. The routine will return both the real and imaginary "
      "components of the Fourier transform, together with the absolute square "
      "of the result which is equivalent to the Lomb-Scargle periodogram. NOTE "
      "INPUT AND OUTPUT FREQUENCIES ARE IN UNITS OF RADIANS PER UNIT TIME.\n"
      "The user must specify how these results will be returned. The following "
      "options are available:\n"
      "\n\t\"outputvectors\" - return the results in a set of light curve "
      "vectors\n"
      "\t\tthat can be used in subsequent vartools commands. The user\n"
      "\t\tmust give the names for the vectors storing the frequency,\n"
      "\t\tthe real component of the Fourier transform, the imaginary\n"
      "\t\tcomponent, and the Lomb-Scargle periodogram. Note that\n"
      "\t\tall light curve vectors will grow or shrink to match the\n"
      "\t\tsize of the Fourier Transform vectors. Other vectors like\n"
      "\t\tt, mag, or err may not be useful after if the Fourier\n"
      "\t\ttransform is a different length.\n"
      "\n\t\"outputfile\" - output the results to file. The user should "
      "specify\n"
      "\t\tthe directory to write the file to. By default the output file\n"
      "\t\twill have the name outdir/BASELC_NAME.ftuneven where\n"
      "\t\tBASELC_NAME is the basename of the input light curve.\n"
      "\t\tThe user may, however, give the \"nameformat\" keyword\n"
      "\t\tfollowed by a format string to specify arbitrary filenames.\n"
      "\t\tThe syntax is the same as for the \"-o\" VARTOOLS command.\n"
      "\n\t\"outputvectorsandfile\" - output the results to a file, and to a "
      "set\n"
      "\t\tof light curve vectors. First give the directory and possible\n"
      "\t\tnameformat as in the \"outputfile\" option, and then give\n"
      "\t\tthe list of vector names as in the \"outputvectors\" option.\n"
      "\nThe user must then specify how the frequencies will be calculated. "
      "Options are:\n"
      "\n\t\"freqauto\" - determine the frequencies automatically.\n"
      "\n\t\"freqrange\" - use a uniformly spaced frequency grid with a "
      "specified\n"
      "\t\trange and stepsize. Give the \"minfreq\", \"maxfreq\" and\n"
      "\t\t\"freqstep\" parameters, in each case following standard\n"
      "\t\tvartools syntax to indicate how the parameter should be set.\n"
      "\n\t\"freqvariable\" - use an existing light curve vector for the\n"
      "\t\tfrequencies. The user must give the name of the vector storing.\n"
      "\t\tthe frequencies.\n"
      "\n\t\"freqfile\" - read the frequencies from a file specified by the "
      "user.\n"
      "\t\tThe file should be in white-space-delimited ascii format,\n"
      "\t\twith the frequencies given in the first column of the file.\n"
      "\t\tThe frequenceis read from this file will be used for all light\n"
      "\t\tcurves processed.\n"
      "\nThe user may set two optional parameters as well. These include "
      "\"ft_sign\", the sign of the Fourier transform. The default is -1 "
      "corresponding to a forward transform, but the user may change it +1 to "
      "carry out an inverse transform. The other parameter is \"tt_zero\", "
      "which is the origin of time for the transform. The default value is 0.\n"
      "\nBy default the routine will apply the Fourier Transform to the data "
      "stored in the mag vector evaluated at time t. You can optionally use "
      "the \"changeinputvectors\" keyword to specify a different vector to use "
      "for t, and vectors to use for the real and imaginary components of the "
      "input data to be transformed. By using this option, together with the "
      "ft_sign option, you can perform an inverse Fourier transform to convert "
      "frequency-domain data back into time-domain data.\n"
      "\nIf you use this routine please cite Scargle, 1989, 343, 874\n");
}


x86 assembly (clang, -O0):
<ftuneven_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):
<ftuneven_ShowHelp>:
mov    %rdi,%rcx
lea    0xee6(%rip),%rdi
mov    $0xd3f,%esi
mov    $0x1,%edx
jmp    1030 <fwrite@plt>

LLVM IR (-O0):
@.str = [3392 x i8] c"Compute the complex Fourier transform of a time series with arbitrary spacing using a method developed by Jeff Scargle with support from NASA grant NNX16AL02G. The routine will return both the real and imaginary components of the Fourier transform, together with the absolute square of the result which is equivalent to the Lomb-Scargle periodogram. NOTE INPUT AND OUTPUT FREQUENCIES ARE IN UNITS OF RADIANS PER UNIT TIME.\0AThe user must specify how these results will be returned. The following options are available:\0A\0A\09\22outputvectors\22 - return the results in a set of light curve vectors\0A\09\09that can be used in subsequent vartools commands. The user\0A\09\09must give the names for the vectors storing the frequency,\0A\09\09the real component of the Fourier transform, the imaginary\0A\09\09component, and the Lomb-Scargle periodogram. Note that\0A\09\09all light curve vectors will grow or shrink to match the\0A\09\09size of the Fourier Transform vectors. Other vectors like\0A\09\09t, mag, or err may not be useful after if the Fourier\0A\09\09transform is a different length.\0A\0A\09\22outputfile\22 - output the results to file. The user should specify\0A\09\09the directory to write the file to. By default the output file\0A\09\09will have the name outdir/BASELC_NAME.ftuneven where\0A\09\09BASELC_NAME is the basename of the input light curve.\0A\09\09The user may, however, give the \22nameformat\22 keyword\0A\09\09followed by a format string to specify arbitrary filenames.\0A\09\09The syntax is the same as for the \22-o\22 VARTOOLS command.\0A\0A\09\22outputvectorsandfile\22 - output the results to a file, and to a set\0A\09\09of light curve vectors. First give the directory and possible\0A\09\09nameformat as in the \22outputfile\22 option, and then give\0A\09\09the list of vector names as in the \22outputvectors\22 option.\0A\0AThe user must then specify how the frequencies will be calculated. Options are:\0A\0A\09\22freqauto\22 - determine the frequencies automatically.\0A\0A\09\22freqrange\22 - use a uniformly spaced frequency grid with a specified\0A\09\09range and stepsize. Give the \22minfreq\22, \22maxfreq\22 and\0A\09\09\22freqstep\22 parameters, in each case following standard\0A\09\09vartools syntax to indicate how the parameter should be set.\0A\0A\09\22freqvariable\22 - use an existing light curve vector for the\0A\09\09frequencies. The user must give the name of the vector storing.\0A\09\09the frequencies.\0A\0A\09\22freqfile\22 - read the frequencies from a file specified by the user.\0A\09\09The file should be in white-space-delimited ascii format,\0A\09\09with the frequencies given in the first column of the file.\0A\09\09The frequenceis read from this file will be used for all light\0A\09\09curves processed.\0A\0AThe user may set two optional parameters as well. These include \22ft_sign\22, the sign of the Fourier transform. The default is -1 corresponding to a forward transform, but the user may change it +1 to carry out an inverse transform. The other parameter is \22tt_zero\22, which is the origin of time for the transform. The default value is 0.\0A\0ABy default the routine will apply the Fourier Transform to the data stored in the mag vector evaluated at time t. You can optionally use the \22changeinputvectors\22 keyword to specify a different vector to use for t, and vectors to use for the real and imaginary components of the input data to be transformed. By using this option, together with the ft_sign option, you can perform an inverse Fourier transform to convert frequency-domain data back into time-domain data.\0A\0AIf you use this routine please cite Scargle, 1989, 343, 874\0A\00"
define void @ftuneven_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 ([3392 x i8], [3392 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [3392 x i8] c"Compute the complex Fourier transform of a time series with arbitrary spacing using a method developed by Jeff Scargle with support from NASA grant NNX16AL02G. The routine will return both the real and imaginary components of the Fourier transform, together with the absolute square of the result which is equivalent to the Lomb-Scargle periodogram. NOTE INPUT AND OUTPUT FREQUENCIES ARE IN UNITS OF RADIANS PER UNIT TIME.\0AThe user must specify how these results will be returned. The following options are available:\0A\0A\09\22outputvectors\22 - return the results in a set of light curve vectors\0A\09\09that can be used in subsequent vartools commands. The user\0A\09\09must give the names for the vectors storing the frequency,\0A\09\09the real component of the Fourier transform, the imaginary\0A\09\09component, and the Lomb-Scargle periodogram. Note that\0A\09\09all light curve vectors will grow or shrink to match the\0A\09\09size of the Fourier Transform vectors. Other vectors like\0A\09\09t, mag, or err may not be useful after if the Fourier\0A\09\09transform is a different length.\0A\0A\09\22outputfile\22 - output the results to file. The user should specify\0A\09\09the directory to write the file to. By default the output file\0A\09\09will have the name outdir/BASELC_NAME.ftuneven where\0A\09\09BASELC_NAME is the basename of the input light curve.\0A\09\09The user may, however, give the \22nameformat\22 keyword\0A\09\09followed by a format string to specify arbitrary filenames.\0A\09\09The syntax is the same as for the \22-o\22 VARTOOLS command.\0A\0A\09\22outputvectorsandfile\22 - output the results to a file, and to a set\0A\09\09of light curve vectors. First give the directory and possible\0A\09\09nameformat as in the \22outputfile\22 option, and then give\0A\09\09the list of vector names as in the \22outputvectors\22 option.\0A\0AThe user must then specify how the frequencies will be calculated. Options are:\0A\0A\09\22freqauto\22 - determine the frequencies automatically.\0A\0A\09\22freqrange\22 - use a uniformly spaced frequency grid with a specified\0A\09\09range and stepsize. Give the \22minfreq\22, \22maxfreq\22 and\0A\09\09\22freqstep\22 parameters, in each case following standard\0A\09\09vartools syntax to indicate how the parameter should be set.\0A\0A\09\22freqvariable\22 - use an existing light curve vector for the\0A\09\09frequencies. The user must give the name of the vector storing.\0A\09\09the frequencies.\0A\0A\09\22freqfile\22 - read the frequencies from a file specified by the user.\0A\09\09The file should be in white-space-delimited ascii format,\0A\09\09with the frequencies given in the first column of the file.\0A\09\09The frequenceis read from this file will be used for all light\0A\09\09curves processed.\0A\0AThe user may set two optional parameters as well. These include \22ft_sign\22, the sign of the Fourier transform. The default is -1 corresponding to a forward transform, but the user may change it +1 to carry out an inverse transform. The other parameter is \22tt_zero\22, which is the origin of time for the transform. The default value is 0.\0A\0ABy default the routine will apply the Fourier Transform to the data stored in the mag vector evaluated at time t. You can optionally use the \22changeinputvectors\22 keyword to specify a different vector to use for t, and vectors to use for the real and imaginary components of the input data to be transformed. By using this option, together with the ft_sign option, you can perform an inverse Fourier transform to convert frequency-domain data back into time-domain data.\0A\0AIf you use this routine please cite Scargle, 1989, 343, 874\0A\00"
define void @ftuneven_ShowHelp(i32* nocapture %0) {
%2 = tail call i64 @fwrite(i8* getelementptr inbounds ([3392 x i8], [3392 x i8]* @.str, i64 0, i64 0), i64 3391, i64 1, i32* %0)
ret void
}