// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_packedindex_chk_search.c
// Function: parseChkBWTOptions
static GtOPrval
parseChkBWTOptions(int *parsed_args, int argc, const char **argv,
                   struct chkSearchOptions *params, const GtStr *projectName,
                   GtError *err)
{
  GtOptionParser *op;
  GtOPrval oprval;
  GtOption *option, *optionProgress;
  bool checkSuffixArrayValues, tryContextRetrieve, tryFullRegen;

  gt_error_check(err);
  op = gt_option_parser_new("indexname",
                         "Load (or build if necessary) BWT index for project"
                         " <indexname> and perform verification of search"
                         " results.");

  gt_registerPackedIndexOptions(op, &params->idx, BWTDEFOPT_MULTI_QUERY,
                             projectName);

  option = gt_option_new_word("minpatlen",
                           "minimum length of patterns searched for, -1 "
                           "implies automatic choice based on index "
                           "properties", &params->minPatLen, -1);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_word("maxpatlen",
                           "maximum length of patterns searched for, -1 "
                           "implies automatic choice based on index "
                           "properties", &params->maxPatLen, -1);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_uword("nsamples",
                            "number of sequences to search for",
                            &params->numOfSamples, 1000);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("chksfxarray",
                           "verify integrity of stored suffix array positions",
                           &checkSuffixArrayValues, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("full-lfmap",
                           "verify complete backwards regeneration of "
                           "original sequence", &tryFullRegen, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("chkcontext",
                           "verify integrity of regenerated sequence context",
                           &tryContextRetrieve, false);
  gt_option_parser_add_option(op, option);

  optionProgress = gt_option_new_uword("ticks",
                                    "print dot after this many symbols "
                                    "tested okay", &params->progressInterval,
                                    DEFAULT_PROGRESS_INTERVAL);
  gt_option_parser_add_option(op, optionProgress);

  option = gt_option_new_bool("v",
                           "print verbose progress information",
                           &params->verboseOutput,
                           false);
  gt_option_parser_add_option(op, option);

  gt_option_parser_set_min_max_args(op, 1, 1);
  oprval = gt_option_parser_parse(op, parsed_args, argc, argv, gt_versionfunc,
                                  err);

  /* condense boolean options to flags field */
  params->flags = (checkSuffixArrayValues?VERIFY_BWTSEQ_SUFVAL:0)
    | (tryFullRegen?VERIFY_BWTSEQ_LFMAPWALK:0)
    | (tryContextRetrieve?VERIFY_BWTSEQ_CONTEXT:0);
  /* compute parameters currently not set from command-line or
   * determined indirectly */
  gt_computePackedIndexDefaults(&params->idx, BWTBaseFeatures);

  gt_option_parser_delete(op);

  return oprval;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r9, %r14
movq %r8, %r15
movq %rcx, %rbx
movq %rdx, 0x10(%rsp)
movl %esi, 0x4(%rsp)
movq %rdi, 0x8(%rsp)
testq %r9, %r9
je 0xb2584
movq %r14, %rdi
callq 0xfcc32
testb %al, %al
jne 0xb2758
leaq 0x2b35a2(%rip), %rdi    # 0x365b2d
leaq 0x29f53f(%rip), %rsi    # 0x351ad1
callq 0x107bfe
movq %rax, %r12
movq %rax, %rdi
movq %rbx, %rsi
movl $0x2, %edx
movq %r15, %rcx
callq 0x19b5b8
leaq 0x38(%rbx), %rdx
leaq 0x29f584(%rip), %rdi    # 0x351b3c
leaq 0x29f587(%rip), %rsi    # 0x351b46
movq $-0x1, %rcx
callq 0x10a5ad
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x40(%rbx), %rdx
leaq 0x29f5c4(%rip), %rdi    # 0x351ba5
leaq 0x29f5c7(%rip), %rsi    # 0x351baf
movq $-0x1, %rcx
callq 0x10a5ad
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x48(%rbx), %rdx
leaq 0x29f604(%rip), %rdi    # 0x351c0e
leaq 0x29f606(%rip), %rsi    # 0x351c17
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x10a2ab
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x29f60c(%rip), %rdi    # 0x351c39
leaq 0x29f611(%rip), %rsi    # 0x351c45
leaq 0x3(%rsp), %r15
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x29f622(%rip), %rdi    # 0x351c77
leaq 0x29f626(%rip), %rsi    # 0x351c82
leaq 0x1(%rsp), %rbp
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x29f641(%rip), %rdi    # 0x351cbe
leaq 0x29f645(%rip), %rsi    # 0x351cc9
leaq 0x2(%rsp), %r13
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x50(%rbx), %rdx
leaq 0x29efbc(%rip), %rdi    # 0x351665
leaq 0x29efbb(%rip), %rsi    # 0x35166b
movl $0x186a0, %ecx          # imm = 0x186A0
callq 0x10a2ab
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x5c(%rbx), %rdx
leaq 0x2dd162(%rip), %rdi    # 0x38f832
leaq 0x29ef51(%rip), %rsi    # 0x351628
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r12, %rdi
movl $0x1, %esi
movl $0x1, %edx
callq 0x10874b
leaq 0x6cf0a(%rip), %r8      # 0x11f60c
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movq %r14, %r9
callq 0x10875d
movl %eax, %r14d
movzbl (%r15), %eax
movzbl (%rbp), %ecx
leal (%rax,%rcx,2), %eax
movzbl (%r13), %ecx
leal (%rax,%rcx,4), %eax
movl %eax, 0x58(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x19b6a3
movq %r12, %rdi
callq 0x10a0b4
movl %r14d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1cfbd
nopl (%rax)