// File: /workspace/github_cpp_makefile_star2_O1/ncbi[P]amr/amr_report.cpp
// Function: (anonymous namespace)::ThisApplication::ThisApplication()
ThisApplication ()
    : Application ("Report AMR proteins")
    {
      // Input
      addKey ("fam", "Table FAM");
      const string blastFormat (string (Alignment::format) + ". qseqid format: gi|Protein accession|fusion part|# fusions|FAM.id|FAM.class|Product name");
      addKey ("blastp", "blastp output in the format: " + blastFormat);  
      addKey ("blastx", "blastx output in the format: " + blastFormat);  

      addKey ("gff", ".gff assembly file");
      addKey ("gfftype", "Type of GFF file: " + Gff::names. toString (", "), "genbank");
      addKey ("gff_prot_match", ".gff-protein FASTA matching file: \"<protein FASTA id> <protein GFF id>\"");
      addKey ("gff_dna_match", ".gff-DNA FASTA matching file: \"<DNA FASTA id> <DNA GFF id>\"");
      addFlag ("lcl", "Nucleotide FASTA created by PGAP has \"lcl|\" prefix in accessions");  
      addFlag ("bed", "Browser Extensible Data format of the <gff> file");

      addKey ("dna_len", "File with lines: <dna id> <dna length>");
      addKey ("hmmdom", "HMM domain alignments");
      addKey ("hmmsearch", "Output of hmmsearch");
      addKey ("organism", "Taxonomy group for mutations");
      addKey ("mutation", "Mutations table");
      addKey ("susceptible", "Table of susceptible proteins with resistance cutoffs");
      addKey ("mutation_all", "File to report all mutations");
      addKey ("suppress_prot", "File with protein accessions to suppress");
      addKey ("ident_min", "Min. identity to the reference protein (0..1). -1 means use a curated threshold if it exists and " + toString (ident_min_def) + " otherwise", "-1");
      addKey ("coverage_min", "Min. coverage of the reference protein (0..1) for partial hits", toString (partial_coverage_min_def));
      addFlag ("skip_hmm_check", "Skip checking HMM for a BLAST hit");
      addFlag ("report_equidistant", "Report all equidistant BLAST and HMM matches");  // PD-3772
      
      // Output
      addKey ("out", "Identifiers of the reported input proteins");
      addFlag ("print_node", "Print FAM.id replaced by FAM.parent for non-exact allele matches"); 
      addFlag ("print_node_raw", "Print FAM.id"); 
      addFlag ("pseudo", "Indicate pseudo-genes as method INTERNAL_STOP");  //  or FRAME_SHIFT
      addFlag ("force_cds_report", "Report contig/start/stop/strand even if this information does not exist");
      addFlag ("non_reportable", "Report non-reportable families");
      addFlag ("core", "Report only core reportale families");
      addKey ("name", "Text to be added as the first column \"name\" to all rows of the report");
      
      // Testing
      addFlag ("nosame", "Exclude the same reference protein accessions from the BLAST output (for testing)"); 
      addFlag ("noblast", "Exclude the BLAST output (for testing)"); 
      addFlag ("nohmm", "Exclude the HMMer output (for testing)"); 
      addFlag ("retain_blasts", "Retain all blast hits (for testing)");
      
 	    version = SVN_REV;  
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rdi, %rbx
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x96d8b(%rip), %rsi     # 0xa3141
leaq 0x96d97(%rip), %rdx     # 0xa3154
leaq 0x48(%rsp), %rdi
callq 0x39720
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
movl $0x1, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x39350
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0xc3f5
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0xbe084(%rip), %rax     # 0xca480
movq %rax, (%rbx)
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x96d47(%rip), %rsi     # 0xa3155
leaq 0x96d43(%rip), %rdx     # 0xa3158
callq 0x39720
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x96d2e(%rip), %rsi     # 0xa3159
leaq 0x96d30(%rip), %rdx     # 0xa3162
leaq 0x8(%rsp), %rdi
callq 0x39720
leaq 0xc0a15(%rip), %rcx     # 0xcce58
leaq 0x48(%rsp), %rsi
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc472
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0xc489
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96ccb(%rip), %rsi     # 0xa3163
leaq 0x96cf8(%rip), %rdx     # 0xa3197
callq 0x39720
leaq 0x96ced(%rip), %rsi     # 0xa3198
leaq 0x8(%rsp), %rdi
callq 0xba70
movq %r14, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc4d8
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0xc4df
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc50e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96cd5(%rip), %rsi     # 0xa31f2
leaq 0x96cd4(%rip), %rdx     # 0xa31f8
callq 0x39720
leaq 0x96cc9(%rip), %rsi     # 0xa31f9
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x394f0
leaq 0xc0912(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
leaq 0x38(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0xc579
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc590
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96c78(%rip), %rsi     # 0xa3217
leaq 0x96c77(%rip), %rdx     # 0xa321d
callq 0x39720
leaq 0x96c6c(%rip), %rsi     # 0xa321e
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x394f0
leaq 0xc0890(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc5f7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc60e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96c1f(%rip), %rsi     # 0xa323c
leaq 0x96c1b(%rip), %rdx     # 0xa323f
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96c08(%rip), %rsi     # 0xa3240
leaq 0x96c13(%rip), %rdx     # 0xa3252
callq 0x39720
leaq 0xc080d(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc67a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc691
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96bb3(%rip), %rsi     # 0xa3253
leaq 0x96bb3(%rip), %rdx     # 0xa325a
callq 0x39720
leaq 0xb8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x96baf(%rip), %rsi     # 0xa326e
leaq 0x96baa(%rip), %rdx     # 0xa3270
leaq 0xa8(%rsp), %rdi
callq 0x39720
leaq 0xc086e(%rip), %rsi     # 0xccf48
leaq 0x68(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x4f1c0
leaq 0x96b68(%rip), %rcx     # 0xa325b
leaq 0x68(%rsp), %rdi
movl $0x12, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0xb5d0
movq %r13, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc72a
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0xc732
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x98(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x972f8(%rip), %rsi     # 0xa3a55
leaq 0x972f8(%rip), %rdx     # 0xa3a5c
leaq 0x88(%rsp), %rdi
callq 0x39720
leaq 0xc06e0(%rip), %r9      # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
callq 0x63cb6
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xc7b2
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc7c9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x78(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0xc7e4
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc801
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc818
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96a4a(%rip), %rsi     # 0xa3271
leaq 0x96a51(%rip), %rdx     # 0xa327f
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96a3e(%rip), %rsi     # 0xa3280
leaq 0x96a7e(%rip), %rdx     # 0xa32c7
callq 0x39720
leaq 0xc0603(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc884
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc89b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96a1e(%rip), %rsi     # 0xa32c8
leaq 0x96a24(%rip), %rdx     # 0xa32d5
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96a11(%rip), %rsi     # 0xa32d6
leaq 0x96a45(%rip), %rdx     # 0xa3311
callq 0x39720
leaq 0xc0580(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc907
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc91e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x97132(%rip), %rsi     # 0xa3a5f
leaq 0x9712e(%rip), %rdx     # 0xa3a62
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x969ca(%rip), %rsi     # 0xa3312
leaq 0x96a03(%rip), %rdx     # 0xa3352
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc97f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xc996
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x969ae(%rip), %rsi     # 0xa3353
leaq 0x969aa(%rip), %rdx     # 0xa3356
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96997(%rip), %rsi     # 0xa3357
leaq 0x969c0(%rip), %rdx     # 0xa3387
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xc9f7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xca0e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9696b(%rip), %rsi     # 0xa3388
leaq 0x9696b(%rip), %rdx     # 0xa338f
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96958(%rip), %rsi     # 0xa3390
leaq 0x96977(%rip), %rdx     # 0xa33b6
callq 0x39720
leaq 0xc040d(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xca7a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xca91
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96917(%rip), %rsi     # 0xa33b7
leaq 0x96916(%rip), %rdx     # 0xa33bd
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96903(%rip), %rsi     # 0xa33be
leaq 0x96911(%rip), %rdx     # 0xa33d3
callq 0x39720
leaq 0xc038a(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcafd
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcb14
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x968bb(%rip), %rsi     # 0xa33de
leaq 0x968bd(%rip), %rdx     # 0xa33e7
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96896(%rip), %rsi     # 0xa33d4
leaq 0x968a2(%rip), %rdx     # 0xa33e7
callq 0x39720
leaq 0xc0307(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcb80
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcb97
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96842(%rip), %rsi     # 0xa33e8
leaq 0x96843(%rip), %rdx     # 0xa33f0
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96830(%rip), %rsi     # 0xa33f1
leaq 0x96845(%rip), %rdx     # 0xa340d
callq 0x39720
leaq 0xc0284(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcc03
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcc1a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x967e5(%rip), %rsi     # 0xa340e
leaq 0x967e6(%rip), %rdx     # 0xa3416
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x967d3(%rip), %rsi     # 0xa3417
leaq 0x967db(%rip), %rdx     # 0xa3426
callq 0x39720
leaq 0xc0201(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcc86
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcc9d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9677b(%rip), %rsi     # 0xa3427
leaq 0x9677f(%rip), %rdx     # 0xa3432
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9676c(%rip), %rsi     # 0xa3433
leaq 0x9679a(%rip), %rdx     # 0xa3468
callq 0x39720
leaq 0xc017e(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcd09
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcd20
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9673a(%rip), %rsi     # 0xa3469
leaq 0x9673f(%rip), %rdx     # 0xa3475
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9672c(%rip), %rsi     # 0xa3476
leaq 0x96741(%rip), %rdx     # 0xa3492
callq 0x39720
leaq 0xc00fb(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcd8c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcda3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x966e1(%rip), %rsi     # 0xa3493
leaq 0x966e7(%rip), %rdx     # 0xa34a0
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x966d4(%rip), %rsi     # 0xa34a1
leaq 0x966f5(%rip), %rdx     # 0xa34c9
callq 0x39720
leaq 0xc0078(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xce0f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xce26
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96695(%rip), %rsi     # 0xa34ca
leaq 0x96697(%rip), %rdx     # 0xa34d3
callq 0x39720
leaq 0x96268(%rip), %rsi     # 0xa30b0
leaq 0xa8(%rsp), %rdi
callq 0x395e8
leaq 0x96678(%rip), %rcx     # 0xa34d4
leaq 0xa8(%rsp), %rdi
movl $0x61, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0xb5d0
movq %r14, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xce96
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0xce9d
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x68(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x96676(%rip), %rsi     # 0xa3536
callq 0xba70
movq %r13, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xcee8
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0xcef0
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x88(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x96627(%rip), %rsi     # 0xa3541
leaq 0x96622(%rip), %rdx     # 0xa3543
callq 0x39720
leaq 0xbff2b(%rip), %r9      # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
callq 0x63cb6
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xcf67
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xcf7e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0xcf95
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xcfb2
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xcfc9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9656c(%rip), %rsi     # 0xa3544
leaq 0x96571(%rip), %rdx     # 0xa3550
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9655e(%rip), %rsi     # 0xa3551
leaq 0x96595(%rip), %rdx     # 0xa358f
callq 0x39720
leaq 0x960b2(%rip), %rsi     # 0xa30b8
leaq 0x68(%rsp), %rdi
callq 0x395e8
leaq 0xbfe41(%rip), %r9      # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x68(%rsp), %rcx
movq %rbx, %rdi
xorl %r8d, %r8d
callq 0x63cb6
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0xd048
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd05f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd076
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9650b(%rip), %rsi     # 0xa3590
leaq 0x96512(%rip), %rdx     # 0xa359e
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x964ff(%rip), %rsi     # 0xa359f
leaq 0x96519(%rip), %rdx     # 0xa35c0
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd0d7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd0ee
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x964c4(%rip), %rsi     # 0xa35c1
leaq 0x964cf(%rip), %rdx     # 0xa35d3
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x964bc(%rip), %rsi     # 0xa35d4
leaq 0x964e1(%rip), %rdx     # 0xa3600
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd14f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd166
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9a762(%rip), %rsi     # 0xa78d7
leaq 0x9a75e(%rip), %rdx     # 0xa78da
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96471(%rip), %rsi     # 0xa3601
leaq 0x96494(%rip), %rdx     # 0xa362b
callq 0x39720
leaq 0xbfcb5(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd1d2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd1e9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96434(%rip), %rsi     # 0xa362c
leaq 0x96437(%rip), %rdx     # 0xa3636
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96424(%rip), %rsi     # 0xa3637
leaq 0x9645d(%rip), %rdx     # 0xa3677
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd24a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd261
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96408(%rip), %rsi     # 0xa3678
leaq 0x9640f(%rip), %rdx     # 0xa3686
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x963fc(%rip), %rsi     # 0xa3687
leaq 0x96401(%rip), %rdx     # 0xa3693
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd2c2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd2d9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x963ac(%rip), %rsi     # 0xa3694
leaq 0x963ab(%rip), %rdx     # 0xa369a
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96398(%rip), %rsi     # 0xa369b
leaq 0x963be(%rip), %rdx     # 0xa36c8
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd33a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd351
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96369(%rip), %rsi     # 0xa36c9
leaq 0x96372(%rip), %rdx     # 0xa36d9
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9635f(%rip), %rsi     # 0xa36da
leaq 0x9639f(%rip), %rdx     # 0xa3721
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd3b2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd3c9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9634a(%rip), %rsi     # 0xa3722
leaq 0x96351(%rip), %rdx     # 0xa3730
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9633e(%rip), %rsi     # 0xa3731
leaq 0x96355(%rip), %rdx     # 0xa374f
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd42a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd441
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9b623(%rip), %rsi     # 0xa8a73
leaq 0x9b620(%rip), %rdx     # 0xa8a77
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x962e5(%rip), %rsi     # 0xa3750
leaq 0x96301(%rip), %rdx     # 0xa3773
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd4a2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd4b9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x97dfd(%rip), %rsi     # 0xa52c5
leaq 0x97dfa(%rip), %rdx     # 0xa52c9
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96291(%rip), %rsi     # 0xa3774
leaq 0x962cf(%rip), %rdx     # 0xa37b9
callq 0x39720
leaq 0xbf962(%rip), %rcx     # 0xcce58
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %r8d, %r8d
movq %rcx, %r9
callq 0x63cb6
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd525
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd53c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x9626f(%rip), %rsi     # 0xa37ba
leaq 0x9626e(%rip), %rdx     # 0xa37c0
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9625b(%rip), %rsi     # 0xa37c1
leaq 0x962a5(%rip), %rdx     # 0xa3812
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd59d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd5b4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96250(%rip), %rsi     # 0xa3813
leaq 0x96250(%rip), %rdx     # 0xa381a
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9623d(%rip), %rsi     # 0xa381b
leaq 0x9625c(%rip), %rdx     # 0xa3841
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd615
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd62c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x96207(%rip), %rsi     # 0xa3842
leaq 0x96205(%rip), %rdx     # 0xa3847
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x961f2(%rip), %rsi     # 0xa3848
leaq 0x96211(%rip), %rdx     # 0xa386e
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd68d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xd6a4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x961bc(%rip), %rsi     # 0xa386f
leaq 0x961c2(%rip), %rdx     # 0xa387c
callq 0x39720
leaq 0x28(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x961af(%rip), %rsi     # 0xa387d
leaq 0x961cb(%rip), %rdx     # 0xa38a0
callq 0x39720
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x644ba
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd705
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x58(%rsp), %r14
je 0xd721
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
leaq 0x28(%rbx), %rdi
movq 0x30(%rbx), %rdx
leaq 0x96171(%rip), %rcx     # 0xa38a1
movl $0x6, %r8d
xorl %esi, %esi
callq 0xb860
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0xd754
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb550
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
movq %rax, (%rsp)
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0xda14
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xda14
jmp 0xda10
jmp 0xda45
jmp 0xda62
movq %rax, (%rsp)
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xd897
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xd897
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd8b4
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xd8b4
movq %rax, (%rsp)
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
jne 0xd9dc
jmp 0xd9ef
jmp 0xd9eb
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
movq %rax, (%rsp)
movq 0x88(%rsp), %rdi
cmpq %r15, %rdi
je 0xd9b1
movq 0x98(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xd9b1
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xd9ce
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xd9ce
movq %rax, (%rsp)
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ef
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xd9ef
movq %rax, (%rsp)
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xda49
movq 0xb8(%rsp), %rsi
jmp 0xda23
jmp 0xda45
jmp 0xda62
jmp 0xda10
jmp 0xda45
jmp 0xda62
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0xda49
movq 0x38(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xda49
jmp 0xda45
jmp 0xda62
movq %rax, (%rsp)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0xda1e
jmp 0xda49
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xda66
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xda66
movq %rax, (%rsp)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xda82
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb550
movq %rbx, %rdi
callq 0x38f36
movq (%rsp), %rdi
callq 0xb9c0
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xda82
movq 0x18(%rsp), %rsi
jmp 0xda7a
jmp 0xdad7
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xdacb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xdacb
movq %rax, (%rsp)
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
jne 0xda75
jmp 0xda82
movq %rax, (%rsp)
jmp 0xda82
movq %rax, (%rsp)
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0xda8a
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb550
jmp 0xda8a
movq %rax, (%rsp)
jmp 0xda8a