#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 editor_help(void) {
  printf(".c - Clears text editor buffer\n"
         ".f - Formats text editor buffer with indents on paragraphs "
         "(preserves line breaks)\n"
         ".sp - spell checks text editor buffer\n"
         ".s(?) - searches text editor buffer for strings matching query "
         "(possibly moves to the string?)\n"
         ".r <parameter1> <parameter2> - replaces 1 occurance of parameter1 "
         "string with parameter2 string.\n"
         ".rf - replaces all occurances of parameter1 string with parameter2 "
         "string.\n"
         ".i <parameter1> <parameter2> - searches for parameter1 and inserts "
         "parameter2 before it.\n"
         ".d <parameter1> - deletes the string specified in parameter 1\n"
         ".n - turns on line numbers\n"
         ".dl# - deletes a line specified by number\n"
         ".l# - skips to the line specified by number\n"
         ".p - prints contents\n"
         ".q - exits without saving changes\n"
         ".qs - saves changes and exits text editor\n"
         ".a<#> - Appends a new line at #. If no # is specified, adds new line "
         "to end.\n"
         ".h - help\n"
         ".t <line1> <line2> - copy/pastes an existing line to the specified "
         "line.\n");
}


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

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

LLVM IR (-O0):
@.str = [941 x i8] c".c - Clears text editor buffer\0A.f - Formats text editor buffer with indents on paragraphs (preserves line breaks)\0A.sp - spell checks text editor buffer\0A.s(?) - searches text editor buffer for strings matching query (possibly moves to the string?)\0A.r <parameter1> <parameter2> - replaces 1 occurance of parameter1 string with parameter2 string.\0A.rf - replaces all occurances of parameter1 string with parameter2 string.\0A.i <parameter1> <parameter2> - searches for parameter1 and inserts parameter2 before it.\0A.d <parameter1> - deletes the string specified in parameter 1\0A.n - turns on line numbers\0A.dl# - deletes a line specified by number\0A.l# - skips to the line specified by number\0A.p - prints contents\0A.q - exits without saving changes\0A.qs - saves changes and exits text editor\0A.a<#> - Appends a new line at #. If no # is specified, adds new line to end.\0A.h - help\0A.t <line1> <line2> - copy/pastes an existing line to the specified line.\0A\00"
define void @editor_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([941 x i8], [941 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [940 x i8] c".c - Clears text editor buffer\0A.f - Formats text editor buffer with indents on paragraphs (preserves line breaks)\0A.sp - spell checks text editor buffer\0A.s(?) - searches text editor buffer for strings matching query (possibly moves to the string?)\0A.r <parameter1> <parameter2> - replaces 1 occurance of parameter1 string with parameter2 string.\0A.rf - replaces all occurances of parameter1 string with parameter2 string.\0A.i <parameter1> <parameter2> - searches for parameter1 and inserts parameter2 before it.\0A.d <parameter1> - deletes the string specified in parameter 1\0A.n - turns on line numbers\0A.dl# - deletes a line specified by number\0A.l# - skips to the line specified by number\0A.p - prints contents\0A.q - exits without saving changes\0A.qs - saves changes and exits text editor\0A.a<#> - Appends a new line at #. If no # is specified, adds new line to end.\0A.h - help\0A.t <line1> <line2> - copy/pastes an existing line to the specified line.\00"
define void @editor_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([940 x i8], [940 x i8]* @str, i64 0, i64 0))
ret void
}