// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_condenseq_compress.c
// Function: gt_condenseq_compress_option_parser_new
static GtOptionParser*
gt_condenseq_compress_option_parser_new(void *tool_arguments)
{
  GtCondenseqCompressArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option,
           *option_fraction;
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[options] INPUTENCSEQ",
                            "Compresses a GtEncseq to a UniqueEncseq.");

  /* -indexname */
  option = gt_option_new_string("indexname",
                                "path and basename of files to store",
                                arguments->indexname, NULL);
  gt_option_parser_add_option(op, option);

  /* -kmersize */
  option = gt_option_new_uint_min("kmersize",
                                  "kmer-size used for the seeds, default "
                                  "depends on alphabet size",
                                  &arguments->kmersize, GT_UNDEF_UINT, 2U);
  gt_option_parser_add_option(op, option);

  /* -windowsize */
  option = gt_option_new_uint("windowsize",
                              "Size of window in which to search for hit pairs "
                              "of kmers, has to be larger than kmersize" ,
                              &arguments->windowsize, GT_UNDEF_UINT);
  gt_option_parser_add_option(op, option);

  /* -initsize */
  option = gt_option_new_uword("initsize",
                               "length of initial unique database in bases, "
                               "should be larger than -alignlength",
                               &arguments->initsize, GT_UNDEF_UWORD);
  gt_option_parser_add_option(op, option);

  /* -alignlength */
  option = gt_option_new_uword("alignlength",
                               "required minimal length of an xdrop-alignment, "
                               "should be larger than -windowsize",
                               &arguments->minalignlength, GT_UNDEF_UWORD);
  gt_option_parser_add_option(op, option);

  /* -cutoff */
  option = gt_option_new_uword("cutoff",
                               "if a kmer is found more often than this value "
                               "it will be ignored for alignment searches. "
                               "Setting this to 0 will disable cutoffs, "
                               "leaving it undefined will use a cutoff based "
                               "on the mean number of occurrences of a k-word.",
                               &arguments->cutoff_value, GT_UNDEF_UWORD);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -fraction */
  option_fraction = gt_option_new_uword("fraction",
                               "when cutoffs aren'd disabled and no specific "
                               "value is set the mean number of occurrences "
                               "of each kmer divided by -fraction will be used "
                               "as cutoff",
                               &arguments->fraction, (GtUword) 2);
  gt_option_is_extended_option(option_fraction);
  gt_option_exclude(option, option_fraction);
  gt_option_parser_add_option(op, option_fraction);

  /* -disable_prune */
  option = gt_option_new_bool("disable_prune",
                              "when cutoffs and this option are set, "
                              "the database will still save every kmer, even "
                              "though only cutoff many kmers will be used.",
                              &arguments->prune, false);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -mat */
  option = gt_option_new_int("mat",
                             "matchscore for extension-alignment, "
                             "requirements: mat > mis, mat > 2ins, mat > 2del",
                             &arguments->scores.mat, 2);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -mis */
  option = gt_option_new_int("mis",
                             "mismatchscore for extension-alignment, ",
                             &arguments->scores.mis, -1);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -ins */
  option = gt_option_new_int("ins",
                             "insertionscore for extension-alignment",
                             &arguments->scores.ins, -2);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -del */
  option = gt_option_new_int("del",
                             "deletionscore for extension-alignment",
                             &arguments->scores.del, -2);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -xdrop */
  option = gt_option_new_word("xdrop",
                              "xdrop score for extension-alignment",
                              &arguments->xdrop, (GtWord) 3);
  gt_option_is_extended_option(option);
  gt_option_parser_add_option(op, option);

  /* -brute_force */
  option = gt_option_new_bool("brute_force", "disable filtering of seeds. "
                              "Incompatible with -diagonals yes "
                              "or -full_diags yes. For benchmarking use.",
                              &arguments->brute, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -diagonals */
  option = gt_option_new_bool("diagonals", "use sparse diagonals. "
                              "Incompatible with -brute_force yes. "
                              "Disabling both diagonals will result in simple "
                              "filtering of seed positions.",
                              &arguments->diags, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -full_diags */
  option = gt_option_new_bool("full_diags", "use full (time efficient "
                              "space inefficient) diagonals. "
                              "Incompatible with -brute_force yes. "
                              "Disabling both diagonals will result in simple "
                              "filtering of seed positions.",
                              &arguments->full_diags, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -clean_percent */
  option = gt_option_new_uint("diags_clean",
                              "Percentage of sparse diagonals that is allowed "
                              "to be marked as deletable. Sensible default is "
                              "set." ,
                              &arguments->clean_percent, GT_UNDEF_UINT);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -verbose */
  option = gt_option_new_bool("verbose", "enable verbose output",
                              &arguments->verbose, false);
  gt_option_parser_add_option(op, option);

  /* -kdb*/
  option = gt_option_new_bool("kdb", "prints out the kmer database (frequency "
                              "of each kmer), if -verbose each startposition "
                              "will be shown instead",
                              &arguments->kdb, false);
  gt_option_parser_add_option(op, option);

  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xa0d63
movq %rdi, %rbx
leaq 0x2b0beb(%rip), %rdi    # 0x3515c2
leaq 0x2b0bfa(%rip), %rsi    # 0x3515d8
callq 0x10cc4e
movq %rax, %r14
movq 0x8(%rbx), %rdx
leaq 0x2ce321(%rip), %rdi    # 0x36ed12
leaq 0x2b0c09(%rip), %rsi    # 0x351601
xorl %ecx, %ecx
callq 0x10f987
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x48(%rbx), %rdx
leaq 0x34ad80(%rip), %rdi    # 0x3eb795
leaq 0x2b0c09(%rip), %rsi    # 0x351625
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x2, %r8d
callq 0x10f73b
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x4c(%rbx), %rdx
leaq 0x2b0d19(%rip), %rdi    # 0x35175b
leaq 0x2b0c1b(%rip), %rsi    # 0x351664
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x10f719
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x38(%rbx), %rdx
leaq 0x2b0c54(%rip), %rdi    # 0x3516bd
leaq 0x2b0c56(%rip), %rsi    # 0x3516c6
movq $-0x1, %rcx
callq 0x10f4c7
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x20(%rbx), %rdx
leaq 0x2b0c77(%rip), %rdi    # 0x351709
leaq 0x2b0c7c(%rip), %rsi    # 0x351715
movq $-0x1, %rcx
callq 0x10f4c7
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x28(%rbx), %rdx
leaq 0x2b0e13(%rip), %rdi    # 0x3518ce
leaq 0x2b0ca4(%rip), %rsi    # 0x351766
movq $-0x1, %rcx
callq 0x10f4c7
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x30(%rbx), %rdx
leaq 0x2e20e1(%rip), %rdi    # 0x382bd0
leaq 0x2b0d4d(%rip), %rsi    # 0x351843
movl $0x2, %ecx
callq 0x10f4c7
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fd9f
movq %r14, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x59(%rbx), %rdx
leaq 0x2edbde(%rip), %rdi    # 0x38e70a
leaq 0x2b0da2(%rip), %rsi    # 0x3518d5
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x10(%rbx), %rdx
leaq 0x2c40fc(%rip), %rdi    # 0x364c57
leaq 0x2b0df3(%rip), %rsi    # 0x351955
movl $0x2, %ecx
callq 0x10f669
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x14(%rbx), %rdx
leaq 0x3278f7(%rip), %rdi    # 0x3c8484
leaq 0x2b0e15(%rip), %rsi    # 0x3519a9
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x10f669
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x18(%rbx), %rdx
leaq 0x3074b7(%rip), %rdi    # 0x3a8076
leaq 0x2c5cb9(%rip), %rsi    # 0x36687f
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
callq 0x10f669
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x1c(%rbx), %rdx
leaq 0x325ba3(%rip), %rdi    # 0x3c6794
leaq 0x2c5cb6(%rip), %rsi    # 0x3668ae
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
callq 0x10f669
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x40(%rbx), %rdx
leaq 0x2e2434(%rip), %rdi    # 0x383057
leaq 0x2b0da7(%rip), %rsi    # 0x3519d1
movl $0x3, %ecx
callq 0x10f7c9
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x56(%rbx), %rdx
leaq 0x2fe0af(%rip), %rdi    # 0x39ed04
leaq 0x2b0d99(%rip), %rsi    # 0x3519f5
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x54(%rbx), %rdx
leaq 0x2e1fe2(%rip), %rdi    # 0x382c66
leaq 0x2b0dd1(%rip), %rsi    # 0x351a5c
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x55(%rbx), %rdx
leaq 0x2b0e2f(%rip), %rdi    # 0x351ae2
leaq 0x2b0e33(%rip), %rsi    # 0x351aed
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x50(%rbx), %rdx
leaq 0x2e24a4(%rip), %rdi    # 0x383186
leaq 0x2b0eab(%rip), %rsi    # 0x351b94
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x10f719
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r14, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x57(%rbx), %rdx
leaq 0x2af3d9(%rip), %rdi    # 0x3500ed
leaq 0x2b0edc(%rip), %rsi    # 0x351bf7
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
addq $0x58, %rbx
leaq 0x2b0ed5(%rip), %rdi    # 0x351c0d
leaq 0x2b0ed2(%rip), %rsi    # 0x351c11
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x191fd