// File: /workspace/github_c_makefile_star2_O2/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 0x163f6c
testq %rcx, %rcx
je 0x163f9a
movq %rsi, %rbx
cmpl $0x0, 0x88(%rsi)
je 0x163f9a
movq %rdi, %r14
movq %rcx, 0x80(%rbx)
testq %rdx, %rdx
je 0x163d6a
movq %rdx, %rdi
callq 0xad4d2
jmp 0x163d6c
xorl %eax, %eax
movq %rax, 0x30(%rbx)
movq 0x28(%rbx), %rdx
leaq 0x1e375e(%rip), %rdi    # 0x3474d9
leaq 0x1e51ff(%rip), %rsi    # 0x348f81
leaq 0x1e5238(%rip), %rcx    # 0x348fc1
callq 0x9ad12
movq %rax, 0x110(%rbx)
movq %rax, %rdi
callq 0x9b488
movq 0x80(%rbx), %rdi
movq 0x110(%rbx), %r15
callq 0x8958e
movq %r15, %rdi
movq %rax, %rsi
callq 0x9b14d
movq 0x110(%rbx), %rsi
movq %r14, %rdi
callq 0x97f31
movq 0x38(%rbx), %rsi
movq %r14, %rdi
callq 0x88fcd
cmpl $0x1, 0x88(%rbx)
jne 0x163f25
leaq 0x1c(%rbx), %rdx
leaq 0x1c3780(%rip), %rdi    # 0x32756e
leaq 0x1e51d3(%rip), %rsi    # 0x348fc8
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x98(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x1d(%rbx), %rdx
leaq 0x1f2b05(%rip), %rdi    # 0x35691e
leaq 0x1e51cd(%rip), %rsi    # 0x348fed
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0xa0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x22(%rbx), %rdx
leaq 0x1e51cb(%rip), %rdi    # 0x34900f
leaq 0x1e51cc(%rip), %rsi    # 0x349017
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x9b0c7
movq 0x90(%rbx), %rdi
movq 0xa0(%rbx), %rsi
callq 0x9b14d
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x97f31
leaq 0x23(%rbx), %rdx
leaq 0x1e51b2(%rip), %rdi    # 0x349040
leaq 0x1e51b8(%rip), %rsi    # 0x34904d
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x90(%rbx)
movq %rax, %rdi
callq 0x9b10a
movq 0x90(%rbx), %rsi
movq %r14, %rdi
callq 0x97f31
leaq 0x1e(%rbx), %rdx
leaq 0x1f543c(%rip), %rdi    # 0x359301
leaq 0x1e51b1(%rip), %rsi    # 0x34907d
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0xa8(%rbx)
movq 0xd0(%rbx), %rdi
movq %rax, %rsi
callq 0x9b38d
movq 0xa8(%rbx), %rsi
movq %r14, %rdi
callq 0x97f31
leaq 0x1f(%rbx), %rdx
leaq 0x1dad08(%rip), %rdi    # 0x33ec0b
leaq 0x1e51aa(%rip), %rsi    # 0x3490b4
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0xb0(%rbx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
jmp 0x163f51
andl $0x0, 0x70(%rbx)
leaq 0x98(%rbx), %rax
leaq 0x118(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
andq $0x0, 0x10(%rax)
movq 0x30(%rbx), %rcx
pushq $0x1
popq %rdx
movq %r14, %rdi
callq 0x1461a0
leaq 0x8e7(%rip), %rsi       # 0x16483f
movq %r14, %rdi
movq %rbx, %rdx
callq 0x980d4
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
movq 0x2d3ff5(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x181096(%rip), %rsi    # 0x2e5013
leaq 0x1e4f7d(%rip), %rdx    # 0x348f01
leaq 0x1e4f83(%rip), %rcx    # 0x348f0e
leaq 0x1e47b2(%rip), %r8     # 0x348744
movl $0x118, %r9d            # imm = 0x118
jmp 0x163fc6
movq 0x2d3fc7(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x181068(%rip), %rsi    # 0x2e5013
leaq 0x1e4f85(%rip), %rdx    # 0x348f37
leaq 0x1e4f55(%rip), %rcx    # 0x348f0e
leaq 0x1e4784(%rip), %r8     # 0x348744
movl $0x11a, %r9d            # imm = 0x11A
xorl %eax, %eax
callq 0x17a50
callq 0x17390