// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_condenseq_extract.c
// Function: gt_condenseq_extract_option_parser_new
static GtOptionParser*
gt_condenseq_extract_option_parser_new(void *tool_arguments)
{
  GtCondenserExtractArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option,
           *optionrange,
           *optionseq,
           *optionseqrange,
           *optionmode;
  static const char *modes[] = {"fasta", "concat", NULL};
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[options] archive",
                            "Decompresses condenseq archive.");

  /* -seq */
  optionseq = gt_option_new_uword("seq",
                                  "only extract sequence identified by its "
                                  "number",
                                  &arguments->seq, GT_UNDEF_UWORD);
  gt_option_parser_add_option(op, optionseq);

  /* -seqrange */
  optionseqrange = gt_option_new_range("seqrange",
                                       "only extract (inclusive) range of "
                                       "consecutive sequences identified by "
                                       "their zero based index numbers",
                                       &arguments->seqrange, NULL);
  gt_option_parser_add_option(op, optionseqrange);
  gt_option_exclude(optionseq, optionseqrange);

  /* -range */
  optionrange = gt_option_new_range("range",
                                    "only extract (inclusive) range of zero "
                                    "based positions "
                                    "(implies option -output concat)",
                                    &arguments->range, NULL);
  gt_option_parser_add_option(op, optionrange);
  gt_option_exclude(optionseq, optionrange);
  gt_option_exclude(optionseqrange, optionrange);

  /* -output */
  optionmode = gt_option_new_choice("output",
                                    "specify output format "
                                    "(choose from fasta|concat)",
                                    arguments->mode,
                                    modes[0],
                                    modes);
  gt_option_parser_add_option(op, optionmode);
  gt_option_imply(optionrange, optionmode);

  /* -sepchar */
  option = gt_option_new_string("sepchar",
                                "specify character to print as GT_SEPARATOR "
                                "(implies option -output concat",
                                arguments->sepchar, "|");
  gt_option_parser_add_option(op, option);
  gt_option_imply(option, optionmode);
  arguments->sepchar_opt = gt_option_ref(option);

  gt_output_file_info_register_options(arguments->ofi, op, &arguments->outfp);

  /* -width */
  option = gt_option_new_width(&arguments->width);
  gt_option_parser_add_option(op, option);

  /* -verbose */
  option = gt_option_new_bool("verbose", "Print out verbose output to stderr.",
                              &arguments->verbose, false);
  gt_option_parser_add_option(op, option);
  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x2053f
movq %rdi, %rbx
leaq 0x2c8b0a(%rip), %rdi    # 0x2e8ecb
leaq 0x2c8b15(%rip), %rsi    # 0x2e8edd
callq 0x97df5
movq %rax, %r14
leaq 0x48(%rbx), %rdx
leaq 0x2d2d1f(%rip), %rdi    # 0x2f30fa
leaq 0x2c8b1b(%rip), %rsi    # 0x2e8efd
pushq $-0x1
popq %rcx
callq 0x9a9e6
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x38(%rbx), %rdx
leaq 0x2f9254(%rip), %rdi    # 0x319657
leaq 0x2c8b22(%rip), %rsi    # 0x2e8f2c
xorl %ecx, %ecx
callq 0x9aca4
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r13, %rsi
callq 0x9b38d
leaq 0x28(%rbx), %rdx
leaq 0x2fd41f(%rip), %rdi    # 0x31d854
leaq 0x2c8b55(%rip), %rsi    # 0x2e8f91
xorl %ecx, %ecx
callq 0x9aca4
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %r12, %rsi
callq 0x9b38d
movq 0x10(%rbx), %rdx
movq 0x41835e(%rip), %rcx    # 0x4387d0
leaq 0x418357(%rip), %r8     # 0x4387d0
leaq 0x2ebe87(%rip), %rdi    # 0x30c307
leaq 0x2c8b61(%rip), %rsi    # 0x2e8fe8
callq 0x9ad83
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b14d
movq 0x18(%rbx), %rdx
leaq 0x2c8b69(%rip), %rdi    # 0x2e9019
leaq 0x2c8b6a(%rip), %rsi    # 0x2e9021
leaq 0x2fb7eb(%rip), %rcx    # 0x31bca9
callq 0x9ad12
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %r12, %rdi
callq 0x97db0
movq %rax, 0x20(%rbx)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x9b6d7
leaq 0x50(%rbx), %rdi
callq 0x9a9ce
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x58, %rbx
leaq 0x2c6bd7(%rip), %rdi    # 0x2e70ed
leaq 0x2c8b4e(%rip), %rsi    # 0x2e906b
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r14, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x417a22(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2c4ac3(%rip), %rsi    # 0x2e5013
leaq 0x3280fc(%rip), %rdx    # 0x348653
leaq 0x2c8946(%rip), %rcx    # 0x2e8ea4
leaq 0x2c891e(%rip), %r8     # 0x2e8e83
pushq $0x57
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390