// File: /workspace/github_c_makefile_star2_O3/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 0x1b5e35
testq %rcx, %rcx
je 0x1b5e3a
movq %rsi, %rbx
cmpl $0x0, 0x88(%rsi)
je 0x1b5e3a
movq %rdi, %r14
movq %rcx, 0x80(%rbx)
testq %rdx, %rdx
je 0x1b5c2b
movq %rdx, %rdi
callq 0x11b1f3
jmp 0x1b5c2d
xorl %eax, %eax
movq %rax, 0x30(%rbx)
movq 0x28(%rbx), %rdx
leaq 0x1f151d(%rip), %rdi    # 0x3a7159
leaq 0x1f2fab(%rip), %rsi    # 0x3a8bee
leaq 0x1f2fe4(%rip), %rcx    # 0x3a8c2e
callq 0x10a770
movq %rax, 0x110(%rbx)
movq %rax, %rdi
callq 0x10ac2f
movq 0x80(%rbx), %rdi
movq 0x110(%rbx), %r15
callq 0xfc7e6
movq %r15, %rdi
movq %rax, %rsi
callq 0x10a9e4
movq 0x110(%rbx), %rsi
movq %r14, %rdi
callq 0x107cc0
movq 0x38(%rbx), %rsi
movq %r14, %rdi
callq 0xfc654
cmpl $0x1, 0x88(%rbx)
jne 0x1b5de6
leaq 0x1c(%rbx), %rdx
leaq 0x1d14ca(%rip), %rdi    # 0x387179
leaq 0x1f2f7f(%rip), %rsi    # 0x3a8c35
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0x98(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x1d(%rbx), %rdx
leaq 0x2007e4(%rip), %rdi    # 0x3b64be
leaq 0x1f2f79(%rip), %rsi    # 0x3a8c5a
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0xa0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x22(%rbx), %rdx
leaq 0x1f2f77(%rip), %rdi    # 0x3a8c7c
leaq 0x1f2f78(%rip), %rsi    # 0x3a8c84
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x10a9c4
movq 0x90(%rbx), %rdi
movq 0xa0(%rbx), %rsi
callq 0x10a9e4
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x107cc0
leaq 0x23(%rbx), %rdx
leaq 0x1f2f5e(%rip), %rdi    # 0x3a8cad
leaq 0x1f2f64(%rip), %rsi    # 0x3a8cba
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x10a9d4
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x107cc0
leaq 0x1e(%rbx), %rdx
leaq 0x20311b(%rip), %rdi    # 0x3b8ea1
leaq 0x1f2f5d(%rip), %rsi    # 0x3a8cea
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0xa8(%rbx)
movq 0xd0(%rbx), %rdi
movq %rax, %rsi
callq 0x10ab96
movq 0xa8(%rbx), %rsi
movq %r14, %rdi
callq 0x107cc0
leaq 0x1f(%rbx), %rdx
leaq 0x1e8ae7(%rip), %rdi    # 0x39e8ab
leaq 0x1f2f56(%rip), %rsi    # 0x3a8d21
xorl %ecx, %ecx
callq 0x10a235
movq %rax, 0xb0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
jmp 0x1b5e1a
leaq 0x98(%rbx), %rax
movl $0x0, 0x70(%rbx)
leaq 0x118(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq 0x30(%rbx), %rcx
movq %r14, %rdi
movl $0x1, %edx
callq 0x19b5b8
leaq 0x378(%rip), %rsi       # 0x1b6199
movq %r14, %rdi
movq %rbx, %rdx
callq 0x107d66
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
callq 0x65f4d
callq 0x65f14