// File: ncbi[P]amr/stx/stxtyper.cpp
// Function: (anonymous namespace)::Operon::saveTsvOut(Common_sp::TsvOut&, bool) const
void saveTsvOut (TsvOut& td,
                   bool verboseP) const 
    { ASSERT (al1);
      if (! td. live ())
        return;
      if (al2)
      {
        string stxType (getStxType (verboseP));
        const string standard ("COMPLETE");
        const bool novel =    al1->stxClass != al2->stxClass 
                           || getIdentity () < stxClass2identity [al1->stxClass]
                           || stxType. size () <= 1;

        const string quality =    al1->frameshift
                               || al2->frameshift
                                 ? "FRAMESHIFT"
                                 :    al1->stopCodon 
                                   || al2->stopCodon 
                                     ? "INTERNAL_STOP"
                                     :    al1->truncated () 
                                       || al2->truncated ()
                                         ? "PARTIAL_CONTIG_END"
                                         :    al1->c_extended ()
                                           || al2->c_extended ()
                                             ? "EXTENDED" 
                                             :    al1->partial ()
                                               || al2->partial ()
                                               ? "PARTIAL"  
                                               // complete operon types
                                               : novel
                                                 ? xs ()
                                                   ? "AMBIGUOUS"
                                                   : standard + "_NOVEL"
                                                 : standard;

        if (! verboseP)
        {
          ASSERT (stxType. size () <= 2);
          if (quality == standard)
            { ASSERT (stxType. size () == 2); }
          else
            if (stxType. size () == 2)
              stxType. erase (1);  
        }
        const string targetName (al1->targetName);
        const size_t start = al1->targetStart + 1;
        const size_t stop  = al2->targetEnd;
  	    const char strand (al1->targetStrand ? '+' : '-');
  	    const string stxType_reported (stxS + stxType);
  	    const double refIdentity = getIdentity () * 100.0;
  	    // td
        if (! input_name. empty ())
  	      td << input_name;
        if (amrfinder)
        {
          const string genesymbol (al1->stxType == al2->stxType ? stxS + al1->stxType : stxType_reported);
          string subclass (stxType_reported /*genesymbol*/);
          strUpper (subclass);
          const size_t targetAlign = al2->targetEnd - al1->targetStart;
        //const size_t refLen = al1->refLen + al2->refLen;
        //const double refCoverage = double (al1->getAbsCoverage () + al2->getAbsCoverage ()) / double (refLen) * 100.0;
          const size_t alignmentLen = al1->length + al2->length;
          const string refAccessions (al1->refAccession + "," + al2->refAccession);  // No space: PD-5205
          const string fam (al1->getGenesymbol () + fusion_infix + al2->getGenesymbol ());
          td << na                // 1 "Protein identifier"  
             << targetName        // 2 "Contig id"
             << start             // 3 "Start"
             << stop              // 4 "Stop"
             << strand            // 5 "Strand"
             << stxType_reported + "_operon"  // 6 "Element symbol"
             << stxType_reported_operon2elementName (stxType_reported, quality)    // 7 "Element name"
             << "plus"            // 8 "Scope"
             << "VIRULENCE"       // 9 "Element type"
             << "STX_TYPE"        //10 "Element subtype"
             << subclass. substr (0, 4)   //11 "Class"
             << subclass          //12 "Subclass"
             << quality           //13 "Method"  
             << targetAlign       //14 "Target length" 
             << na /*refLen*/     //15 "Reference sequence length"
             << na /*refCoverage*/ //16 "% Coverage of reference sequence"
             << refIdentity       //17 "% Identity to reference sequence"
             << alignmentLen      //18 "Alignment length"
             << refAccessions     //19 "Accession of closest sequence"        // PD-5209
             << "Shiga toxin " + genesymbol //20 "Name of closest sequence"   // PD-5209
             << na                //21 "HMM id"
             << na                //22 "HMM description"
             ;
          if (print_node)
            td << fam;
        }
        else
    	    td << targetName
             << stxType_reported
             << quality
             << refIdentity
             << start
             << stop
             << strand
             // Approximately if frameshift
             << getA () -> refAccession
             << getA () -> subClass
             << getA () -> getIdentity () * 100.0
             << getA () -> getRelCoverage () * 100.0
             << getB () -> refAccession
             << getB () -> subClass
             << getB () -> getIdentity () * 100.0
             << getB () -> getRelCoverage () * 100.0
             ;
        td. newLn ();
      }
      else
        al1->saveTsvOut (td, verboseP);
    }

// Assembly:
subq $0x7f8, %rsp            # imm = 0x7F8
movb %dl, %al
movq %rdi, 0x7f0(%rsp)
movq %rsi, 0x7e8(%rsp)
andb $0x1, %al
movb %al, 0x7e7(%rsp)
movq 0x7f0(%rsp), %rax
movq %rax, 0x210(%rsp)
callq 0xc090
movq %rax, %rcx
movq 0x210(%rsp), %rax
movl $0x0, (%rcx)
cmpq $0x0, (%rax)
jne 0x23365
callq 0xc8a0
cmpl $0x0, %eax
jne 0x2335b
leaq 0x73f(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0xccc0
movq 0x208(%rsp), %rdx
leaq 0xa156a(%rip), %rsi     # 0xc466e
leaq 0x740(%rsp), %rdi
callq 0x2efd0
jmp 0x23113
leaq 0x708(%rsp), %rdi
movl $0x240, %esi            # imm = 0x240
callq 0x32ce0
jmp 0x23127
leaq 0x760(%rsp), %rdi
leaq 0x740(%rsp), %rsi
leaq 0x708(%rsp), %rdx
callq 0x315c0
jmp 0x23146
leaq 0xa1537(%rip), %rdx     # 0xc4684
leaq 0x780(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x31430
jmp 0x23164
leaq 0x6c7(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0xccc0
movq 0x200(%rsp), %rdx
leaq 0xa21d6(%rip), %rsi     # 0xc535e
leaq 0x6c8(%rsp), %rdi
callq 0x2efd0
jmp 0x23197
leaq 0xa2b36(%rip), %rdx     # 0xc5cd4
leaq 0x6e8(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
callq 0x31430
jmp 0x231b5
leaq 0x7a0(%rsp), %rdi
leaq 0x780(%rsp), %rsi
leaq 0x6e8(%rsp), %rdx
callq 0x315c0
jmp 0x231d4
leaq 0xa200d(%rip), %rdx     # 0xc51e8
leaq 0x7c0(%rsp), %rdi
leaq 0x7a0(%rsp), %rsi
callq 0x31430
jmp 0x231f2
leaq 0x7c0(%rsp), %rdi
callq 0x3add0
jmp 0x23201
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x2333c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x2332f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23322
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23308
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x232fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x232ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x232e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x7c0(%rsp), %rdi
callq 0xce58
leaq 0x7a0(%rsp), %rdi
callq 0xce58
leaq 0x6e8(%rsp), %rdi
callq 0xce58
leaq 0x6c8(%rsp), %rdi
callq 0xce58
leaq 0x6c7(%rsp), %rdi
callq 0xc780
leaq 0x780(%rsp), %rdi
callq 0xce58
leaq 0x760(%rsp), %rdi
callq 0xce58
leaq 0x708(%rsp), %rdi
callq 0xce58
leaq 0x740(%rsp), %rdi
callq 0xce58
leaq 0x73f(%rsp), %rdi
callq 0xc780
jmp 0x24bbb
movl $0x1, %edi
callq 0xc8b0
movq 0x7e8(%rsp), %rdi
callq 0x368a0
testb $0x1, %al
jne 0x2337b
jmp 0x24bb3
movq 0x210(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x24b8f
movq 0x210(%rsp), %rsi
movzbl 0x7e7(%rsp), %edx
andl $0x1, %edx
leaq 0x6a0(%rsp), %rdi
callq 0x2bca0
leaq 0x67f(%rsp), %rdi
movq %rdi, 0x1f8(%rsp)
callq 0xccc0
movq 0x1f8(%rsp), %rdx
leaq 0xa1fd1(%rip), %rsi     # 0xc53a3
leaq 0x680(%rsp), %rdi
callq 0x2efd0
jmp 0x233e1
leaq 0x67f(%rsp), %rdi
callq 0xc780
movq 0x210(%rsp), %rax
movq (%rax), %rdi
addq $0x100, %rdi            # imm = 0x100
movq 0x8(%rax), %rsi
addq $0x100, %rsi            # imm = 0x100
callq 0x37c60
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x1f7(%rsp)
jne 0x2349f
movq 0x210(%rsp), %rdi
callq 0x25f10
movsd %xmm0, 0x1e8(%rsp)
jmp 0x23438
movq 0x210(%rsp), %rax
movq (%rax), %rsi
addq $0x100, %rsi            # imm = 0x100
leaq 0xda777(%rip), %rdi     # 0xfdbc8
callq 0x372c0
movq %rax, 0x1e0(%rsp)
jmp 0x23460
movsd 0x1e8(%rsp), %xmm1
movq 0x1e0(%rsp), %rax
movsd (%rax), %xmm0
movb $0x1, %al
ucomisd %xmm1, %xmm0
movb %al, 0x1f7(%rsp)
ja 0x2349f
leaq 0x6a0(%rsp), %rdi
callq 0xc520
cmpq $0x1, %rax
setbe %al
movb %al, 0x1f7(%rsp)
movq 0x210(%rsp), %rax
movb 0x1f7(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x67e(%rsp)
movq (%rax), %rax
movb 0x51(%rax), %al
movb $0x0, 0x656(%rsp)
movb $0x0, 0x654(%rsp)
movb $0x0, 0x652(%rsp)
movb $0x0, 0x650(%rsp)
movb $0x0, 0x64e(%rsp)
movb $0x0, 0x64c(%rsp)
testb $0x1, %al
jne 0x23504
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rax
testb $0x1, 0x51(%rax)
je 0x23544
leaq 0x657(%rsp), %rdi
movq %rdi, 0x1d8(%rsp)
callq 0xccc0
movq 0x1d8(%rsp), %rdx
movb $0x1, 0x656(%rsp)
leaq 0xa18d7(%rip), %rsi     # 0xc4e07
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x2353f
jmp 0x237bf
movq 0x210(%rsp), %rax
movq (%rax), %rax
testb $0x1, 0x50(%rax)
jne 0x23567
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rax
testb $0x1, 0x50(%rax)
je 0x235a7
leaq 0x655(%rsp), %rdi
movq %rdi, 0x1d0(%rsp)
callq 0xccc0
movq 0x1d0(%rsp), %rdx
movb $0x1, 0x654(%rsp)
leaq 0xa187f(%rip), %rsi     # 0xc4e12
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x235a2
jmp 0x237bd
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x26f60
testb $0x1, %al
jne 0x235d2
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x26f60
testb $0x1, %al
jne 0x235d2
jmp 0x23612
leaq 0x653(%rsp), %rdi
movq %rdi, 0x1c8(%rsp)
callq 0xccc0
movq 0x1c8(%rsp), %rdx
movb $0x1, 0x652(%rsp)
leaq 0xa1822(%rip), %rsi     # 0xc4e20
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x2360d
jmp 0x237bb
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x289d0
testb $0x1, %al
jne 0x2363d
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x289d0
testb $0x1, %al
jne 0x2363d
jmp 0x2367d
leaq 0x651(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0xccc0
movq 0x1c0(%rsp), %rdx
movb $0x1, 0x650(%rsp)
leaq 0xa17db(%rip), %rsi     # 0xc4e44
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x23678
jmp 0x237b9
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x27040
movb %al, 0x1bf(%rsp)
jmp 0x23696
movb 0x1bf(%rsp), %al
testb $0x1, %al
jne 0x236ca
jmp 0x236a3
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x27040
movb %al, 0x1be(%rsp)
jmp 0x236bd
movb 0x1be(%rsp), %al
testb $0x1, %al
jne 0x236ca
jmp 0x2370a
leaq 0x64f(%rsp), %rdi
movq %rdi, 0x1b0(%rsp)
callq 0xccc0
movq 0x1b0(%rsp), %rdx
movb $0x1, 0x64e(%rsp)
leaq 0xa1757(%rip), %rsi     # 0xc4e4d
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x23705
jmp 0x237b7
testb $0x1, 0x67e(%rsp)
je 0x2379c
movq 0x210(%rsp), %rdi
callq 0x2c2e0
movq %rax, 0x1a8(%rsp)
jmp 0x2372f
movq 0x1a8(%rsp), %rax
cmpq $0x0, %rax
je 0x2377a
leaq 0x64d(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0xccc0
movq 0x1a0(%rsp), %rdx
movb $0x1, 0x64c(%rsp)
leaq 0xa1c43(%rip), %rsi     # 0xc53ac
leaq 0x658(%rsp), %rdi
callq 0x2efd0
jmp 0x23778
jmp 0x2379a
leaq 0xa1c35(%rip), %rdx     # 0xc53b6
leaq 0x658(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0x31270
jmp 0x23798
jmp 0x2379a
jmp 0x237b5
leaq 0x658(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0xc320
jmp 0x237b3
jmp 0x237b5
jmp 0x237b7
jmp 0x237b9
jmp 0x237bb
jmp 0x237bd
jmp 0x237bf
testb $0x1, 0x64c(%rsp)
jne 0x237cb
jmp 0x237d8
leaq 0x64d(%rsp), %rdi
callq 0xc780
testb $0x1, 0x64e(%rsp)
jne 0x237e4
jmp 0x237f1
leaq 0x64f(%rsp), %rdi
callq 0xc780
testb $0x1, 0x650(%rsp)
jne 0x237fd
jmp 0x2380a
leaq 0x651(%rsp), %rdi
callq 0xc780
testb $0x1, 0x652(%rsp)
jne 0x23816
jmp 0x23823
leaq 0x653(%rsp), %rdi
callq 0xc780
testb $0x1, 0x654(%rsp)
jne 0x2382f
jmp 0x2383c
leaq 0x655(%rsp), %rdi
callq 0xc780
testb $0x1, 0x656(%rsp)
jne 0x23848
jmp 0x23855
leaq 0x657(%rsp), %rdi
callq 0xc780
testb $0x1, 0x7e7(%rsp)
jne 0x23fa9
callq 0xc090
movl $0x0, (%rax)
leaq 0x6a0(%rsp), %rdi
callq 0xc520
cmpq $0x2, %rax
jbe 0x23c87
callq 0xc8a0
cmpl $0x0, %eax
jne 0x23c7d
leaq 0x5a7(%rsp), %rdi
movq %rdi, 0x198(%rsp)
callq 0xccc0
movq 0x198(%rsp), %rdx
leaq 0xa0db7(%rip), %rsi     # 0xc466e
leaq 0x5a8(%rsp), %rdi
callq 0x2efd0
jmp 0x238c6
leaq 0x580(%rsp), %rdi
movl $0x263, %esi            # imm = 0x263
callq 0x32ce0
jmp 0x238da
leaq 0x5c8(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
leaq 0x580(%rsp), %rdx
callq 0x315c0
jmp 0x238f9
leaq 0xa0d84(%rip), %rdx     # 0xc4684
leaq 0x5e8(%rsp), %rdi
leaq 0x5c8(%rsp), %rsi
callq 0x31430
jmp 0x23917
leaq 0x53f(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0xccc0
movq 0x190(%rsp), %rdx
leaq 0xa1a23(%rip), %rsi     # 0xc535e
leaq 0x540(%rsp), %rdi
callq 0x2efd0
jmp 0x2394a
leaq 0xa2383(%rip), %rdx     # 0xc5cd4
leaq 0x560(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x31430
jmp 0x23968
leaq 0x608(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
leaq 0x560(%rsp), %rdx
callq 0x315c0
jmp 0x23987
leaq 0xa1a2f(%rip), %rdx     # 0xc53bd
leaq 0x628(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0x31430
jmp 0x239a5
leaq 0x628(%rsp), %rdi
callq 0x3add0
jmp 0x239b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x67f(%rsp), %rdi
callq 0xc780
jmp 0x24b80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24b73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23b05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23aea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23acf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23ab4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23a99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
testb $0x1, 0x64c(%rsp)
jne 0x23a8a
jmp 0x23a97
leaq 0x64d(%rsp), %rdi
callq 0xc780
jmp 0x23a99
testb $0x1, 0x64e(%rsp)
jne 0x23aa5
jmp 0x23ab2
leaq 0x64f(%rsp), %rdi
callq 0xc780
jmp 0x23ab4
testb $0x1, 0x650(%rsp)
jne 0x23ac0
jmp 0x23acd
leaq 0x651(%rsp), %rdi
callq 0xc780
jmp 0x23acf
testb $0x1, 0x652(%rsp)
jne 0x23adb
jmp 0x23ae8
leaq 0x653(%rsp), %rdi
callq 0xc780
jmp 0x23aea
testb $0x1, 0x654(%rsp)
jne 0x23af6
jmp 0x23b03
leaq 0x655(%rsp), %rdi
callq 0xc780
jmp 0x23b05
testb $0x1, 0x656(%rsp)
jne 0x23b11
jmp 0x23b1e
leaq 0x657(%rsp), %rdi
callq 0xc780
jmp 0x24b73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23c03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x628(%rsp), %rdi
callq 0xce58
leaq 0x608(%rsp), %rdi
callq 0xce58
leaq 0x560(%rsp), %rdi
callq 0xce58
leaq 0x540(%rsp), %rdi
callq 0xce58
leaq 0x53f(%rsp), %rdi
callq 0xc780
leaq 0x5e8(%rsp), %rdi
callq 0xce58
leaq 0x5c8(%rsp), %rdi
callq 0xce58
leaq 0x580(%rsp), %rdi
callq 0xce58
leaq 0x5a8(%rsp), %rdi
callq 0xce58
leaq 0x5a7(%rsp), %rdi
callq 0xc780
jmp 0x24b66
movl $0x1, %edi
callq 0xc8b0
leaq 0x658(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0x32e20
testb $0x1, %al
jne 0x23ca5
jmp 0x23f5c
callq 0xc090
movl $0x0, (%rax)
leaq 0x6a0(%rsp), %rdi
callq 0xc520
cmpq $0x2, %rax
je 0x23f5a
callq 0xc8a0
cmpl $0x0, %eax
jne 0x23f50
leaq 0x497(%rsp), %rdi
movq %rdi, 0x188(%rsp)
callq 0xccc0
movq 0x188(%rsp), %rdx
leaq 0xa0975(%rip), %rsi     # 0xc466e
leaq 0x498(%rsp), %rdi
callq 0x2efd0
jmp 0x23d08
leaq 0x470(%rsp), %rdi
movl $0x265, %esi            # imm = 0x265
callq 0x32ce0
jmp 0x23d1c
leaq 0x4b8(%rsp), %rdi
leaq 0x498(%rsp), %rsi
leaq 0x470(%rsp), %rdx
callq 0x315c0
jmp 0x23d3b
leaq 0xa0942(%rip), %rdx     # 0xc4684
leaq 0x4d8(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
callq 0x31430
jmp 0x23d59
leaq 0x42f(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0xccc0
movq 0x180(%rsp), %rdx
leaq 0xa15e1(%rip), %rsi     # 0xc535e
leaq 0x430(%rsp), %rdi
callq 0x2efd0
jmp 0x23d8c
leaq 0xa1f41(%rip), %rdx     # 0xc5cd4
leaq 0x450(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x31430
jmp 0x23daa
leaq 0x4f8(%rsp), %rdi
leaq 0x4d8(%rsp), %rsi
leaq 0x450(%rsp), %rdx
callq 0x315c0
jmp 0x23dc9
leaq 0xa0c30(%rip), %rdx     # 0xc4a00
leaq 0x518(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
callq 0x31430
jmp 0x23de7
leaq 0x518(%rsp), %rdi
callq 0x3add0
jmp 0x23df6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23f3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23f31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23f24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23efd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23ef0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23ee3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x23ed6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x518(%rsp), %rdi
callq 0xce58
leaq 0x4f8(%rsp), %rdi
callq 0xce58
leaq 0x450(%rsp), %rdi
callq 0xce58
leaq 0x430(%rsp), %rdi
callq 0xce58
leaq 0x42f(%rsp), %rdi
callq 0xc780
leaq 0x4d8(%rsp), %rdi
callq 0xce58
leaq 0x4b8(%rsp), %rdi
callq 0xce58
leaq 0x470(%rsp), %rdi
callq 0xce58
leaq 0x498(%rsp), %rdi
callq 0xce58
leaq 0x497(%rsp), %rdi
callq 0xc780
jmp 0x24b66
movl $0x1, %edi
callq 0xc8b0
jmp 0x23fa7
leaq 0x6a0(%rsp), %rdi
callq 0xc520
cmpq $0x2, %rax
jne 0x23fa5
leaq 0x6a0(%rsp), %rdi
movl $0x1, %esi
movq $-0x1, %rdx
callq 0xc150
jmp 0x23f8a
jmp 0x23fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24b66
jmp 0x23fa7
jmp 0x23fa9
movq 0x210(%rsp), %rax
movq (%rax), %rsi
addq $0x58, %rsi
leaq 0x408(%rsp), %rdi
callq 0xc320
jmp 0x23fc7
movq 0x210(%rsp), %rax
movq (%rax), %rcx
movq 0x30(%rcx), %rcx
incq %rcx
movq %rcx, 0x400(%rsp)
movq 0x8(%rax), %rcx
movq 0x38(%rcx), %rcx
movq %rcx, 0x3f8(%rsp)
movq (%rax), %rax
movb 0x98(%rax), %al
notb %al
andb $0x1, %al
addb %al, %al
addb $0x2b, %al
movb %al, 0x3f7(%rsp)
leaq 0xd9be8(%rip), %rsi     # 0xfdbf8
leaq 0x3d0(%rsp), %rdi
leaq 0x6a0(%rsp), %rdx
callq 0x37c90
jmp 0x24027
movq 0x210(%rsp), %rdi
callq 0x25f10
movsd %xmm0, 0x178(%rsp)
jmp 0x2403f
movsd 0x178(%rsp), %xmm0
movsd 0x9ffc8(%rip), %xmm1    # 0xc4018
mulsd %xmm1, %xmm0
movsd %xmm0, 0x3c8(%rsp)
leaq 0xd9b44(%rip), %rdi     # 0xfdba8
callq 0xcbd0
testb $0x1, %al
jne 0x240b7
movq 0x7e8(%rsp), %rdi
leaq 0xd9b2c(%rip), %rsi     # 0xfdba8
callq 0x36910
jmp 0x24083
jmp 0x240b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24b59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24b4c
testb $0x1, 0xd9b5a(%rip)     # 0xfdc18
je 0x247e5
movq 0x210(%rsp), %rax
movq (%rax), %rdi
addq $0xe0, %rdi
movq 0x8(%rax), %rsi
addq $0xe0, %rsi
callq 0x32e20
testb $0x1, %al
jne 0x240ec
jmp 0x24116
movq 0x210(%rsp), %rax
movq (%rax), %rdx
addq $0xe0, %rdx
leaq 0xd9af3(%rip), %rsi     # 0xfdbf8
leaq 0x3a8(%rsp), %rdi
callq 0x37c90
jmp 0x24114
jmp 0x2412f
leaq 0x3a8(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0xc320
jmp 0x2412d
jmp 0x2412f
leaq 0x388(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0xc320
jmp 0x24146
leaq 0x388(%rsp), %rdi
callq 0x3de60
jmp 0x24155
movq 0x210(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rax), %rcx
movq 0x38(%rcx), %rcx
movq 0x30(%rdx), %rdx
subq %rdx, %rcx
movq %rcx, 0x380(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rdx
movq (%rcx), %rcx
movq (%rdx), %rdx
addq %rdx, %rcx
movq %rcx, 0x378(%rsp)
movq (%rax), %rsi
addq $0xa0, %rsi
leaq 0xa1233(%rip), %rdx     # 0xc53d3
leaq 0x338(%rsp), %rdi
callq 0x31270
jmp 0x241af
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rdx
addq $0xa0, %rdx
leaq 0x358(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x31480
jmp 0x241d9
leaq 0x338(%rsp), %rdi
callq 0xce58
movq 0x210(%rsp), %rax
movq (%rax), %rsi
leaq 0x2d8(%rsp), %rdi
callq 0x28890
jmp 0x24200
leaq 0xa11ce(%rip), %rdx     # 0xc53d5
leaq 0x2f8(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x31430
jmp 0x2421e
movq 0x210(%rsp), %rax
movq 0x8(%rax), %rsi
leaq 0x2b8(%rsp), %rdi
callq 0x28890
jmp 0x24239
leaq 0x318(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
leaq 0x2b8(%rsp), %rdx
callq 0x315c0
jmp 0x24258
leaq 0x2b8(%rsp), %rdi
callq 0xce58
leaq 0x2f8(%rsp), %rdi
callq 0xce58
leaq 0x2d8(%rsp), %rdi
callq 0xce58
movq 0x7e8(%rsp), %rdi
leaq 0xd72c2(%rip), %rsi     # 0xfb550
callq 0x31d10
movq %rax, 0x170(%rsp)
jmp 0x2429d
movq 0x170(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x36910
movq %rax, 0x168(%rsp)
jmp 0x242bc
movq 0x168(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x36ab0
movq %rax, 0x160(%rsp)
jmp 0x242db
movq 0x160(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0x36ab0
movq %rax, 0x158(%rsp)
jmp 0x242fa
movq 0x158(%rsp), %rdi
leaq 0x3f7(%rsp), %rsi
callq 0x36c50
movq %rax, 0x150(%rsp)
jmp 0x24319
leaq 0xa0b35(%rip), %rdx     # 0xc4e55
leaq 0x298(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0x31270
jmp 0x24337
movq 0x150(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0x36910
movq %rax, 0x148(%rsp)
jmp 0x24356
leaq 0x278(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
leaq 0x658(%rsp), %rdx
callq 0x28a10
jmp 0x24375
movq 0x148(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x36910
movq %rax, 0x140(%rsp)
jmp 0x24394
movq 0x140(%rsp), %rdi
leaq 0xa0aba(%rip), %rsi     # 0xc4e5d
callq 0x31b70
movq %rax, 0x138(%rsp)
jmp 0x243b2
movq 0x138(%rsp), %rdi
leaq 0xa0aa1(%rip), %rsi     # 0xc4e62
callq 0x36df0
movq %rax, 0x130(%rsp)
jmp 0x243d0
movq 0x130(%rsp), %rdi
leaq 0xa0a8d(%rip), %rsi     # 0xc4e6c
callq 0x32050
movq %rax, 0x128(%rsp)
jmp 0x243ee
xorl %eax, %eax
movl %eax, %edx
leaq 0x258(%rsp), %rdi
leaq 0x388(%rsp), %rsi
movl $0x4, %ecx
callq 0xc720
jmp 0x2440e
movq 0x128(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0x36910
movq %rax, 0x120(%rsp)
jmp 0x2442d
movq 0x120(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0x36910
movq %rax, 0x118(%rsp)
jmp 0x2444c
movq 0x118(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0x36910
movq %rax, 0x110(%rsp)
jmp 0x2446b
movq 0x110(%rsp), %rdi
leaq 0x380(%rsp), %rsi
callq 0x36ab0
movq %rax, 0x108(%rsp)
jmp 0x2448a
movq 0x108(%rsp), %rdi
leaq 0xd70b7(%rip), %rsi     # 0xfb550
callq 0x31d10
movq %rax, 0x100(%rsp)
jmp 0x244a8
movq 0x100(%rsp), %rdi
leaq 0xd7099(%rip), %rsi     # 0xfb550
callq 0x31d10
movq %rax, 0xf8(%rsp)
jmp 0x244c6
movq 0xf8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
callq 0x36f90
movq %rax, 0xf0(%rsp)
jmp 0x244e5
movq 0xf0(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x36ab0
movq %rax, 0xe8(%rsp)
jmp 0x24504
movq 0xe8(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x36910
movq %rax, 0xe0(%rsp)
jmp 0x24523
leaq 0xa094b(%rip), %rsi     # 0xc4e75
leaq 0x238(%rsp), %rdi
leaq 0x3a8(%rsp), %rdx
callq 0x331d0
jmp 0x24541
movq 0xe0(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x36910
movq %rax, 0xd8(%rsp)
jmp 0x24560
movq 0xd8(%rsp), %rdi
leaq 0xd6fe1(%rip), %rsi     # 0xfb550
callq 0x31d10
movq %rax, 0xd0(%rsp)
jmp 0x2457e
movq 0xd0(%rsp), %rdi
leaq 0xd6fc3(%rip), %rsi     # 0xfb550
callq 0x31d10
jmp 0x24594
leaq 0x238(%rsp), %rdi
callq 0xce58
leaq 0x258(%rsp), %rdi
callq 0xce58
leaq 0x278(%rsp), %rdi
callq 0xce58
leaq 0x298(%rsp), %rdi
callq 0xce58
testb $0x1, 0xd964a(%rip)     # 0xfdc19
je 0x24773
movq 0x7e8(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x36910
jmp 0x245ec
jmp 0x24773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x247d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x247c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x338(%rsp), %rdi
callq 0xce58
jmp 0x247c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x247b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x246bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x246af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xce58
leaq 0x2f8(%rsp), %rdi
callq 0xce58
leaq 0x2d8(%rsp), %rdi
callq 0xce58
jmp 0x247b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x247ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24764
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x24757
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
jmp 0x2474a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x730(%rsp)
movl %eax, 0x72c(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xce58
leaq 0x258(%rsp), %rdi
callq 0xce58
leaq 0x278(%rsp), %rdi
callq 0xce58
leaq 0x298(%rsp), %rdi
callq 0xce58
jmp 0x247ac
leaq 0x318(%rsp), %rdi
callq 0xce58
leaq 0x358(%rsp), %rdi
callq 0xce58
leaq 0x388(%rsp), %rdi
callq 0xce58
leaq 0x3a8(%rsp), %rdi
callq 0xce58
jmp 0x24afa
leaq 0x318(%rsp), %rdi
callq 0xce58
leaq 0x358(%rsp), %rdi
callq 0xce58
leaq 0x388(%rsp), %rdi
callq 0xce58
leaq 0x3a8(%rsp), %rdi
callq 0xce58
jmp 0x24b4c
movq 0x7e8(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x36910
movq %rax, 0xc8(%rsp)
jmp 0x24804
movq 0xc8(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0x36910
movq %rax, 0xc0(%rsp)
jmp 0x24823
movq 0xc0(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0x36910
movq %rax, 0xb8(%rsp)
jmp 0x24842
movq 0xb8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
callq 0x36f90
movq %rax, 0xb0(%rsp)
jmp 0x24861
movq 0xb0(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0x36ab0
movq %rax, 0xa8(%rsp)
jmp 0x24880
movq 0xa8(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0x36ab0
movq %rax, 0xa0(%rsp)
jmp 0x2489f
movq 0xa0(%rsp), %rdi
leaq 0x3f7(%rsp), %rsi
callq 0x36c50
movq %rax, 0x98(%rsp)
jmp 0x248be
movq 0x210(%rsp), %rdi
callq 0x2c5b0
movq %rax, 0x90(%rsp)
jmp 0x248d5
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
addq $0xa0, %rsi
callq 0x36910
movq %rax, 0x88(%rsp)
jmp 0x248fb
movq 0x210(%rsp), %rdi
callq 0x2c5b0
movq %rax, 0x80(%rsp)
jmp 0x24912
movq 0x88(%rsp), %rdi
movq 0x80(%rsp), %rsi
addq $0x148, %rsi            # imm = 0x148
callq 0x36910
movq %rax, 0x78(%rsp)
jmp 0x24935
movq 0x210(%rsp), %rdi
callq 0x2c5b0
movq %rax, 0x70(%rsp)
jmp 0x24949
movq 0x70(%rsp), %rdi
callq 0x26130
movsd %xmm0, 0x68(%rsp)
jmp 0x2495b
movq 0x78(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x9f6aa(%rip), %xmm1    # 0xc4018
mulsd %xmm1, %xmm0
movsd %xmm0, 0x230(%rsp)
leaq 0x230(%rsp), %rsi
callq 0x36f90
movq %rax, 0x60(%rsp)
jmp 0x2498f
movq 0x210(%rsp), %rdi
callq 0x2c5b0
movq %rax, 0x58(%rsp)
jmp 0x249a3
movq 0x58(%rsp), %rdi
callq 0x27070
movsd %xmm0, 0x50(%rsp)
jmp 0x249b5
movq 0x60(%rsp), %rdi
movsd 0x50(%rsp), %xmm0
movsd 0x9f650(%rip), %xmm1    # 0xc4018
mulsd %xmm1, %xmm0
movsd %xmm0, 0x228(%rsp)
leaq 0x228(%rsp), %rsi
callq 0x36f90
movq %rax, 0x48(%rsp)
jmp 0x249e9
movq 0x210(%rsp), %rdi
callq 0x2c5f0
movq %rax, 0x40(%rsp)
jmp 0x249fd
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
addq $0xa0, %rsi
callq 0x36910
movq %rax, 0x38(%rsp)
jmp 0x24a1a
movq 0x210(%rsp), %rdi
callq 0x2c5f0
movq %rax, 0x30(%rsp)
jmp 0x24a2e
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
addq $0x148, %rsi            # imm = 0x148
callq 0x36910
movq %rax, 0x28(%rsp)
jmp 0x24a4b
movq 0x210(%rsp), %rdi
callq 0x2c5f0
movq %rax, 0x20(%rsp)
jmp 0x24a5f
movq 0x20(%rsp), %rdi
callq 0x26130
movsd %xmm0, 0x18(%rsp)
jmp 0x24a71
movq 0x28(%rsp), %rdi
movsd 0x18(%rsp), %xmm0
movsd 0x9f594(%rip), %xmm1    # 0xc4018
mulsd %xmm1, %xmm0
movsd %xmm0, 0x220(%rsp)
leaq 0x220(%rsp), %rsi
callq 0x36f90
movq %rax, 0x10(%rsp)
jmp 0x24aa5
movq 0x210(%rsp), %rdi
callq 0x2c5f0
movq %rax, 0x8(%rsp)
jmp 0x24ab9
movq 0x8(%rsp), %rdi
callq 0x27070
movsd %xmm0, (%rsp)
jmp 0x24aca
movq 0x10(%rsp), %rdi
movsd (%rsp), %xmm0
movsd 0x9f53c(%rip), %xmm1    # 0xc4018
mulsd %xmm1, %xmm0
movsd %xmm0, 0x218(%rsp)
leaq 0x218(%rsp), %rsi
callq 0x36f90
jmp 0x24af8
jmp 0x24afa
movq 0x7e8(%rsp), %rdi
callq 0x32a10
jmp 0x24b09
leaq 0x3d0(%rsp), %rdi
callq 0xce58
leaq 0x408(%rsp), %rdi
callq 0xce58
leaq 0x658(%rsp), %rdi
callq 0xce58
leaq 0x680(%rsp), %rdi
callq 0xce58
leaq 0x6a0(%rsp), %rdi
callq 0xce58
jmp 0x24bb3
leaq 0x3d0(%rsp), %rdi
callq 0xce58
leaq 0x408(%rsp), %rdi
callq 0xce58
leaq 0x658(%rsp), %rdi
callq 0xce58
leaq 0x680(%rsp), %rdi
callq 0xce58
leaq 0x6a0(%rsp), %rdi
callq 0xce58
jmp 0x24bbb
movq 0x210(%rsp), %rax
movq (%rax), %rdi
movq 0x7e8(%rsp), %rsi
movb 0x7e7(%rsp), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x1d3b0
addq $0x7f8, %rsp            # imm = 0x7F8
retq
movq 0x730(%rsp), %rdi
callq 0xccb0
nopl (%rax,%rax)