#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*/ puts(char *);
void showHelp() {
  puts("Raw image data to PNG converter\n"
       "There are two ways to specify a file the first is to simply specify a "
       "file\n"
       "Using the -f argument you can specify a file that you want to convert\n"
       "Another option that you have is to have files that start with a number "
       "and end in .RAW\n"
       "This program will count from 0 and convert those images and keep going "
       "until fopen fails\n"
       "You can also convert just one numbered image with the -n argument\n"
       "-n x replace x with the image number you want to convert\n"
       "-h or --help shows the message that you are viewing right now\n"
       "-o x replace x with a real positive integer that is less than the "
       "filesize of the image in which you are opening\n"
       "This skips x number of bytes\n"
       "-a x replace x with the amount of frames that you wish to average\n"
       "Don't use this if you don't want to average frames\n"
       "-c picks which algorithm you would like to use.\n"
       "You can specify either 'y', 'ya', 'd', 'dq', 'dn', 'dl' but without "
       "the quotes and commas\n"
       "y means yuv422 conversion\n"
       "r means rgb565\n"
       "dq means to generate quarter resolution from bayer data but it does "
       "not do any interpolation instead it takes the 4 one color pixels and "
       "makes one. The two greens are averaged.\n"
       "dn means use nearest neighbor demosaicing instead of bilinear\n"
       "d (default) is a higher quality demosaicing algorithm based on\n"
       "https://research.microsoft.com/en-us/um/people/lhe/papers/"
       "icassp04.demosaicing.pdf\n"
       "dl is simple bilinear demosaicing\n"
       "da is adaptive demoasicing based on method by Hamilton and Adams\n"
       "-w specifies width (defaults to 640)\n"
       "-H specifies height (defaults to 480)\n"
       "-sq square root curves the image\n"
       "(This makes the image brighter without too much clipping)\n"
       "using this formula sqrt(255.0)*sqrt(x)"
       "-s sine curves the image using this formula\n"
       "(int)floor((sin((double)x/(255.0/PI*2.075))*255.0)+0.5)\n"
       "-sq and -s can be combined");
}


x86 assembly (clang, -O0):
<showHelp>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <puts@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<showHelp>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1791 x i8] c"Raw image data to PNG converter\0AThere are two ways to specify a file the first is to simply specify a file\0AUsing the -f argument you can specify a file that you want to convert\0AAnother option that you have is to have files that start with a number and end in .RAW\0AThis program will count from 0 and convert those images and keep going until fopen fails\0AYou can also convert just one numbered image with the -n argument\0A-n x replace x with the image number you want to convert\0A-h or --help shows the message that you are viewing right now\0A-o x replace x with a real positive integer that is less than the filesize of the image in which you are opening\0AThis skips x number of bytes\0A-a x replace x with the amount of frames that you wish to average\0ADon't use this if you don't want to average frames\0A-c picks which algorithm you would like to use.\0AYou can specify either 'y', 'ya', 'd', 'dq', 'dn', 'dl' but without the quotes and commas\0Ay means yuv422 conversion\0Ar means rgb565\0Adq means to generate quarter resolution from bayer data but it does not do any interpolation instead it takes the 4 one color pixels and makes one. The two greens are averaged.\0Adn means use nearest neighbor demosaicing instead of bilinear\0Ad (default) is a higher quality demosaicing algorithm based on\0Ahttps://research.microsoft.com/en-us/um/people/lhe/papers/icassp04.demosaicing.pdf\0Adl is simple bilinear demosaicing\0Ada is adaptive demoasicing based on method by Hamilton and Adams\0A-w specifies width (defaults to 640)\0A-H specifies height (defaults to 480)\0A-sq square root curves the image\0A(This makes the image brighter without too much clipping)\0Ausing this formula sqrt(255.0)*sqrt(x)-s sine curves the image using this formula\0A(int)floor((sin((double)x/(255.0/PI*2.075))*255.0)+0.5)\0A-sq and -s can be combined\00"
define void @showHelp() {
%1 = call i32 @puts(i8* getelementptr inbounds ([1791 x i8], [1791 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [1791 x i8] c"Raw image data to PNG converter\0AThere are two ways to specify a file the first is to simply specify a file\0AUsing the -f argument you can specify a file that you want to convert\0AAnother option that you have is to have files that start with a number and end in .RAW\0AThis program will count from 0 and convert those images and keep going until fopen fails\0AYou can also convert just one numbered image with the -n argument\0A-n x replace x with the image number you want to convert\0A-h or --help shows the message that you are viewing right now\0A-o x replace x with a real positive integer that is less than the filesize of the image in which you are opening\0AThis skips x number of bytes\0A-a x replace x with the amount of frames that you wish to average\0ADon't use this if you don't want to average frames\0A-c picks which algorithm you would like to use.\0AYou can specify either 'y', 'ya', 'd', 'dq', 'dn', 'dl' but without the quotes and commas\0Ay means yuv422 conversion\0Ar means rgb565\0Adq means to generate quarter resolution from bayer data but it does not do any interpolation instead it takes the 4 one color pixels and makes one. The two greens are averaged.\0Adn means use nearest neighbor demosaicing instead of bilinear\0Ad (default) is a higher quality demosaicing algorithm based on\0Ahttps://research.microsoft.com/en-us/um/people/lhe/papers/icassp04.demosaicing.pdf\0Adl is simple bilinear demosaicing\0Ada is adaptive demoasicing based on method by Hamilton and Adams\0A-w specifies width (defaults to 640)\0A-H specifies height (defaults to 480)\0A-sq square root curves the image\0A(This makes the image brighter without too much clipping)\0Ausing this formula sqrt(255.0)*sqrt(x)-s sine curves the image using this formula\0A(int)floor((sin((double)x/(255.0/PI*2.075))*255.0)+0.5)\0A-sq and -s can be combined\00"
define void @showHelp() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1791 x i8], [1791 x i8]* @.str, i64 0, i64 0))
ret void
}