// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/mgth/metagenomethreader.c
// Function: mgth_parse_options
static GtOPrval mgth_parse_options(int *parsed_args,
                              MetagenomeThreaderArguments
                              *metagenomethreader_arguments, int argc,
                              const char **argv, GtError * err)
{
  GtOptionParser *op;
  GtOPrval oprval;

  /* Definition der optionalen Eingabeparameter */
  GtOption *syn_value_option,
   *nonsyn_value_option,
   *blasthitend_value_option,
   *stopcodon_queryseq_option,
   *stopcodon_hitseq_option,
   *frameshift_span_option,
   *prediction_span_option,
   *curlfcgi_option,
   *leavegene_value_option,
   *resulttextfile_name_option,
   *giexpfile_name_option,
   *hitfile_bool_option,
   *homology_mode_option,
   *extended_mode_option,
   *testmodus_mode_option,
   *outputfile_format_option,
   *codon_mode_option,
   *min_as_option,
   *percent_option;

  /* Check Umgebungsvariablen */
  gt_error_check(err);

  /* init Option-Parser */
  op =
    gt_option_parser_new
    ("[option ...] XML-File Query-FASTA-File Hit-FASTA-File",
     "Metagenomethreader, for predicting genes in metagenomeprojects.");

  /* GtOption zur Eingabe des Scores fuer synonymen Basenaustausch; default:
     1.0 */
  syn_value_option =
    gt_option_new_double("s", "score for synonymic base exchanges",
                      &metagenomethreader_arguments->synonomic_value, 1.0);
  gt_option_parser_add_option(op, syn_value_option);

  /* GtOption zur Eingabe des Scores fuer nicht-synonymen Basenaustausch;
     default: -1.0 */
  nonsyn_value_option =
    gt_option_new_double("n", "score for non-synonymic base exchanges",
                      &metagenomethreader_arguments->nonsynonomic_value,
                      -1.0);
  gt_option_parser_add_option(op, nonsyn_value_option);

  /* GtOption zur Eingabe des Scores fuer das Blast-Hit-Ende; default: -10 */
  blasthitend_value_option =
    gt_option_new_double("b", "score for blast-hit-end within query sequence",
                      &metagenomethreader_arguments->blasthit_end_value,
                      -10.0);
  gt_option_parser_add_option(op, blasthitend_value_option);

  /* GtOption zur Eingabe des Scores zur Bewertung eines Stop-Codons in der
     Query-Sequence; default: -2 */
  stopcodon_queryseq_option =
    gt_option_new_double("q", "score for stop-codon within querysequence",
                      &metagenomethreader_arguments->stopcodon_queryseq,
                      -2.0);
  gt_option_parser_add_option(op, stopcodon_queryseq_option);

  /* GtOption zur Eingabe des Scores zur Bewertung eines Stop-Codons in der
     Hit-Sequence; default: -5 */
  stopcodon_hitseq_option =
    gt_option_new_double("h", "score for stop-codon within hitsequence",
                      &metagenomethreader_arguments->stopcodon_hitseq,
                      -5.0);
  gt_option_parser_add_option(op, stopcodon_hitseq_option);

  /* GtOption zur Eingabe des Scores zur Bewertung des Verlassens oder
     Eintretens eines bzw. in ein Gen ; default: -2 */
  leavegene_value_option =
    gt_option_new_double("l",
                      "score for leaving a gene on forward/reverse strand "
                      "or enter a gene on forward/reverse strand",
                      &metagenomethreader_arguments->leavegene_value,
                      -2.0);
  gt_option_parser_add_option(op, leavegene_value_option);

  /* GtOption zur Eingabe des Wertes innerhalb welches Zwischenbereichs ein
     zusammenhaengender Genbereich vorliegt; default: 400 */
  prediction_span_option =
    gt_option_new_double_min("p",
                          "max. span between coding-regions resume as one "
                          "prediction",
                          &metagenomethreader_arguments->prediction_span,
                          400.0, 0.0);
  gt_option_parser_add_option(op, prediction_span_option);

  /* GtOption zur Eingabe des Wertes innerhalb welches Zwischenbereichs ein
     Frameshift vorliegt; default: 200 */
  frameshift_span_option =
    gt_option_new_double_min("f",
                          "max. span between coding-regions in different "
                          "reading frames resume as coding-regions in the "
                          "optimal reading-frame",
                          &metagenomethreader_arguments->frameshift_span,
                      200.0, 0.0);
  gt_option_parser_add_option(op, frameshift_span_option);

  /* GtOption zur Eingabe der DB, die bei der Verwendung des fcgi-Skriptes
     verwendet wird; default: nucleotide */
  curlfcgi_option =
    gt_option_new_string("c", "db-name for fcgi-db",
                      metagenomethreader_arguments->curl_fcgi_db,
                      "nucleotide");
  gt_option_parser_add_option(op, curlfcgi_option);

  /* GtOption zur Eingabe des Namens der Outputdatei; default: output.txt */
  resulttextfile_name_option =
    gt_option_new_string("o", "name for resulting output-file",
                      metagenomethreader_arguments->outputtextfile_name,
                      "output");
  gt_option_parser_add_option(op, resulttextfile_name_option);

  /* GtOption zur Angabe der Hit-Sequenz-DB  */
  giexpfile_name_option =
    gt_option_new_string("k", "name for the Hit-Sequence-DB",
                         metagenomethreader_arguments->giexpfile_name,
                         "nucleotide database");
  gt_option_parser_add_option(op, giexpfile_name_option);

  /* GtOption zur Angabe, ob ein Hit-FASTA-File exisitiert; default: false */
  hitfile_bool_option =
    gt_option_new_bool("t", "true or false if a Hit-FASTA-File exist",
                    &metagenomethreader_arguments->hitfile_bool, false);
  gt_option_parser_add_option(op, hitfile_bool_option);

  /* GtOption zur Angabe des Formates der Outputdatei; default: 1 -> txt */
  outputfile_format_option =
    gt_option_new_int("r", "format of the output-file",
                   &metagenomethreader_arguments->outputfile_format, 1);
  gt_option_parser_add_option(op, outputfile_format_option);

  /* GtOption zur Angabe der minimalen Laenger der AS-Sequnezen, die in der
     Ausgabedatei aufgefuehrt werden sollen; default: 15; min: 15 */
  min_as_option =
    gt_option_new_uword_min("a", "minimum length of the as-sequence",
                         &metagenomethreader_arguments->min_as, 15, 15);
  gt_option_parser_add_option(op, min_as_option);

  /* GtOption zur Angabe der minimalen Prozentzahl, ab der Hits-Def. im
     Statistikbereich der Ausgabe angezeigt werden */
  percent_option =
    gt_option_new_double_min_max("d",
                              "minimum percent-value for hit-statistic-output",
                              &metagenomethreader_arguments->percent_value,
                              0.0, 0.0, 1.0);
  gt_option_parser_add_option(op, percent_option);

  /* GtOption zur Angabe, ob alternative Start-Codons verwendet werden
     sollen; default: 1 -> txt */
  codon_mode_option =
    gt_option_new_int("e", "use of alternative start-codons",
                   &metagenomethreader_arguments->codon_mode, 1);
  gt_option_parser_add_option(op, codon_mode_option);

  /* Experimenteller Status dieser GtOption - Funktionsfaehigkeit nicht
     abschliessend geklaert */
  /* GtOption zur Angabe, ob nach Homologien gesucht werden soll, statt nach
     synonymen-Basenaustauschen; default: false */
  homology_mode_option =
    gt_option_new_bool("m", "search for homology",
                    &metagenomethreader_arguments->homology_mode, false);
  gt_option_parser_add_option(op, homology_mode_option);

  /* Testmodus: die Programm-Parameter werden zur Vergleichbarkeit der
     Ergebnisse nicht mit ausgegeben; default: false */
  testmodus_mode_option =
    gt_option_new_bool("g", "testmodus, output without creating date",
                    &metagenomethreader_arguments->testmodus_mode, false);
  gt_option_parser_add_option(op, testmodus_mode_option);

  /* GtOption zur Angabe, ob die EGTs auf den max. ORF erweitert werden
     sollen, default: false */
  extended_mode_option =
    gt_option_new_bool("x", "extend the EGTs to max",
                    &metagenomethreader_arguments->extended_mode, false);
  gt_option_parser_add_option(op, extended_mode_option);

  gt_option_parser_set_min_max_args(op, 3, 3);
  gt_option_parser_refer_to_manual(op);

  /* es werden die Parameter XML-File, Query-Fasta-File und Hit-FASTA-File
     erwartet, Min und Max. der Anzahl an Parametern ist also 3 */
  oprval = gt_option_parser_parse(op, parsed_args, argc, argv, gt_versionfunc,
                                  err);

  gt_option_parser_delete(op);
  return oprval;
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movl %edx, 0xc4(%rsp)
movq %rcx, 0xb8(%rsp)
movq %r8, 0xb0(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0x316264
movq 0xb0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x31622c
jmp 0x316264
movq 0x325d6d(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x1ffdd6(%rip), %rsi    # 0x516013
leaq 0x1fff7b(%rip), %rdx    # 0x5161bf
leaq 0x27ec42(%rip), %rcx    # 0x594e8d
leaq 0x27eb5c(%rip), %r8     # 0x594dae
movl $0x39, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x316266
leaq 0x27ec33(%rip), %rdi    # 0x594ea0
leaq 0x27ec62(%rip), %rsi    # 0x594ed6
callq 0xf1420
movq %rax, 0xa8(%rsp)
movq 0xc8(%rsp), %rdx
leaq 0x21661c(%rip), %rdi    # 0x52c8ac
leaq 0x27ec7f(%rip), %rsi    # 0x594f16
movsd 0x200fa1(%rip), %xmm0   # 0x517240
callq 0xf6160
movq %rax, 0x98(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x8, %rdx
leaq 0x2265fa(%rip), %rdi    # 0x53c8ce
leaq 0x27ec5e(%rip), %rsi    # 0x594f39
movsd 0x22712d(%rip), %xmm0   # 0x53d410
callq 0xf6160
movq %rax, 0x90(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x10, %rdx
leaq 0x218ef3(%rip), %rdi    # 0x52f20b
leaq 0x27ec41(%rip), %rsi    # 0x594f60
movsd 0x27ea69(%rip), %xmm0   # 0x594d90
callq 0xf6160
movq %rax, 0x88(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x18, %rdx
leaq 0x242a63(%rip), %rdi    # 0x558dbf
leaq 0x27ec2b(%rip), %rsi    # 0x594f8e
movsd 0x2654b5(%rip), %xmm0   # 0x57b820
callq 0xf6160
movq %rax, 0x80(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x20, %rdx
leaq 0x268ddd(%rip), %rdi    # 0x57f17d
leaq 0x27ec11(%rip), %rsi    # 0x594fb8
movsd 0x27e9d9(%rip), %xmm0   # 0x594d88
callq 0xf6160
movq %rax, 0x78(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x38, %rdx
leaq 0x243f7e(%rip), %rdi    # 0x55a35c
leaq 0x27ebfb(%rip), %rsi    # 0x594fe0
movsd 0x265433(%rip), %xmm0   # 0x57b820
callq 0xf6160
movq %rax, 0x58(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x30, %rdx
leaq 0x251d26(%rip), %rdi    # 0x568142
leaq 0x27ec1a(%rip), %rsi    # 0x59503d
movsd 0x27e955(%rip), %xmm0   # 0x594d80
xorps %xmm1, %xmm1
callq 0xf61d0
movq %rax, 0x68(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x28, %rdx
leaq 0x218063(%rip), %rdi    # 0x52e4c0
leaq 0x27ec13(%rip), %rsi    # 0x595077
movsd 0x267c24(%rip), %xmm0   # 0x57e090
xorps %xmm1, %xmm1
callq 0xf61d0
movq %rax, 0x70(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rax
movq 0x48(%rax), %rdx
leaq 0x28111a(%rip), %rdi    # 0x5975b8
leaq 0x27ec45(%rip), %rsi    # 0x5950ea
leaq 0x27ec52(%rip), %rcx    # 0x5950fe
callq 0xf69f0
movq %rax, 0x60(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rax
movq 0x50(%rax), %rdx
leaq 0x239c19(%rip), %rdi    # 0x5500f4
leaq 0x27ec27(%rip), %rsi    # 0x595109
leaq 0x227796(%rip), %rcx    # 0x53dc7f
callq 0xf69f0
movq %rax, 0x50(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rax
movq 0x58(%rax), %rdx
leaq 0x205561(%rip), %rdi    # 0x51ba79
leaq 0x27ec09(%rip), %rsi    # 0x595128
leaq 0x27ec1f(%rip), %rcx    # 0x595145
callq 0xf69f0
movq %rax, 0x48(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x68, %rdx
leaq 0x2818fe(%rip), %rdi    # 0x597e53
leaq 0x27ebfd(%rip), %rsi    # 0x595159
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x40(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x60, %rdx
leaq 0x215a4d(%rip), %rdi    # 0x52bfda
leaq 0x27ebed(%rip), %rsi    # 0x595181
movl $0x1, %ecx
callq 0xf6310
movq %rax, 0x20(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x70, %rdx
leaq 0x21d496(%rip), %rdi    # 0x533a5e
leaq 0x27ebcc(%rip), %rsi    # 0x59519b
movl $0xf, %r8d
movq %r8, %rcx
callq 0xf66b0
movq %rax, 0x10(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x40, %rdx
leaq 0x235a4e(%rip), %rdi    # 0x54c055
leaq 0x27ebaf(%rip), %rsi    # 0x5951bd
xorps %xmm1, %xmm1
movsd 0x200c27(%rip), %xmm2   # 0x517240
movaps %xmm1, %xmm0
callq 0xf6240
movq %rax, 0x8(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x64, %rdx
leaq 0x27ca5d(%rip), %rdi    # 0x5930a8
leaq 0x27eb9a(%rip), %rsi    # 0x5951ec
movl $0x1, %ecx
callq 0xf6310
movq %rax, 0x18(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x69, %rdx
leaq 0x27e6ed(%rip), %rdi    # 0x594d73
leaq 0x27eb7f(%rip), %rsi    # 0x59520c
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x6b, %rdx
leaq 0x281716(%rip), %rdi    # 0x597dd4
leaq 0x27eb5b(%rip), %rsi    # 0x595220
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0xc8(%rsp), %rdx
addq $0x6a, %rdx
leaq 0x295f8a(%rip), %rdi    # 0x5ac680
leaq 0x27eb4b(%rip), %rsi    # 0x595248
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x30(%rsp)
movq 0xa8(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf1600
movq 0xa8(%rsp), %rdi
movl $0x3, %edx
movl %edx, %esi
callq 0xf2a40
movq 0xa8(%rsp), %rdi
callq 0xf1720
movq 0xa8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
movl 0xc4(%rsp), %edx
movq 0xb8(%rsp), %rcx
movq 0xb0(%rsp), %r9
leaq -0x1f003a(%rip), %r8    # 0x126730
callq 0xf2ab0
movl %eax, 0xa4(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xf5cf0
movl 0xa4(%rsp), %eax
addq $0xd8, %rsp
retq
nopw %cs:(%rax,%rax)