#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 *, char *);
void printhelp(void) {
  char help[] =
      "\n\n          __________   ___            _____    ___________   "
      "__________\n         /  ____   /  /  /          /  ___  \\  \\____   "
      "___\\  \\   ______\\\n        /  /___/  /  /  /          /  /___\\  \\  "
      "    \\  \\      \\  \\_____\n       /  _______/  /  /          /  "
      "_______  \\      \\  \\      \\   ____\\\n      /  /         /  "
      "/_______   /  /       \\  \\      \\  \\      \\  \\______\n     /__/   "
      "      /__________/  /__/         \\__\\      \\__\\      "
      "\\________\\\n\nPlate is a UNIX program which provides a file "
      "containing a simple template for a requested programming language, "
      "shell script, makefile, or LaTeX file structure.\n\nTo use Plate, "
      "simply provide the following command to the terminal:\n\n\tplate "
      "language filename\n\nPlate can handle creating multiple simply by "
      "adding more arguments to the input command.\n\nFor example:\n\n\tplate "
      "language file1 file2 ...\n\nFile names containing multiple words are "
      "handled by simply placing a set of quotation marks around the file name "
      "argument.\n\nSupported languages: (beside each language name is the "
      "accompanying argument to supply to plate. C/h is a C file with "
      "accompanying .h file. C++/h is a C++ file with accompanying .h "
      "file)\nText         txt\nC             c\nC++           c++\n.h         "
      "   h\nC/h           ch\nC++/h         c++h\nGoogle Go     go\nHaskell   "
      "    haskell\nProlog        prolog\nPython        python\nJavascript    "
      "javascript\nCoffeeScript  coffeescript\nHTML          html\nHTML/script "
      "  htmlscript\nCSS           css\nRuby          ruby\nJQuery        "
      "jquery\nPHP           php\nScala         scala\nErlang        "
      "erlang\nML            ml\n\nA number of scripts are also available:\nsh "
      "           sh\nbash          bash\nksh           ksh\nzsh           "
      "zsh\ncsh           csh\nPERL script   perls\nNode script   "
      "nodescript\nPython Script pythonscript\nscala script  "
      "scalascript\n\nSimple Makefiles of the following types are also "
      "available:\n\nC makefile          cmake\nC++ makefile        c++make\nc "
      "w/ .h and make    chmake\nc++ w/ .h and make  c++hmake\n\nThe following "
      "project templates are also available:\n\nC project:          cproj\n\n";
  printf("%s", help);
}


x86 assembly (clang, -O0):
<printhelp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x800,%rsp
lea    -0x800(%rbp),%rdi
lea    0xec7(%rip),%rsi
mov    $0x7ff,%edx
call   1040 <memcpy@plt>
lea    -0x800(%rbp),%rsi
lea    0x16ae(%rip),%rdi
call   1030 <printf@plt>
add    $0x800,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printhelp>:
push   %rbx
sub    $0x800,%rsp
lea    0xed1(%rip),%rsi
mov    %rsp,%rbx
mov    $0x7ff,%edx
mov    %rbx,%rdi
call   1040 <memcpy@plt>
lea    0x16b9(%rip),%rdi
mov    %rbx,%rsi
call   1030 <printf@plt>
add    $0x800,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@__const.printhelp.help = [2047 x i8] c"\0A\0A __________ ___ _____ ___________ __________\0A / ____ / / / / ___ \\ \\____ ___\\ \\ ______\\\0A / /___/ / / / / /___\\ \\ \\ \\ \\ \\_____\0A / _______/ / / / _______ \\ \\ \\ \\ ____\\\0A / / / /_______ / / \\ \\ \\ \\ \\ \\______\0A /__/ /__________/ /__/ \\__\\ \\__\\ \\________\\\0A\0APlate is a UNIX program which provides a file containing a simple template for a requested programming language, shell script, makefile, or LaTeX file structure.\0A\0ATo use Plate, simply provide the following command to the terminal:\0A\0A\09plate language filename\0A\0APlate can handle creating multiple simply by adding more arguments to the input command.\0A\0AFor example:\0A\0A\09plate language file1 file2 ...\0A\0AFile names containing multiple words are handled by simply placing a set of quotation marks around the file name argument.\0A\0ASupported languages: (beside each language name is the accompanying argument to supply to plate. C/h is a C file with accompanying .h file. C++/h is a C++ file with accompanying .h file)\0AText txt\0AC c\0AC++ c++\0A.h h\0AC/h ch\0AC++/h c++h\0AGoogle Go go\0AHaskell haskell\0AProlog prolog\0APython python\0AJavascript javascript\0ACoffeeScript coffeescript\0AHTML html\0AHTML/script htmlscript\0ACSS css\0ARuby ruby\0AJQuery jquery\0APHP php\0AScala scala\0AErlang erlang\0AML ml\0A\0AA number of scripts are also available:\0Ash sh\0Abash bash\0Aksh ksh\0Azsh zsh\0Acsh csh\0APERL script perls\0ANode script nodescript\0APython Script pythonscript\0Ascala script scalascript\0A\0ASimple Makefiles of the following types are also available:\0A\0AC makefile cmake\0AC++ makefile c++make\0Ac w/ .h and make chmake\0Ac++ w/ .h and make c++hmake\0A\0AThe following project templates are also available:\0A\0AC project: cproj\0A\0A\00"
@.str = [3 x i8] c"%s\00"
define void @printhelp() {
%1 = alloca [2047 x i8]
%2 = bitcast [2047 x i8]* %1 to i8*
%3 = getelementptr inbounds [2047 x i8], [2047 x i8]* %1, i64 0, i64 0
%4 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@__const.printhelp.help = [2047 x i8] c"\0A\0A __________ ___ _____ ___________ __________\0A / ____ / / / / ___ \\ \\____ ___\\ \\ ______\\\0A / /___/ / / / / /___\\ \\ \\ \\ \\ \\_____\0A / _______/ / / / _______ \\ \\ \\ \\ ____\\\0A / / / /_______ / / \\ \\ \\ \\ \\ \\______\0A /__/ /__________/ /__/ \\__\\ \\__\\ \\________\\\0A\0APlate is a UNIX program which provides a file containing a simple template for a requested programming language, shell script, makefile, or LaTeX file structure.\0A\0ATo use Plate, simply provide the following command to the terminal:\0A\0A\09plate language filename\0A\0APlate can handle creating multiple simply by adding more arguments to the input command.\0A\0AFor example:\0A\0A\09plate language file1 file2 ...\0A\0AFile names containing multiple words are handled by simply placing a set of quotation marks around the file name argument.\0A\0ASupported languages: (beside each language name is the accompanying argument to supply to plate. C/h is a C file with accompanying .h file. C++/h is a C++ file with accompanying .h file)\0AText txt\0AC c\0AC++ c++\0A.h h\0AC/h ch\0AC++/h c++h\0AGoogle Go go\0AHaskell haskell\0AProlog prolog\0APython python\0AJavascript javascript\0ACoffeeScript coffeescript\0AHTML html\0AHTML/script htmlscript\0ACSS css\0ARuby ruby\0AJQuery jquery\0APHP php\0AScala scala\0AErlang erlang\0AML ml\0A\0AA number of scripts are also available:\0Ash sh\0Abash bash\0Aksh ksh\0Azsh zsh\0Acsh csh\0APERL script perls\0ANode script nodescript\0APython Script pythonscript\0Ascala script scalascript\0A\0ASimple Makefiles of the following types are also available:\0A\0AC makefile cmake\0AC++ makefile c++make\0Ac w/ .h and make chmake\0Ac++ w/ .h and make c++hmake\0A\0AThe following project templates are also available:\0A\0AC project: cproj\0A\0A\00"
@.str = [3 x i8] c"%s\00"
define void @printhelp() {
%1 = alloca [2047 x i8]
%2 = getelementptr inbounds [2047 x i8], [2047 x i8]* %1, i64 0, i64 0
%3 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %2)
ret void
}