#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 print_help() {
  printf("\nLorem Help\n");
  printf("version %s\n", ("0.4.2"));
  printf("------------------------\n\n");
  printf("Description: Create a user-specified number of dummy text paragraphs "
         "that you can write to a file, append to or insert at a specific "
         "replacement location in an existing file, or write to standard "
         "out.\n\n");
  printf("Usage: lorem [-abehinortsv] [<positional argument>]\n\n");
  printf("Options:\n");
  printf("\t-a : Append to a file rather than write to (or overwrite) a "
         "file.\n\t     Include the -o option with the existing file path.\n");
  printf(
      "\t-b : String or character to insert at the beginning of the "
      "paragraph.\n\t     Include the string as the argument & quotes around "
      "html tags.\n\t     Defaults to the end tag if not specified.\n");
  printf(
      "\t-e : String or character to insert at the end of the paragraph.\n\t   "
      "  Include the string as the argument & quotes around html tags\n\t     "
      "Defaults to the begin tag if not specified.\n");
  printf("\t-h : lorem help\n");
  printf("\t-i : Input file path for the file where text replacements take "
         "place.\n\t     Include the -r option and the delimiter <lorem> in "
         "the file\n\t     at the replacement site.\n");
  printf("\t-n : Number of text paragraphs.\n\t     Include a number after the "
         "option. Default = 1\n");
  printf("\t-o : Output file path.\n\t     Include a file path after the "
         "option. Default = \"lorem.txt\" \n");
  printf("\t-r : Insert text in an existing file.\n\t     Include the "
         "delimiter <lorem> in the file at the replacement site\n\t     and "
         "use the -i option with the input file path.\n");
  printf("\t-s : Write to standard out instead of to a file\n");
  printf("\t-t : Input file path for user-supplied text (to replace built-in "
         "lorem).\n\t     Include the file path to an existing file that "
         "includes the text.\n");
  printf("\t-v : lorem version\n");
  printf("\nNotes:\n");
  printf("To insert text at a specific location within a file, add the "
         "delimiter <lorem> at the replacement site.  lorem will insert the "
         "requested number of paragraphs at this location with a single "
         "newline character following each paragraph.\n");
  printf("\nUse quotes around arguments that include characters like \' \" < > "
         "etc. For instance, you should enter the html p tag with a class like "
         "this: \"<p class='theclass'>\". To include quotes, enter them like "
         "this: '\"'\n");
  printf(
      "\nIf you specify a beginning and end string to add to the paragraph(s), "
      "they will be inserted as entered with a newline character following the "
      "last character of the appended string.  If you indicate an insertion "
      "string for the beginning of the paragraph without specifying one for "
      "the end, the beginning tag will be added at the end as well.  If you "
      "specify only an insertion string for the end of the paragraph, then it "
      "will be inserted at the beginning as well.\n");
  printf(
      "\nThere is a one million paragraph limit on the amount of text that "
      "lorem generates.  This is ~447 MiB, ~1 million lines, & 69 million "
      "words of text. If you need more than that, use the -a option and append "
      "the remanining number (up to 1 million paragraphs with each append) to "
      "the existing file.  Include the -n option with the number of additional "
      "paragraphs that you would like to append and the -o option with the "
      "file path of the file to which you intend to append the lorem text.\n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee4(%rip),%rdi
lea    0xee9(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfd3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfcf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x103e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x10ec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1195(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1199(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1234(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x127d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x12cb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1363(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1387(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x140c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1413(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x140e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x14ea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x15af(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1772(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
lea    0xeea(%rip),%rdi
call   1030 <puts@plt>
lea    0xecc(%rip),%rdi
lea    0xed1(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xed5(%rip),%rdi
call   1030 <puts@plt>
lea    0xee3(%rip),%rdi
call   1030 <puts@plt>
lea    0xfa1(%rip),%rdi
call   1030 <puts@plt>
lea    0xfca(%rip),%rdi
call   1030 <puts@plt>
lea    0xfc7(%rip),%rdi
call   1030 <puts@plt>
lea    0x1037(%rip),%rdi
call   1030 <puts@plt>
lea    0x10e6(%rip),%rdi
call   1030 <puts@plt>
lea    0x1190(%rip),%rdi
call   1030 <puts@plt>
lea    0x1195(%rip),%rdi
call   1030 <puts@plt>
lea    0x1231(%rip),%rdi
call   1030 <puts@plt>
lea    0x127b(%rip),%rdi
call   1030 <puts@plt>
lea    0x12ca(%rip),%rdi
call   1030 <puts@plt>
lea    0x1363(%rip),%rdi
call   1030 <puts@plt>
lea    0x1388(%rip),%rdi
call   1030 <puts@plt>
lea    0x140e(%rip),%rdi
call   1030 <puts@plt>
lea    0x1416(%rip),%rdi
call   1030 <puts@plt>
lea    0x1412(%rip),%rdi
call   1030 <puts@plt>
lea    0x14ef(%rip),%rdi
call   1030 <puts@plt>
lea    0x15b5(%rip),%rdi
call   1030 <puts@plt>
lea    0x1779(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [13 x i8] c"\0ALorem Help\0A\00"
@.str.1 = [12 x i8] c"version %s\0A\00"
@.str.2 = [6 x i8] c"0.4.2\00"
@.str.3 = [27 x i8] c"------------------------\0A\0A\00"
@.str.4 = [203 x i8] c"Description: Create a user-specified number of dummy text paragraphs that you can write to a file, append to or insert at a specific replacement location in an existing file, or write to standard out.\0A\0A\00"
@.str.5 = [54 x i8] c"Usage: lorem [-abehinortsv] [<positional argument>]\0A\0A\00"
@.str.6 = [10 x i8] c"Options:\0A\00"
@.str.7 = [125 x i8] c"\09-a : Append to a file rather than write to (or overwrite) a file.\0A\09 Include the -o option with the existing file path.\0A\00"
@.str.8 = [188 x i8] c"\09-b : String or character to insert at the beginning of the paragraph.\0A\09 Include the string as the argument & quotes around html tags.\0A\09 Defaults to the end tag if not specified.\0A\00"
@.str.9 = [183 x i8] c"\09-e : String or character to insert at the end of the paragraph.\0A\09 Include the string as the argument & quotes around html tags\0A\09 Defaults to the begin tag if not specified.\0A\00"
@.str.10 = [18 x i8] c"\09-h : lorem help\0A\00"
@.str.11 = [169 x i8] c"\09-i : Input file path for the file where text replacements take place.\0A\09 Include the -r option and the delimiter <lorem> in the file\0A\09 at the replacement site.\0A\00"
@.str.12 = [87 x i8] c"\09-n : Number of text paragraphs.\0A\09 Include a number after the option. Default = 1\0A\00"
@.str.13 = [92 x i8] c"\09-o : Output file path.\0A\09 Include a file path after the option. Default = \22lorem.txt\22 \0A\00"
@.str.14 = [166 x i8] c"\09-r : Insert text in an existing file.\0A\09 Include the delimiter <lorem> in the file at the replacement site\0A\09 and use the -i option with the input file path.\0A\00"
@.str.15 = [50 x i8] c"\09-s : Write to standard out instead of to a file\0A\00"
@.str.16 = [147 x i8] c"\09-t : Input file path for user-supplied text (to replace built-in lorem).\0A\09 Include the file path to an existing file that includes the text.\0A\00"
@.str.17 = [21 x i8] c"\09-v : lorem version\0A\00"
@.str.18 = [9 x i8] c"\0ANotes:\0A\00"
@.str.19 = [234 x i8] c"To insert text at a specific location within a file, add the delimiter <lorem> at the replacement site. lorem will insert the requested number of paragraphs at this location with a single newline character following each paragraph.\0A\00"
@.str.20 = [211 x i8] c"\0AUse quotes around arguments that include characters like ' \22 < > etc. For instance, you should enter the html p tag with a class like this: \22<p class='theclass'>\22. To include quotes, enter them like this: '\22'\0A\00"
@.str.21 = [465 x i8] c"\0AIf you specify a beginning and end string to add to the paragraph(s), they will be inserted as entered with a newline character following the last character of the appended string. If you indicate an insertion string for the beginning of the paragraph without specifying one for the end, the beginning tag will be added at the end as well. If you specify only an insertion string for the end of the paragraph, then it will be inserted at the beginning as well.\0A\00"
@.str.22 = [486 x i8] c"\0AThere is a one million paragraph limit on the amount of text that lorem generates. This is ~447 MiB, ~1 million lines, & 69 million words of text. If you need more than that, use the -a option and append the remanining number (up to 1 million paragraphs with each append) to the existing file. Include the -n option with the number of additional paragraphs that you would like to append and the -o option with the file path of the file to which you intend to append the lorem text.\0A\00"
define void @print_help() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0))
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([203 x i8], [203 x i8]* @.str.4, i64 0, i64 0))
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.5, i64 0, i64 0))
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.6, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([125 x i8], [125 x i8]* @.str.7, i64 0, i64 0))
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([188 x i8], [188 x i8]* @.str.8, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([183 x i8], [183 x i8]* @.str.9, i64 0, i64 0))
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([169 x i8], [169 x i8]* @.str.11, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([87 x i8], [87 x i8]* @.str.12, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.13, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.14, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.15, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([147 x i8], [147 x i8]* @.str.16, i64 0, i64 0))
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([234 x i8], [234 x i8]* @.str.19, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([211 x i8], [211 x i8]* @.str.20, i64 0, i64 0))
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([465 x i8], [465 x i8]* @.str.21, i64 0, i64 0))
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([486 x i8], [486 x i8]* @.str.22, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.1 = [12 x i8] c"version %s\0A\00"
@.str.2 = [6 x i8] c"0.4.2\00"
@str = [12 x i8] c"\0ALorem Help\00"
@str.23 = [26 x i8] c"------------------------\0A\00"
@str.24 = [202 x i8] c"Description: Create a user-specified number of dummy text paragraphs that you can write to a file, append to or insert at a specific replacement location in an existing file, or write to standard out.\0A\00"
@str.25 = [53 x i8] c"Usage: lorem [-abehinortsv] [<positional argument>]\0A\00"
@str.26 = [9 x i8] c"Options:\00"
@str.27 = [124 x i8] c"\09-a : Append to a file rather than write to (or overwrite) a file.\0A\09 Include the -o option with the existing file path.\00"
@str.28 = [187 x i8] c"\09-b : String or character to insert at the beginning of the paragraph.\0A\09 Include the string as the argument & quotes around html tags.\0A\09 Defaults to the end tag if not specified.\00"
@str.29 = [182 x i8] c"\09-e : String or character to insert at the end of the paragraph.\0A\09 Include the string as the argument & quotes around html tags\0A\09 Defaults to the begin tag if not specified.\00"
@str.30 = [17 x i8] c"\09-h : lorem help\00"
@str.31 = [168 x i8] c"\09-i : Input file path for the file where text replacements take place.\0A\09 Include the -r option and the delimiter <lorem> in the file\0A\09 at the replacement site.\00"
@str.32 = [86 x i8] c"\09-n : Number of text paragraphs.\0A\09 Include a number after the option. Default = 1\00"
@str.33 = [91 x i8] c"\09-o : Output file path.\0A\09 Include a file path after the option. Default = \22lorem.txt\22 \00"
@str.34 = [165 x i8] c"\09-r : Insert text in an existing file.\0A\09 Include the delimiter <lorem> in the file at the replacement site\0A\09 and use the -i option with the input file path.\00"
@str.35 = [49 x i8] c"\09-s : Write to standard out instead of to a file\00"
@str.36 = [146 x i8] c"\09-t : Input file path for user-supplied text (to replace built-in lorem).\0A\09 Include the file path to an existing file that includes the text.\00"
@str.37 = [20 x i8] c"\09-v : lorem version\00"
@str.38 = [8 x i8] c"\0ANotes:\00"
@str.39 = [233 x i8] c"To insert text at a specific location within a file, add the delimiter <lorem> at the replacement site. lorem will insert the requested number of paragraphs at this location with a single newline character following each paragraph.\00"
@str.40 = [210 x i8] c"\0AUse quotes around arguments that include characters like ' \22 < > etc. For instance, you should enter the html p tag with a class like this: \22<p class='theclass'>\22. To include quotes, enter them like this: '\22'\00"
@str.41 = [464 x i8] c"\0AIf you specify a beginning and end string to add to the paragraph(s), they will be inserted as entered with a newline character following the last character of the appended string. If you indicate an insertion string for the beginning of the paragraph without specifying one for the end, the beginning tag will be added at the end as well. If you specify only an insertion string for the end of the paragraph, then it will be inserted at the beginning as well.\00"
@str.42 = [485 x i8] c"\0AThere is a one million paragraph limit on the amount of text that lorem generates. This is ~447 MiB, ~1 million lines, & 69 million words of text. If you need more than that, use the -a option and append the remanining number (up to 1 million paragraphs with each append) to the existing file. Include the -n option with the number of additional paragraphs that you would like to append and the -o option with the file path of the file to which you intend to append the lorem text.\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.23, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([202 x i8], [202 x i8]* @str.24, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.25, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.26, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([124 x i8], [124 x i8]* @str.27, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([187 x i8], [187 x i8]* @str.28, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([182 x i8], [182 x i8]* @str.29, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.30, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([168 x i8], [168 x i8]* @str.31, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([86 x i8], [86 x i8]* @str.32, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([91 x i8], [91 x i8]* @str.33, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([165 x i8], [165 x i8]* @str.34, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @str.35, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([146 x i8], [146 x i8]* @str.36, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.37, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @str.38, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([233 x i8], [233 x i8]* @str.39, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([210 x i8], [210 x i8]* @str.40, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([464 x i8], [464 x i8]* @str.41, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([485 x i8], [485 x i8]* @str.42, i64 0, i64 0))
ret void
}