#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*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ puts(char *);
int helpInfo(char *prog) {
  puts("Usage:");
  printf("1) %s -m maxED [-lepsfi] [-awy] file_A  string  file_B  [file_C]\n",
         prog);
  puts("   ");
  puts(
      "   Computes generalized edit distances between <string> and strings in");
  puts("   <file_B>. Outputs all strings which have distance <= maxED;");
  puts("   ");
  puts("  -m maxED       - maximum edit distance;");
  puts("  file_A         - file where the additional edit operations could be "
       "found;");
  puts("  string         - a string to search for;");
  puts("  file_B         - file from where to search for matches with given "
       "string;");
  puts("  file_C         - file containing upper-to-lower case translations, "
       "to ignore");
  puts("                   case during match finding (Non-mandatory "
       "argument);\n");
  printf("2) %s -b N [-p|s|f|i] [-e] file_A  string  file_B  [file_C]\n", prog);
  puts("   ");
  puts(
      "   Computes generalized edit distances between <string> and strings in");
  puts("   <file_B>. Outputs top N strings closest to the search string. The "
       "number");
  puts("   N is allowed to be exceeded when there are equal-distance strings "
       "for");
  puts("   the last place in top.");
  puts("   ");
  puts("  -b N           - number of strings with best edit distances to be "
       "displayed;");
  puts("  file_A         - file where the additional edit operations could be "
       "found;");
  puts("  string         - a string to search for;");
  puts("  file_B         - file from where to search for matches with given "
       "string;");
  puts("  file_C         - file containing upper-to-lower case translations, "
       "to ignore");
  puts("                   case during match finding (Non-mandatory "
       "argument);\n");
  printf("Optional flags:\n");
  puts("  -f  finds edit distance between full extent strings (default);");
  puts("  -s  finds edit distance between search string and some suffix of "
       "text;");
  puts("  -p  finds edit distance between search string and some prefix of "
       "text;");
  puts("  -i  finds edit distance between search string and some infix of "
       "text;");
  puts("  -l  prints line number before found match (can be used only with "
       "'-m');");
  puts("  -e  allows to mark unchangable areas in <string>. Example markings:");
  puts("");
  puts("    (ab)cde(f)) = the prefix 'ab' can't be modified by regular edit "
       "dist");
  puts("                  the suffix 'f' can't be modified by regular edit "
       "dist");
  puts("                  after the suffix 'f', regular edit dist ADD can't be "
       "applied");
  puts("");
  puts("    <ab>cdef    = the prefix 'ab' can't be modified either with "
       "regular edit");
  puts("                  distance nor with generalized edit distance.");
  puts("");
  puts("  -a  prints alignments between the search string and each full "
       "distant match");
  puts("      Can only be used with flag '-m',  when  flags '-e', '-i', '-s', "
       "'-p'");
  puts("      are not set. Has the following suboptions: ");
  puts("        -y  Uses pretty-printing;");
  puts("        -w  Prints weights of transformations;");
  puts("");
  exit(0);
}


x86 assembly (clang, -O0):
<helpInfo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xebd(%rip),%rdi
call   1030 <puts@plt>
mov    -0x8(%rbp),%rsi
lea    0xeb4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xee0(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1b(%rip),%rdi
call   1030 <puts@plt>
lea    0xec4(%rip),%rdi
call   1030 <puts@plt>
lea    0xf42(%rip),%rdi
call   1030 <puts@plt>
lea    0xf60(%rip),%rdi
call   1030 <puts@plt>
lea    0xfa1(%rip),%rdi
call   1030 <puts@plt>
lea    0xfc0(%rip),%rdi
call   1030 <puts@plt>
lea    0x1000(%rip),%rdi
call   1030 <puts@plt>
lea    0x1043(%rip),%rdi
call   1030 <puts@plt>
mov    -0x8(%rbp),%rsi
lea    0x107b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe5e(%rip),%rdi
call   1030 <puts@plt>
lea    0xe56(%rip),%rdi
call   1030 <puts@plt>
lea    0x1092(%rip),%rdi
call   1030 <puts@plt>
lea    0x10d2(%rip),%rdi
call   1030 <puts@plt>
lea    0x110f(%rip),%rdi
call   1030 <puts@plt>
lea    0xe22(%rip),%rdi
call   1030 <puts@plt>
lea    0x1111(%rip),%rdi
call   1030 <puts@plt>
lea    0xebe(%rip),%rdi
call   1030 <puts@plt>
lea    0xeff(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1e(%rip),%rdi
call   1030 <puts@plt>
lea    0xf5e(%rip),%rdi
call   1030 <puts@plt>
lea    0xfa1(%rip),%rdi
call   1030 <puts@plt>
lea    0x1118(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x111b(%rip),%rdi
call   1030 <puts@plt>
lea    0x1150(%rip),%rdi
call   1030 <puts@plt>
lea    0x118d(%rip),%rdi
call   1030 <puts@plt>
lea    0x11ca(%rip),%rdi
call   1030 <puts@plt>
lea    0x1206(%rip),%rdi
call   1030 <puts@plt>
lea    0x1244(%rip),%rdi
call   1030 <puts@plt>
lea    0x10d2(%rip),%rdi
call   1030 <puts@plt>
lea    0x1272(%rip),%rdi
call   1030 <puts@plt>
lea    0x12af(%rip),%rdi
call   1030 <puts@plt>
lea    0x12eb(%rip),%rdi
call   1030 <puts@plt>
lea    0x10a2(%rip),%rdi
call   1030 <puts@plt>
lea    0x1322(%rip),%rdi
call   1030 <puts@plt>
lea    0x1363(%rip),%rdi
call   1030 <puts@plt>
lea    0x107e(%rip),%rdi
call   1030 <puts@plt>
lea    0x138a(%rip),%rdi
call   1030 <puts@plt>
lea    0x13cc(%rip),%rdi
call   1030 <puts@plt>
lea    0x140b(%rip),%rdi
call   1030 <puts@plt>
lea    0x1431(%rip),%rdi
call   1030 <puts@plt>
lea    0x1447(%rip),%rdi
call   1030 <puts@plt>
lea    0x1036(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<helpInfo>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%rbx
lea    0xeab(%rip),%rdi
call   1040 <puts@plt>
lea    0xea6(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xed7(%rip),%r14
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0xecc(%rip),%r12
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0xf04(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0xf2f(%rip),%rdi
call   1040 <puts@plt>
lea    0xf4d(%rip),%rdi
call   1040 <puts@plt>
lea    0xf8e(%rip),%rdi
call   1040 <puts@plt>
lea    0xfad(%rip),%r13
mov    %r13,%rdi
call   1040 <puts@plt>
lea    0xfea(%rip),%rbp
mov    %rbp,%rdi
call   1040 <puts@plt>
lea    0x102a(%rip),%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x1063(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
mov    %r12,%rdi
call   1040 <puts@plt>
lea    0x107f(%rip),%rdi
call   1040 <puts@plt>
lea    0x10bf(%rip),%rdi
call   1040 <puts@plt>
lea    0x10fc(%rip),%rdi
call   1040 <puts@plt>
mov    %r14,%rdi
call   1040 <puts@plt>
lea    0x1102(%rip),%rdi
call   1040 <puts@plt>
lea    0xeaf(%rip),%rdi
call   1040 <puts@plt>
lea    0xef0(%rip),%rdi
call   1040 <puts@plt>
mov    %r13,%rdi
call   1040 <puts@plt>
mov    %rbp,%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x1548(%rip),%rdi
call   1040 <puts@plt>
lea    0x1109(%rip),%rdi
call   1040 <puts@plt>
lea    0x113e(%rip),%rdi
call   1040 <puts@plt>
lea    0x117b(%rip),%rdi
call   1040 <puts@plt>
lea    0x11b8(%rip),%rdi
call   1040 <puts@plt>
lea    0x11f4(%rip),%rdi
call   1040 <puts@plt>
lea    0x1232(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1262(%rip),%rdi
call   1040 <puts@plt>
lea    0x129f(%rip),%rdi
call   1040 <puts@plt>
lea    0x12db(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1314(%rip),%rdi
call   1040 <puts@plt>
lea    0x1355(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x137e(%rip),%rdi
call   1040 <puts@plt>
lea    0x13c0(%rip),%rdi
call   1040 <puts@plt>
lea    0x13ff(%rip),%rdi
call   1040 <puts@plt>
lea    0x1425(%rip),%rdi
call   1040 <puts@plt>
lea    0x143b(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %edi,%edi
call   1060 <exit@plt>

LLVM IR (-O0):
@.str = [7 x i8] c"Usage:\00"
@.str.1 = [66 x i8] c"1) %s -m maxED [-lepsfi] [-awy] file_A string file_B [file_C]\0A\00"
@.str.2 = [4 x i8] c" \00"
@.str.3 = [71 x i8] c" Computes generalized edit distances between <string> and strings in\00"
@.str.4 = [63 x i8] c" <file_B>. Outputs all strings which have distance <= maxED;\00"
@.str.5 = [42 x i8] c" -m maxED - maximum edit distance;\00"
@.str.6 = [77 x i8] c" file_A - file where the additional edit operations could be found;\00"
@.str.7 = [43 x i8] c" string - a string to search for;\00"
@.str.8 = [76 x i8] c" file_B - file from where to search for matches with given string;\00"
@.str.9 = [79 x i8] c" file_C - file containing upper-to-lower case translations, to ignore\00"
@.str.10 = [72 x i8] c" case during match finding (Non-mandatory argument);\0A\00"
@.str.11 = [61 x i8] c"2) %s -b N [-p|s|f|i] [-e] file_A string file_B [file_C]\0A\00"
@.str.12 = [76 x i8] c" <file_B>. Outputs top N strings closest to the search string. The number\00"
@.str.13 = [73 x i8] c" N is allowed to be exceeded when there are equal-distance strings for\00"
@.str.14 = [26 x i8] c" the last place in top.\00"
@.str.15 = [79 x i8] c" -b N - number of strings with best edit distances to be displayed;\00"
@.str.16 = [17 x i8] c"Optional flags:\0A\00"
@.str.17 = [65 x i8] c" -f finds edit distance between full extent strings (default);\00"
@.str.18 = [73 x i8] c" -s finds edit distance between search string and some suffix of text;\00"
@.str.19 = [73 x i8] c" -p finds edit distance between search string and some prefix of text;\00"
@.str.20 = [72 x i8] c" -i finds edit distance between search string and some infix of text;\00"
@.str.21 = [74 x i8] c" -l prints line number before found match (can be used only with '-m');\00"
@.str.22 = [70 x i8] c" -e allows to mark unchangable areas in <string>. Example markings:\00"
@.str.23 = [1 x i8] zeroinitializer
@.str.24 = [73 x i8] c" (ab)cde(f)) = the prefix 'ab' can't be modified by regular edit dist\00"
@.str.25 = [72 x i8] c" the suffix 'f' can't be modified by regular edit dist\00"
@.str.26 = [79 x i8] c" after the suffix 'f', regular edit dist ADD can't be applied\00"
@.str.27 = [77 x i8] c" <ab>cdef = the prefix 'ab' can't be modified either with regular edit\00"
@.str.28 = [63 x i8] c" distance nor with generalized edit distance.\00"
@.str.29 = [78 x i8] c" -a prints alignments between the search string and each full distant match\00"
@.str.30 = [75 x i8] c" Can only be used with flag '-m', when flags '-e', '-i', '-s', '-p'\00"
@.str.31 = [50 x i8] c" are not set. Has the following suboptions: \00"
@.str.32 = [34 x i8] c" -y Uses pretty-printing;\00"
@.str.33 = [47 x i8] c" -w Prints weights of transformations;\00"
define i32 @helpInfo(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = call i32 @puts(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0))
%4 = load i8*, i8** %2
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.1, i64 0, i64 0), i8* %4)
%6 = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%7 = call i32 @puts(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%8 = call i32 @puts(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.4, i64 0, i64 0))
%9 = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%10 = call i32 @puts(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0))
%11 = call i32 @puts(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.6, i64 0, i64 0))
%12 = call i32 @puts(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0))
%13 = call i32 @puts(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.8, i64 0, i64 0))
%14 = call i32 @puts(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.9, i64 0, i64 0))
%15 = call i32 @puts(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.10, i64 0, i64 0))
%16 = load i8*, i8** %2
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.11, i64 0, i64 0), i8* %16)
%18 = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%19 = call i32 @puts(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%20 = call i32 @puts(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.12, i64 0, i64 0))
%21 = call i32 @puts(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.13, i64 0, i64 0))
%22 = call i32 @puts(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.14, i64 0, i64 0))
%23 = call i32 @puts(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%24 = call i32 @puts(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.15, i64 0, i64 0))
%25 = call i32 @puts(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.6, i64 0, i64 0))
%26 = call i32 @puts(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0))
%27 = call i32 @puts(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.8, i64 0, i64 0))
%28 = call i32 @puts(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.9, i64 0, i64 0))
%29 = call i32 @puts(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.10, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.16, i64 0, i64 0))
%31 = call i32 @puts(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.17, i64 0, i64 0))
%32 = call i32 @puts(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.18, i64 0, i64 0))
%33 = call i32 @puts(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.19, i64 0, i64 0))
%34 = call i32 @puts(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.20, i64 0, i64 0))
%35 = call i32 @puts(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.21, i64 0, i64 0))
%36 = call i32 @puts(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.22, i64 0, i64 0))
%37 = call i32 @puts(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.23, i64 0, i64 0))
%38 = call i32 @puts(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.24, i64 0, i64 0))
%39 = call i32 @puts(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.25, i64 0, i64 0))
%40 = call i32 @puts(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.26, i64 0, i64 0))
%41 = call i32 @puts(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.23, i64 0, i64 0))
%42 = call i32 @puts(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.27, i64 0, i64 0))
%43 = call i32 @puts(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.28, i64 0, i64 0))
%44 = call i32 @puts(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.23, i64 0, i64 0))
%45 = call i32 @puts(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.29, i64 0, i64 0))
%46 = call i32 @puts(i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.30, i64 0, i64 0))
%47 = call i32 @puts(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.31, i64 0, i64 0))
%48 = call i32 @puts(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.32, i64 0, i64 0))
%49 = call i32 @puts(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.33, i64 0, i64 0))
%50 = call i32 @puts(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.23, i64 0, i64 0))
%51 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [7 x i8] c"Usage:\00"
@.str.1 = [66 x i8] c"1) %s -m maxED [-lepsfi] [-awy] file_A string file_B [file_C]\0A\00"
@.str.2 = [4 x i8] c" \00"
@.str.3 = [71 x i8] c" Computes generalized edit distances between <string> and strings in\00"
@.str.4 = [63 x i8] c" <file_B>. Outputs all strings which have distance <= maxED;\00"
@.str.5 = [42 x i8] c" -m maxED - maximum edit distance;\00"
@.str.6 = [77 x i8] c" file_A - file where the additional edit operations could be found;\00"
@.str.7 = [43 x i8] c" string - a string to search for;\00"
@.str.8 = [76 x i8] c" file_B - file from where to search for matches with given string;\00"
@.str.9 = [79 x i8] c" file_C - file containing upper-to-lower case translations, to ignore\00"
@.str.10 = [72 x i8] c" case during match finding (Non-mandatory argument);\0A\00"
@.str.11 = [61 x i8] c"2) %s -b N [-p|s|f|i] [-e] file_A string file_B [file_C]\0A\00"
@.str.12 = [76 x i8] c" <file_B>. Outputs top N strings closest to the search string. The number\00"
@.str.13 = [73 x i8] c" N is allowed to be exceeded when there are equal-distance strings for\00"
@.str.14 = [26 x i8] c" the last place in top.\00"
@.str.15 = [79 x i8] c" -b N - number of strings with best edit distances to be displayed;\00"
@.str.17 = [65 x i8] c" -f finds edit distance between full extent strings (default);\00"
@.str.18 = [73 x i8] c" -s finds edit distance between search string and some suffix of text;\00"
@.str.19 = [73 x i8] c" -p finds edit distance between search string and some prefix of text;\00"
@.str.20 = [72 x i8] c" -i finds edit distance between search string and some infix of text;\00"
@.str.21 = [74 x i8] c" -l prints line number before found match (can be used only with '-m');\00"
@.str.22 = [70 x i8] c" -e allows to mark unchangable areas in <string>. Example markings:\00"
@.str.24 = [73 x i8] c" (ab)cde(f)) = the prefix 'ab' can't be modified by regular edit dist\00"
@.str.25 = [72 x i8] c" the suffix 'f' can't be modified by regular edit dist\00"
@.str.26 = [79 x i8] c" after the suffix 'f', regular edit dist ADD can't be applied\00"
@.str.27 = [77 x i8] c" <ab>cdef = the prefix 'ab' can't be modified either with regular edit\00"
@.str.28 = [63 x i8] c" distance nor with generalized edit distance.\00"
@.str.29 = [78 x i8] c" -a prints alignments between the search string and each full distant match\00"
@.str.30 = [75 x i8] c" Can only be used with flag '-m', when flags '-e', '-i', '-s', '-p'\00"
@.str.31 = [50 x i8] c" are not set. Has the following suboptions: \00"
@.str.32 = [34 x i8] c" -y Uses pretty-printing;\00"
@.str.33 = [47 x i8] c" -w Prints weights of transformations;\00"
@str = [16 x i8] c"Optional flags:\00"
define i32 @helpInfo(i8* %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.1, i64 0, i64 0), i8* %0)
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.4, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.5, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @.str.6, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @.str.8, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.9, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.10, i64 0, i64 0))
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.11, i64 0, i64 0), i8* %0)
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @.str.12, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @.str.13, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.14, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.15, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @.str.6, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.7, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @.str.8, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.9, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.10, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str.17, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @.str.18, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @.str.19, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.20, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([74 x i8], [74 x i8]* @.str.21, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str.22, i64 0, i64 0))
%34 = tail call i32 @putchar(i32 10)
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @.str.24, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.25, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.26, i64 0, i64 0))
%38 = tail call i32 @putchar(i32 10)
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @.str.27, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.28, i64 0, i64 0))
%41 = tail call i32 @putchar(i32 10)
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @.str.29, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([75 x i8], [75 x i8]* @.str.30, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.31, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.32, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.33, i64 0, i64 0))
%47 = tail call i32 @putchar(i32 10)
%48 = tail call i32 @exit(i32 0)
unreachable
}