#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 usage() {
  printf("NAME\n         fwt - decomposes an array of numbers into wavelet "
         "coefficients.\n");
  printf("\n \n SYNOPSIS\n         fwt [OPTION]... < [file]...\n ");
  printf(
      " DESCRIPTION\n         This software expects input in the form of ascii "
      "numbers with one, two, or three columns.\n         If one column then "
      "that column must be the series to to transform. If two columns then\n   "
      "      the first column is the index (such as time) and the second is "
      "the series (signal) to be transformed.\n         If three columns are "
      "supplied then the first column is the index, the second is the series "
      "(signal)\n         to be transformed, and the third column is the "
      "uncertainty. If only one or two columns are given\n         then the "
      "uncertainty is assumed to be the square root of the signal.\n         "
      "columns must be of length 2^m where m is a positive integer. The "
      "maximum size\n         of m depends on the machine running the code. It "
      "is the user's responsibility\n         to guarantee the length of the "
      "data. In any case the signal is assumed to be uniformly sampled.\n\n ");
  printf(
      " \n         Input is supplied in the form of pipes or redirection. This "
      "can be accomplished via:\n           cat INPUTFILE | fwt\n         or "
      "\n           fwt < INPUTFILE\n \n         Different wavelet filters can "
      "be chosen via command line options.\n \n           cat INPUTFILE | fwt "
      "-d2\n         or\n           cat INPUTFILE | fwt -c12 --offset 3\n ");
  printf("\n         If no wavelet filter is specified the default, -d2 (aka "
         "the Haar basis), is assumed.\n  \n         A positive offset to the "
         "signal may be specified by the --offset option or -o.\n          For "
         "example, if there were an array 1,2,3...7,8 and an offset of one "
         "were given\n         then the signal would be processed as "
         "8,1,2...6,7. This is useful when adjusting\n         the appearance "
         "of a scalogram. Any statistical measure which sums over position\n   "
         "      values in an octave will be insensitive to offset.\n \n ");
  printf("\n         The output of the code is also two column ascii data. The "
         "first column is \n         index information and the second column "
         "holds the transformed signal. \n ");
  printf(
      "\n OPTIONS\n         -d NUM, --daub=NUM Daubechies family of wavelet "
      "filters. NUM=2 gives the Haar filter. \n                            NUM "
      "determines wavelet support and can be 2, 4, 6.\n \n         -c NUM, "
      "--coif=NUM Coiflet family of wavelet filters. NUM determines wavelet "
      "support and \n                            can be 6, 12, or 18.\n \n ");
  printf("\n         -i, --inverse Does inverse of fwt. \n \n         -o NUM, "
         "--order=NUM Specifies offset of the signal. If offset is not "
         "specified a \n                             default value of zero is "
         "assumed. \n \n 	-g, --gaussian Bootstrap based on a gaussian "
         "probability distribution. The mean is zero and the width (sigma) \n "
         "	               is taken from the third column. If a third "
         "column isn't given then the width is assumed \n 		       "
         "to be the square root of the number of counts.\n 	 	       "
         "This option is incompatible with poisson bootstrap. \n \n 	-p, "
         "--poisson Bootstrap based on a poisson probability distribution "
         "(Knuth's The Art of Computer Programming, Vol. 2.)\n 		       "
         "The parameter lamda is taken from the third column. If a third "
         "column isn't given then the width \n 		       is assumed to "
         "be the square root of the number of counts.\n 	 	       "
         "This option is incompatible with gaussian bootstrap. \n \n AUTHOR\n  "
         "       Written by Glen Alan MacLachlan.\n ");
  printf(
      "\n REPORTING BUGS\n         Report bugs to <bindatype@gmail.com>\n \n "
      "COPYRIGHT\n        Copyright © 2010 Glen Alan MacLachlan.  License "
      "GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n "
      "       This is free software: you are free to change and redistribute "
      "it.  There is NO WARRANTY, to the extent permitted by law.\n \n "
      "REQUIREMENTS\n          gcc\n          make\n \n ");
  printf("\n COMPILING\n         To make the project type:\n           make\n "
         "\n         To clean the project, i.e., remove the objects and "
         "executable:\n           make clean\n ");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xf28(%rip),%rdi
call   1030 <printf@plt>
lea    0xf50(%rip),%rdi
call   1030 <printf@plt>
lea    0x12c2(%rip),%rdi
call   1030 <printf@plt>
lea    0x140c(%rip),%rdi
call   1030 <printf@plt>
lea    0x1607(%rip),%rdi
call   1030 <printf@plt>
lea    0x16a2(%rip),%rdi
call   1030 <printf@plt>
lea    0x17e9(%rip),%rdi
call   1030 <printf@plt>
lea    0x1ba0(%rip),%rdi
call   1030 <printf@plt>
lea    0x1d12(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0x1dc3(%rip),%rdi
call   1030 <puts@plt>
lea    0xecc(%rip),%rdi
call   1040 <printf@plt>
lea    0xef4(%rip),%rdi
call   1040 <printf@plt>
lea    0x1266(%rip),%rdi
call   1040 <printf@plt>
lea    0x13b0(%rip),%rdi
call   1040 <printf@plt>
lea    0x15ab(%rip),%rdi
call   1040 <printf@plt>
lea    0x1646(%rip),%rdi
call   1040 <printf@plt>
lea    0x178d(%rip),%rdi
call   1040 <printf@plt>
lea    0x1b44(%rip),%rdi
call   1040 <printf@plt>
lea    0x1cb6(%rip),%rdi
pop    %rax
jmp    1040 <printf@plt>

LLVM IR (-O0):
@.str = [79 x i8] c"NAME\0A fwt - decomposes an array of numbers into wavelet coefficients.\0A\00"
@.str.1 = [52 x i8] c"\0A \0A SYNOPSIS\0A fwt [OPTION]... < [file]...\0A \00"
@.str.2 = [894 x i8] c" DESCRIPTION\0A This software expects input in the form of ascii numbers with one, two, or three columns.\0A If one column then that column must be the series to to transform. If two columns then\0A the first column is the index (such as time) and the second is the series (signal) to be transformed.\0A If three columns are supplied then the first column is the index, the second is the series (signal)\0A to be transformed, and the third column is the uncertainty. If only one or two columns are given\0A then the uncertainty is assumed to be the square root of the signal.\0A columns must be of length 2^m where m is a positive integer. The maximum size\0A of m depends on the machine running the code. It is the user's responsibility\0A to guarantee the length of the data. In any case the signal is assumed to be uniformly sampled.\0A\0A \00"
@.str.3 = [342 x i8] c" \0A Input is supplied in the form of pipes or redirection. This can be accomplished via:\0A cat INPUTFILE | fwt\0A or \0A fwt < INPUTFILE\0A \0A Different wavelet filters can be chosen via command line options.\0A \0A cat INPUTFILE | fwt -d2\0A or\0A cat INPUTFILE | fwt -c12 --offset 3\0A \00"
@.str.4 = [519 x i8] c"\0A If no wavelet filter is specified the default, -d2 (aka the Haar basis), is assumed.\0A \0A A positive offset to the signal may be specified by the --offset option or -o.\0A For example, if there were an array 1,2,3...7,8 and an offset of one were given\0A then the signal would be processed as 8,1,2...6,7. This is useful when adjusting\0A the appearance of a scalogram. Any statistical measure which sums over position\0A values in an octave will be insensitive to offset.\0A \0A \00"
@.str.5 = [167 x i8] c"\0A The output of the code is also two column ascii data. The first column is \0A index information and the second column holds the transformed signal. \0A \00"
@.str.6 = [339 x i8] c"\0A OPTIONS\0A -d NUM, --daub=NUM Daubechies family of wavelet filters. NUM=2 gives the Haar filter. \0A NUM determines wavelet support and can be 2, 4, 6.\0A \0A -c NUM, --coif=NUM Coiflet family of wavelet filters. NUM determines wavelet support and \0A can be 6, 12, or 18.\0A \0A \00"
@.str.7 = [963 x i8] c"\0A -i, --inverse Does inverse of fwt. \0A \0A -o NUM, --order=NUM Specifies offset of the signal. If offset is not specified a \0A default value of zero is assumed. \0A \0A \09-g, --gaussian Bootstrap based on a gaussian probability distribution. The mean is zero and the width (sigma) \0A \09 is taken from the third column. If a third column isn't given then the width is assumed \0A \09\09 to be the square root of the number of counts.\0A \09 \09 This option is incompatible with poisson bootstrap. \0A \0A \09-p, --poisson Bootstrap based on a poisson probability distribution (Knuth's The Art of Computer Programming, Vol. 2.)\0A \09\09 The parameter lamda is taken from the third column. If a third column isn't given then the width \0A \09\09 is assumed to be the square root of the number of counts.\0A \09 \09 This option is incompatible with gaussian bootstrap. \0A \0A AUTHOR\0A Written by Glen Alan MacLachlan.\0A \00"
@.str.8 = [382 x i8] c"\0A REPORTING BUGS\0A Report bugs to <bindatype@gmail.com>\0A \0A COPYRIGHT\0A Copyright \C2\A9 2010 Glen Alan MacLachlan. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\0A This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.\0A \0A REQUIREMENTS\0A gcc\0A make\0A \0A \00"
@.str.9 = [161 x i8] c"\0A COMPILING\0A To make the project type:\0A make\0A \0A To clean the project, i.e., remove the objects and executable:\0A make clean\0A \00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([894 x i8], [894 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([342 x i8], [342 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([519 x i8], [519 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([167 x i8], [167 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([339 x i8], [339 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([963 x i8], [963 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([382 x i8], [382 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([161 x i8], [161 x i8]* @.str.9, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.1 = [52 x i8] c"\0A \0A SYNOPSIS\0A fwt [OPTION]... < [file]...\0A \00"
@.str.2 = [894 x i8] c" DESCRIPTION\0A This software expects input in the form of ascii numbers with one, two, or three columns.\0A If one column then that column must be the series to to transform. If two columns then\0A the first column is the index (such as time) and the second is the series (signal) to be transformed.\0A If three columns are supplied then the first column is the index, the second is the series (signal)\0A to be transformed, and the third column is the uncertainty. If only one or two columns are given\0A then the uncertainty is assumed to be the square root of the signal.\0A columns must be of length 2^m where m is a positive integer. The maximum size\0A of m depends on the machine running the code. It is the user's responsibility\0A to guarantee the length of the data. In any case the signal is assumed to be uniformly sampled.\0A\0A \00"
@.str.3 = [342 x i8] c" \0A Input is supplied in the form of pipes or redirection. This can be accomplished via:\0A cat INPUTFILE | fwt\0A or \0A fwt < INPUTFILE\0A \0A Different wavelet filters can be chosen via command line options.\0A \0A cat INPUTFILE | fwt -d2\0A or\0A cat INPUTFILE | fwt -c12 --offset 3\0A \00"
@.str.4 = [519 x i8] c"\0A If no wavelet filter is specified the default, -d2 (aka the Haar basis), is assumed.\0A \0A A positive offset to the signal may be specified by the --offset option or -o.\0A For example, if there were an array 1,2,3...7,8 and an offset of one were given\0A then the signal would be processed as 8,1,2...6,7. This is useful when adjusting\0A the appearance of a scalogram. Any statistical measure which sums over position\0A values in an octave will be insensitive to offset.\0A \0A \00"
@.str.5 = [167 x i8] c"\0A The output of the code is also two column ascii data. The first column is \0A index information and the second column holds the transformed signal. \0A \00"
@.str.6 = [339 x i8] c"\0A OPTIONS\0A -d NUM, --daub=NUM Daubechies family of wavelet filters. NUM=2 gives the Haar filter. \0A NUM determines wavelet support and can be 2, 4, 6.\0A \0A -c NUM, --coif=NUM Coiflet family of wavelet filters. NUM determines wavelet support and \0A can be 6, 12, or 18.\0A \0A \00"
@.str.7 = [963 x i8] c"\0A -i, --inverse Does inverse of fwt. \0A \0A -o NUM, --order=NUM Specifies offset of the signal. If offset is not specified a \0A default value of zero is assumed. \0A \0A \09-g, --gaussian Bootstrap based on a gaussian probability distribution. The mean is zero and the width (sigma) \0A \09 is taken from the third column. If a third column isn't given then the width is assumed \0A \09\09 to be the square root of the number of counts.\0A \09 \09 This option is incompatible with poisson bootstrap. \0A \0A \09-p, --poisson Bootstrap based on a poisson probability distribution (Knuth's The Art of Computer Programming, Vol. 2.)\0A \09\09 The parameter lamda is taken from the third column. If a third column isn't given then the width \0A \09\09 is assumed to be the square root of the number of counts.\0A \09 \09 This option is incompatible with gaussian bootstrap. \0A \0A AUTHOR\0A Written by Glen Alan MacLachlan.\0A \00"
@.str.8 = [382 x i8] c"\0A REPORTING BUGS\0A Report bugs to <bindatype@gmail.com>\0A \0A COPYRIGHT\0A Copyright \C2\A9 2010 Glen Alan MacLachlan. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\0A This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.\0A \0A REQUIREMENTS\0A gcc\0A make\0A \0A \00"
@.str.9 = [161 x i8] c"\0A COMPILING\0A To make the project type:\0A make\0A \0A To clean the project, i.e., remove the objects and executable:\0A make clean\0A \00"
@str = [78 x i8] c"NAME\0A fwt - decomposes an array of numbers into wavelet coefficients.\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([894 x i8], [894 x i8]* @.str.2, i64 0, i64 0))
%4 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([342 x i8], [342 x i8]* @.str.3, i64 0, i64 0))
%5 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([519 x i8], [519 x i8]* @.str.4, i64 0, i64 0))
%6 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([167 x i8], [167 x i8]* @.str.5, i64 0, i64 0))
%7 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([339 x i8], [339 x i8]* @.str.6, i64 0, i64 0))
%8 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([963 x i8], [963 x i8]* @.str.7, i64 0, i64 0))
%9 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([382 x i8], [382 x i8]* @.str.8, i64 0, i64 0))
%10 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([161 x i8], [161 x i8]* @.str.9, i64 0, i64 0))
ret void
}