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

```asm
<mainMenu>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x120,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
L897:
  lea    D299(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D54(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D768(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D627(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D472(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rsi
  lea    D246(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x118(%rbp)
  cmpl   $0x5,-0x118(%rbp)
  ja     L109
  mov    -0x118(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D168(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D168(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D508(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <simulate@plt>
  mov    %eax,-0x114(%rbp)
  cmpl   $0x0,-0x114(%rbp)
  jne    L563
  lea    D374(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L563:
  cmpl   $0x1,-0x114(%rbp)
  jne    L64
  lea    D835(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L64:
  cmpl   $0x2,-0x114(%rbp)
  jne    L942
  lea    D631(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L942:
  cmpl   $0x3,-0x114(%rbp)
  jne    L973
  lea    D888(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L973:
  cmpl   $0x4,-0x114(%rbp)
  jne    L1363
  lea    D210(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1363:
  cmpl   $0x5,-0x114(%rbp)
  jne    L418
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L418:
  cmpl   $0x6,-0x114(%rbp)
  jne    L1156
  lea    D470(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1156:
  cmpl   $0x7,-0x114(%rbp)
  jne    L879
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L879:
  cmpl   $0x8,-0x114(%rbp)
  jne    L815
  lea    D812(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L815:
  cmpl   $0x9,-0x114(%rbp)
  jne    L908
  lea    D675(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L908:
  cmpl   $0xa,-0x114(%rbp)
  jne    L303
  lea    D881(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L303:
  cmpl   $0xb,-0x114(%rbp)
  jne    L1576
  lea    D517(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1576:
  cmpl   $0xc,-0x114(%rbp)
  jne    L1148
  lea    D951(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1148:
  cmpl   $0xd,-0x114(%rbp)
  jne    L42
  lea    D744(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L42:
  cmpl   $0xe,-0x114(%rbp)
  jne    L295
  lea    D811(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L295:
  cmpl   $0xf,-0x114(%rbp)
  jne    L802
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L802:
  cmpl   $0x10,-0x114(%rbp)
  jne    L1459
  lea    D537(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1459:
  cmpl   $0x11,-0x114(%rbp)
  jne    L1045
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1045:
  cmpl   $0x12,-0x114(%rbp)
  jne    L91
  lea    D697(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L91:
  cmpl   $0x13,-0x114(%rbp)
  jne    L1519
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1519:
  cmpl   $0x14,-0x114(%rbp)
  jne    L1132
  lea    D901(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1132:
  cmpl   $0x15,-0x114(%rbp)
  jne    L347
  lea    D983(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L347:
  cmpl   $0x16,-0x114(%rbp)
  jne    L746
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L746:
  cmpl   $0x17,-0x114(%rbp)
  jne    L1228
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1228:
  cmpl   $0x18,-0x114(%rbp)
  jne    L1080
  lea    D521(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1080:
  cmpl   $0x19,-0x114(%rbp)
  jne    L1595
  lea    D638(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1595:
  cmpl   $0x1a,-0x114(%rbp)
  jne    L146
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L146:
  cmpl   $0x1b,-0x114(%rbp)
  jne    L428
  lea    D525(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L428:
  cmpl   $0x1c,-0x114(%rbp)
  jne    L694
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L694:
  cmpl   $0x1d,-0x114(%rbp)
  jne    L900
  lea    D398(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L900:
  cmpl   $0x1e,-0x114(%rbp)
  jne    L581
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L581:
  cmpl   $0x1f,-0x114(%rbp)
  jne    L71
  lea    D421(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L71:
  cmpl   $0x20,-0x114(%rbp)
  jne    L1076
  lea    D208(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1076:
  cmpl   $0x21,-0x114(%rbp)
  jne    L1317
  lea    D958(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
L1317:
  cmpl   $0x22,-0x114(%rbp)
  jne    L832
  lea    D342(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L832
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <runAbc@plt>
  mov    %eax,-0x114(%rbp)
  cmpl   $0x0,-0x114(%rbp)
  jne    L1054
  lea    D878(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1054:
  cmpl   $0x1,-0x114(%rbp)
  jne    L518
  lea    D676(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L518:
  cmpl   $0x2,-0x114(%rbp)
  jne    L1641
  lea    D381(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1641:
  cmpl   $0x3,-0x114(%rbp)
  jne    L1463
  lea    D495(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1463:
  cmpl   $0x4,-0x114(%rbp)
  jne    L400
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L400:
  cmpl   $0x5,-0x114(%rbp)
  jne    L1456
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1456:
  cmpl   $0x6,-0x114(%rbp)
  jne    L1353
  lea    D955(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1353:
  cmpl   $0x7,-0x114(%rbp)
  jne    L733
  lea    D812(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L733:
  cmpl   $0x8,-0x114(%rbp)
  jne    L1475
  lea    D492(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1475:
  cmpl   $0x65,-0x114(%rbp)
  jne    L134
  lea    D835(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L134:
  cmpl   $0x66,-0x114(%rbp)
  jne    L1208
  lea    D631(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1208:
  cmpl   $0x67,-0x114(%rbp)
  jne    L207
  lea    D888(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L207:
  cmpl   $0x68,-0x114(%rbp)
  jne    L769
  lea    D210(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L769:
  cmpl   $0x69,-0x114(%rbp)
  jne    L652
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L652:
  cmpl   $0x6a,-0x114(%rbp)
  jne    L2
  lea    D470(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L2:
  cmpl   $0x6b,-0x114(%rbp)
  jne    L496
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L496:
  cmpl   $0x6c,-0x114(%rbp)
  jne    L1763
  lea    D812(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1763:
  cmpl   $0x6d,-0x114(%rbp)
  jne    L686
  lea    D675(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L686:
  cmpl   $0x6e,-0x114(%rbp)
  jne    L989
  lea    D881(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L989:
  cmpl   $0x6f,-0x114(%rbp)
  jne    L138
  lea    D517(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L138:
  cmpl   $0x70,-0x114(%rbp)
  jne    L1571
  lea    D951(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1571:
  cmpl   $0x71,-0x114(%rbp)
  jne    L765
  lea    D744(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L765:
  cmpl   $0x72,-0x114(%rbp)
  jne    L1377
  lea    D811(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1377:
  cmpl   $0x73,-0x114(%rbp)
  jne    L66
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L66:
  cmpl   $0x74,-0x114(%rbp)
  jne    L1777
  lea    D537(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1777:
  cmpl   $0x75,-0x114(%rbp)
  jne    L549
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L549:
  cmpl   $0x76,-0x114(%rbp)
  jne    L683
  lea    D697(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L683:
  cmpl   $0x77,-0x114(%rbp)
  jne    L1588
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1588:
  cmpl   $0x78,-0x114(%rbp)
  jne    L1098
  lea    D901(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1098:
  cmpl   $0x79,-0x114(%rbp)
  jne    L874
  lea    D983(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L874:
  cmpl   $0x7a,-0x114(%rbp)
  jne    L1114
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1114:
  cmpl   $0x7b,-0x114(%rbp)
  jne    L1078
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1078:
  cmpl   $0x7c,-0x114(%rbp)
  jne    L1390
  lea    D521(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1390:
  cmpl   $0x7d,-0x114(%rbp)
  jne    L915
  lea    D638(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L915:
  cmpl   $0x7e,-0x114(%rbp)
  jne    L1412
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1412:
  cmpl   $0x7f,-0x114(%rbp)
  jne    L1245
  lea    D525(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1245:
  cmpl   $0x80,-0x114(%rbp)
  jne    L1681
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1681:
  cmpl   $0x81,-0x114(%rbp)
  jne    L1474
  lea    D398(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1474:
  cmpl   $0x82,-0x114(%rbp)
  jne    L1738
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1738:
  cmpl   $0x83,-0x114(%rbp)
  jne    L230
  lea    D421(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L230:
  cmpl   $0x84,-0x114(%rbp)
  jne    L1729
  lea    D208(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1729:
  cmpl   $0x85,-0x114(%rbp)
  jne    L539
  lea    D958(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L539:
  cmpl   $0x86,-0x114(%rbp)
  jne    L1225
  lea    D342(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1225:
  cmpl   $0xc9,-0x114(%rbp)
  jne    L1103
  lea    D689(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1103:
  cmpl   $0xca,-0x114(%rbp)
  jne    L1352
  lea    D477(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1352:
  cmpl   $0xcb,-0x114(%rbp)
  jne    L15
  lea    D870(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L15:
  cmpl   $0xcc,-0x114(%rbp)
  jne    L1559
  lea    D948(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1559:
  cmpl   $0xcd,-0x114(%rbp)
  jne    L1593
  lea    D328(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1593:
  cmpl   $0xce,-0x114(%rbp)
  jne    L1008
  lea    D921(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
L1008:
  cmpl   $0xcf,-0x114(%rbp)
  jne    L1082
  lea    D467(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L1082
  mov    $0x0,%eax
  call   <customMenu@plt>
  jmp    L804
  mov    $0x0,%eax
  call   <toolsMenu@plt>
  jmp    L804
  lea    D325(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L804
L109:
  lea    D705(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L804
L832:
  nop
  jmp    L804
L1082:
  nop
L804:
  cmpl   $0x5,-0x118(%rbp)
  jne    L897
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L193
  call   <__stack_chk_fail@plt>
L193:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D299
datatype: string
name: unpack_data
arguments: data_label: D54
datatype: string
name: unpack_data
arguments: data_label: D768
datatype: string
name: unpack_data
arguments: data_label: D627
datatype: string
name: unpack_data
arguments: data_label: D147
datatype: string
name: unpack_data
arguments: data_label: D472
datatype: string
name: unpack_data
arguments: data_label: D71
datatype: string
name: unpack_data
arguments: data_label: D246
datatype: string
name: unpack_data
arguments: data_label: D508
datatype: string
name: unpack_data
arguments: data_label: D374
datatype: string
name: unpack_data
arguments: data_label: D835
datatype: string
name: unpack_data
arguments: data_label: D631
datatype: string
name: unpack_data
arguments: data_label: D888
datatype: string
name: unpack_data
arguments: data_label: D210
datatype: string
name: unpack_data
arguments: data_label: D136
datatype: string
name: unpack_data
arguments: data_label: D470
datatype: string
name: unpack_data
arguments: data_label: D188
datatype: string
name: unpack_data
arguments: data_label: D812
datatype: string
name: unpack_data
arguments: data_label: D675
datatype: string
name: unpack_data
arguments: data_label: D881
datatype: string
name: unpack_data
arguments: data_label: D517
datatype: string
name: unpack_data
arguments: data_label: D951
datatype: string
name: unpack_data
arguments: data_label: D744
datatype: string
name: unpack_data
arguments: data_label: D811
datatype: string
name: unpack_data
arguments: data_label: D367
datatype: string
name: unpack_data
arguments: data_label: D537
datatype: string
name: unpack_data
arguments: data_label: D282
datatype: string
name: unpack_data
arguments: data_label: D697
datatype: string
name: unpack_data
arguments: data_label: D286
datatype: string
name: unpack_data
arguments: data_label: D901
datatype: string
name: unpack_data
arguments: data_label: D983
datatype: string
name: unpack_data
arguments: data_label: D59
datatype: string
name: unpack_data
arguments: data_label: D762
datatype: string
name: unpack_data
arguments: data_label: D521
datatype: string
name: unpack_data
arguments: data_label: D638
datatype: string
name: unpack_data
arguments: data_label: D625
datatype: string
name: unpack_data
arguments: data_label: D525
datatype: string
name: unpack_data
arguments: data_label: D30
datatype: string
name: unpack_data
arguments: data_label: D398
datatype: string
name: unpack_data
arguments: data_label: D61
datatype: string
name: unpack_data
arguments: data_label: D421
datatype: string
name: unpack_data
arguments: data_label: D208
datatype: string
name: unpack_data
arguments: data_label: D958
datatype: string
name: unpack_data
arguments: data_label: D342
datatype: string
name: unpack_data
arguments: data_label: D220
datatype: string
name: unpack_data
arguments: data_label: D878
datatype: string
name: unpack_data
arguments: data_label: D676
datatype: string
name: unpack_data
arguments: data_label: D381
datatype: string
name: unpack_data
arguments: data_label: D495
datatype: string
name: unpack_data
arguments: data_label: D133
datatype: string
name: unpack_data
arguments: data_label: D955
datatype: string
name: unpack_data
arguments: data_label: D492
datatype: string
name: unpack_data
arguments: data_label: D689
datatype: string
name: unpack_data
arguments: data_label: D477
datatype: string
name: unpack_data
arguments: data_label: D870
datatype: string
name: unpack_data
arguments: data_label: D948
datatype: string
name: unpack_data
arguments: data_label: D328
datatype: string
name: unpack_data
arguments: data_label: D921
datatype: string
name: unpack_data
arguments: data_label: D467
datatype: string
name: unpack_data
arguments: data_label: D325
datatype: string
name: unpack_data
arguments: data_label: D705
datatype: string

tool: D299: 

  *Main Menu*



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



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



tool: D627:   3. Customize the ABC algorithm



tool: D147:   4. Tools



tool: D472:   5. Exit



tool: D71:   choose an option: 

tool: D246: %s

tool: D508: 


  *Simulate Data with ABC*



tool: D374: 

>simulation completed (report created).

tool: D835: 

>error::cannot open the .prs file!

tool: D631: 

>error::cannot open the .ssz file!

tool: D888: 

>error::cannot open the .sst file!

tool: D210: 

>error::cannot create .dat file!

tool: D136: 

>error::cannot create info file!

tool: D470: 

>error::while reading .ssz file!

tool: D188: 

>error::while reading .sst file!

tool: D812: 

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

tool: D675: 

>error::wrong topology prior type!

tool: D881: 

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

tool: D517: 

>error::wrong Ne prior type!

tool: D951: 

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

tool: D744: 

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

tool: D811: 

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

tool: D367: 

>error::wrong Tev prior type!

tool: D537: 

>error::wrong Mig prior type!

tool: D282: 

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

tool: D697: 

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

tool: D286: 

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

tool: D901: 

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

tool: D983: 

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

tool: D59: 

>error::wrong migration weights matrix option!

tool: D762: 

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

tool: D521: 

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

tool: D638: 

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

tool: D625: 

>error::cannot create .mut file!

tool: D525: 

>error::cannot create .rec file!

tool: D30: 

>error::times are not monotonic increasing!

tool: D398: 

>error::choosing branching sequence!

tool: D61: 

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

tool: D421: 

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

tool: D208: 

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

tool: D958: 

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

tool: D342: 

>error::cannot create .len file!

tool: D220: 


  *Run ABC algorithm*



tool: D878: 

>ABC run completed


tool: D676: 

>error::cannot open .len file!

tool: D381: 

>error::cannot open .sst file!

tool: D495: 

>error::cannot create .trg file!

tool: D133: 

>error::cannot create .ssz file!

tool: D955: 

>error::reading .sst file!

tool: D492: 

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

tool: D689: 

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

tool: D477: 

>error::cannot open .trg file!

tool: D870: 

>error::cannot create .rej file!

tool: D948: 

>error::cannot create .pri file!

tool: D328: 

>error::cannot create .txt file!

tool: D921: 

>error::file .dat ended prematurely!

tool: D467: 

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

tool: D325: 

...exiting popABC



tool: D705: 

>error::option not available


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