#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*/ puts(char *);
void do_help(int man) {
  if (man)
    goto man;
  puts("xword-fill [-?h] [-options] gridfile");
  puts("Fills a crossword grid by constraint satisfaction.");
  puts("  --allow_duplicate_words: allow duplicate words in output grid");
  puts("  -n int: limit output to first 'n' valid grids");
  puts("  -d filename: load dictionary from specified file");
  puts("  -o filename: send output to specified file");
  puts("  --debug: dump debugging output to stderr");
  puts("  --help: show this message");
  puts("  --man: show complete help text");
  exit(0);
man:
  puts("xword-fill: Crossword filling tool.\n");
  puts(" This program attempts to fill in a crossword grid using");
  puts("   words from a dictionary file. The input grid must be in");
  puts("   the standard form output by 'xword-ent' and 'xword-manip',");
  puts("   using the hash mark ('#') to stand for black squares and");
  puts("   the dot or backtick ('.', '`') for empty squares. The grid");
  puts("   may also contain letters, which behave normally; the");
  puts("   numerals 0 and 1, which stand for \"any vowel\" and \"any");
  puts("   consonant,\" respectively. Any other characters are treated");
  puts("   as the letter X when it comes to grid-filling.");
  puts(" The program transforms the input grid and dictionary into");
  puts("   a very large matrix of ones and zeros, and then looks for");
  puts("   an \"exact cover\" of this matrix: a set of rows such that");
  puts("   the number 1 appears exactly once per column in that set");
  puts("   of rows. It uses the \"dancing links\" algorithm, due to");
  puts("   D.E. Knuth, to find this cover. Once a cover is found, the");
  puts("   program translates those rows back into a solution to the");
  puts("   crossword puzzle and prints out the solved grid.");
  puts(" Finding an exact cover can take a long time if the matrix is");
  puts("   large. If you find the program too slow, try giving it");
  puts("   only one corner to fill at a time.");
  puts(" Also remember that if your grid has two independent open");
  puts("   corners, with N and M distinct solutions respectively,");
  puts("   then passing the two-corner problem to 'xword-fill' will");
  puts("   yield NxM distinct solutions, whereas breaking it down into");
  puts("   two one-corner problems will yield only N+M.");
  puts(" When the exact-cover solver produces a solution grid, it may");
  puts("   contain duplicate entries, which of course is unacceptable");
  puts("   in a crossword grid. The program will silently ignore these");
  puts("   bad solutions (and they won't count toward the -n total),");
  puts("   unless you pass --allow_duplicate_words.");
  exit(0);
}


x86 assembly (clang, -O0):
<do_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
je     113a <do_help+0x1a>
jmp    11ad <do_help+0x8d>
lea    0xebf(%rip),%rdi
call   1030 <puts@plt>
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
lea    0xeff(%rip),%rdi
call   1030 <puts@plt>
lea    0xf33(%rip),%rdi
call   1030 <puts@plt>
lea    0xf57(%rip),%rdi
call   1030 <puts@plt>
lea    0xf7e(%rip),%rdi
call   1030 <puts@plt>
lea    0xf9f(%rip),%rdi
call   1030 <puts@plt>
lea    0xfbe(%rip),%rdi
call   1030 <puts@plt>
lea    0xfce(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>
lea    0xfdc(%rip),%rdi
call   1030 <puts@plt>
lea    0xff5(%rip),%rdi
call   1030 <puts@plt>
lea    0x1022(%rip),%rdi
call   1030 <puts@plt>
lea    0x1051(%rip),%rdi
call   1030 <puts@plt>
lea    0x1083(%rip),%rdi
call   1030 <puts@plt>
lea    0x10b3(%rip),%rdi
call   1030 <puts@plt>
lea    0x10e5(%rip),%rdi
call   1030 <puts@plt>
lea    0x1111(%rip),%rdi
call   1030 <puts@plt>
lea    0x113f(%rip),%rdi
call   1030 <puts@plt>
lea    0x1171(%rip),%rdi
call   1030 <puts@plt>
lea    0x1197(%rip),%rdi
call   1030 <puts@plt>
lea    0x11c6(%rip),%rdi
call   1030 <puts@plt>
lea    0x11f7(%rip),%rdi
call   1030 <puts@plt>
lea    0x1227(%rip),%rdi
call   1030 <puts@plt>
lea    0x1257(%rip),%rdi
call   1030 <puts@plt>
lea    0x1285(%rip),%rdi
call   1030 <puts@plt>
lea    0x12b7(%rip),%rdi
call   1030 <puts@plt>
lea    0x12e8(%rip),%rdi
call   1030 <puts@plt>
lea    0x1310(%rip),%rdi
call   1030 <puts@plt>
lea    0x1342(%rip),%rdi
call   1030 <puts@plt>
lea    0x1370(%rip),%rdi
call   1030 <puts@plt>
lea    0x138a(%rip),%rdi
call   1030 <puts@plt>
lea    0x13b8(%rip),%rdi
call   1030 <puts@plt>
lea    0x13e6(%rip),%rdi
call   1030 <puts@plt>
lea    0x1416(%rip),%rdi
call   1030 <puts@plt>
lea    0x1449(%rip),%rdi
call   1030 <puts@plt>
lea    0x146d(%rip),%rdi
call   1030 <puts@plt>
lea    0x149f(%rip),%rdi
call   1030 <puts@plt>
lea    0x14d1(%rip),%rdi
call   1030 <puts@plt>
lea    0x1504(%rip),%rdi
call   1030 <puts@plt>
lea    0x1535(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<do_help>:
push   %rax
test   %edi,%edi
jne    1191 <do_help+0x71>
lea    0xed4(%rip),%rdi
call   1030 <puts@plt>
lea    0xeed(%rip),%rdi
call   1030 <puts@plt>
lea    0xf14(%rip),%rdi
call   1030 <puts@plt>
lea    0xf48(%rip),%rdi
call   1030 <puts@plt>
lea    0xf6c(%rip),%rdi
call   1030 <puts@plt>
lea    0xf93(%rip),%rdi
call   1030 <puts@plt>
lea    0xfb4(%rip),%rdi
call   1030 <puts@plt>
lea    0xfd3(%rip),%rdi
call   1030 <puts@plt>
lea    0xfe3(%rip),%rdi
jmp    1300 <do_help+0x1e0>
lea    0xff8(%rip),%rdi
call   1030 <puts@plt>
lea    0x1011(%rip),%rdi
call   1030 <puts@plt>
lea    0x103e(%rip),%rdi
call   1030 <puts@plt>
lea    0x106d(%rip),%rdi
call   1030 <puts@plt>
lea    0x109f(%rip),%rdi
call   1030 <puts@plt>
lea    0x10cf(%rip),%rdi
call   1030 <puts@plt>
lea    0x1101(%rip),%rdi
call   1030 <puts@plt>
lea    0x112d(%rip),%rdi
call   1030 <puts@plt>
lea    0x115b(%rip),%rdi
call   1030 <puts@plt>
lea    0x118d(%rip),%rdi
call   1030 <puts@plt>
lea    0x11b3(%rip),%rdi
call   1030 <puts@plt>
lea    0x11e2(%rip),%rdi
call   1030 <puts@plt>
lea    0x1213(%rip),%rdi
call   1030 <puts@plt>
lea    0x1243(%rip),%rdi
call   1030 <puts@plt>
lea    0x1273(%rip),%rdi
call   1030 <puts@plt>
lea    0x12a1(%rip),%rdi
call   1030 <puts@plt>
lea    0x12d3(%rip),%rdi
call   1030 <puts@plt>
lea    0x1304(%rip),%rdi
call   1030 <puts@plt>
lea    0x132c(%rip),%rdi
call   1030 <puts@plt>
lea    0x135e(%rip),%rdi
call   1030 <puts@plt>
lea    0x138c(%rip),%rdi
call   1030 <puts@plt>
lea    0x13a6(%rip),%rdi
call   1030 <puts@plt>
lea    0x13d4(%rip),%rdi
call   1030 <puts@plt>
lea    0x1402(%rip),%rdi
call   1030 <puts@plt>
lea    0x1432(%rip),%rdi
call   1030 <puts@plt>
lea    0x1465(%rip),%rdi
call   1030 <puts@plt>
lea    0x1489(%rip),%rdi
call   1030 <puts@plt>
lea    0x14bb(%rip),%rdi
call   1030 <puts@plt>
lea    0x14ed(%rip),%rdi
call   1030 <puts@plt>
lea    0x1520(%rip),%rdi
call   1030 <puts@plt>
lea    0x1551(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [37 x i8] c"xword-fill [-?h] [-options] gridfile\00"
@.str.1 = [51 x i8] c"Fills a crossword grid by constraint satisfaction.\00"
@.str.2 = [64 x i8] c" --allow_duplicate_words: allow duplicate words in output grid\00"
@.str.3 = [48 x i8] c" -n int: limit output to first 'n' valid grids\00"
@.str.4 = [51 x i8] c" -d filename: load dictionary from specified file\00"
@.str.5 = [45 x i8] c" -o filename: send output to specified file\00"
@.str.6 = [43 x i8] c" --debug: dump debugging output to stderr\00"
@.str.7 = [28 x i8] c" --help: show this message\00"
@.str.8 = [33 x i8] c" --man: show complete help text\00"
@.str.9 = [37 x i8] c"xword-fill: Crossword filling tool.\0A\00"
@.str.10 = [57 x i8] c" This program attempts to fill in a crossword grid using\00"
@.str.11 = [59 x i8] c" words from a dictionary file. The input grid must be in\00"
@.str.12 = [62 x i8] c" the standard form output by 'xword-ent' and 'xword-manip',\00"
@.str.13 = [60 x i8] c" using the hash mark ('#') to stand for black squares and\00"
@.str.14 = [62 x i8] c" the dot or backtick ('.', '`') for empty squares. The grid\00"
@.str.15 = [56 x i8] c" may also contain letters, which behave normally; the\00"
@.str.16 = [58 x i8] c" numerals 0 and 1, which stand for \22any vowel\22 and \22any\00"
@.str.17 = [62 x i8] c" consonant,\22 respectively. Any other characters are treated\00"
@.str.18 = [50 x i8] c" as the letter X when it comes to grid-filling.\00"
@.str.19 = [59 x i8] c" The program transforms the input grid and dictionary into\00"
@.str.20 = [61 x i8] c" a very large matrix of ones and zeros, and then looks for\00"
@.str.21 = [60 x i8] c" an \22exact cover\22 of this matrix: a set of rows such that\00"
@.str.22 = [60 x i8] c" the number 1 appears exactly once per column in that set\00"
@.str.23 = [58 x i8] c" of rows. It uses the \22dancing links\22 algorithm, due to\00"
@.str.24 = [62 x i8] c" D.E. Knuth, to find this cover. Once a cover is found, the\00"
@.str.25 = [61 x i8] c" program translates those rows back into a solution to the\00"
@.str.26 = [52 x i8] c" crossword puzzle and prints out the solved grid.\00"
@.str.27 = [62 x i8] c" Finding an exact cover can take a long time if the matrix is\00"
@.str.28 = [58 x i8] c" large. If you find the program too slow, try giving it\00"
@.str.29 = [38 x i8] c" only one corner to fill at a time.\00"
@.str.30 = [58 x i8] c" Also remember that if your grid has two independent open\00"
@.str.31 = [58 x i8] c" corners, with N and M distinct solutions respectively,\00"
@.str.32 = [60 x i8] c" then passing the two-corner problem to 'xword-fill' will\00"
@.str.33 = [63 x i8] c" yield NxM distinct solutions, whereas breaking it down into\00"
@.str.34 = [48 x i8] c" two one-corner problems will yield only N+M.\00"
@.str.35 = [62 x i8] c" When the exact-cover solver produces a solution grid, it may\00"
@.str.36 = [62 x i8] c" contain duplicate entries, which of course is unacceptable\00"
@.str.37 = [63 x i8] c" in a crossword grid. The program will silently ignore these\00"
@.str.38 = [61 x i8] c" bad solutions (and they won't count toward the -n total),\00"
@.str.39 = [44 x i8] c" unless you pass --allow_duplicate_words.\00"
define void @do_help(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
%4 = icmp ne i32 %3, 0
br i1 %4, label %5, label %6
5: ; preds = %1
br label %17
6: ; preds = %1
%7 = call i32 @puts(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%8 = call i32 @puts(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 @puts(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.2, i64 0, i64 0))
%10 = call i32 @puts(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%11 = call i32 @puts(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.4, i64 0, i64 0))
%12 = call i32 @puts(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.5, i64 0, i64 0))
%13 = call i32 @puts(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.6, i64 0, i64 0))
%14 = call i32 @puts(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.7, i64 0, i64 0))
%15 = call i32 @puts(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0))
%16 = call i32 @exit(i32 0)
unreachable
17: ; preds = %5
%18 = call i32 @puts(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%19 = call i32 @puts(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.10, i64 0, i64 0))
%20 = call i32 @puts(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.11, i64 0, i64 0))
%21 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.12, i64 0, i64 0))
%22 = call i32 @puts(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.13, i64 0, i64 0))
%23 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.14, i64 0, i64 0))
%24 = call i32 @puts(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.15, i64 0, i64 0))
%25 = call i32 @puts(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.16, i64 0, i64 0))
%26 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i64 0, i64 0))
%27 = call i32 @puts(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.18, i64 0, i64 0))
%28 = call i32 @puts(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.19, i64 0, i64 0))
%29 = call i32 @puts(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.20, i64 0, i64 0))
%30 = call i32 @puts(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.21, i64 0, i64 0))
%31 = call i32 @puts(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.22, i64 0, i64 0))
%32 = call i32 @puts(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.23, i64 0, i64 0))
%33 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.24, i64 0, i64 0))
%34 = call i32 @puts(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.25, i64 0, i64 0))
%35 = call i32 @puts(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.26, i64 0, i64 0))
%36 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.27, i64 0, i64 0))
%37 = call i32 @puts(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.28, i64 0, i64 0))
%38 = call i32 @puts(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.29, i64 0, i64 0))
%39 = call i32 @puts(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.30, i64 0, i64 0))
%40 = call i32 @puts(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.31, i64 0, i64 0))
%41 = call i32 @puts(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.32, i64 0, i64 0))
%42 = call i32 @puts(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.33, i64 0, i64 0))
%43 = call i32 @puts(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.34, i64 0, i64 0))
%44 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.35, i64 0, i64 0))
%45 = call i32 @puts(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.36, i64 0, i64 0))
%46 = call i32 @puts(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.37, i64 0, i64 0))
%47 = call i32 @puts(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.38, i64 0, i64 0))
%48 = call i32 @puts(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.39, i64 0, i64 0))
%49 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [37 x i8] c"xword-fill [-?h] [-options] gridfile\00"
@.str.1 = [51 x i8] c"Fills a crossword grid by constraint satisfaction.\00"
@.str.2 = [64 x i8] c" --allow_duplicate_words: allow duplicate words in output grid\00"
@.str.3 = [48 x i8] c" -n int: limit output to first 'n' valid grids\00"
@.str.4 = [51 x i8] c" -d filename: load dictionary from specified file\00"
@.str.5 = [45 x i8] c" -o filename: send output to specified file\00"
@.str.6 = [43 x i8] c" --debug: dump debugging output to stderr\00"
@.str.7 = [28 x i8] c" --help: show this message\00"
@.str.8 = [33 x i8] c" --man: show complete help text\00"
@.str.9 = [37 x i8] c"xword-fill: Crossword filling tool.\0A\00"
@.str.10 = [57 x i8] c" This program attempts to fill in a crossword grid using\00"
@.str.11 = [59 x i8] c" words from a dictionary file. The input grid must be in\00"
@.str.12 = [62 x i8] c" the standard form output by 'xword-ent' and 'xword-manip',\00"
@.str.13 = [60 x i8] c" using the hash mark ('#') to stand for black squares and\00"
@.str.14 = [62 x i8] c" the dot or backtick ('.', '`') for empty squares. The grid\00"
@.str.15 = [56 x i8] c" may also contain letters, which behave normally; the\00"
@.str.16 = [58 x i8] c" numerals 0 and 1, which stand for \22any vowel\22 and \22any\00"
@.str.17 = [62 x i8] c" consonant,\22 respectively. Any other characters are treated\00"
@.str.18 = [50 x i8] c" as the letter X when it comes to grid-filling.\00"
@.str.19 = [59 x i8] c" The program transforms the input grid and dictionary into\00"
@.str.20 = [61 x i8] c" a very large matrix of ones and zeros, and then looks for\00"
@.str.21 = [60 x i8] c" an \22exact cover\22 of this matrix: a set of rows such that\00"
@.str.22 = [60 x i8] c" the number 1 appears exactly once per column in that set\00"
@.str.23 = [58 x i8] c" of rows. It uses the \22dancing links\22 algorithm, due to\00"
@.str.24 = [62 x i8] c" D.E. Knuth, to find this cover. Once a cover is found, the\00"
@.str.25 = [61 x i8] c" program translates those rows back into a solution to the\00"
@.str.26 = [52 x i8] c" crossword puzzle and prints out the solved grid.\00"
@.str.27 = [62 x i8] c" Finding an exact cover can take a long time if the matrix is\00"
@.str.28 = [58 x i8] c" large. If you find the program too slow, try giving it\00"
@.str.29 = [38 x i8] c" only one corner to fill at a time.\00"
@.str.30 = [58 x i8] c" Also remember that if your grid has two independent open\00"
@.str.31 = [58 x i8] c" corners, with N and M distinct solutions respectively,\00"
@.str.32 = [60 x i8] c" then passing the two-corner problem to 'xword-fill' will\00"
@.str.33 = [63 x i8] c" yield NxM distinct solutions, whereas breaking it down into\00"
@.str.34 = [48 x i8] c" two one-corner problems will yield only N+M.\00"
@.str.35 = [62 x i8] c" When the exact-cover solver produces a solution grid, it may\00"
@.str.36 = [62 x i8] c" contain duplicate entries, which of course is unacceptable\00"
@.str.37 = [63 x i8] c" in a crossword grid. The program will silently ignore these\00"
@.str.38 = [61 x i8] c" bad solutions (and they won't count toward the -n total),\00"
@.str.39 = [44 x i8] c" unless you pass --allow_duplicate_words.\00"
define void @do_help(i32 %0) {
%2 = icmp eq i32 %0, 0
br i1 %2, label %3, label %14
3: ; preds = %1
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.2, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str.4, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.5, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.6, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.7, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.8, i64 0, i64 0))
%13 = tail call i32 @exit(i32 0)
unreachable
14: ; preds = %1
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.10, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.11, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.12, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.13, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.14, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.15, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.16, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.17, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.18, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.19, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.20, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.21, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.22, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.23, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.24, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.25, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.26, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.27, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.28, i64 0, i64 0))
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.29, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.30, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.31, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.32, i64 0, i64 0))
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.33, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.34, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.35, i64 0, i64 0))
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @.str.36, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.37, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.38, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.39, i64 0, i64 0))
%46 = tail call i32 @exit(i32 0)
unreachable
}