// File: ncbi[P]amr/gff_check.cpp
// Function: (anonymous namespace)::ThisApplication::ThisApplication()
ThisApplication ()
    : Application ("Check the correctness of a GFF file. Exit with an error if it is incorrect.")
    {
      // Input
      addPositional ("gff", "GFF file, if " + strQuote (noFile) + " then exit 0");
      addKey ("gfftype", "Type of GFF file: " + Gff::names. toString (", "), "genbank");
      addKey ("prot", "Protein FASTA file");
      addKey ("dna", "DNA FASTA file");
      addFlag ("lcl", "Nucleotide FASTA created by PGAP has \"lcl|\" prefix in accessions");  
      // Output
      addKey ("gff_prot_match", "Output file with pairs: \"<protein FASTA id> <protein GFF id>\", \n\
where for genbank: <protein GFF id> is from " + strQuote (locus_tagS + "<id>") + " in the protein FASTA comment, \n\
for microscope: <protein GFF id> is ID:<num> from '><acc>|ID:<num>|<gene>|', \n\
and for prodigal: <protein GFF id> is ID=<num> in the protein FASTA comment\n\
");
      addKey ("gff_dna_match",  "Output file with pairs: \"<DNA FASTA id> <DNA GFF id>\", where for pseudomonasdb: <DNA GFF id> is the suffix after '|' in the DNA FASTA identifier");
	    version = SVN_REV;
    }

// Assembly:
subq $0x3e8, %rsp            # imm = 0x3E8
movq %rdi, 0x3e0(%rsp)
movq 0x3e0(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0x3bf(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xcc70
movq 0x78(%rsp), %rdx
leaq 0x89697(%rip), %rsi     # 0x97021
leaq 0x3c0(%rsp), %rdi
callq 0x12300
jmp 0xd999
movq 0x70(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
movl $0x1, %edx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x123c0
jmp 0xd9b8
leaq 0x3c0(%rsp), %rdi
callq 0xce08
leaq 0x3bf(%rsp), %rdi
callq 0xc730
movq 0x70(%rsp), %rax
leaq 0xb5b02(%rip), %rcx     # 0xc34e0
movq %rcx, (%rax)
leaq 0x387(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0xcc70
movq 0x68(%rsp), %rdx
leaq 0x8966e(%rip), %rsi     # 0x9706d
leaq 0x388(%rsp), %rdi
callq 0x12300
jmp 0xda0e
leaq 0xb81a3(%rip), %rsi     # 0xc5bb8
leaq 0x320(%rsp), %rdi
movl $0x22, %edx
callq 0x1e880
jmp 0xda29
leaq 0x89641(%rip), %rsi     # 0x97071
leaq 0x340(%rsp), %rdi
leaq 0x320(%rsp), %rdx
callq 0x125b0
jmp 0xda47
leaq 0x89631(%rip), %rdx     # 0x9707f
leaq 0x360(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x12560
jmp 0xda65
movq 0x70(%rsp), %rdi
leaq 0x388(%rsp), %rsi
leaq 0x360(%rsp), %rdx
callq 0x403b0
jmp 0xda81
leaq 0x360(%rsp), %rdi
callq 0xce08
leaq 0x340(%rsp), %rdi
callq 0xce08
leaq 0x320(%rsp), %rdi
callq 0xce08
leaq 0x388(%rsp), %rdi
callq 0xce08
leaq 0x387(%rsp), %rdi
callq 0xc730
leaq 0x2ff(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xcc70
movq 0x60(%rsp), %rdx
leaq 0x895ac(%rip), %rsi     # 0x9708c
leaq 0x300(%rsp), %rdi
callq 0x12300
jmp 0xdaef
leaq 0x297(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xcc70
movq 0x58(%rsp), %rdx
leaq 0x8959a(%rip), %rsi     # 0x970a7
leaq 0x298(%rsp), %rdi
callq 0x12300
jmp 0xdb1c
leaq 0xb820d(%rip), %rsi     # 0xc5d30
leaq 0x2b8(%rsp), %rdi
leaq 0x298(%rsp), %rdx
callq 0x273e0
jmp 0xdb3a
leaq 0x89553(%rip), %rsi     # 0x97094
leaq 0x2d8(%rsp), %rdi
leaq 0x2b8(%rsp), %rdx
callq 0x125b0
jmp 0xdb58
leaq 0x26f(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xcc70
movq 0x50(%rsp), %rdx
leaq 0x89534(%rip), %rsi     # 0x970aa
leaq 0x270(%rsp), %rdi
callq 0x12300
jmp 0xdb85
movq 0x70(%rsp), %rdi
leaq 0xb80af(%rip), %r9      # 0xc5c40
leaq 0x300(%rsp), %rsi
leaq 0x2d8(%rsp), %rdx
leaq 0x270(%rsp), %rcx
xorl %r8d, %r8d
callq 0x3f320
jmp 0xdbb3
leaq 0x270(%rsp), %rdi
callq 0xce08
leaq 0x26f(%rsp), %rdi
callq 0xc730
leaq 0x2d8(%rsp), %rdi
callq 0xce08
leaq 0x2b8(%rsp), %rdi
callq 0xce08
leaq 0x298(%rsp), %rdi
callq 0xce08
leaq 0x297(%rsp), %rdi
callq 0xc730
leaq 0x300(%rsp), %rdi
callq 0xce08
leaq 0x2ff(%rsp), %rdi
callq 0xc730
leaq 0x247(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xcc70
movq 0x48(%rsp), %rdx
leaq 0x89479(%rip), %rsi     # 0x970b2
leaq 0x248(%rsp), %rdi
callq 0x12300
jmp 0xdc48
leaq 0x21f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xcc70
movq 0x40(%rsp), %rdx
leaq 0x89451(%rip), %rsi     # 0x970b7
leaq 0x220(%rsp), %rdi
callq 0x12300
jmp 0xdc75
movq 0x70(%rsp), %rdi
leaq 0xb7fbf(%rip), %r9      # 0xc5c40
leaq 0x248(%rsp), %rsi
leaq 0x220(%rsp), %rdx
xorl %r8d, %r8d
movq %r9, %rcx
callq 0x3f320
jmp 0xdc9e
leaq 0x220(%rsp), %rdi
callq 0xce08
leaq 0x21f(%rsp), %rdi
callq 0xc730
leaq 0x248(%rsp), %rdi
callq 0xce08
leaq 0x247(%rsp), %rdi
callq 0xc730
leaq 0x1f7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xcc70
movq 0x38(%rsp), %rdx
leaq 0x893da(%rip), %rsi     # 0x970ca
leaq 0x1f8(%rsp), %rdi
callq 0x12300
jmp 0xdcff
leaq 0x1cf(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xcc70
movq 0x30(%rsp), %rdx
leaq 0x899f9(%rip), %rsi     # 0x97716
leaq 0x1d0(%rsp), %rdi
callq 0x12300
jmp 0xdd2c
movq 0x70(%rsp), %rdi
leaq 0xb7f08(%rip), %r9      # 0xc5c40
leaq 0x1f8(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
xorl %r8d, %r8d
movq %r9, %rcx
callq 0x3f320
jmp 0xdd55
leaq 0x1d0(%rsp), %rdi
callq 0xce08
leaq 0x1cf(%rsp), %rdi
callq 0xc730
leaq 0x1f8(%rsp), %rdi
callq 0xce08
leaq 0x1f7(%rsp), %rdi
callq 0xc730
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xcc70
movq 0x28(%rsp), %rdx
leaq 0x89327(%rip), %rsi     # 0x970ce
leaq 0x1a8(%rsp), %rdi
callq 0x12300
jmp 0xddb6
leaq 0x17f(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xcc70
movq 0x20(%rsp), %rdx
leaq 0x892fe(%rip), %rsi     # 0x970d2
leaq 0x180(%rsp), %rdi
callq 0x12300
jmp 0xdde3
movq 0x70(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
leaq 0x180(%rsp), %rdx
xorl %ecx, %ecx
callq 0x3fb80
jmp 0xde01
leaq 0x180(%rsp), %rdi
callq 0xce08
leaq 0x17f(%rsp), %rdi
callq 0xc730
leaq 0x1a8(%rsp), %rdi
callq 0xce08
leaq 0x1a7(%rsp), %rdi
callq 0xc730
leaq 0x157(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xcc70
movq 0x18(%rsp), %rdx
leaq 0x892c0(%rip), %rsi     # 0x97113
leaq 0x158(%rsp), %rdi
callq 0x12300
jmp 0xde62
leaq 0xb7d0f(%rip), %rsi     # 0xc5b78
leaq 0x8931f(%rip), %rdx     # 0x9718f
leaq 0xd0(%rsp), %rdi
callq 0x12600
jmp 0xde7f
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
movl $0x22, %edx
callq 0x1e880
jmp 0xde9b
leaq 0x89280(%rip), %rsi     # 0x97122
leaq 0x110(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x125b0
jmp 0xdeb9
leaq 0x892d4(%rip), %rdx     # 0x97194
leaq 0x130(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12560
jmp 0xded7
movq 0x70(%rsp), %rdi
leaq 0xb7d5d(%rip), %r9      # 0xc5c40
leaq 0x158(%rsp), %rsi
leaq 0x130(%rsp), %rdx
xorl %r8d, %r8d
movq %r9, %rcx
callq 0x3f320
jmp 0xdf00
leaq 0x130(%rsp), %rdi
callq 0xce08
leaq 0x110(%rsp), %rdi
callq 0xce08
leaq 0xf0(%rsp), %rdi
callq 0xce08
leaq 0xd0(%rsp), %rdi
callq 0xce08
leaq 0x158(%rsp), %rdi
callq 0xce08
leaq 0x157(%rsp), %rdi
callq 0xc730
leaq 0xaf(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xcc70
movq 0x10(%rsp), %rdx
leaq 0x892e3(%rip), %rsi     # 0x9724f
leaq 0xb0(%rsp), %rdi
callq 0x12300
jmp 0xdf7b
leaq 0x87(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xcc70
movq 0x8(%rsp), %rdx
leaq 0x892c4(%rip), %rsi     # 0x9725d
leaq 0x88(%rsp), %rdi
callq 0x12300
jmp 0xdfa8
movq 0x70(%rsp), %rdi
leaq 0xb7c8c(%rip), %r9      # 0xc5c40
leaq 0xb0(%rsp), %rsi
leaq 0x88(%rsp), %rdx
xorl %r8d, %r8d
movq %r9, %rcx
callq 0x3f320
jmp 0xdfd1
leaq 0x88(%rsp), %rdi
callq 0xce08
leaq 0x87(%rsp), %rdi
callq 0xc730
leaq 0xb0(%rsp), %rdi
callq 0xce08
leaq 0xaf(%rsp), %rdi
callq 0xc730
movq 0x70(%rsp), %rdi
addq $0x28, %rdi
leaq 0x892d9(%rip), %rsi     # 0x972ee
callq 0xc980
jmp 0xe01c
addq $0x3e8, %rsp            # imm = 0x3E8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe05b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x3c0(%rsp), %rdi
callq 0xce08
leaq 0x3bf(%rsp), %rdi
callq 0xc730
jmp 0xe4f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe103
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe0f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe0e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x360(%rsp), %rdi
callq 0xce08
leaq 0x340(%rsp), %rdi
callq 0xce08
leaq 0x320(%rsp), %rdi
callq 0xce08
leaq 0x388(%rsp), %rdi
callq 0xce08
leaq 0x387(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe205
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe1eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe1de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe1d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe1b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x270(%rsp), %rdi
callq 0xce08
leaq 0x26f(%rsp), %rdi
callq 0xc730
leaq 0x2d8(%rsp), %rdi
callq 0xce08
leaq 0x2b8(%rsp), %rdi
callq 0xce08
leaq 0x298(%rsp), %rdi
callq 0xce08
leaq 0x297(%rsp), %rdi
callq 0xc730
leaq 0x300(%rsp), %rdi
callq 0xce08
leaq 0x2ff(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe27e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe264
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x220(%rsp), %rdi
callq 0xce08
leaq 0x21f(%rsp), %rdi
callq 0xc730
leaq 0x248(%rsp), %rdi
callq 0xce08
leaq 0x247(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe2f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe2dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x1d0(%rsp), %rdi
callq 0xce08
leaq 0x1cf(%rsp), %rdi
callq 0xc730
leaq 0x1f8(%rsp), %rdi
callq 0xce08
leaq 0x1f7(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x180(%rsp), %rdi
callq 0xce08
leaq 0x17f(%rsp), %rdi
callq 0xc730
leaq 0x1a8(%rsp), %rdi
callq 0xce08
leaq 0x1a7(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe44b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe43e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe431
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe424
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe417
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x130(%rsp), %rdi
callq 0xce08
leaq 0x110(%rsp), %rdi
callq 0xce08
leaq 0xf0(%rsp), %rdi
callq 0xce08
leaq 0xd0(%rsp), %rdi
callq 0xce08
leaq 0x158(%rsp), %rdi
callq 0xce08
leaq 0x157(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe4c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
jmp 0xe4aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
leaq 0x88(%rsp), %rdi
callq 0xce08
leaq 0x87(%rsp), %rdi
callq 0xc730
leaq 0xb0(%rsp), %rdi
callq 0xce08
leaq 0xaf(%rsp), %rdi
callq 0xc730
jmp 0xe4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3b0(%rsp)
movl %eax, 0x3ac(%rsp)
movq 0x70(%rsp), %rdi
callq 0x12690
movq 0x3b0(%rsp), %rdi
callq 0xcc60
nop