// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_patternmatch.c
// Function: parse_options
static GtOPrval parse_options(Pmatchoptions *pmopt,
                              int *parsed_args,
                              int argc, const char **argv, GtError *err)
{
  GtOptionParser *op;
  GtOption *option, *optionimm, *optionbck;
  GtOPrval oprval;

  gt_error_check(err);
  op = gt_option_parser_new("[options] -ii indexname",
                         "Perform pattern matches.");
  gt_option_parser_set_mail_address(op, "<kurtz@zbh.uni-hamburg.de>");

  option = gt_option_new_uword("minpl","Specify minimum length of pattern",
                           &pmopt->minpatternlen,
                           (GtUword) 20);
  gt_option_parser_add_option(op, option);
  option = gt_option_new_uword("maxpl","Specify maximum length of pattern",
                            &pmopt->maxpatternlen,
                            (GtUword) 30);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_uword("samples","Specify number of samples",
                            &pmopt->numofsamples,
                           (GtUword) 100000);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("s","Show generated pattern",
                            &pmopt->showpatt,
                            false);
  gt_option_parser_add_option(op, option);

  optionbck = gt_option_new_bool("bck","Use the bucket boundaries",
                              &pmopt->usebcktab,
                              false);
  gt_option_parser_add_option(op, optionbck);

  optionimm = gt_option_new_bool("imm","Start with offset 0",
                              &pmopt->immediate,
                              false);
  gt_option_parser_add_option(op, optionimm);

  option = gt_option_new_string("ii",
                             "Specify input index",
                             pmopt->indexname, NULL);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

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

  return oprval;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movl %edx, 0x44(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x4b3fc
movq 0x30(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x4b3c4
jmp 0x4b3fc
movq 0x5f0bd5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4cac3e(%rip), %rsi    # 0x516013
leaq 0x4cade3(%rip), %rdx    # 0x5161bf
leaq 0x549aaf(%rip), %rcx    # 0x594e92
leaq 0x4d7f18(%rip), %r8     # 0x523302
movl $0xfd, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4b3fe
leaq 0x4d7f19(%rip), %rdi    # 0x52331e
leaq 0x4d7f2a(%rip), %rsi    # 0x523336
callq 0xf1420
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
leaq 0x4cbec2(%rip), %rsi    # 0x5172e4
callq 0xf1a10
movq 0x50(%rsp), %rdx
leaq 0x4d7f1c(%rip), %rdi    # 0x52334f
leaq 0x4d7f1b(%rip), %rsi    # 0x523355
movl $0x14, %ecx
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdx
addq $0x8, %rdx
leaq 0x4d7f0f(%rip), %rdi    # 0x523377
leaq 0x4d7f0e(%rip), %rsi    # 0x52337d
movl $0x1e, %ecx
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdx
addq $0x10, %rdx
leaq 0x4d7f14(%rip), %rdi    # 0x5233b1
leaq 0x4d7efb(%rip), %rsi    # 0x52339f
movl $0x186a0, %ecx          # imm = 0x186A0
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdx
addq $0x18, %rdx
leaq 0x4e13da(%rip), %rdi    # 0x52c8ac
leaq 0x4d7ee0(%rip), %rsi    # 0x5233b9
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdx
addq $0x19, %rdx
leaq 0x525e93(%rip), %rdi    # 0x571397
leaq 0x4d7ec5(%rip), %rsi    # 0x5233d0
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdx
addq $0x1a, %rdx
leaq 0x4d7eb4(%rip), %rdi    # 0x5233ea
leaq 0x4d7eb1(%rip), %rsi    # 0x5233ee
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rax
movq 0x20(%rax), %rdx
leaq 0x53ad65(%rip), %rdi    # 0x5862cd
leaq 0x4d7e93(%rip), %rsi    # 0x523402
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x20(%rsp), %rdi
callq 0xf6ca0
movq 0x28(%rsp), %rdi
movq 0x48(%rsp), %rsi
movl 0x44(%rsp), %edx
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %r9
leaq 0xdb17b(%rip), %r8      # 0x126730
callq 0xf2ab0
movl %eax, 0xc(%rsp)
movq 0x28(%rsp), %rdi
callq 0xf5cf0
movl 0xc(%rsp), %eax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)