// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/fmi-mkindex.c
// Function: parsemkfmindex
static GtOPrval parsemkfmindex(Mkfmcallinfo *mkfmcallinfo,
                               int argc,
                               const char **argv,
                               GtError *err)
{
  GtOptionParser *op;
  GtOption *option, *optionfmout;
  GtOPrval oprval;
  int parsed_args;

  gt_error_check(err);
  mkfmcallinfo->indexnametab = gt_str_array_new();
  mkfmcallinfo->outfmindex = gt_str_new();
  mkfmcallinfo->leveldesc = gt_str_new();
  op = gt_option_parser_new("[option ...] -ii indexfile [...]",
                         "Compute FM-index.");
  gt_option_parser_set_mail_address(op, "<kurtz@zbh.uni-hamburg.de>");
  optionfmout = gt_option_new_string("fmout",
                             "specify name of FM-index to be generated\n"
                             "(mandatory if more than one input index "
                             "is specified)",
                             mkfmcallinfo->outfmindex, NULL);
  gt_option_parser_add_option(op, optionfmout);

  option = gt_option_new_filename_array("ii", "specify indices to be used",
                                        mkfmcallinfo->indexnametab);
  gt_option_is_mandatory(option);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_string("size",
                             "specify size (tiny, small, medium, big)",
                             mkfmcallinfo->leveldesc, "medium");
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("noindexpos",
                           "store no index positions (hence the positions of\n"
                           "matches in the index cannot be retrieved)",
                           &mkfmcallinfo->noindexpos,false);
  gt_option_parser_add_option(op, option);

  oprval = gt_option_parser_parse(op, &parsed_args, argc, argv, gt_versionfunc,
                                  err);
  if (oprval == GT_OPTION_PARSER_OK)
  {
    if (!gt_option_is_set(optionfmout))
    {
      if (gt_str_array_size(mkfmcallinfo->indexnametab) > 1UL)
      {
        gt_error_set(err,"if more than one index is given, then "
                          "option -fmout is mandatory");
        oprval = GT_OPTION_PARSER_ERROR;
      } else
      {
        char *basenameptr;

        basenameptr = gt_basename(gt_str_array_get(mkfmcallinfo->indexnametab,
                                  0));
        gt_str_set(mkfmcallinfo->outfmindex,basenameptr);
        gt_free(basenameptr);
      }
    }
  }
  gt_option_parser_delete(op);
  if (oprval == GT_OPTION_PARSER_OK && parsed_args != argc)
  {
    gt_error_set(err,"superfluous program parameters");
    oprval = GT_OPTION_PARSER_ERROR;
  }
  return oprval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %rbx
movq %rdx, 0x10(%rsp)
movl %esi, %r12d
movq %rdi, %r14
testq %rcx, %rcx
je 0x1ae755
movq %rbx, %rdi
callq 0xfcc32
testb %al, %al
jne 0x1ae913
callq 0x11be10
movq %rax, 0x8(%r14)
callq 0x11ac6c
movq %rax, 0x18(%r14)
callq 0x11ac6c
movq %rax, 0x10(%r14)
leaq 0x1f7f91(%rip), %rdi    # 0x3a6708
leaq 0x1f7fab(%rip), %rsi    # 0x3a6729
callq 0x107bfe
movq %rax, %r15
leaq 0x197b3f(%rip), %rsi    # 0x3462cc
movq %rax, %rdi
callq 0x107e5c
movq 0x18(%r14), %rdx
leaq 0x1f7f9b(%rip), %rdi    # 0x3a673b
leaq 0x1f7f9a(%rip), %rsi    # 0x3a6741
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r13
movq %r15, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x8(%r14), %rdx
leaq 0x204cac(%rip), %rdi    # 0x3b3473
leaq 0x1f7fd2(%rip), %rsi    # 0x3a67a0
callq 0x10a7df
movq %rax, %rbp
movq %rax, %rdi
callq 0x10a87b
movq %r15, %rdi
movq %rbp, %rsi
callq 0x107cc0
movq 0x10(%r14), %rdx
leaq 0x1b50c9(%rip), %rdi    # 0x3638bd
leaq 0x1f7fc0(%rip), %rsi    # 0x3a67bb
leaq 0x1f7fe1(%rip), %rcx    # 0x3a67e3
callq 0x10a770
movq %r15, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x1f7fd1(%rip), %rdi    # 0x3a67ea
leaq 0x1f7fd5(%rip), %rsi    # 0x3a67f5
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %r15, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq -0x8f230(%rip), %r8     # 0x11f60c
leaq 0xc(%rsp), %rsi
movq %r15, %rdi
movl %r12d, %ebp
movl %r12d, %edx
movq 0x10(%rsp), %rcx
movq %rbx, %r9
callq 0x10875d
movl %eax, %r12d
testl %eax, %eax
je 0x1ae878
movq %r15, %rdi
callq 0x10a0b4
movl %r12d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r13, %rdi
callq 0x10ac3f
testb %al, %al
jne 0x1ae8e2
movq 0x8(%r14), %rdi
callq 0x11c131
cmpq $0x2, %rax
jb 0x1ae8ac
leaq 0x1f7fb6(%rip), %rsi    # 0x3a6850
movq %rbx, %rdi
xorl %eax, %eax
callq 0xfcb67
movl $0x1, %r12d
jmp 0x1ae85e
movq 0x8(%r14), %rdi
xorl %esi, %esi
callq 0x11bfb3
movq %rax, %rdi
callq 0xd3e84
movq %rax, %r12
movq 0x18(%r14), %rdi
movq %rax, %rsi
callq 0x11ad62
leaq 0x1f7e0c(%rip), %rsi    # 0x3a66e1
movq %r12, %rdi
movl $0x6f, %edx
callq 0x1045eb
movq %r15, %rdi
callq 0x10a0b4
xorl %r12d, %r12d
cmpl %ebp, 0xc(%rsp)
je 0x1ae866
leaq 0x1a3824(%rip), %rsi    # 0x352122
movq %rbx, %rdi
xorl %eax, %eax
callq 0xfcb67
movl $0x1, %r12d
jmp 0x1ae866
callq 0x64821