// File: /workspace/github_cpp_makefile_star2_O3/atfrank[P]PCASA/lib/Analyze.cpp
// Function: AnalyzeCasa::runAnalysisCasa(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, double, int)
void AnalyzeCasa::runAnalysisCasa(unsigned int frame, std::string identification, bool header, bool predict, std::string fparmfile, std::string freffile, std::string fsasa, const double cutoff, const int beta){
  Molecule *mol;
  CASA *casa;
  std::stringstream fout;
  //double sasaPred;
  unsigned int natomi,natomj;
  std::stringstream residi, residj;
  unsigned int atm;
  std::string resnamei,resnamej;
  std::string key;
  double dist;
  double predSASA;
  mol = NULL;
  casa=NULL;
  mol = this->getMol(0);

  atm = 0;
  casa = new CASA(mol,fparmfile, freffile, fsasa);
  natomi=0;
  predSASA = 0.0;

  /* rename HID, HIE => HIS */
  mol->renameRes("HID","HIS");
  mol->renameRes("HIE","HIS");
  mol->renameRes("HIP","HIS");
  mol->renameRes("HSD","HIS");
  mol->renameRes("HSP","HIS");
  mol->renameRes("HSE","HIS");
  
  for (unsigned int i=0; i< mol->getNAtomSelected(); i++){
    natomj=0;
    resnamei = mol->getResidue(natomi)->getResName();
    residi << (natomi+1);
    for (unsigned int j=0; j< mol->getNAtomSelected(); j++){
      resnamej = mol->getResidue(natomj)->getResName();
      residj << mol->getResidue(natomj)->getResId();
      //get distance between atoms
      dist = Analyze::distance(mol->getResidue(natomi)->getAtom(atm)->getCoor(), mol->getResidue(natomj)->getAtom(atm)->getCoor());
      if (dist <= cutoff && dist!=0.0 ){
        casa->accumHist(resnamej,pow(dist,beta));
      }
      residj.str("");
      natomj++;
    }
    if(!predict){
      if(natomi==0 && header==true){
        // print out header information
        std::cout << "frame ID atomname resid resname " << casa->printRefSASAVecHeader() << " targetSASA ";
        casa->printHistHeader();
        std::cout << std::endl;
      }
      if (fsasa.length() > 0){
        std::cout << frame << " " << identification << " " << mol->getResidue(natomi)->getAtom(atm)->getAtmName() << " "<< natomi+1 << " " << resnamei << " " << casa->printRefSASAVec(resnamei) << " " << casa->getTargetSASA(resnamei+":"+residi.str()) << " ";
      } else {
        std::cout << frame << " " << identification << " " << mol->getResidue(natomi)->getAtom(atm)->getAtmName() << " "<< natomi+1 << " " << resnamei << " " << casa->printRefSASAVec(resnamei) << " 0.0 ";
      }
      casa->printHist();
      std::cout << std::endl;
    } else {
      if(natomi==0 && header==true){
        // print out header information
        std::cout << "frame ID atomname resid resname refSASA targetSASA predSASA" << std::endl;
      }
      predSASA = casa->getRefSASA(resnamei) + casa->predictHist(resnamei);
      //predSASA = casa->getRefSASA(resnamei);
      if(predSASA<0){
        predSASA = 0.0;
      }
      if (fsasa.length() > 0){
        std::cout << frame << " " << identification << " " << mol->getResidue(natomi)->getAtom(atm)->getAtmName() << " "<< natomi+1 << " " << resnamei << " " << casa->getRefSASA(resnamei) << " " << casa->getTargetSASA(resnamei+":"+residi.str()) << " " << predSASA << std::endl;
      } else {
        std::cout << frame << " " << identification << " " << mol->getResidue(natomi)->getAtom(atm)->getAtmName() << " "<< natomi+1 << " " << resnamei << " " << casa->getRefSASA(resnamei) << " 0.0 " << predSASA << std::endl;
      }
    }
    casa->clearHist();
    casa->initializeHist();
    residi.str("");
    natomi++;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x638, %rsp            # imm = 0x638
movsd %xmm0, 0x118(%rsp)
movq %r9, %r15
movl %r8d, 0xcc(%rsp)
movl %ecx, 0xc8(%rsp)
movq %rdx, 0xb0(%rsp)
movl %esi, %ebx
movq %rdi, %r14
leaq 0x4b0(%rsp), %rdi
callq 0x4210
leaq 0x1a0(%rsp), %rdi
callq 0x4210
leaq 0x328(%rsp), %rdi
callq 0x4210
leaq 0x90(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x100(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x190(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq 0x20(%r14), %rax
cmpq %rax, 0x28(%r14)
je 0x113ff
movq (%rax), %r14
movl $0x0, 0x5c(%rsp)
movl $0xd8, %edi
callq 0x42d0
movq %rax, 0x50(%rsp)
leaq 0x170(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x160(%rsp), %rdi
callq 0x647c
movq 0x670(%rsp), %rax
leaq 0x150(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0x647c
movq 0x678(%rsp), %rax
leaq 0x130(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0x647c
leaq 0x160(%rsp), %rdx
leaq 0x140(%rsp), %rcx
leaq 0x120(%rsp), %r8
movq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x15240
movq 0x120(%rsp), %rdi
cmpq %r13, %rdi
je 0x10380
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x1039d
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x160(%rsp), %rdi
cmpq %r12, %rdi
je 0x103ba
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x42e0
movl $0x0, 0xc(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2b164(%rip), %rsi     # 0x3b537
leaq 0x2b160(%rip), %rdx     # 0x3b53a
leaq 0x10(%rsp), %rdi
callq 0x6512
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2b469(%rip), %rsi     # 0x3b85d
leaq 0x2b465(%rip), %rdx     # 0x3b860
leaq 0x30(%rsp), %rdi
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x1042e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10445
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2b0e7(%rip), %rsi     # 0x3b53b
leaq 0x2b0e3(%rip), %rdx     # 0x3b53e
callq 0x6512
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2b3ee(%rip), %rsi     # 0x3b85d
leaq 0x2b3ea(%rip), %rdx     # 0x3b860
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x104a4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x104bb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2b075(%rip), %rsi     # 0x3b53f
leaq 0x2b071(%rip), %rdx     # 0x3b542
callq 0x6512
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2b378(%rip), %rsi     # 0x3b85d
leaq 0x2b374(%rip), %rdx     # 0x3b860
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x1051a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10531
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2af99(%rip), %rsi     # 0x3b4d9
leaq 0x2af95(%rip), %rdx     # 0x3b4dc
callq 0x6512
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2b302(%rip), %rsi     # 0x3b85d
leaq 0x2b2fe(%rip), %rdx     # 0x3b860
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x10590
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x105a7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2af2b(%rip), %rsi     # 0x3b4e1
leaq 0x2af27(%rip), %rdx     # 0x3b4e4
callq 0x6512
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2b28c(%rip), %rsi     # 0x3b85d
leaq 0x2b288(%rip), %rdx     # 0x3b860
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x10606
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1061d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2aeb1(%rip), %rsi     # 0x3b4dd
leaq 0x2aead(%rip), %rdx     # 0x3b4e0
callq 0x6512
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2b216(%rip), %rsi     # 0x3b85d
leaq 0x2b212(%rip), %rdx     # 0x3b860
callq 0x6512
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24a0a
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x1067c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movl 0x680(%rsp), %ebp
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1069a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
cvtsi2sd %ebp, %xmm0
movsd %xmm0, 0x110(%rsp)
movl %ebx, %eax
movq %rax, 0xb8(%rsp)
movq $0x0, 0xc0(%rsp)
leaq 0x10(%rsp), %rbx
leaq 0xa4(%rsp), %r15
movq %r14, %rdi
callq 0x2565c
cmpl %eax, 0xc0(%rsp)
jae 0x11317
movl $0x0, 0xa4(%rsp)
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2f50a
leaq 0x80(%rsp), %rdi
movq %rbx, %rsi
callq 0x4370
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10729
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movl 0xc(%rsp), %esi
incl %esi
leaq 0x1b0(%rsp), %rdi
callq 0x41e0
xorl %r13d, %r13d
movq %r14, %rdi
callq 0x2565c
cmpl %eax, %r13d
jae 0x1089b
movq %r14, %rdi
movq %r15, %rsi
callq 0x249ec
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2f50a
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x4370
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1078d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq %r14, %rdi
movq %r15, %rsi
callq 0x249ec
movq %rax, %rdi
callq 0x2f4dc
leaq 0x338(%rsp), %rdi
movl %eax, %esi
callq 0x4500
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x14946
movq %rax, %rbp
movq %r14, %rdi
movq %r15, %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x14946
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x3a0b8
movq %rbx, %rdi
callq 0x3a2f0
movsd 0x118(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0x1084e
ucomisd 0x2ac4f(%rip), %xmm0    # 0x3b470
jne 0x10825
jnp 0x1084e
movsd 0x110(%rsp), %xmm1
callq 0x4530
movsd %xmm0, 0x10(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f38a
movq %r12, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x2ac59(%rip), %rdx     # 0x3b4b6
movq %rdx, %rsi
callq 0x6512
leaq 0x340(%rsp), %rdi
movq %rbx, %rsi
callq 0x4430
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1088c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
incl 0xa4(%rsp)
incl %r13d
jmp 0x1073f
cmpl $0x0, 0xc(%rsp)
sete %al
andb 0xc8(%rsp), %al
cmpb $0x0, 0xcc(%rsp)
je 0x10b32
testb %al, %al
je 0x10906
movl $0x3b, %edx
movq 0x3df700(%rip), %rdi    # 0x3effc8
leaq 0x2aca8(%rip), %rsi     # 0x3b577
callq 0x4340
movq 0x3df6ed(%rip), %rcx    # 0x3effc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x3df6cf(%rip), %rdi    # 0x3effc8
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f7f0
movsd %xmm0, 0xa8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f456
movsd 0xa8(%rsp), %xmm1
addsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
maxsd %xmm1, %xmm0
movsd %xmm0, 0xa8(%rsp)
movq 0x678(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x10f0e
movq 0x3df65d(%rip), %rdi    # 0x3effc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bcf6(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0xb0(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bcc8(%rip), %rsi     # 0x3c680
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x148fa
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bc80(%rip), %rsi     # 0x3c680
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bc5b(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bc2c(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f7f0
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2bbfb(%rip), %rsi     # 0x3c680
callq 0x4340
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x647c
movq %r13, %rdi
leaq 0x2a775(%rip), %rsi     # 0x3b233
callq 0x45a0
leaq 0x60(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4480
movq 0x30(%rsp), %rcx
movl $0xf, %edi
leaq 0x40(%rsp), %rax
cmpq %rax, %rcx
je 0x10aee
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %r8
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x10b23
movl $0xf, %edi
leaq 0x70(%rsp), %r9
cmpq %r9, %rsi
je 0x10b1a
movq 0x70(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x1119f
leaq 0x30(%rsp), %rdi
callq 0x4100
jmp 0x111ad
testb %al, %al
je 0x10bdc
movl $0x20, %edx
movq 0x3df482(%rip), %rdi    # 0x3effc8
leaq 0x2a9f6(%rip), %rsi     # 0x3b543
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
callq 0x1f9d2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x3df458(%rip), %rdi    # 0x3effc8
callq 0x4340
movl $0xc, %edx
movq %rax, %rdi
leaq 0x2a9e0(%rip), %rsi     # 0x3b564
callq 0x4340
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10ba0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f776
movq 0x3df417(%rip), %rcx    # 0x3effc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x3df3f9(%rip), %rdi    # 0x3effc8
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq 0x678(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x10dd9
movq 0x3df3d2(%rip), %rdi    # 0x3effc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2ba6b(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0xb0(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2ba3d(%rip), %rsi     # 0x3c680
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x148fa
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b9f5(%rip), %rsi     # 0x3c680
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b9d0(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b9a1(%rip), %rsi     # 0x3c680
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x1f82a
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b963(%rip), %rsi     # 0x3c680
callq 0x4340
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %r13
movq %r13, %rdi
callq 0x647c
movq %r13, %rdi
leaq 0x2a4dd(%rip), %rsi     # 0x3b233
callq 0x45a0
leaq 0xd0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4480
movq 0x60(%rsp), %rcx
movl $0xf, %edi
leaq 0x70(%rsp), %rax
cmpq %rax, %rcx
je 0x10d89
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %r8
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x10dca
movl $0xf, %edi
leaq 0xe0(%rsp), %r9
cmpq %r9, %rsi
je 0x10dc1
movq 0xe0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x11061
leaq 0x60(%rsp), %rdi
callq 0x4100
jmp 0x11072
movq 0x3df1e8(%rip), %rdi    # 0x3effc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b881(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0xb0(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b853(%rip), %rsi     # 0x3c680
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x148fa
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b80b(%rip), %rsi     # 0x3c680
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b7e6(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b7b7(%rip), %rsi     # 0x3c680
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x1f82a
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2a66d(%rip), %rsi     # 0x3b571
callq 0x4340
jmp 0x11144
movq 0x3df0b3(%rip), %rdi    # 0x3effc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b74c(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0xb0(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b71e(%rip), %rsi     # 0x3c680
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x249ec
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f4ec
movq %rax, %rdi
callq 0x148fa
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b6d6(%rip), %rsi     # 0x3c680
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b6b1(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b682(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f7f0
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2a542(%rip), %rsi     # 0x3b571
callq 0x4340
movq %rbp, %rdi
movsd 0xa8(%rsp), %xmm0
callq 0x44a0
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x42a0
jmp 0x11187
leaq 0xd0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4320
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x11097
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1109f
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1fbce
movq %rbp, %rdi
callq 0x44a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b59e(%rip), %rsi     # 0x3c680
callq 0x4340
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11103
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x11128
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x11144
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1115b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f6fe
movq 0x3dee5c(%rip), %rcx    # 0x3effc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movq 0x3dee41(%rip), %rbp    # 0x3effc8
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
jmp 0x112aa
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4320
movq %r12, 0x10(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x111cd
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x111d7
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x50(%rsp), %rdi
movq %rbx, %rsi
callq 0x1fbce
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b465(%rip), %rsi     # 0x3c680
callq 0x4340
movq %rbp, %rdi
movsd 0xa8(%rsp), %xmm0
callq 0x44a0
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x11272
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1128e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x112aa
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f7e6
movq 0x50(%rsp), %rdi
callq 0x15a00
movq %r12, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x2a1e9(%rip), %rdx     # 0x3b4b6
movq %rdx, %rsi
callq 0x6512
leaq 0x1b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x4430
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x112fc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
incl 0xc(%rsp)
movq 0xc0(%rsp), %rax
incl %eax
movq %rax, 0xc0(%rsp)
jmp 0x106ca
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x1133c
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
leaq 0x4b0(%rsp), %r15
leaq 0x1a0(%rsp), %r12
je 0x11371
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x11396
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3dec0b(%rip), %rbx    # 0x3effa8
leaq 0x328(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x4240
movl $0x80, %r14d
addq %r14, %r13
movq %r13, %rdi
callq 0x4110
movq %r12, %rdi
movq %rbx, %rsi
callq 0x4240
addq %r14, %r12
movq %r12, %rdi
callq 0x4110
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4240
addq %r14, %r15
movq %r15, %rdi
callq 0x4110
addq $0x638, %rsp            # imm = 0x638
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x29f23(%rip), %rdi     # 0x3b329
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x4440
jmp 0x1144d
jmp 0x11602
jmp 0x11622
jmp 0x1144d
jmp 0x11602
jmp 0x11622
jmp 0x1144d
jmp 0x11602
jmp 0x11622
jmp 0x1144d
jmp 0x11602
jmp 0x11622
jmp 0x1144d
jmp 0x11602
jmp 0x11622
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x11605
movq 0x40(%rsp), %rsi
jmp 0x115a2
jmp 0x11602
jmp 0x11622
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r13, %rdi
je 0x11497
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11497
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x114b9
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x114b9
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r12, %rdi
je 0x114db
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x114db
movq %rax, %rbx
movl $0xd8, %esi
movq 0x50(%rsp), %rdi
jmp 0x11617
jmp 0x11622
jmp 0x11622
movq %rax, %rbx
jmp 0x116b5
movq %rax, %rbx
jmp 0x116d6
jmp 0x11622
jmp 0x11622
jmp 0x11622
movq %rax, %rbx
jmp 0x11569
jmp 0x11602
jmp 0x11526
jmp 0x1152b
jmp 0x11622
movq %rax, %rbx
jmp 0x1158e
movq %rax, %rbx
jmp 0x115e8
movq %rax, %rbx
jmp 0x115cc
jmp 0x11602
jmp 0x11602
jmp 0x11602
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11569
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1158e
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x11605
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11605
jmp 0x11622
jmp 0x11602
jmp 0x11622
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x115cc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x115e8
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11625
movq 0x40(%rsp), %rsi
jmp 0x11614
jmp 0x11622
jmp 0x11622
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x11625
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11625
jmp 0x11622
jmp 0x11622
movq %rax, %rbx
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x1164a
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x1166f
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x11694
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3de90d(%rip), %rsi    # 0x3effa8
leaq 0x328(%rsp), %rdi
callq 0x4240
leaq 0x3a8(%rsp), %rdi
callq 0x4110
movq 0x3de8ec(%rip), %rsi    # 0x3effa8
leaq 0x1a0(%rsp), %rdi
callq 0x4240
leaq 0x220(%rsp), %rdi
callq 0x4110
movq 0x3de8cb(%rip), %rsi    # 0x3effa8
leaq 0x4b0(%rsp), %rdi
callq 0x4240
leaq 0x530(%rsp), %rdi
callq 0x4110
movq %rbx, %rdi
callq 0x4550
nop