// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/match/index_options.c
// Function: gt_index_options_register_generic_output
static GtIndexOptions*
gt_index_options_register_generic_output(GtOptionParser *op,
                                         GtIndexOptions *idxo,
                                         GtStr *indexname,
                                         GtEncseqOptions *encopts)
{
  gt_assert(idxo != NULL);
  gt_assert(op != NULL && idxo->type != GT_INDEX_OPTIONS_UNDEFINED &&
            encopts != NULL);
  idxo->encopts = encopts;
  idxo->indexname = indexname != NULL ? gt_str_ref(indexname) : NULL;
  idxo->optionkys = gt_option_new_string("kys",
                                   "output/sort according to keys of the form "
                                   "|key| in fasta header",
                                   idxo->kysargumentstring,
                                   "nosort");
  gt_option_argument_is_optional(idxo->optionkys);
  gt_option_imply(idxo->optionkys, gt_encseq_options_sds_option(idxo->encopts));
  gt_option_parser_add_option(op, idxo->optionkys);

  gt_encseq_options_add_readmode_option(op, idxo->dir);

  if (idxo->type == GT_INDEX_OPTIONS_ESA)
  {
    idxo->optionoutsuftab = gt_option_new_bool("suf",
                                   "output suffix array (suftab) to file",
                                   &idxo->outsuftab,
                                   false);
    gt_option_parser_add_option(op, idxo->optionoutsuftab);

    idxo->optionoutlcptab = gt_option_new_bool("lcp",
                                   "output lcp table (lcptab) to file",
                                   &idxo->outlcptab,
                                   false);
    gt_option_parser_add_option(op, idxo->optionoutlcptab);

    idxo->option = gt_option_new_bool("lcpdist",
                              "output distributions of values in lcptab",
                              &idxo->lcpdist,
                              false);
    gt_option_is_extended_option(idxo->option);
    gt_option_imply(idxo->option, idxo->optionoutlcptab);
    gt_option_parser_add_option(op, idxo->option);

    idxo->option = gt_option_new_bool("swallow-tail",
                              "swallow the tail of the suffix array and lcptab",
                              &idxo->swallow_tail,
                              false);
    gt_option_is_development_option(idxo->option);
    gt_option_parser_add_option(op, idxo->option);

    idxo->optionoutbwttab = gt_option_new_bool("bwt",
                                   "output Burrows-Wheeler Transformation "
                                   "(bwttab) to file",
                                   &idxo->outbwttab,
                                   false);
    gt_option_exclude(idxo->optionspmopt, idxo->optionoutbwttab);
    gt_option_parser_add_option(op, idxo->optionoutbwttab);

    idxo->optionoutbcktab = gt_option_new_bool("bck",
                                "output bucket table to file",
                                &idxo->outbcktab,
                                false);
    gt_option_parser_add_option(op, idxo->optionoutbcktab);
  } else {
    idxo->optionoutsuftab
      = idxo->optionoutlcptab = idxo->optionoutbwttab = NULL;
    idxo->sfxstrategy.spmopt_minlength = 0;
#ifndef S_SPLINT_S
    gt_registerPackedIndexOptions(op,
                                  &idxo->bwtIdxParams,
                                  BWTDEFOPT_CONSTRUCTION,
                                  idxo->indexname);
#endif
  }

  gt_option_parser_register_hook(op, gt_index_options_check_set_out_opts, idxo);

  return idxo;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rsi, %rsi
je 0x1be881
testq %rcx, %rcx
je 0x1be886
movq %rsi, %rbx
cmpl $0x0, 0x88(%rsi)
je 0x1be886
movq %rdi, %r14
movq %rcx, 0x80(%rbx)
testq %rdx, %rdx
je 0x1be677
movq %rdx, %rdi
callq 0x120e79
jmp 0x1be679
xorl %eax, %eax
movq %rax, 0x30(%rbx)
movq 0x28(%rbx), %rdx
leaq 0x1f208d(%rip), %rdi    # 0x3b0715
leaq 0x1f3b1b(%rip), %rsi    # 0x3b21aa
leaq 0x1f3b54(%rip), %rcx    # 0x3b21ea
callq 0x10f987
movq %rax, 0x110(%rbx)
movq %rax, %rdi
callq 0x10fe42
movq 0x80(%rbx), %rdi
movq 0x110(%rbx), %r15
callq 0x10164e
movq %r15, %rdi
movq %rax, %rsi
callq 0x10fbff
movq 0x110(%rbx), %rsi
movq %r14, %rdi
callq 0x10cd10
movq 0x38(%rbx), %rsi
movq %r14, %rdi
callq 0x1014bc
cmpl $0x1, 0x88(%rbx)
jne 0x1be832
leaq 0x1c(%rbx), %rdx
leaq 0x1d1e57(%rip), %rdi    # 0x390552
leaq 0x1f3aef(%rip), %rsi    # 0x3b21f1
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0x98(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x1d(%rbx), %rdx
leaq 0x2013b8(%rip), %rdi    # 0x3bfade
leaq 0x1f3ae9(%rip), %rsi    # 0x3b2216
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0xa0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x22(%rbx), %rdx
leaq 0x1f3ae7(%rip), %rdi    # 0x3b2238
leaq 0x1f3ae8(%rip), %rsi    # 0x3b2240
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x10fbdf
movq 0x90(%rbx), %rdi
movq 0xa0(%rbx), %rsi
callq 0x10fbff
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x10cd10
leaq 0x23(%rbx), %rdx
leaq 0x1f3ace(%rip), %rdi    # 0x3b2269
leaq 0x1f3ad4(%rip), %rsi    # 0x3b2276
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x10fbef
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x10cd10
leaq 0x1e(%rbx), %rdx
leaq 0x203d3f(%rip), %rdi    # 0x3c2511
leaq 0x1f3acd(%rip), %rsi    # 0x3b22a6
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0xa8(%rbx)
movq 0xd0(%rbx), %rdi
movq %rax, %rsi
callq 0x10fd9f
movq 0xa8(%rbx), %rsi
movq %r14, %rdi
callq 0x10cd10
leaq 0x1f(%rbx), %rdx
leaq 0x1e9593(%rip), %rdi    # 0x3a7da3
leaq 0x1f3ac6(%rip), %rsi    # 0x3b22dd
xorl %ecx, %ecx
callq 0x10f451
movq %rax, 0xb0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
jmp 0x1be866
movl $0x0, 0x70(%rbx)
leaq 0x118(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, 0x98(%rbx)
movq $0x0, 0xa8(%rbx)
movq 0x30(%rbx), %rcx
movq %r14, %rdi
movl $0x1, %edx
callq 0x1a3b34
leaq 0x384(%rip), %rsi       # 0x1bebf1
movq %r14, %rdi
movq %rbx, %rdx
callq 0x10cdb6
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
callq 0x6770c
callq 0x676d3