// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x26bc3
movq 0x61540e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4ef477(%rip), %rsi    # 0x516013
leaq 0x553fbc(%rip), %rdx    # 0x57ab5f
leaq 0x4f3348(%rip), %rcx    # 0x519ef2
leaq 0x4f3320(%rip), %r8     # 0x519ed1
movl $0x57, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26bc5
leaq 0x4f334d(%rip), %rdi    # 0x519f19
leaq 0x4f3358(%rip), %rsi    # 0x519f2b
callq 0xf1420
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdx
addq $0x48, %rdx
leaq 0x4fd58b(%rip), %rdi    # 0x524178
leaq 0x4f3357(%rip), %rsi    # 0x519f4b
movq $-0x1, %rcx
callq 0xf5fe0
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x38, %rdx
leaq 0x524a03(%rip), %rdi    # 0x54b627
leaq 0x4f334f(%rip), %rsi    # 0x519f7a
xorl %eax, %eax
movl %eax, %ecx
callq 0xf68a0
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x38(%rsp), %rdx
addq $0x28, %rdx
leaq 0x528d8d(%rip), %rdi    # 0x54f9f4
leaq 0x4f3371(%rip), %rsi    # 0x519fdf
xorl %eax, %eax
movl %eax, %ecx
callq 0xf68a0
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7320
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7320
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x615b07(%rip), %rcx    # 0x63c7c0
leaq 0x516fbf(%rip), %rdi    # 0x53dc7f
leaq 0x4f336f(%rip), %rsi    # 0x51a036
leaq 0x615af2(%rip), %r8     # 0x63c7c0
callq 0xf6b30
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf7090
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rdx
leaq 0x4f3361(%rip), %rdi    # 0x51a067
leaq 0x4f3362(%rip), %rsi    # 0x51a06f
leaq 0x52711a(%rip), %rcx    # 0x54de2e
callq 0xf69f0
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x28(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf7090
movq 0x28(%rsp), %rdi
callq 0xf13c0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0xf7d50
movq 0x38(%rsp), %rdi
addq $0x50, %rdi
callq 0xf5fb0
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x58, %rdx
leaq 0x4f138b(%rip), %rdi    # 0x518127
leaq 0x4f3316(%rip), %rsi    # 0x51a0b9
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax,%rax)