#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 atoi(char *);
int /*<<< orphan*/ customMenu();
int /*<<< orphan*/ printf(char *);
int runAbc();
int /*<<< orphan*/ scanf(char *, char **);
int simulate();
int /*<<< orphan*/ toolsMenu();
void mainMenu() {
  char str[256];
  int option, r;
  do {
    printf("\n\n  *Main Menu*\n\n");
    printf("  1. Create a simulated \"real\" data\n\n");
    printf("  2. Run the ABC algorithm on \"real\" data\n\n");
    printf("  3. Customize the ABC algorithm\n\n");
    printf("  4. Tools\n\n");
    printf("  5. Exit\n\n");
    printf("  choose an option: ");
    scanf("%s", &str);
    option = atoi(str);
    switch (option) {
    case 1:
      printf("\n\n\n  *Simulate Data with ABC*\n\n");
      r = simulate();
      if (r == 0)
        printf("\n\n>simulation completed (report created).");
      else if (r == 1)
        printf("\n\n>error::cannot open the .prs file!");
      else if (r == 2)
        printf("\n\n>error::cannot open the .ssz file!");
      else if (r == 3)
        printf("\n\n>error::cannot open the .sst file!");
      else if (r == 4)
        printf("\n\n>error::cannot create .dat file!");
      else if (r == 5)
        printf("\n\n>error::cannot create info file!");
      else if (r == 6)
        printf("\n\n>error::while reading .ssz file!");
      else if (r == 7)
        printf("\n\n>error::while reading .sst file!");
      else if (r == 8)
        printf("\n\n>error::following sstats can only be chosen with 2 or more "
               "pops: Nm_H; Nm_S; privS; S(1)!");
      else if (r == 9)
        printf("\n\n>error::wrong topology prior type!");
      else if (r == 10)
        printf("\n\n>error::with 1 or 2 pops only topology prior type 0 or 3 "
               "can be used!");
      else if (r == 11)
        printf("\n\n>error::wrong Ne prior type!");
      else if (r == 12)
        printf("\n\n>error::type-2 tev is followed by another type-2 tev!");
      else if (r == 13)
        printf(
            "\n\n>error::if using tev type 3 prior, define prior only once!");
      else if (r == 14)
        printf(
            "\n\n>error::if using tev type 4 prior, define prior only once!");
      else if (r == 15)
        printf("\n\n>error::wrong Tev prior type!");
      else if (r == 16)
        printf("\n\n>error::wrong Mig prior type!");
      else if (r == 17)
        printf("\n\n>error::wrong Mut prior type (Microsatellites)!");
      else if (r == 18)
        printf("\n\n>error::wrong Mut prior type (Sequence Data)!");
      else if (r == 19)
        printf("\n\n>error::wrong Rec prior type (Microsatellites)!");
      else if (r == 20)
        printf("\n\n>error::wrong Rec prior type (Sequence Data)!");
      else if (r == 21)
        printf("\n\n>error::to use migration weights matrix, topology must be "
               "defined (option 1,2,4 or 5)!");
      else if (r == 22)
        printf("\n\n>error::wrong migration weights matrix option!");
      else if (r == 23)
        printf("\n\n>error::.dat file would be too big to be analyzed!");
      else if (r == 24)
        printf("\n\n>error::when using rec with STR all STR loci must have the "
               "same scalar!");
      else if (r == 25)
        printf("\n\n>error::when using rec with STR all STR loci must have the "
               "same samples per population!");
      else if (r == 26)
        printf("\n\n>error::cannot create .mut file!");
      else if (r == 27)
        printf("\n\n>error::cannot create .rec file!");
      else if (r == 28)
        printf("\n\n>error::times are not monotonic increasing!");
      else if (r == 29)
        printf("\n\n>error::choosing branching sequence!");
      else if (r == 30)
        printf("\n\n>error::with more than 5 populations the topology as to be "
               "fixed using option 2 or 5!");
      else if (r == 31)
        printf("\n\n>error::the locus have less than samples, it should be "
               "cleared!");
      else if (r == 32)
        printf("\n\n>error::migration weights for the considered population "
               "have to be 0!");
      else if (r == 33)
        printf("\n\n>error::the sum of the prob for a given migration as to be "
               "1.0!");
      else if (r == 34)
        printf("\n\n>error::cannot create .len file!");
      break;
    case 2:
      printf("\n\n\n  *Run ABC algorithm*\n\n");
      r = runAbc();
      if (r == 0)
        printf("\n\n>ABC run completed\n");
      else if (r == 1)
        printf("\n\n>error::cannot open .len file!");
      else if (r == 2)
        printf("\n\n>error::cannot open .sst file!");
      else if (r == 3)
        printf("\n\n>error::cannot create .trg file!");
      else if (r == 4)
        printf("\n\n>error::cannot create .ssz file!");
      else if (r == 5)
        printf("\n\n>error::cannot create info file!");
      else if (r == 6)
        printf("\n\n>error::reading .sst file!");
      else if (r == 7)
        printf("\n\n>error::following sstats can only be chosen with 2 or more "
               "pops: Nm_H; Nm_S; privS; S(1)!");
      else if (r == 8)
        printf(
            "\n\n>error::sequence data locus without information, discard it!");
      else if (r == 101)
        printf("\n\n>error::cannot open the .prs file!");
      else if (r == 102)
        printf("\n\n>error::cannot open the .ssz file!");
      else if (r == 103)
        printf("\n\n>error::cannot open the .sst file!");
      else if (r == 104)
        printf("\n\n>error::cannot create .dat file!");
      else if (r == 105)
        printf("\n\n>error::cannot create info file!");
      else if (r == 106)
        printf("\n\n>error::while reading .ssz file!");
      else if (r == 107)
        printf("\n\n>error::while reading .sst file!");
      else if (r == 108)
        printf("\n\n>error::following sstats can only be chosen with 2 or more "
               "pops: Nm_H; Nm_S; privS; S(1)!");
      else if (r == 109)
        printf("\n\n>error::wrong topology prior type!");
      else if (r == 110)
        printf("\n\n>error::with 1 or 2 pops only topology prior type 0 or 3 "
               "can be used!");
      else if (r == 111)
        printf("\n\n>error::wrong Ne prior type!");
      else if (r == 112)
        printf("\n\n>error::type-2 tev is followed by another type-2 tev!");
      else if (r == 113)
        printf(
            "\n\n>error::if using tev type 3 prior, define prior only once!");
      else if (r == 114)
        printf(
            "\n\n>error::if using tev type 4 prior, define prior only once!");
      else if (r == 115)
        printf("\n\n>error::wrong Tev prior type!");
      else if (r == 116)
        printf("\n\n>error::wrong Mig prior type!");
      else if (r == 117)
        printf("\n\n>error::wrong Mut prior type (Microsatellites)!");
      else if (r == 118)
        printf("\n\n>error::wrong Mut prior type (Sequence Data)!");
      else if (r == 119)
        printf("\n\n>error::wrong Rec prior type (Microsatellites)!");
      else if (r == 120)
        printf("\n\n>error::wrong Rec prior type (Sequence Data)!");
      else if (r == 121)
        printf("\n\n>error::to use migration weights matrix, topology must be "
               "defined (option 1,2,4 or 5)!");
      else if (r == 122)
        printf("\n\n>error::wrong migration weights matrix option!");
      else if (r == 123)
        printf("\n\n>error::.dat file would be too big to be analyzed!");
      else if (r == 124)
        printf("\n\n>error::when using rec with STR all STR loci must have the "
               "same scalar!");
      else if (r == 125)
        printf("\n\n>error::when using rec with STR all STR loci must have the "
               "same samples per population!");
      else if (r == 126)
        printf("\n\n>error::cannot create .mut file!");
      else if (r == 127)
        printf("\n\n>error::cannot create .rec file!");
      else if (r == 128)
        printf("\n\n>error::times are not monotonic increasing!");
      else if (r == 129)
        printf("\n\n>error::choosing branching sequence!");
      else if (r == 130)
        printf("\n\n>error::with more than 5 populations the topology as to be "
               "fixed using option 2 or 5!");
      else if (r == 131)
        printf("\n\n>error::the locus have less than samples, it should be "
               "cleared!");
      else if (r == 132)
        printf("\n\n>error::migration weights for the considered population "
               "have to be 0!");
      else if (r == 133)
        printf("\n\n>error::the sum of the prob for a given migration as to be "
               "1.0!");
      else if (r == 134)
        printf("\n\n>error::cannot create .len file!");
      else if (r == 201)
        printf("\n\n>error::could't open .dat file!");
      else if (r == 202)
        printf("\n\n>error::cannot open .trg file!");
      else if (r == 203)
        printf("\n\n>error::cannot create .rej file!");
      else if (r == 204)
        printf("\n\n>error::cannot create .pri file!");
      else if (r == 205)
        printf("\n\n>error::cannot create .txt file!");
      else if (r == 206)
        printf("\n\n>error::file .dat ended prematurely!");
      else if (r == 207)
        printf("\n\n>error::.dat file is too big to be analysed!");
      break;
    case 3:
      customMenu();
      break;
    case 4:
      toolsMenu();
      break;
    case 5:
      printf("\n\n...exiting popABC\n\n");
      break;
    default:
      printf("\n\n>error::option not available\n");
      break;
    }
  } while (option != 5);
}


x86 assembly (clang, -O0):
<mainMenu>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
lea    0xe92(%rip),%rdi
call   1040 <printf@plt>
lea    0xe98(%rip),%rdi
call   1040 <printf@plt>
lea    0xeb2(%rip),%rdi
call   1040 <printf@plt>
lea    0xed2(%rip),%rdi
call   1040 <printf@plt>
lea    0xee9(%rip),%rdi
call   1040 <printf@plt>
lea    0xeea(%rip),%rdi
call   1040 <printf@plt>
lea    0xeea(%rip),%rdi
call   1040 <printf@plt>
lea    0xef3(%rip),%rdi
lea    -0x100(%rbp),%rsi
mov    %rsi,-0x118(%rbp)
call   1070 <scanf@plt>
mov    -0x118(%rbp),%rdi
call   1080 <atoi@plt>
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x110(%rbp)
sub    $0x4,%eax
ja     1e47 <mainMenu+0xcd7>
mov    -0x110(%rbp),%rax
lea    0xddc(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe98(%rip),%rdi
call   1040 <printf@plt>
mov    $0x0,%al
call   1030 <simulate@plt>
mov    %eax,-0x108(%rbp)
cmpl   $0x0,-0x108(%rbp)
jne    1264 <mainMenu+0xf4>
lea    0xe92(%rip),%rdi
call   1040 <printf@plt>
jmp    1705 <mainMenu+0x595>
cmpl   $0x1,-0x108(%rbp)
jne    1282 <mainMenu+0x112>
lea    0xe9e(%rip),%rdi
call   1040 <printf@plt>
jmp    1700 <mainMenu+0x590>
cmpl   $0x2,-0x108(%rbp)
jne    12a0 <mainMenu+0x130>
lea    0xea5(%rip),%rdi
call   1040 <printf@plt>
jmp    16fb <mainMenu+0x58b>
cmpl   $0x3,-0x108(%rbp)
jne    12be <mainMenu+0x14e>
lea    0xeac(%rip),%rdi
call   1040 <printf@plt>
jmp    16f6 <mainMenu+0x586>
cmpl   $0x4,-0x108(%rbp)
jne    12dc <mainMenu+0x16c>
lea    0xeb3(%rip),%rdi
call   1040 <printf@plt>
jmp    16f1 <mainMenu+0x581>
cmpl   $0x5,-0x108(%rbp)
jne    12fa <mainMenu+0x18a>
lea    0xeb8(%rip),%rdi
call   1040 <printf@plt>
jmp    16ec <mainMenu+0x57c>
cmpl   $0x6,-0x108(%rbp)
jne    1318 <mainMenu+0x1a8>
lea    0xebd(%rip),%rdi
call   1040 <printf@plt>
jmp    16e7 <mainMenu+0x577>
cmpl   $0x7,-0x108(%rbp)
jne    1336 <mainMenu+0x1c6>
lea    0xec2(%rip),%rdi
call   1040 <printf@plt>
jmp    16e2 <mainMenu+0x572>
cmpl   $0x8,-0x108(%rbp)
jne    1354 <mainMenu+0x1e4>
lea    0xec7(%rip),%rdi
call   1040 <printf@plt>
jmp    16dd <mainMenu+0x56d>
cmpl   $0x9,-0x108(%rbp)
jne    1372 <mainMenu+0x202>
lea    0xf05(%rip),%rdi
call   1040 <printf@plt>
jmp    16d8 <mainMenu+0x568>
cmpl   $0xa,-0x108(%rbp)
jne    1390 <mainMenu+0x220>
lea    0xf0c(%rip),%rdi
call   1040 <printf@plt>
jmp    16d3 <mainMenu+0x563>
cmpl   $0xb,-0x108(%rbp)
jne    13ae <mainMenu+0x23e>
lea    0xf36(%rip),%rdi
call   1040 <printf@plt>
jmp    16ce <mainMenu+0x55e>
cmpl   $0xc,-0x108(%rbp)
jne    13cc <mainMenu+0x25c>
lea    0xf37(%rip),%rdi
call   1040 <printf@plt>
jmp    16c9 <mainMenu+0x559>
cmpl   $0xd,-0x108(%rbp)
jne    13ea <mainMenu+0x27a>
lea    0xf51(%rip),%rdi
call   1040 <printf@plt>
jmp    16c4 <mainMenu+0x554>
cmpl   $0xe,-0x108(%rbp)
jne    1408 <mainMenu+0x298>
lea    0xf70(%rip),%rdi
call   1040 <printf@plt>
jmp    16bf <mainMenu+0x54f>
cmpl   $0xf,-0x108(%rbp)
jne    1426 <mainMenu+0x2b6>
lea    0xf8f(%rip),%rdi
call   1040 <printf@plt>
jmp    16ba <mainMenu+0x54a>
cmpl   $0x10,-0x108(%rbp)
jne    1444 <mainMenu+0x2d4>
lea    0xf91(%rip),%rdi
call   1040 <printf@plt>
jmp    16b5 <mainMenu+0x545>
cmpl   $0x11,-0x108(%rbp)
jne    1462 <mainMenu+0x2f2>
lea    0xf93(%rip),%rdi
call   1040 <printf@plt>
jmp    16b0 <mainMenu+0x540>
cmpl   $0x12,-0x108(%rbp)
jne    1480 <mainMenu+0x310>
lea    0xfa7(%rip),%rdi
call   1040 <printf@plt>
jmp    16ab <mainMenu+0x53b>
cmpl   $0x13,-0x108(%rbp)
jne    149e <mainMenu+0x32e>
lea    0xfb9(%rip),%rdi
call   1040 <printf@plt>
jmp    16a6 <mainMenu+0x536>
cmpl   $0x14,-0x108(%rbp)
jne    14bc <mainMenu+0x34c>
lea    0xfcd(%rip),%rdi
call   1040 <printf@plt>
jmp    16a1 <mainMenu+0x531>
cmpl   $0x15,-0x108(%rbp)
jne    14da <mainMenu+0x36a>
lea    0xfdf(%rip),%rdi
call   1040 <printf@plt>
jmp    169c <mainMenu+0x52c>
cmpl   $0x16,-0x108(%rbp)
jne    14f8 <mainMenu+0x388>
lea    0x101a(%rip),%rdi
call   1040 <printf@plt>
jmp    1697 <mainMenu+0x527>
cmpl   $0x17,-0x108(%rbp)
jne    1516 <mainMenu+0x3a6>
lea    0x102d(%rip),%rdi
call   1040 <printf@plt>
jmp    1692 <mainMenu+0x522>
cmpl   $0x18,-0x108(%rbp)
jne    1534 <mainMenu+0x3c4>
lea    0x1044(%rip),%rdi
call   1040 <printf@plt>
jmp    168d <mainMenu+0x51d>
cmpl   $0x19,-0x108(%rbp)
jne    1552 <mainMenu+0x3e2>
lea    0x1070(%rip),%rdi
call   1040 <printf@plt>
jmp    1688 <mainMenu+0x518>
cmpl   $0x1a,-0x108(%rbp)
jne    1570 <mainMenu+0x400>
lea    0x10ac(%rip),%rdi
call   1040 <printf@plt>
jmp    1683 <mainMenu+0x513>
cmpl   $0x1b,-0x108(%rbp)
jne    158e <mainMenu+0x41e>
lea    0x10b1(%rip),%rdi
call   1040 <printf@plt>
jmp    167e <mainMenu+0x50e>
cmpl   $0x1c,-0x108(%rbp)
jne    15ac <mainMenu+0x43c>
lea    0x10b6(%rip),%rdi
call   1040 <printf@plt>
jmp    1679 <mainMenu+0x509>
cmpl   $0x1d,-0x108(%rbp)
jne    15ca <mainMenu+0x45a>
lea    0x10c6(%rip),%rdi
call   1040 <printf@plt>
jmp    1674 <mainMenu+0x504>
cmpl   $0x1e,-0x108(%rbp)
jne    15e8 <mainMenu+0x478>
lea    0x10cf(%rip),%rdi
call   1040 <printf@plt>
jmp    166f <mainMenu+0x4ff>
cmpl   $0x1f,-0x108(%rbp)
jne    1606 <mainMenu+0x496>
lea    0x1109(%rip),%rdi
call   1040 <printf@plt>
jmp    166a <mainMenu+0x4fa>
cmpl   $0x20,-0x108(%rbp)
jne    1624 <mainMenu+0x4b4>
lea    0x112d(%rip),%rdi
call   1040 <printf@plt>
jmp    1665 <mainMenu+0x4f5>
cmpl   $0x21,-0x108(%rbp)
jne    1642 <mainMenu+0x4d2>
lea    0x1157(%rip),%rdi
call   1040 <printf@plt>
jmp    1660 <mainMenu+0x4f0>
cmpl   $0x22,-0x108(%rbp)
jne    165b <mainMenu+0x4eb>
lea    0x117b(%rip),%rdi
call   1040 <printf@plt>
jmp    1660 <mainMenu+0x4f0>
jmp    1665 <mainMenu+0x4f5>
jmp    166a <mainMenu+0x4fa>
jmp    166f <mainMenu+0x4ff>
jmp    1674 <mainMenu+0x504>
jmp    1679 <mainMenu+0x509>
jmp    167e <mainMenu+0x50e>
jmp    1683 <mainMenu+0x513>
jmp    1688 <mainMenu+0x518>
jmp    168d <mainMenu+0x51d>
jmp    1692 <mainMenu+0x522>
jmp    1697 <mainMenu+0x527>
jmp    169c <mainMenu+0x52c>
jmp    16a1 <mainMenu+0x531>
jmp    16a6 <mainMenu+0x536>
jmp    16ab <mainMenu+0x53b>
jmp    16b0 <mainMenu+0x540>
jmp    16b5 <mainMenu+0x545>
jmp    16ba <mainMenu+0x54a>
jmp    16bf <mainMenu+0x54f>
jmp    16c4 <mainMenu+0x554>
jmp    16c9 <mainMenu+0x559>
jmp    16ce <mainMenu+0x55e>
jmp    16d3 <mainMenu+0x563>
jmp    16d8 <mainMenu+0x568>
jmp    16dd <mainMenu+0x56d>
jmp    16e2 <mainMenu+0x572>
jmp    16e7 <mainMenu+0x577>
jmp    16ec <mainMenu+0x57c>
jmp    16f1 <mainMenu+0x581>
jmp    16f6 <mainMenu+0x586>
jmp    16fb <mainMenu+0x58b>
jmp    1700 <mainMenu+0x590>
jmp    1705 <mainMenu+0x595>
jmp    1e53 <mainMenu+0xce3>
lea    0x10e3(%rip),%rdi
call   1040 <printf@plt>
mov    $0x0,%al
call   1050 <runAbc@plt>
mov    %eax,-0x108(%rbp)
cmpl   $0x0,-0x108(%rbp)
jne    1741 <mainMenu+0x5d1>
lea    0x10d8(%rip),%rdi
call   1040 <printf@plt>
jmp    1e19 <mainMenu+0xca9>
cmpl   $0x1,-0x108(%rbp)
jne    175f <mainMenu+0x5ef>
lea    0x10d0(%rip),%rdi
call   1040 <printf@plt>
jmp    1e14 <mainMenu+0xca4>
cmpl   $0x2,-0x108(%rbp)
jne    177d <mainMenu+0x60d>
lea    0x10d3(%rip),%rdi
call   1040 <printf@plt>
jmp    1e0f <mainMenu+0xc9f>
cmpl   $0x3,-0x108(%rbp)
jne    179b <mainMenu+0x62b>
lea    0x10d6(%rip),%rdi
call   1040 <printf@plt>
jmp    1e0a <mainMenu+0xc9a>
cmpl   $0x4,-0x108(%rbp)
jne    17b9 <mainMenu+0x649>
lea    0x10db(%rip),%rdi
call   1040 <printf@plt>
jmp    1e05 <mainMenu+0xc95>
cmpl   $0x5,-0x108(%rbp)
jne    17d7 <mainMenu+0x667>
lea    0x9db(%rip),%rdi
call   1040 <printf@plt>
jmp    1e00 <mainMenu+0xc90>
cmpl   $0x6,-0x108(%rbp)
jne    17f5 <mainMenu+0x685>
lea    0x10c2(%rip),%rdi
call   1040 <printf@plt>
jmp    1dfb <mainMenu+0xc8b>
cmpl   $0x7,-0x108(%rbp)
jne    1813 <mainMenu+0x6a3>
lea    0xa08(%rip),%rdi
call   1040 <printf@plt>
jmp    1df6 <mainMenu+0xc86>
cmpl   $0x8,-0x108(%rbp)
jne    1831 <mainMenu+0x6c1>
lea    0x10a3(%rip),%rdi
call   1040 <printf@plt>
jmp    1df1 <mainMenu+0xc81>
cmpl   $0x65,-0x108(%rbp)
jne    184f <mainMenu+0x6df>
lea    0x8d1(%rip),%rdi
call   1040 <printf@plt>
jmp    1dec <mainMenu+0xc7c>
cmpl   $0x66,-0x108(%rbp)
jne    186d <mainMenu+0x6fd>
lea    0x8d8(%rip),%rdi
call   1040 <printf@plt>
jmp    1de7 <mainMenu+0xc77>
cmpl   $0x67,-0x108(%rbp)
jne    188b <mainMenu+0x71b>
lea    0x8df(%rip),%rdi
call   1040 <printf@plt>
jmp    1de2 <mainMenu+0xc72>
cmpl   $0x68,-0x108(%rbp)
jne    18a9 <mainMenu+0x739>
lea    0x8e6(%rip),%rdi
call   1040 <printf@plt>
jmp    1ddd <mainMenu+0xc6d>
cmpl   $0x69,-0x108(%rbp)
jne    18c7 <mainMenu+0x757>
lea    0x8eb(%rip),%rdi
call   1040 <printf@plt>
jmp    1dd8 <mainMenu+0xc68>
cmpl   $0x6a,-0x108(%rbp)
jne    18e5 <mainMenu+0x775>
lea    0x8f0(%rip),%rdi
call   1040 <printf@plt>
jmp    1dd3 <mainMenu+0xc63>
cmpl   $0x6b,-0x108(%rbp)
jne    1903 <mainMenu+0x793>
lea    0x8f5(%rip),%rdi
call   1040 <printf@plt>
jmp    1dce <mainMenu+0xc5e>
cmpl   $0x6c,-0x108(%rbp)
jne    1921 <mainMenu+0x7b1>
lea    0x8fa(%rip),%rdi
call   1040 <printf@plt>
jmp    1dc9 <mainMenu+0xc59>
cmpl   $0x6d,-0x108(%rbp)
jne    193f <mainMenu+0x7cf>
lea    0x938(%rip),%rdi
call   1040 <printf@plt>
jmp    1dc4 <mainMenu+0xc54>
cmpl   $0x6e,-0x108(%rbp)
jne    195d <mainMenu+0x7ed>
lea    0x93f(%rip),%rdi
call   1040 <printf@plt>
jmp    1dbf <mainMenu+0xc4f>
cmpl   $0x6f,-0x108(%rbp)
jne    197b <mainMenu+0x80b>
lea    0x969(%rip),%rdi
call   1040 <printf@plt>
jmp    1dba <mainMenu+0xc4a>
cmpl   $0x70,-0x108(%rbp)
jne    1999 <mainMenu+0x829>
lea    0x96a(%rip),%rdi
call   1040 <printf@plt>
jmp    1db5 <mainMenu+0xc45>
cmpl   $0x71,-0x108(%rbp)
jne    19b7 <mainMenu+0x847>
lea    0x984(%rip),%rdi
call   1040 <printf@plt>
jmp    1db0 <mainMenu+0xc40>
cmpl   $0x72,-0x108(%rbp)
jne    19d5 <mainMenu+0x865>
lea    0x9a3(%rip),%rdi
call   1040 <printf@plt>
jmp    1dab <mainMenu+0xc3b>
cmpl   $0x73,-0x108(%rbp)
jne    19f3 <mainMenu+0x883>
lea    0x9c2(%rip),%rdi
call   1040 <printf@plt>
jmp    1da6 <mainMenu+0xc36>
cmpl   $0x74,-0x108(%rbp)
jne    1a11 <mainMenu+0x8a1>
lea    0x9c4(%rip),%rdi
call   1040 <printf@plt>
jmp    1da1 <mainMenu+0xc31>
cmpl   $0x75,-0x108(%rbp)
jne    1a2f <mainMenu+0x8bf>
lea    0x9c6(%rip),%rdi
call   1040 <printf@plt>
jmp    1d9c <mainMenu+0xc2c>
cmpl   $0x76,-0x108(%rbp)
jne    1a4d <mainMenu+0x8dd>
lea    0x9da(%rip),%rdi
call   1040 <printf@plt>
jmp    1d97 <mainMenu+0xc27>
cmpl   $0x77,-0x108(%rbp)
jne    1a6b <mainMenu+0x8fb>
lea    0x9ec(%rip),%rdi
call   1040 <printf@plt>
jmp    1d92 <mainMenu+0xc22>
cmpl   $0x78,-0x108(%rbp)
jne    1a89 <mainMenu+0x919>
lea    0xa00(%rip),%rdi
call   1040 <printf@plt>
jmp    1d8d <mainMenu+0xc1d>
cmpl   $0x79,-0x108(%rbp)
jne    1aa7 <mainMenu+0x937>
lea    0xa12(%rip),%rdi
call   1040 <printf@plt>
jmp    1d88 <mainMenu+0xc18>
cmpl   $0x7a,-0x108(%rbp)
jne    1ac5 <mainMenu+0x955>
lea    0xa4d(%rip),%rdi
call   1040 <printf@plt>
jmp    1d83 <mainMenu+0xc13>
cmpl   $0x7b,-0x108(%rbp)
jne    1ae3 <mainMenu+0x973>
lea    0xa60(%rip),%rdi
call   1040 <printf@plt>
jmp    1d7e <mainMenu+0xc0e>
cmpl   $0x7c,-0x108(%rbp)
jne    1b01 <mainMenu+0x991>
lea    0xa77(%rip),%rdi
call   1040 <printf@plt>
jmp    1d79 <mainMenu+0xc09>
cmpl   $0x7d,-0x108(%rbp)
jne    1b1f <mainMenu+0x9af>
lea    0xaa3(%rip),%rdi
call   1040 <printf@plt>
jmp    1d74 <mainMenu+0xc04>
cmpl   $0x7e,-0x108(%rbp)
jne    1b3d <mainMenu+0x9cd>
lea    0xadf(%rip),%rdi
call   1040 <printf@plt>
jmp    1d6f <mainMenu+0xbff>
cmpl   $0x7f,-0x108(%rbp)
jne    1b5b <mainMenu+0x9eb>
lea    0xae4(%rip),%rdi
call   1040 <printf@plt>
jmp    1d6a <mainMenu+0xbfa>
cmpl   $0x80,-0x108(%rbp)
jne    1b7c <mainMenu+0xa0c>
lea    0xae6(%rip),%rdi
call   1040 <printf@plt>
jmp    1d65 <mainMenu+0xbf5>
cmpl   $0x81,-0x108(%rbp)
jne    1b9d <mainMenu+0xa2d>
lea    0xaf3(%rip),%rdi
call   1040 <printf@plt>
jmp    1d60 <mainMenu+0xbf0>
cmpl   $0x82,-0x108(%rbp)
jne    1bbe <mainMenu+0xa4e>
lea    0xaf9(%rip),%rdi
call   1040 <printf@plt>
jmp    1d5b <mainMenu+0xbeb>
cmpl   $0x83,-0x108(%rbp)
jne    1bdf <mainMenu+0xa6f>
lea    0xb30(%rip),%rdi
call   1040 <printf@plt>
jmp    1d56 <mainMenu+0xbe6>
cmpl   $0x84,-0x108(%rbp)
jne    1c00 <mainMenu+0xa90>
lea    0xb51(%rip),%rdi
call   1040 <printf@plt>
jmp    1d51 <mainMenu+0xbe1>
cmpl   $0x85,-0x108(%rbp)
jne    1c21 <mainMenu+0xab1>
lea    0xb78(%rip),%rdi
call   1040 <printf@plt>
jmp    1d4c <mainMenu+0xbdc>
cmpl   $0x86,-0x108(%rbp)
jne    1c42 <mainMenu+0xad2>
lea    0xb99(%rip),%rdi
call   1040 <printf@plt>
jmp    1d47 <mainMenu+0xbd7>
cmpl   $0xc9,-0x108(%rbp)
jne    1c63 <mainMenu+0xaf3>
lea    0xcb0(%rip),%rdi
call   1040 <printf@plt>
jmp    1d42 <mainMenu+0xbd2>
cmpl   $0xca,-0x108(%rbp)
jne    1c84 <mainMenu+0xb14>
lea    0xcb1(%rip),%rdi
call   1040 <printf@plt>
jmp    1d3d <mainMenu+0xbcd>
cmpl   $0xcb,-0x108(%rbp)
jne    1ca5 <mainMenu+0xb35>
lea    0xcb1(%rip),%rdi
call   1040 <printf@plt>
jmp    1d38 <mainMenu+0xbc8>
cmpl   $0xcc,-0x108(%rbp)
jne    1cc6 <mainMenu+0xb56>
lea    0xcb3(%rip),%rdi
call   1040 <printf@plt>
jmp    1d33 <mainMenu+0xbc3>
cmpl   $0xcd,-0x108(%rbp)
jne    1ce7 <mainMenu+0xb77>
lea    0xcb5(%rip),%rdi
call   1040 <printf@plt>
jmp    1d2e <mainMenu+0xbbe>
cmpl   $0xce,-0x108(%rbp)
jne    1d08 <mainMenu+0xb98>
lea    0xcb7(%rip),%rdi
call   1040 <printf@plt>
jmp    1d29 <mainMenu+0xbb9>
cmpl   $0xcf,-0x108(%rbp)
jne    1d24 <mainMenu+0xbb4>
lea    0xcbd(%rip),%rdi
call   1040 <printf@plt>
jmp    1d29 <mainMenu+0xbb9>
jmp    1d2e <mainMenu+0xbbe>
jmp    1d33 <mainMenu+0xbc3>
jmp    1d38 <mainMenu+0xbc8>
jmp    1d3d <mainMenu+0xbcd>
jmp    1d42 <mainMenu+0xbd2>
jmp    1d47 <mainMenu+0xbd7>
jmp    1d4c <mainMenu+0xbdc>
jmp    1d51 <mainMenu+0xbe1>
jmp    1d56 <mainMenu+0xbe6>
jmp    1d5b <mainMenu+0xbeb>
jmp    1d60 <mainMenu+0xbf0>
jmp    1d65 <mainMenu+0xbf5>
jmp    1d6a <mainMenu+0xbfa>
jmp    1d6f <mainMenu+0xbff>
jmp    1d74 <mainMenu+0xc04>
jmp    1d79 <mainMenu+0xc09>
jmp    1d7e <mainMenu+0xc0e>
jmp    1d83 <mainMenu+0xc13>
jmp    1d88 <mainMenu+0xc18>
jmp    1d8d <mainMenu+0xc1d>
jmp    1d92 <mainMenu+0xc22>
jmp    1d97 <mainMenu+0xc27>
jmp    1d9c <mainMenu+0xc2c>
jmp    1da1 <mainMenu+0xc31>
jmp    1da6 <mainMenu+0xc36>
jmp    1dab <mainMenu+0xc3b>
jmp    1db0 <mainMenu+0xc40>
jmp    1db5 <mainMenu+0xc45>
jmp    1dba <mainMenu+0xc4a>
jmp    1dbf <mainMenu+0xc4f>
jmp    1dc4 <mainMenu+0xc54>
jmp    1dc9 <mainMenu+0xc59>
jmp    1dce <mainMenu+0xc5e>
jmp    1dd3 <mainMenu+0xc63>
jmp    1dd8 <mainMenu+0xc68>
jmp    1ddd <mainMenu+0xc6d>
jmp    1de2 <mainMenu+0xc72>
jmp    1de7 <mainMenu+0xc77>
jmp    1dec <mainMenu+0xc7c>
jmp    1df1 <mainMenu+0xc81>
jmp    1df6 <mainMenu+0xc86>
jmp    1dfb <mainMenu+0xc8b>
jmp    1e00 <mainMenu+0xc90>
jmp    1e05 <mainMenu+0xc95>
jmp    1e0a <mainMenu+0xc9a>
jmp    1e0f <mainMenu+0xc9f>
jmp    1e14 <mainMenu+0xca4>
jmp    1e19 <mainMenu+0xca9>
jmp    1e53 <mainMenu+0xce3>
mov    $0x0,%al
call   1060 <customMenu@plt>
jmp    1e53 <mainMenu+0xce3>
mov    $0x0,%al
call   1090 <toolsMenu@plt>
jmp    1e53 <mainMenu+0xce3>
lea    0xbce(%rip),%rdi
call   1040 <printf@plt>
jmp    1e53 <mainMenu+0xce3>
lea    0xbd3(%rip),%rdi
call   1040 <printf@plt>
jmp    1e58 <mainMenu+0xce8>
cmpl   $0x5,-0x104(%rbp)
jne    117b <mainMenu+0xb>
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mainMenu>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
lea    0x1bd1(%rip),%rbx
lea    0x1bd6(%rip),%rbp
lea    0x123a(%rip),%r14
lea    0x1248(%rip),%r15
mov    %rsp,%r12
lea    0xe49(%rip),%r13
jmp    11c0 <mainMenu+0x40>
xor    %eax,%eax
call   10a0 <toolsMenu@plt>
lea    0x1b1f(%rip),%rdi
call   1030 <puts@plt>
lea    0x1b24(%rip),%rdi
call   1030 <puts@plt>
lea    0x1b3d(%rip),%rdi
call   1030 <puts@plt>
lea    0x1b5c(%rip),%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %rbp,%rdi
call   1030 <puts@plt>
mov    %r14,%rdi
call   1050 <printf@plt>
mov    %r15,%rdi
mov    %r12,%rsi
call   1080 <scanf@plt>
mov    %r12,%rdi
call   1090 <atoi@plt>
add    $0xffffffff,%eax
cmp    $0x4,%eax
ja     126c <mainMenu+0xec>
movslq 0x0(%r13,%rax,4),%rax
add    %r13,%rax
jmp    *%rax
lea    0x1b90(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
call   1040 <simulate@plt>
cmp    $0x22,%eax
ja     11c0 <mainMenu+0x40>
mov    %eax,%eax
lea    0x1102(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1196(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1b70(%rip),%rdi
call   1030 <puts@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1b11(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
call   1060 <runAbc@plt>
cmp    $0xcf,%eax
ja     11c0 <mainMenu+0x40>
mov    %eax,%eax
lea    0xd70(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1200(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
xor    %eax,%eax
call   1070 <customMenu@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x124c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1140(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1154(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1168(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x117c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x11b1(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x11c3(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1231(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1245(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x127c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x128a(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x12b1(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x12dd(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1309(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1318(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1327(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1348(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1367(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1388(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x13a7(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x13ef(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x140f(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1433(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x146c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x14b5(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x14c7(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x14d9(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x14f6(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x150c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1553(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1584(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x15bb(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x15ec(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x18ad(%rip),%rdi
call   1030 <puts@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x15ed(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x15fd(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x160d(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x161f(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1631(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x163d(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x166b(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x167c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x168c(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x169e(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x16b0(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x16c2(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x16d8(%rip),%rdi
call   1050 <printf@plt>
jmp    11c0 <mainMenu+0x40>
lea    0x1790(%rip),%rdi
call   1030 <puts@plt>
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [18 x i8] c"\0A\0A *Main Menu*\0A\0A\00"
@.str.1 = [38 x i8] c" 1. Create a simulated \22real\22 data\0A\0A\00"
@.str.2 = [44 x i8] c" 2. Run the ABC algorithm on \22real\22 data\0A\0A\00"
@.str.3 = [35 x i8] c" 3. Customize the ABC algorithm\0A\0A\00"
@.str.4 = [13 x i8] c" 4. Tools\0A\0A\00"
@.str.5 = [12 x i8] c" 5. Exit\0A\0A\00"
@.str.6 = [21 x i8] c" choose an option: \00"
@.str.7 = [3 x i8] c"%s\00"
@.str.8 = [32 x i8] c"\0A\0A\0A *Simulate Data with ABC*\0A\0A\00"
@.str.9 = [42 x i8] c"\0A\0A>simulation completed (report created).\00"
@.str.10 = [37 x i8] c"\0A\0A>error::cannot open the .prs file!\00"
@.str.11 = [37 x i8] c"\0A\0A>error::cannot open the .ssz file!\00"
@.str.12 = [37 x i8] c"\0A\0A>error::cannot open the .sst file!\00"
@.str.13 = [35 x i8] c"\0A\0A>error::cannot create .dat file!\00"
@.str.14 = [35 x i8] c"\0A\0A>error::cannot create info file!\00"
@.str.15 = [35 x i8] c"\0A\0A>error::while reading .ssz file!\00"
@.str.16 = [35 x i8] c"\0A\0A>error::while reading .sst file!\00"
@.str.17 = [92 x i8] c"\0A\0A>error::following sstats can only be chosen with 2 or more pops: Nm_H; Nm_S; privS; S(1)!\00"
@.str.18 = [37 x i8] c"\0A\0A>error::wrong topology prior type!\00"
@.str.19 = [72 x i8] c"\0A\0A>error::with 1 or 2 pops only topology prior type 0 or 3 can be used!\00"
@.str.20 = [31 x i8] c"\0A\0A>error::wrong Ne prior type!\00"
@.str.21 = [56 x i8] c"\0A\0A>error::type-2 tev is followed by another type-2 tev!\00"
@.str.22 = [61 x i8] c"\0A\0A>error::if using tev type 3 prior, define prior only once!\00"
@.str.23 = [61 x i8] c"\0A\0A>error::if using tev type 4 prior, define prior only once!\00"
@.str.24 = [32 x i8] c"\0A\0A>error::wrong Tev prior type!\00"
@.str.25 = [32 x i8] c"\0A\0A>error::wrong Mig prior type!\00"
@.str.26 = [50 x i8] c"\0A\0A>error::wrong Mut prior type (Microsatellites)!\00"
@.str.27 = [48 x i8] c"\0A\0A>error::wrong Mut prior type (Sequence Data)!\00"
@.str.28 = [50 x i8] c"\0A\0A>error::wrong Rec prior type (Microsatellites)!\00"
@.str.29 = [48 x i8] c"\0A\0A>error::wrong Rec prior type (Sequence Data)!\00"
@.str.30 = [89 x i8] c"\0A\0A>error::to use migration weights matrix, topology must be defined (option 1,2,4 or 5)!\00"
@.str.31 = [49 x i8] c"\0A\0A>error::wrong migration weights matrix option!\00"
@.str.32 = [53 x i8] c"\0A\0A>error::.dat file would be too big to be analyzed!\00"
@.str.33 = [74 x i8] c"\0A\0A>error::when using rec with STR all STR loci must have the same scalar!\00"
@.str.34 = [90 x i8] c"\0A\0A>error::when using rec with STR all STR loci must have the same samples per population!\00"
@.str.35 = [35 x i8] c"\0A\0A>error::cannot create .mut file!\00"
@.str.36 = [35 x i8] c"\0A\0A>error::cannot create .rec file!\00"
@.str.37 = [46 x i8] c"\0A\0A>error::times are not monotonic increasing!\00"
@.str.38 = [39 x i8] c"\0A\0A>error::choosing branching sequence!\00"
@.str.39 = [88 x i8] c"\0A\0A>error::with more than 5 populations the topology as to be fixed using option 2 or 5!\00"
@.str.40 = [66 x i8] c"\0A\0A>error::the locus have less than samples, it should be cleared!\00"
@.str.41 = [72 x i8] c"\0A\0A>error::migration weights for the considered population have to be 0!\00"
@.str.42 = [66 x i8] c"\0A\0A>error::the sum of the prob for a given migration as to be 1.0!\00"
@.str.43 = [35 x i8] c"\0A\0A>error::cannot create .len file!\00"
@.str.44 = [27 x i8] c"\0A\0A\0A *Run ABC algorithm*\0A\0A\00"
@.str.45 = [22 x i8] c"\0A\0A>ABC run completed\0A\00"
@.str.46 = [33 x i8] c"\0A\0A>error::cannot open .len file!\00"
@.str.47 = [33 x i8] c"\0A\0A>error::cannot open .sst file!\00"
@.str.48 = [35 x i8] c"\0A\0A>error::cannot create .trg file!\00"
@.str.49 = [35 x i8] c"\0A\0A>error::cannot create .ssz file!\00"
@.str.50 = [29 x i8] c"\0A\0A>error::reading .sst file!\00"
@.str.51 = [63 x i8] c"\0A\0A>error::sequence data locus without information, discard it!\00"
@.str.52 = [34 x i8] c"\0A\0A>error::could't open .dat file!\00"
@.str.53 = [33 x i8] c"\0A\0A>error::cannot open .trg file!\00"
@.str.54 = [35 x i8] c"\0A\0A>error::cannot create .rej file!\00"
@.str.55 = [35 x i8] c"\0A\0A>error::cannot create .pri file!\00"
@.str.56 = [35 x i8] c"\0A\0A>error::cannot create .txt file!\00"
@.str.57 = [39 x i8] c"\0A\0A>error::file .dat ended prematurely!\00"
@.str.58 = [47 x i8] c"\0A\0A>error::.dat file is too big to be analysed!\00"
@.str.59 = [22 x i8] c"\0A\0A...exiting popABC\0A\0A\00"
@.str.60 = [32 x i8] c"\0A\0A>error::option not available\0A\00"
define void @mainMenu() {
%1 = alloca [256 x i8]
%2 = alloca i32
%3 = alloca i32
br label %4
4: ; preds = %540, %0
%5 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.2, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.3, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.6, i64 0, i64 0))
%12 = bitcast [256 x i8]* %1 to i8**
%13 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8** %12)
%14 = getelementptr inbounds [256 x i8], [256 x i8]* %1, i64 0, i64 0
%15 = call i32 @atoi(i8* %14)
store i32 %15, i32* %2
%16 = load i32, i32* %2
switch i32 %16, label %537 [
i32 1, label %17
i32 2, label %229
i32 3, label %531
i32 4, label %533
i32 5, label %535
]
17: ; preds = %4
%18 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.8, i64 0, i64 0))
%19 = call i32 (...) @simulate()
store i32 %19, i32* %3
%20 = load i32, i32* %3
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %17
%23 = call i32 @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.9, i64 0, i64 0))
br label %228
24: ; preds = %17
%25 = load i32, i32* %3
%26 = icmp eq i32 %25, 1
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0))
br label %227
29: ; preds = %24
%30 = load i32, i32* %3
%31 = icmp eq i32 %30, 2
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0))
br label %226
34: ; preds = %29
%35 = load i32, i32* %3
%36 = icmp eq i32 %35, 3
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
br label %225
39: ; preds = %34
%40 = load i32, i32* %3
%41 = icmp eq i32 %40, 4
br i1 %41, label %42, label %44
42: ; preds = %39
%43 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0))
br label %224
44: ; preds = %39
%45 = load i32, i32* %3
%46 = icmp eq i32 %45, 5
br i1 %46, label %47, label %49
47: ; preds = %44
%48 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %223
49: ; preds = %44
%50 = load i32, i32* %3
%51 = icmp eq i32 %50, 6
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.15, i64 0, i64 0))
br label %222
54: ; preds = %49
%55 = load i32, i32* %3
%56 = icmp eq i32 %55, 7
br i1 %56, label %57, label %59
57: ; preds = %54
%58 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.16, i64 0, i64 0))
br label %221
59: ; preds = %54
%60 = load i32, i32* %3
%61 = icmp eq i32 %60, 8
br i1 %61, label %62, label %64
62: ; preds = %59
%63 = call i32 @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %220
64: ; preds = %59
%65 = load i32, i32* %3
%66 = icmp eq i32 %65, 9
br i1 %66, label %67, label %69
67: ; preds = %64
%68 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0))
br label %219
69: ; preds = %64
%70 = load i32, i32* %3
%71 = icmp eq i32 %70, 10
br i1 %71, label %72, label %74
72: ; preds = %69
%73 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.19, i64 0, i64 0))
br label %218
74: ; preds = %69
%75 = load i32, i32* %3
%76 = icmp eq i32 %75, 11
br i1 %76, label %77, label %79
77: ; preds = %74
%78 = call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
br label %217
79: ; preds = %74
%80 = load i32, i32* %3
%81 = icmp eq i32 %80, 12
br i1 %81, label %82, label %84
82: ; preds = %79
%83 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.21, i64 0, i64 0))
br label %216
84: ; preds = %79
%85 = load i32, i32* %3
%86 = icmp eq i32 %85, 13
br i1 %86, label %87, label %89
87: ; preds = %84
%88 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0))
br label %215
89: ; preds = %84
%90 = load i32, i32* %3
%91 = icmp eq i32 %90, 14
br i1 %91, label %92, label %94
92: ; preds = %89
%93 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.23, i64 0, i64 0))
br label %214
94: ; preds = %89
%95 = load i32, i32* %3
%96 = icmp eq i32 %95, 15
br i1 %96, label %97, label %99
97: ; preds = %94
%98 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.24, i64 0, i64 0))
br label %213
99: ; preds = %94
%100 = load i32, i32* %3
%101 = icmp eq i32 %100, 16
br i1 %101, label %102, label %104
102: ; preds = %99
%103 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.25, i64 0, i64 0))
br label %212
104: ; preds = %99
%105 = load i32, i32* %3
%106 = icmp eq i32 %105, 17
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.26, i64 0, i64 0))
br label %211
109: ; preds = %104
%110 = load i32, i32* %3
%111 = icmp eq i32 %110, 18
br i1 %111, label %112, label %114
112: ; preds = %109
%113 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0))
br label %210
114: ; preds = %109
%115 = load i32, i32* %3
%116 = icmp eq i32 %115, 19
br i1 %116, label %117, label %119
117: ; preds = %114
%118 = call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.28, i64 0, i64 0))
br label %209
119: ; preds = %114
%120 = load i32, i32* %3
%121 = icmp eq i32 %120, 20
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
br label %208
124: ; preds = %119
%125 = load i32, i32* %3
%126 = icmp eq i32 %125, 21
br i1 %126, label %127, label %129
127: ; preds = %124
%128 = call i32 @printf(i8* getelementptr inbounds ([89 x i8], [89 x i8]* @.str.30, i64 0, i64 0))
br label %207
129: ; preds = %124
%130 = load i32, i32* %3
%131 = icmp eq i32 %130, 22
br i1 %131, label %132, label %134
132: ; preds = %129
%133 = call i32 @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.31, i64 0, i64 0))
br label %206
134: ; preds = %129
%135 = load i32, i32* %3
%136 = icmp eq i32 %135, 23
br i1 %136, label %137, label %139
137: ; preds = %134
%138 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.32, i64 0, i64 0))
br label %205
139: ; preds = %134
%140 = load i32, i32* %3
%141 = icmp eq i32 %140, 24
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = call i32 @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.33, i64 0, i64 0))
br label %204
144: ; preds = %139
%145 = load i32, i32* %3
%146 = icmp eq i32 %145, 25
br i1 %146, label %147, label %149
147: ; preds = %144
%148 = call i32 @printf(i8* getelementptr inbounds ([90 x i8], [90 x i8]* @.str.34, i64 0, i64 0))
br label %203
149: ; preds = %144
%150 = load i32, i32* %3
%151 = icmp eq i32 %150, 26
br i1 %151, label %152, label %154
152: ; preds = %149
%153 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.35, i64 0, i64 0))
br label %202
154: ; preds = %149
%155 = load i32, i32* %3
%156 = icmp eq i32 %155, 27
br i1 %156, label %157, label %159
157: ; preds = %154
%158 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
br label %201
159: ; preds = %154
%160 = load i32, i32* %3
%161 = icmp eq i32 %160, 28
br i1 %161, label %162, label %164
162: ; preds = %159
%163 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.37, i64 0, i64 0))
br label %200
164: ; preds = %159
%165 = load i32, i32* %3
%166 = icmp eq i32 %165, 29
br i1 %166, label %167, label %169
167: ; preds = %164
%168 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.38, i64 0, i64 0))
br label %199
169: ; preds = %164
%170 = load i32, i32* %3
%171 = icmp eq i32 %170, 30
br i1 %171, label %172, label %174
172: ; preds = %169
%173 = call i32 @printf(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.39, i64 0, i64 0))
br label %198
174: ; preds = %169
%175 = load i32, i32* %3
%176 = icmp eq i32 %175, 31
br i1 %176, label %177, label %179
177: ; preds = %174
%178 = call i32 @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.40, i64 0, i64 0))
br label %197
179: ; preds = %174
%180 = load i32, i32* %3
%181 = icmp eq i32 %180, 32
br i1 %181, label %182, label %184
182: ; preds = %179
%183 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0))
br label %196
184: ; preds = %179
%185 = load i32, i32* %3
%186 = icmp eq i32 %185, 33
br i1 %186, label %187, label %189
187: ; preds = %184
%188 = call i32 @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.42, i64 0, i64 0))
br label %195
189: ; preds = %184
%190 = load i32, i32* %3
%191 = icmp eq i32 %190, 34
br i1 %191, label %192, label %194
192: ; preds = %189
%193 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
br label %194
194: ; preds = %192, %189
br label %195
195: ; preds = %194, %187
br label %196
196: ; preds = %195, %182
br label %197
197: ; preds = %196, %177
br label %198
198: ; preds = %197, %172
br label %199
199: ; preds = %198, %167
br label %200
200: ; preds = %199, %162
br label %201
201: ; preds = %200, %157
br label %202
202: ; preds = %201, %152
br label %203
203: ; preds = %202, %147
br label %204
204: ; preds = %203, %142
br label %205
205: ; preds = %204, %137
br label %206
206: ; preds = %205, %132
br label %207
207: ; preds = %206, %127
br label %208
208: ; preds = %207, %122
br label %209
209: ; preds = %208, %117
br label %210
210: ; preds = %209, %112
br label %211
211: ; preds = %210, %107
br label %212
212: ; preds = %211, %102
br label %213
213: ; preds = %212, %97
br label %214
214: ; preds = %213, %92
br label %215
215: ; preds = %214, %87
br label %216
216: ; preds = %215, %82
br label %217
217: ; preds = %216, %77
br label %218
218: ; preds = %217, %72
br label %219
219: ; preds = %218, %67
br label %220
220: ; preds = %219, %62
br label %221
221: ; preds = %220, %57
br label %222
222: ; preds = %221, %52
br label %223
223: ; preds = %222, %47
br label %224
224: ; preds = %223, %42
br label %225
225: ; preds = %224, %37
br label %226
226: ; preds = %225, %32
br label %227
227: ; preds = %226, %27
br label %228
228: ; preds = %227, %22
br label %539
229: ; preds = %4
%230 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.44, i64 0, i64 0))
%231 = call i32 (...) @runAbc()
store i32 %231, i32* %3
%232 = load i32, i32* %3
%233 = icmp eq i32 %232, 0
br i1 %233, label %234, label %236
234: ; preds = %229
%235 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.45, i64 0, i64 0))
br label %530
236: ; preds = %229
%237 = load i32, i32* %3
%238 = icmp eq i32 %237, 1
br i1 %238, label %239, label %241
239: ; preds = %236
%240 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.46, i64 0, i64 0))
br label %529
241: ; preds = %236
%242 = load i32, i32* %3
%243 = icmp eq i32 %242, 2
br i1 %243, label %244, label %246
244: ; preds = %241
%245 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.47, i64 0, i64 0))
br label %528
246: ; preds = %241
%247 = load i32, i32* %3
%248 = icmp eq i32 %247, 3
br i1 %248, label %249, label %251
249: ; preds = %246
%250 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.48, i64 0, i64 0))
br label %527
251: ; preds = %246
%252 = load i32, i32* %3
%253 = icmp eq i32 %252, 4
br i1 %253, label %254, label %256
254: ; preds = %251
%255 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.49, i64 0, i64 0))
br label %526
256: ; preds = %251
%257 = load i32, i32* %3
%258 = icmp eq i32 %257, 5
br i1 %258, label %259, label %261
259: ; preds = %256
%260 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %525
261: ; preds = %256
%262 = load i32, i32* %3
%263 = icmp eq i32 %262, 6
br i1 %263, label %264, label %266
264: ; preds = %261
%265 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.50, i64 0, i64 0))
br label %524
266: ; preds = %261
%267 = load i32, i32* %3
%268 = icmp eq i32 %267, 7
br i1 %268, label %269, label %271
269: ; preds = %266
%270 = call i32 @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %523
271: ; preds = %266
%272 = load i32, i32* %3
%273 = icmp eq i32 %272, 8
br i1 %273, label %274, label %276
274: ; preds = %271
%275 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.51, i64 0, i64 0))
br label %522
276: ; preds = %271
%277 = load i32, i32* %3
%278 = icmp eq i32 %277, 101
br i1 %278, label %279, label %281
279: ; preds = %276
%280 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0))
br label %521
281: ; preds = %276
%282 = load i32, i32* %3
%283 = icmp eq i32 %282, 102
br i1 %283, label %284, label %286
284: ; preds = %281
%285 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0))
br label %520
286: ; preds = %281
%287 = load i32, i32* %3
%288 = icmp eq i32 %287, 103
br i1 %288, label %289, label %291
289: ; preds = %286
%290 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
br label %519
291: ; preds = %286
%292 = load i32, i32* %3
%293 = icmp eq i32 %292, 104
br i1 %293, label %294, label %296
294: ; preds = %291
%295 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0))
br label %518
296: ; preds = %291
%297 = load i32, i32* %3
%298 = icmp eq i32 %297, 105
br i1 %298, label %299, label %301
299: ; preds = %296
%300 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %517
301: ; preds = %296
%302 = load i32, i32* %3
%303 = icmp eq i32 %302, 106
br i1 %303, label %304, label %306
304: ; preds = %301
%305 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.15, i64 0, i64 0))
br label %516
306: ; preds = %301
%307 = load i32, i32* %3
%308 = icmp eq i32 %307, 107
br i1 %308, label %309, label %311
309: ; preds = %306
%310 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.16, i64 0, i64 0))
br label %515
311: ; preds = %306
%312 = load i32, i32* %3
%313 = icmp eq i32 %312, 108
br i1 %313, label %314, label %316
314: ; preds = %311
%315 = call i32 @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %514
316: ; preds = %311
%317 = load i32, i32* %3
%318 = icmp eq i32 %317, 109
br i1 %318, label %319, label %321
319: ; preds = %316
%320 = call i32 @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0))
br label %513
321: ; preds = %316
%322 = load i32, i32* %3
%323 = icmp eq i32 %322, 110
br i1 %323, label %324, label %326
324: ; preds = %321
%325 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.19, i64 0, i64 0))
br label %512
326: ; preds = %321
%327 = load i32, i32* %3
%328 = icmp eq i32 %327, 111
br i1 %328, label %329, label %331
329: ; preds = %326
%330 = call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
br label %511
331: ; preds = %326
%332 = load i32, i32* %3
%333 = icmp eq i32 %332, 112
br i1 %333, label %334, label %336
334: ; preds = %331
%335 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.21, i64 0, i64 0))
br label %510
336: ; preds = %331
%337 = load i32, i32* %3
%338 = icmp eq i32 %337, 113
br i1 %338, label %339, label %341
339: ; preds = %336
%340 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0))
br label %509
341: ; preds = %336
%342 = load i32, i32* %3
%343 = icmp eq i32 %342, 114
br i1 %343, label %344, label %346
344: ; preds = %341
%345 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.23, i64 0, i64 0))
br label %508
346: ; preds = %341
%347 = load i32, i32* %3
%348 = icmp eq i32 %347, 115
br i1 %348, label %349, label %351
349: ; preds = %346
%350 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.24, i64 0, i64 0))
br label %507
351: ; preds = %346
%352 = load i32, i32* %3
%353 = icmp eq i32 %352, 116
br i1 %353, label %354, label %356
354: ; preds = %351
%355 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.25, i64 0, i64 0))
br label %506
356: ; preds = %351
%357 = load i32, i32* %3
%358 = icmp eq i32 %357, 117
br i1 %358, label %359, label %361
359: ; preds = %356
%360 = call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.26, i64 0, i64 0))
br label %505
361: ; preds = %356
%362 = load i32, i32* %3
%363 = icmp eq i32 %362, 118
br i1 %363, label %364, label %366
364: ; preds = %361
%365 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0))
br label %504
366: ; preds = %361
%367 = load i32, i32* %3
%368 = icmp eq i32 %367, 119
br i1 %368, label %369, label %371
369: ; preds = %366
%370 = call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.28, i64 0, i64 0))
br label %503
371: ; preds = %366
%372 = load i32, i32* %3
%373 = icmp eq i32 %372, 120
br i1 %373, label %374, label %376
374: ; preds = %371
%375 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
br label %502
376: ; preds = %371
%377 = load i32, i32* %3
%378 = icmp eq i32 %377, 121
br i1 %378, label %379, label %381
379: ; preds = %376
%380 = call i32 @printf(i8* getelementptr inbounds ([89 x i8], [89 x i8]* @.str.30, i64 0, i64 0))
br label %501
381: ; preds = %376
%382 = load i32, i32* %3
%383 = icmp eq i32 %382, 122
br i1 %383, label %384, label %386
384: ; preds = %381
%385 = call i32 @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.31, i64 0, i64 0))
br label %500
386: ; preds = %381
%387 = load i32, i32* %3
%388 = icmp eq i32 %387, 123
br i1 %388, label %389, label %391
389: ; preds = %386
%390 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.32, i64 0, i64 0))
br label %499
391: ; preds = %386
%392 = load i32, i32* %3
%393 = icmp eq i32 %392, 124
br i1 %393, label %394, label %396
394: ; preds = %391
%395 = call i32 @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.33, i64 0, i64 0))
br label %498
396: ; preds = %391
%397 = load i32, i32* %3
%398 = icmp eq i32 %397, 125
br i1 %398, label %399, label %401
399: ; preds = %396
%400 = call i32 @printf(i8* getelementptr inbounds ([90 x i8], [90 x i8]* @.str.34, i64 0, i64 0))
br label %497
401: ; preds = %396
%402 = load i32, i32* %3
%403 = icmp eq i32 %402, 126
br i1 %403, label %404, label %406
404: ; preds = %401
%405 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.35, i64 0, i64 0))
br label %496
406: ; preds = %401
%407 = load i32, i32* %3
%408 = icmp eq i32 %407, 127
br i1 %408, label %409, label %411
409: ; preds = %406
%410 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
br label %495
411: ; preds = %406
%412 = load i32, i32* %3
%413 = icmp eq i32 %412, 128
br i1 %413, label %414, label %416
414: ; preds = %411
%415 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.37, i64 0, i64 0))
br label %494
416: ; preds = %411
%417 = load i32, i32* %3
%418 = icmp eq i32 %417, 129
br i1 %418, label %419, label %421
419: ; preds = %416
%420 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.38, i64 0, i64 0))
br label %493
421: ; preds = %416
%422 = load i32, i32* %3
%423 = icmp eq i32 %422, 130
br i1 %423, label %424, label %426
424: ; preds = %421
%425 = call i32 @printf(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.39, i64 0, i64 0))
br label %492
426: ; preds = %421
%427 = load i32, i32* %3
%428 = icmp eq i32 %427, 131
br i1 %428, label %429, label %431
429: ; preds = %426
%430 = call i32 @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.40, i64 0, i64 0))
br label %491
431: ; preds = %426
%432 = load i32, i32* %3
%433 = icmp eq i32 %432, 132
br i1 %433, label %434, label %436
434: ; preds = %431
%435 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0))
br label %490
436: ; preds = %431
%437 = load i32, i32* %3
%438 = icmp eq i32 %437, 133
br i1 %438, label %439, label %441
439: ; preds = %436
%440 = call i32 @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.42, i64 0, i64 0))
br label %489
441: ; preds = %436
%442 = load i32, i32* %3
%443 = icmp eq i32 %442, 134
br i1 %443, label %444, label %446
444: ; preds = %441
%445 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
br label %488
446: ; preds = %441
%447 = load i32, i32* %3
%448 = icmp eq i32 %447, 201
br i1 %448, label %449, label %451
449: ; preds = %446
%450 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.52, i64 0, i64 0))
br label %487
451: ; preds = %446
%452 = load i32, i32* %3
%453 = icmp eq i32 %452, 202
br i1 %453, label %454, label %456
454: ; preds = %451
%455 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.53, i64 0, i64 0))
br label %486
456: ; preds = %451
%457 = load i32, i32* %3
%458 = icmp eq i32 %457, 203
br i1 %458, label %459, label %461
459: ; preds = %456
%460 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.54, i64 0, i64 0))
br label %485
461: ; preds = %456
%462 = load i32, i32* %3
%463 = icmp eq i32 %462, 204
br i1 %463, label %464, label %466
464: ; preds = %461
%465 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.55, i64 0, i64 0))
br label %484
466: ; preds = %461
%467 = load i32, i32* %3
%468 = icmp eq i32 %467, 205
br i1 %468, label %469, label %471
469: ; preds = %466
%470 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.56, i64 0, i64 0))
br label %483
471: ; preds = %466
%472 = load i32, i32* %3
%473 = icmp eq i32 %472, 206
br i1 %473, label %474, label %476
474: ; preds = %471
%475 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.57, i64 0, i64 0))
br label %482
476: ; preds = %471
%477 = load i32, i32* %3
%478 = icmp eq i32 %477, 207
br i1 %478, label %479, label %481
479: ; preds = %476
%480 = call i32 @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.58, i64 0, i64 0))
br label %481
481: ; preds = %479, %476
br label %482
482: ; preds = %481, %474
br label %483
483: ; preds = %482, %469
br label %484
484: ; preds = %483, %464
br label %485
485: ; preds = %484, %459
br label %486
486: ; preds = %485, %454
br label %487
487: ; preds = %486, %449
br label %488
488: ; preds = %487, %444
br label %489
489: ; preds = %488, %439
br label %490
490: ; preds = %489, %434
br label %491
491: ; preds = %490, %429
br label %492
492: ; preds = %491, %424
br label %493
493: ; preds = %492, %419
br label %494
494: ; preds = %493, %414
br label %495
495: ; preds = %494, %409
br label %496
496: ; preds = %495, %404
br label %497
497: ; preds = %496, %399
br label %498
498: ; preds = %497, %394
br label %499
499: ; preds = %498, %389
br label %500
500: ; preds = %499, %384
br label %501
501: ; preds = %500, %379
br label %502
502: ; preds = %501, %374
br label %503
503: ; preds = %502, %369
br label %504
504: ; preds = %503, %364
br label %505
505: ; preds = %504, %359
br label %506
506: ; preds = %505, %354
br label %507
507: ; preds = %506, %349
br label %508
508: ; preds = %507, %344
br label %509
509: ; preds = %508, %339
br label %510
510: ; preds = %509, %334
br label %511
511: ; preds = %510, %329
br label %512
512: ; preds = %511, %324
br label %513
513: ; preds = %512, %319
br label %514
514: ; preds = %513, %314
br label %515
515: ; preds = %514, %309
br label %516
516: ; preds = %515, %304
br label %517
517: ; preds = %516, %299
br label %518
518: ; preds = %517, %294
br label %519
519: ; preds = %518, %289
br label %520
520: ; preds = %519, %284
br label %521
521: ; preds = %520, %279
br label %522
522: ; preds = %521, %274
br label %523
523: ; preds = %522, %269
br label %524
524: ; preds = %523, %264
br label %525
525: ; preds = %524, %259
br label %526
526: ; preds = %525, %254
br label %527
527: ; preds = %526, %249
br label %528
528: ; preds = %527, %244
br label %529
529: ; preds = %528, %239
br label %530
530: ; preds = %529, %234
br label %539
531: ; preds = %4
%532 = call i32 (...) @customMenu()
br label %539
533: ; preds = %4
%534 = call i32 (...) @toolsMenu()
br label %539
535: ; preds = %4
%536 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.59, i64 0, i64 0))
br label %539
537: ; preds = %4
%538 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.60, i64 0, i64 0))
br label %539
539: ; preds = %537, %535, %533, %531, %530, %228
br label %540
540: ; preds = %539
%541 = load i32, i32* %2
%542 = icmp ne i32 %541, 5
br i1 %542, label %4, label %543
543: ; preds = %540
ret void
}

LLVM IR (-O2):
@.str.6 = [21 x i8] c" choose an option: \00"
@.str.7 = [3 x i8] c"%s\00"
@.str.9 = [42 x i8] c"\0A\0A>simulation completed (report created).\00"
@.str.10 = [37 x i8] c"\0A\0A>error::cannot open the .prs file!\00"
@.str.11 = [37 x i8] c"\0A\0A>error::cannot open the .ssz file!\00"
@.str.12 = [37 x i8] c"\0A\0A>error::cannot open the .sst file!\00"
@.str.13 = [35 x i8] c"\0A\0A>error::cannot create .dat file!\00"
@.str.14 = [35 x i8] c"\0A\0A>error::cannot create info file!\00"
@.str.15 = [35 x i8] c"\0A\0A>error::while reading .ssz file!\00"
@.str.16 = [35 x i8] c"\0A\0A>error::while reading .sst file!\00"
@.str.17 = [92 x i8] c"\0A\0A>error::following sstats can only be chosen with 2 or more pops: Nm_H; Nm_S; privS; S(1)!\00"
@.str.18 = [37 x i8] c"\0A\0A>error::wrong topology prior type!\00"
@.str.19 = [72 x i8] c"\0A\0A>error::with 1 or 2 pops only topology prior type 0 or 3 can be used!\00"
@.str.20 = [31 x i8] c"\0A\0A>error::wrong Ne prior type!\00"
@.str.21 = [56 x i8] c"\0A\0A>error::type-2 tev is followed by another type-2 tev!\00"
@.str.22 = [61 x i8] c"\0A\0A>error::if using tev type 3 prior, define prior only once!\00"
@.str.23 = [61 x i8] c"\0A\0A>error::if using tev type 4 prior, define prior only once!\00"
@.str.24 = [32 x i8] c"\0A\0A>error::wrong Tev prior type!\00"
@.str.25 = [32 x i8] c"\0A\0A>error::wrong Mig prior type!\00"
@.str.26 = [50 x i8] c"\0A\0A>error::wrong Mut prior type (Microsatellites)!\00"
@.str.27 = [48 x i8] c"\0A\0A>error::wrong Mut prior type (Sequence Data)!\00"
@.str.28 = [50 x i8] c"\0A\0A>error::wrong Rec prior type (Microsatellites)!\00"
@.str.29 = [48 x i8] c"\0A\0A>error::wrong Rec prior type (Sequence Data)!\00"
@.str.30 = [89 x i8] c"\0A\0A>error::to use migration weights matrix, topology must be defined (option 1,2,4 or 5)!\00"
@.str.31 = [49 x i8] c"\0A\0A>error::wrong migration weights matrix option!\00"
@.str.32 = [53 x i8] c"\0A\0A>error::.dat file would be too big to be analyzed!\00"
@.str.33 = [74 x i8] c"\0A\0A>error::when using rec with STR all STR loci must have the same scalar!\00"
@.str.34 = [90 x i8] c"\0A\0A>error::when using rec with STR all STR loci must have the same samples per population!\00"
@.str.35 = [35 x i8] c"\0A\0A>error::cannot create .mut file!\00"
@.str.36 = [35 x i8] c"\0A\0A>error::cannot create .rec file!\00"
@.str.37 = [46 x i8] c"\0A\0A>error::times are not monotonic increasing!\00"
@.str.38 = [39 x i8] c"\0A\0A>error::choosing branching sequence!\00"
@.str.39 = [88 x i8] c"\0A\0A>error::with more than 5 populations the topology as to be fixed using option 2 or 5!\00"
@.str.40 = [66 x i8] c"\0A\0A>error::the locus have less than samples, it should be cleared!\00"
@.str.41 = [72 x i8] c"\0A\0A>error::migration weights for the considered population have to be 0!\00"
@.str.42 = [66 x i8] c"\0A\0A>error::the sum of the prob for a given migration as to be 1.0!\00"
@.str.43 = [35 x i8] c"\0A\0A>error::cannot create .len file!\00"
@.str.46 = [33 x i8] c"\0A\0A>error::cannot open .len file!\00"
@.str.47 = [33 x i8] c"\0A\0A>error::cannot open .sst file!\00"
@.str.48 = [35 x i8] c"\0A\0A>error::cannot create .trg file!\00"
@.str.49 = [35 x i8] c"\0A\0A>error::cannot create .ssz file!\00"
@.str.50 = [29 x i8] c"\0A\0A>error::reading .sst file!\00"
@.str.51 = [63 x i8] c"\0A\0A>error::sequence data locus without information, discard it!\00"
@.str.52 = [34 x i8] c"\0A\0A>error::could't open .dat file!\00"
@.str.53 = [33 x i8] c"\0A\0A>error::cannot open .trg file!\00"
@.str.54 = [35 x i8] c"\0A\0A>error::cannot create .rej file!\00"
@.str.55 = [35 x i8] c"\0A\0A>error::cannot create .pri file!\00"
@.str.56 = [35 x i8] c"\0A\0A>error::cannot create .txt file!\00"
@.str.57 = [39 x i8] c"\0A\0A>error::file .dat ended prematurely!\00"
@.str.58 = [47 x i8] c"\0A\0A>error::.dat file is too big to be analysed!\00"
@str = [17 x i8] c"\0A\0A *Main Menu*\0A\00"
@str.61 = [37 x i8] c" 1. Create a simulated \22real\22 data\0A\00"
@str.62 = [43 x i8] c" 2. Run the ABC algorithm on \22real\22 data\0A\00"
@str.63 = [34 x i8] c" 3. Customize the ABC algorithm\0A\00"
@str.64 = [12 x i8] c" 4. Tools\0A\00"
@str.65 = [11 x i8] c" 5. Exit\0A\00"
@str.66 = [21 x i8] c"\0A\0A...exiting popABC\0A\00"
@str.67 = [26 x i8] c"\0A\0A\0A *Run ABC algorithm*\0A\00"
@str.68 = [21 x i8] c"\0A\0A>ABC run completed\00"
@str.69 = [31 x i8] c"\0A\0A\0A *Simulate Data with ABC*\0A\00"
@str.70 = [31 x i8] c"\0A\0A>error::option not available\00"
define void @mainMenu() {
%1 = alloca [256 x i8]
%2 = getelementptr inbounds [256 x i8], [256 x i8]* %1, i64 0, i64 0
%3 = bitcast [256 x i8]* %1 to i8**
br label %4
4: ; preds = %90, %0
%5 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str, i64 0, i64 0))
%6 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.61, i64 0, i64 0))
%7 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.62, i64 0, i64 0))
%8 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.63, i64 0, i64 0))
%9 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.64, i64 0, i64 0))
%10 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.65, i64 0, i64 0))
%11 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.6, i64 0, i64 0))
%12 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8** %3)
%13 = call i32 @atoi(i8* %2)
switch i32 %13, label %195 [
i32 1, label %14
i32 2, label %87
i32 3, label %191
i32 4, label %193
i32 5, label %197
]
14: ; preds = %4
%15 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.69, i64 0, i64 0))
%16 = call i32 (...) @simulate()
switch i32 %16, label %90 [
i32 0, label %17
i32 1, label %19
i32 2, label %21
i32 3, label %23
i32 4, label %25
i32 5, label %27
i32 6, label %29
i32 7, label %31
i32 8, label %33
i32 9, label %35
i32 10, label %37
i32 11, label %39
i32 12, label %41
i32 13, label %43
i32 14, label %45
i32 15, label %47
i32 16, label %49
i32 17, label %51
i32 18, label %53
i32 19, label %55
i32 20, label %57
i32 21, label %59
i32 22, label %61
i32 23, label %63
i32 24, label %65
i32 25, label %67
i32 26, label %69
i32 27, label %71
i32 28, label %73
i32 29, label %75
i32 30, label %77
i32 31, label %79
i32 32, label %81
i32 33, label %83
i32 34, label %85
]
17: ; preds = %14
%18 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.9, i64 0, i64 0))
br label %90
19: ; preds = %14
%20 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0))
br label %90
21: ; preds = %14
%22 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0))
br label %90
23: ; preds = %14
%24 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
br label %90
25: ; preds = %14
%26 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0))
br label %90
27: ; preds = %14
%28 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %90
29: ; preds = %14
%30 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.15, i64 0, i64 0))
br label %90
31: ; preds = %14
%32 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.16, i64 0, i64 0))
br label %90
33: ; preds = %14
%34 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %90
35: ; preds = %14
%36 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0))
br label %90
37: ; preds = %14
%38 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.19, i64 0, i64 0))
br label %90
39: ; preds = %14
%40 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
br label %90
41: ; preds = %14
%42 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.21, i64 0, i64 0))
br label %90
43: ; preds = %14
%44 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0))
br label %90
45: ; preds = %14
%46 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.23, i64 0, i64 0))
br label %90
47: ; preds = %14
%48 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.24, i64 0, i64 0))
br label %90
49: ; preds = %14
%50 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.25, i64 0, i64 0))
br label %90
51: ; preds = %14
%52 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.26, i64 0, i64 0))
br label %90
53: ; preds = %14
%54 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0))
br label %90
55: ; preds = %14
%56 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.28, i64 0, i64 0))
br label %90
57: ; preds = %14
%58 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
br label %90
59: ; preds = %14
%60 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([89 x i8], [89 x i8]* @.str.30, i64 0, i64 0))
br label %90
61: ; preds = %14
%62 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.31, i64 0, i64 0))
br label %90
63: ; preds = %14
%64 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.32, i64 0, i64 0))
br label %90
65: ; preds = %14
%66 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([74 x i8], [74 x i8]* @.str.33, i64 0, i64 0))
br label %90
67: ; preds = %14
%68 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([90 x i8], [90 x i8]* @.str.34, i64 0, i64 0))
br label %90
69: ; preds = %14
%70 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.35, i64 0, i64 0))
br label %90
71: ; preds = %14
%72 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
br label %90
73: ; preds = %14
%74 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.37, i64 0, i64 0))
br label %90
75: ; preds = %14
%76 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.38, i64 0, i64 0))
br label %90
77: ; preds = %14
%78 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([88 x i8], [88 x i8]* @.str.39, i64 0, i64 0))
br label %90
79: ; preds = %14
%80 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.40, i64 0, i64 0))
br label %90
81: ; preds = %14
%82 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0))
br label %90
83: ; preds = %14
%84 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.42, i64 0, i64 0))
br label %90
85: ; preds = %14
%86 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
br label %90
87: ; preds = %4
%88 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.67, i64 0, i64 0))
%89 = call i32 (...) @runAbc()
switch i32 %89, label %90 [
i32 0, label %91
i32 1, label %93
i32 2, label %95
i32 3, label %97
i32 4, label %99
i32 5, label %101
i32 6, label %103
i32 7, label %105
i32 8, label %107
i32 101, label %109
i32 102, label %111
i32 103, label %113
i32 104, label %115
i32 105, label %117
i32 106, label %119
i32 107, label %121
i32 108, label %123
i32 109, label %125
i32 110, label %127
i32 111, label %129
i32 112, label %131
i32 113, label %133
i32 114, label %135
i32 115, label %137
i32 116, label %139
i32 117, label %141
i32 118, label %143
i32 119, label %145
i32 120, label %147
i32 121, label %149
i32 122, label %151
i32 123, label %153
i32 124, label %155
i32 125, label %157
i32 126, label %159
i32 127, label %161
i32 128, label %163
i32 129, label %165
i32 130, label %167
i32 131, label %169
i32 132, label %171
i32 133, label %173
i32 134, label %175
i32 201, label %177
i32 202, label %179
i32 203, label %181
i32 204, label %183
i32 205, label %185
i32 206, label %187
i32 207, label %189
]
90: ; preds = %87, %14, %191, %193, %195, %19, %23, %27, %31, %35, %39, %43, %47, %51, %55, %59, %63, %67, %71, %75, %79, %83, %85, %81, %77, %73, %69, %65, %61, %57, %53, %49, %45, %41, %37, %33, %29, %25, %21, %17, %93, %97, %101, %105, %109, %113, %117, %121, %125, %129, %133, %137, %141, %145, %149, %153, %157, %161, %165, %169, %173, %177, %181, %185, %189, %187, %183, %179, %175, %171, %167, %163, %159, %155, %151, %147, %143, %139, %135, %131, %127, %123, %119, %115, %111, %107, %103, %99, %95, %91
br label %4
91: ; preds = %87
%92 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.68, i64 0, i64 0))
br label %90
93: ; preds = %87
%94 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.46, i64 0, i64 0))
br label %90
95: ; preds = %87
%96 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.47, i64 0, i64 0))
br label %90
97: ; preds = %87
%98 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.48, i64 0, i64 0))
br label %90
99: ; preds = %87
%100 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.49, i64 0, i64 0))
br label %90
101: ; preds = %87
%102 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %90
103: ; preds = %87
%104 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.50, i64 0, i64 0))
br label %90
105: ; preds = %87
%106 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %90
107: ; preds = %87
%108 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.51, i64 0, i64 0))
br label %90
109: ; preds = %87
%110 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.10, i64 0, i64 0))
br label %90
111: ; preds = %87
%112 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0))
br label %90
113: ; preds = %87
%114 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
br label %90
115: ; preds = %87
%116 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.13, i64 0, i64 0))
br label %90
117: ; preds = %87
%118 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.14, i64 0, i64 0))
br label %90
119: ; preds = %87
%120 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.15, i64 0, i64 0))
br label %90
121: ; preds = %87
%122 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.16, i64 0, i64 0))
br label %90
123: ; preds = %87
%124 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @.str.17, i64 0, i64 0))
br label %90
125: ; preds = %87
%126 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.18, i64 0, i64 0))
br label %90
127: ; preds = %87
%128 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.19, i64 0, i64 0))
br label %90
129: ; preds = %87
%130 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
br label %90
131: ; preds = %87
%132 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.21, i64 0, i64 0))
br label %90
133: ; preds = %87
%134 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.22, i64 0, i64 0))
br label %90
135: ; preds = %87
%136 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @.str.23, i64 0, i64 0))
br label %90
137: ; preds = %87
%138 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.24, i64 0, i64 0))
br label %90
139: ; preds = %87
%140 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.25, i64 0, i64 0))
br label %90
141: ; preds = %87
%142 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.26, i64 0, i64 0))
br label %90
143: ; preds = %87
%144 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.27, i64 0, i64 0))
br label %90
145: ; preds = %87
%146 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.28, i64 0, i64 0))
br label %90
147: ; preds = %87
%148 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
br label %90
149: ; preds = %87
%150 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([89 x i8], [89 x i8]* @.str.30, i64 0, i64 0))
br label %90
151: ; preds = %87
%152 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.31, i64 0, i64 0))
br label %90
153: ; preds = %87
%154 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.32, i64 0, i64 0))
br label %90
155: ; preds = %87
%156 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([74 x i8], [74 x i8]* @.str.33, i64 0, i64 0))
br label %90
157: ; preds = %87
%158 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([90 x i8], [90 x i8]* @.str.34, i64 0, i64 0))
br label %90
159: ; preds = %87
%160 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.35, i64 0, i64 0))
br label %90
161: ; preds = %87
%162 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.36, i64 0, i64 0))
br label %90
163: ; preds = %87
%164 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.37, i64 0, i64 0))
br label %90
165: ; preds = %87
%166 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.38, i64 0, i64 0))
br label %90
167: ; preds = %87
%168 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([88 x i8], [88 x i8]* @.str.39, i64 0, i64 0))
br label %90
169: ; preds = %87
%170 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.40, i64 0, i64 0))
br label %90
171: ; preds = %87
%172 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.41, i64 0, i64 0))
br label %90
173: ; preds = %87
%174 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.42, i64 0, i64 0))
br label %90
175: ; preds = %87
%176 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.43, i64 0, i64 0))
br label %90
177: ; preds = %87
%178 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.52, i64 0, i64 0))
br label %90
179: ; preds = %87
%180 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.53, i64 0, i64 0))
br label %90
181: ; preds = %87
%182 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.54, i64 0, i64 0))
br label %90
183: ; preds = %87
%184 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.55, i64 0, i64 0))
br label %90
185: ; preds = %87
%186 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.56, i64 0, i64 0))
br label %90
187: ; preds = %87
%188 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.57, i64 0, i64 0))
br label %90
189: ; preds = %87
%190 = call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.58, i64 0, i64 0))
br label %90
191: ; preds = %4
%192 = call i32 (...) @customMenu()
br label %90
193: ; preds = %4
%194 = call i32 (...) @toolsMenu()
br label %90
195: ; preds = %4
%196 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.70, i64 0, i64 0))
br label %90
197: ; preds = %4
%198 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.66, i64 0, i64 0))
ret void
}