user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<mainMenu>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x110,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  lea    D294(%rip),%r14
  lea    D280(%rip),%r13
  lea    D511(%rip),%r12
  lea    D155(%rip),%rbp
  jmp    L544
  lea    D741(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <simulate@plt>
  test   %eax,%eax
  je     L526
  cmp    $0x22,%eax
  ja     L445
  mov    %eax,%eax
  lea    D749(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L526:
  lea    D704(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D386(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D315(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D270(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D390(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D301(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D880(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D873(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D564(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D767(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D124(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D661(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D320(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D349(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D112(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D695(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D216(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D588(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D517(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D489(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D863(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D441(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D70(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D382(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D123(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D552(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D311(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D413(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D226(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D838(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D435(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D759(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D346(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D779(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D946(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D662(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <runAbc@plt>
  test   %eax,%eax
  je     L243
  cmp    $0xcf,%eax
  ja     L445
  mov    %eax,%eax
  lea    D782(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L243:
  lea    D877(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D930(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D593(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D220(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D513(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D301(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D342(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D564(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D378(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D386(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D315(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D270(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D390(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D301(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D880(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D873(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D564(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D767(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D124(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D661(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D320(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D349(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D112(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D695(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D216(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D588(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D517(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D489(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D863(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D441(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D70(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D382(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D123(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D552(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D311(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D413(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D226(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D838(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D435(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D759(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D346(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D779(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D946(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D345(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D282(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D945(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D287(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D549(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D356(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  lea    D508(%rip),%rdi
  call   <printf@plt>
  jmp    L544
  mov    $0x0,%eax
  call   <customMenu@plt>
  jmp    L544
  mov    $0x0,%eax
  call   <toolsMenu@plt>
  jmp    L544
  lea    D642(%rip),%rdi
  call   <printf@plt>
L128:
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L473
  add    $0x110,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L561:
  lea    D980(%rip),%rdi
  call   <printf@plt>
L445:
  cmp    $0x5,%ebx
  je     L128
L544:
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D864(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rbx
  mov    %rbx,%rsi
  lea    D639(%rip),%rdi
  call   <scanf@plt>
  mov    %rbx,%rdi
  call   <atoi@plt>
  mov    %eax,%ebx
  cmp    $0x5,%eax
  ja     L561
  mov    %eax,%eax
  lea    D117(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L473:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_tag: D294
datatype: string
name: disassemble_data
arguments: data_tag: D280
datatype: string
name: disassemble_data
arguments: data_tag: D511
datatype: string
name: disassemble_data
arguments: data_tag: D155
datatype: string
name: disassemble_data
arguments: data_tag: D741
datatype: string
name: disassemble_data
arguments: data_tag: D704
datatype: string
name: disassemble_data
arguments: data_tag: D386
datatype: string
name: disassemble_data
arguments: data_tag: D315
datatype: string
name: disassemble_data
arguments: data_tag: D270
datatype: string
name: disassemble_data
arguments: data_tag: D390
datatype: string
name: disassemble_data
arguments: data_tag: D301
datatype: string
name: disassemble_data
arguments: data_tag: D880
datatype: string
name: disassemble_data
arguments: data_tag: D873
datatype: string
name: disassemble_data
arguments: data_tag: D564
datatype: string
name: disassemble_data
arguments: data_tag: D767
datatype: string
name: disassemble_data
arguments: data_tag: D124
datatype: string
name: disassemble_data
arguments: data_tag: D661
datatype: string
name: disassemble_data
arguments: data_tag: D320
datatype: string
name: disassemble_data
arguments: data_tag: D349
datatype: string
name: disassemble_data
arguments: data_tag: D112
datatype: string
name: disassemble_data
arguments: data_tag: D695
datatype: string
name: disassemble_data
arguments: data_tag: D216
datatype: string
name: disassemble_data
arguments: data_tag: D588
datatype: string
name: disassemble_data
arguments: data_tag: D517
datatype: string
name: disassemble_data
arguments: data_tag: D489
datatype: string
name: disassemble_data
arguments: data_tag: D863
datatype: string
name: disassemble_data
arguments: data_tag: D441
datatype: string
name: disassemble_data
arguments: data_tag: D70
datatype: string
name: disassemble_data
arguments: data_tag: D382
datatype: string
name: disassemble_data
arguments: data_tag: D123
datatype: string
name: disassemble_data
arguments: data_tag: D552
datatype: string
name: disassemble_data
arguments: data_tag: D311
datatype: string
name: disassemble_data
arguments: data_tag: D413
datatype: string
name: disassemble_data
arguments: data_tag: D226
datatype: string
name: disassemble_data
arguments: data_tag: D838
datatype: string
name: disassemble_data
arguments: data_tag: D435
datatype: string
name: disassemble_data
arguments: data_tag: D759
datatype: string
name: disassemble_data
arguments: data_tag: D346
datatype: string
name: disassemble_data
arguments: data_tag: D779
datatype: string
name: disassemble_data
arguments: data_tag: D946
datatype: string
name: disassemble_data
arguments: data_tag: D662
datatype: string
name: disassemble_data
arguments: data_tag: D877
datatype: string
name: disassemble_data
arguments: data_tag: D930
datatype: string
name: disassemble_data
arguments: data_tag: D593
datatype: string
name: disassemble_data
arguments: data_tag: D220
datatype: string
name: disassemble_data
arguments: data_tag: D513
datatype: string
name: disassemble_data
arguments: data_tag: D342
datatype: string
name: disassemble_data
arguments: data_tag: D378
datatype: string
name: disassemble_data
arguments: data_tag: D345
datatype: string
name: disassemble_data
arguments: data_tag: D282
datatype: string
name: disassemble_data
arguments: data_tag: D945
datatype: string
name: disassemble_data
arguments: data_tag: D287
datatype: string
name: disassemble_data
arguments: data_tag: D549
datatype: string
name: disassemble_data
arguments: data_tag: D356
datatype: string
name: disassemble_data
arguments: data_tag: D508
datatype: string
name: disassemble_data
arguments: data_tag: D642
datatype: string
name: disassemble_data
arguments: data_tag: D980
datatype: string
name: disassemble_data
arguments: data_tag: D864
datatype: string
name: disassemble_data
arguments: data_tag: D12
datatype: string
name: disassemble_data
arguments: data_tag: D61
datatype: string
name: disassemble_data
arguments: data_tag: D639
datatype: string

tool: D294: 

  *Main Menu*



tool: D280:   1. Create a simulated "real" data



tool: D511:   2. Run the ABC algorithm on "real" data



tool: D155:   3. Customize the ABC algorithm



tool: D741: 


  *Simulate Data with ABC*



tool: D704: 

>simulation completed (report created).

tool: D386: 

>error::cannot open the .prs file!

tool: D315: 

>error::cannot open the .ssz file!

tool: D270: 

>error::cannot open the .sst file!

tool: D390: 

>error::cannot create .dat file!

tool: D301: 

>error::cannot create info file!

tool: D880: 

>error::while reading .ssz file!

tool: D873: 

>error::while reading .sst file!

tool: D564: 

>error::following sstats can only be chosen with 2 or more pops: Nm_H; Nm_S; privS; S(1)!

tool: D767: 

>error::wrong topology prior type!

tool: D124: 

>error::with 1 or 2 pops only topology prior type 0 or 3 can be used!

tool: D661: 

>error::wrong Ne prior type!

tool: D320: 

>error::type-2 tev is followed by another type-2 tev!

tool: D349: 

>error::if using tev type 3 prior, define prior only once!

tool: D112: 

>error::if using tev type 4 prior, define prior only once!

tool: D695: 

>error::wrong Tev prior type!

tool: D216: 

>error::wrong Mig prior type!

tool: D588: 

>error::wrong Mut prior type (Microsatellites)!

tool: D517: 

>error::wrong Mut prior type (Sequence Data)!

tool: D489: 

>error::wrong Rec prior type (Microsatellites)!

tool: D863: 

>error::wrong Rec prior type (Sequence Data)!

tool: D441: 

>error::to use migration weights matrix, topology must be defined (option 1,2,4 or 5)!

tool: D70: 

>error::wrong migration weights matrix option!

tool: D382: 

>error::.dat file would be too big to be analyzed!

tool: D123: 

>error::when using rec with STR all STR loci must have the same scalar!

tool: D552: 

>error::when using rec with STR all STR loci must have the same samples per population!

tool: D311: 

>error::cannot create .mut file!

tool: D413: 

>error::cannot create .rec file!

tool: D226: 

>error::times are not monotonic increasing!

tool: D838: 

>error::choosing branching sequence!

tool: D435: 

>error::with more than 5 populations the topology as to be fixed using option 2 or 5!

tool: D759: 

>error::the locus have less than samples, it should be cleared!

tool: D346: 

>error::migration weights for the considered population have to be 0!

tool: D779: 

>error::the sum of the prob for a given migration as to be 1.0!

tool: D946: 

>error::cannot create .len file!

tool: D662: 


  *Run ABC algorithm*



tool: D877: 

>ABC run completed


tool: D930: 

>error::cannot open .len file!

tool: D593: 

>error::cannot open .sst file!

tool: D220: 

>error::cannot create .trg file!

tool: D513: 

>error::cannot create .ssz file!

tool: D342: 

>error::reading .sst file!

tool: D378: 

>error::sequence data locus without information, discard it!

tool: D345: 

>error::could't open .dat file!

tool: D282: 

>error::cannot open .trg file!

tool: D945: 

>error::cannot create .rej file!

tool: D287: 

>error::cannot create .pri file!

tool: D549: 

>error::cannot create .txt file!

tool: D356: 

>error::file .dat ended prematurely!

tool: D508: 

>error::.dat file is too big to be analysed!

tool: D642: 

...exiting popABC



tool: D980: 

>error::option not available


tool: D864:   4. Tools



tool: D12:   5. Exit



tool: D61:   choose an option: 

tool: D639: %s

assistant: ```c
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);
}
```