// File: /workspace/github_c_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %rbx
movq %rcx, %r14
movl %edx, %ebp
movq %rsi, %r13
movq %rdi, %r15
testq %r8, %r8
je 0x213625
movq %rbx, %rdi
callq 0xfcc32
testb %al, %al
jne 0x213998
leaq 0x1ae4c4(%rip), %rdi    # 0x3c1af0
leaq 0x1ae4f3(%rip), %rsi    # 0x3c1b26
callq 0x107bfe
movq %rax, %r12
leaq 0x1480d1(%rip), %rdi    # 0x35b713
leaq 0x1ae51d(%rip), %rsi    # 0x3c1b66
movsd 0x132bd7(%rip), %xmm0   # 0x346228
movq %r13, %rdx
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x8(%r13), %rdx
leaq 0x157c1f(%rip), %rdi    # 0x36b28e
leaq 0x1ae513(%rip), %rsi    # 0x3c1b89
movsd 0x1586ea(%rip), %xmm0   # 0x36bd68
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x10(%r13), %rdx
leaq 0x14a9e2(%rip), %rdi    # 0x35e07b
leaq 0x1ae510(%rip), %rsi    # 0x3c1bb0
movsd 0x1ae328(%rip), %xmm0   # 0x3c19d0
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x18(%r13), %rdx
leaq 0x172f85(%rip), %rdi    # 0x386648
leaq 0x1ae514(%rip), %rsi    # 0x3c1bde
movsd 0x195866(%rip), %xmm0   # 0x3a8f38
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x20(%r13), %rdx
leaq 0x198fc3(%rip), %rdi    # 0x3ac6b0
leaq 0x1ae514(%rip), %rsi    # 0x3c1c08
movsd 0x1ae2dc(%rip), %xmm0   # 0x3c19d8
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x38(%r13), %rdx
leaq 0x174466(%rip), %rdi    # 0x387b7d
leaq 0x1ae512(%rip), %rsi    # 0x3c1c30
movsd 0x195812(%rip), %xmm0   # 0x3a8f38
callq 0x10a346
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x30(%r13), %rdx
leaq 0x182094(%rip), %rdi    # 0x3957d5
leaq 0x1ae545(%rip), %rsi    # 0x3c1c8d
movsd 0x1ae290(%rip), %xmm0   # 0x3c19e0
xorps %xmm1, %xmm1
callq 0x10a374
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x28(%r13), %rdx
leaq 0x149a56(%rip), %rdi    # 0x35d1c4
leaq 0x1ae552(%rip), %rsi    # 0x3c1cc7
movsd 0x197ec3(%rip), %xmm0   # 0x3ab640
xorps %xmm1, %xmm1
callq 0x10a374
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x48(%r13), %rdx
leaq 0x1b0a9d(%rip), %rdi    # 0x3c4238
leaq 0x1ae598(%rip), %rsi    # 0x3c1d3a
leaq 0x1ae5a5(%rip), %rcx    # 0x3c1d4e
callq 0x10a770
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x50(%r13), %rdx
leaq 0x16a390(%rip), %rdi    # 0x37db54
leaq 0x1ae58e(%rip), %rsi    # 0x3c1d59
leaq 0x158855(%rip), %rcx    # 0x36c027
callq 0x10a770
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x58(%r13), %rdx
leaq 0x137233(%rip), %rdi    # 0x34aa20
leaq 0x1ae584(%rip), %rsi    # 0x3c1d78
leaq 0x1ae59a(%rip), %rcx    # 0x3c1d95
callq 0x10a770
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x68(%r13), %rdx
leaq 0x1b1265(%rip), %rdi    # 0x3c4a7b
leaq 0x1ae58c(%rip), %rsi    # 0x3c1da9
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x60(%r13), %rdx
leaq 0x14761b(%rip), %rdi    # 0x35ae55
leaq 0x1ae590(%rip), %rsi    # 0x3c1dd1
movl $0x1, %ecx
callq 0x10a44d
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x70(%r13), %rdx
leaq 0x14ef98(%rip), %rdi    # 0x3627f9
leaq 0x1ae583(%rip), %rsi    # 0x3c1deb
movl $0xf, %ecx
movl $0xf, %r8d
callq 0x10a5d1
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x40(%r13), %rdx
leaq 0x16645f(%rip), %rdi    # 0x379ced
leaq 0x1ae578(%rip), %rsi    # 0x3c1e0d
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
movsd 0x132985(%rip), %xmm2   # 0x346228
callq 0x10a3b5
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x64(%r13), %rdx
leaq 0x15e041(%rip), %rdi    # 0x3718ff
leaq 0x1ae577(%rip), %rsi    # 0x3c1e3c
movl $0x1, %ecx
callq 0x10a44d
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x69(%r13), %rdx
leaq 0x1ae0dd(%rip), %rdi    # 0x3c19c2
leaq 0x1ae570(%rip), %rsi    # 0x3c1e5c
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x6b(%r13), %rdx
leaq 0x1b10f3(%rip), %rdi    # 0x3c49fc
leaq 0x1ae560(%rip), %rsi    # 0x3c1e70
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
addq $0x6a, %r13
leaq 0x1c38c2(%rip), %rdi    # 0x3d71ef
leaq 0x1ae564(%rip), %rsi    # 0x3c1e98
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %r12, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r12, %rdi
movl $0x3, %esi
movl $0x3, %edx
callq 0x10874b
movq %r12, %rdi
callq 0x107d2d
leaq -0xf435e(%rip), %r8     # 0x11f60c
movq %r12, %rdi
movq %r15, %rsi
movl %ebp, %edx
movq %r14, %rcx
movq %rbx, %r9
callq 0x10875d
movl %eax, %ebx
movq %r12, %rdi
callq 0x10a0b4
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x821b3