// File: /workspace/github_cpp_makefile_star2_O1/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 0x115ac
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 0x6486
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 0x6486
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 0x6486
leaq 0x160(%rsp), %rdx
leaq 0x140(%rsp), %rcx
leaq 0x120(%rsp), %r8
movq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x153a4
movq 0x120(%rsp), %rdi
cmpq %r13, %rdi
je 0x10526
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x10543
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x160(%rsp), %rdi
cmpq %r12, %rdi
je 0x10560
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x42e0
movl $0x0, 0xc(%rsp)
leaq 0x20(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2bfbe(%rip), %rsi     # 0x3c537
leaq 0x2bfba(%rip), %rdx     # 0x3c53a
leaq 0x10(%rsp), %rdi
callq 0x6516
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2c2c3(%rip), %rsi     # 0x3c85d
leaq 0x2c2bf(%rip), %rdx     # 0x3c860
leaq 0x30(%rsp), %rdi
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x105d4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x105eb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2bf41(%rip), %rsi     # 0x3c53b
leaq 0x2bf3d(%rip), %rdx     # 0x3c53e
callq 0x6516
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2c248(%rip), %rsi     # 0x3c85d
leaq 0x2c244(%rip), %rdx     # 0x3c860
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x1064a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10661
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2becf(%rip), %rsi     # 0x3c53f
leaq 0x2becb(%rip), %rdx     # 0x3c542
callq 0x6516
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2c1d2(%rip), %rsi     # 0x3c85d
leaq 0x2c1ce(%rip), %rdx     # 0x3c860
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x106c0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x106d7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2bdf3(%rip), %rsi     # 0x3c4d9
leaq 0x2bdef(%rip), %rdx     # 0x3c4dc
callq 0x6516
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2c15c(%rip), %rsi     # 0x3c85d
leaq 0x2c158(%rip), %rdx     # 0x3c860
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x10736
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x1074d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2bd85(%rip), %rsi     # 0x3c4e1
leaq 0x2bd81(%rip), %rdx     # 0x3c4e4
callq 0x6516
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2c0e6(%rip), %rsi     # 0x3c85d
leaq 0x2c0e2(%rip), %rdx     # 0x3c860
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x107ac
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x107c3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x10(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2bd0b(%rip), %rsi     # 0x3c4dd
leaq 0x2bd07(%rip), %rdx     # 0x3c4e0
callq 0x6516
leaq 0x30(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2c070(%rip), %rsi     # 0x3c85d
leaq 0x2c06c(%rip), %rdx     # 0x3c860
callq 0x6516
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x24c12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x10822
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movl 0x680(%rsp), %ebp
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10840
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 0x2585c
cmpl %eax, 0xc0(%rsp)
jae 0x114c4
movl $0x0, 0xa4(%rsp)
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2f7cc
leaq 0x80(%rsp), %rdi
movq %rbx, %rsi
callq 0x4370
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x108cf
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 0x2585c
cmpl %eax, %r13d
jae 0x10a41
movq %r14, %rdi
movq %r15, %rsi
callq 0x24bf4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2f7cc
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x4370
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10933
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq %r14, %rdi
movq %r15, %rsi
callq 0x24bf4
movq %rax, %rdi
callq 0x2f79e
leaq 0x338(%rsp), %rdi
movl %eax, %esi
callq 0x4500
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14abe
movq %rax, %rbp
movq %r14, %rdi
movq %r15, %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14abe
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x3a360
movq %rbx, %rdi
callq 0x3a598
movsd 0x118(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0x109f4
ucomisd 0x2baa9(%rip), %xmm0    # 0x3c470
jne 0x109cb
jnp 0x109f4
movsd 0x110(%rsp), %xmm1
callq 0x4530
movsd %xmm0, 0x10(%rsp)
movq 0x50(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f4f2
movq %r12, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x2bab3(%rip), %rdx     # 0x3c4b6
movq %rdx, %rsi
callq 0x6516
leaq 0x340(%rsp), %rdi
movq %rbx, %rsi
callq 0x4430
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10a32
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
incl 0xa4(%rsp)
incl %r13d
jmp 0x108e5
cmpl $0x0, 0xc(%rsp)
sete %al
andb 0xc8(%rsp), %al
cmpb $0x0, 0xcc(%rsp)
je 0x10cda
testb %al, %al
je 0x10aac
movl $0x3b, %edx
movq 0x3e055a(%rip), %rdi    # 0x3f0fc8
leaq 0x2bb02(%rip), %rsi     # 0x3c577
callq 0x4340
movq 0x3e0547(%rip), %rcx    # 0x3f0fc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x3e0529(%rip), %rdi    # 0x3f0fc8
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f958
movsd %xmm0, 0xa8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f5be
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 0x110bb
movq 0x3e04b7(%rip), %rdi    # 0x3f0fc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2cb70(%rip), %rsi     # 0x3d6a0
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 0x2cb42(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14a72
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2cafa(%rip), %rsi     # 0x3d6a0
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2cad5(%rip), %rsi     # 0x3d6a0
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 0x2caa6(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f958
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2ca75(%rip), %rsi     # 0x3d6a0
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 0x6486
movq %r13, %rdi
leaq 0x2b5cf(%rip), %rsi     # 0x3c233
callq 0x45a0
leaq 0x60(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4480
movq 0x30(%rsp), %rcx
movl $0xf, %esi
leaq 0x40(%rsp), %rax
cmpq %rax, %rcx
je 0x10c94
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %r8
movq 0x68(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x10cc6
movl $0xf, %esi
leaq 0x70(%rsp), %rdi
cmpq %rdi, 0x60(%rsp)
je 0x10cbd
movq 0x70(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x1134c
movq 0x60(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x4100
jmp 0x1135a
testb %al, %al
je 0x10d84
movl $0x20, %edx
movq 0x3e02da(%rip), %rdi    # 0x3f0fc8
leaq 0x2b84e(%rip), %rsi     # 0x3c543
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
callq 0x1fb3a
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x3e02b0(%rip), %rdi    # 0x3f0fc8
callq 0x4340
movl $0xc, %edx
movq %rax, %rdi
leaq 0x2b838(%rip), %rsi     # 0x3c564
callq 0x4340
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x10d48
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f8de
movq 0x3e026f(%rip), %rcx    # 0x3f0fc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movsbl %al, %esi
movq 0x3e0251(%rip), %rdi    # 0x3f0fc8
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq 0x678(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x10f86
movq 0x3e022a(%rip), %rdi    # 0x3f0fc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c8e3(%rip), %rsi     # 0x3d6a0
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 0x2c8b5(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14a72
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c86d(%rip), %rsi     # 0x3d6a0
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c848(%rip), %rsi     # 0x3d6a0
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 0x2c819(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x1f992
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c7db(%rip), %rsi     # 0x3d6a0
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 0x6486
movq %r13, %rdi
leaq 0x2b335(%rip), %rsi     # 0x3c233
callq 0x45a0
leaq 0xd0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4480
movq 0x60(%rsp), %rcx
movl $0xf, %esi
leaq 0x70(%rsp), %rax
cmpq %rax, %rcx
je 0x10f31
movq 0x70(%rsp), %rsi
movq 0x68(%rsp), %r8
movq 0xd8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x10f6f
movl $0xf, %esi
leaq 0xe0(%rsp), %rdi
cmpq %rdi, 0xd0(%rsp)
je 0x10f66
movq 0xe0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x1120e
movq 0xd0(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x4100
jmp 0x1121f
movq 0x3e003b(%rip), %rdi    # 0x3f0fc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c6f4(%rip), %rsi     # 0x3d6a0
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 0x2c6c6(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14a72
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c67e(%rip), %rsi     # 0x3d6a0
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c659(%rip), %rsi     # 0x3d6a0
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 0x2c62a(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %rbx, %rdi
movq 0x50(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x1f992
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbp, %rdi
callq 0x4340
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2b4c0(%rip), %rsi     # 0x3c571
callq 0x4340
jmp 0x112f1
movq 0x3dff06(%rip), %rdi    # 0x3f0fc8
movq 0xb8(%rsp), %rsi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c5bf(%rip), %rsi     # 0x3d6a0
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 0x2c591(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq %r14, %rdi
leaq 0xc(%rsp), %rsi
callq 0x24bf4
movq %rax, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x2f7ae
movq %rax, %rdi
callq 0x14a72
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbp, %rdi
callq 0x4340
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c549(%rip), %rsi     # 0x3d6a0
callq 0x4340
movl 0xc(%rsp), %esi
incl %esi
movq %rbp, %rdi
callq 0x41e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c524(%rip), %rsi     # 0x3d6a0
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 0x2c4f5(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x1f958
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2b395(%rip), %rsi     # 0x3c571
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 0x11334
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 0x11244
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1124c
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 0x1fd36
movq %rbp, %rdi
callq 0x44a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c411(%rip), %rsi     # 0x3d6a0
callq 0x4340
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x112b0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x112d5
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x112f1
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x11308
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f866
movq 0x3dfcaf(%rip), %rcx    # 0x3f0fc8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x42a0
movq 0x3dfc94(%rip), %rbp    # 0x3f0fc8
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
jmp 0x11457
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 0x1137a
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x11384
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 0x1fd36
movq %rbp, %rdi
callq 0x44a0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2c2d8(%rip), %rsi     # 0x3d6a0
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 0x1141f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1143b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11457
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
callq 0x1f94e
movq 0x50(%rsp), %rdi
callq 0x15b64
movq %r12, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x2b03c(%rip), %rdx     # 0x3c4b6
movq %rdx, %rsi
callq 0x6516
leaq 0x1b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x4430
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x114a9
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
incl 0xc(%rsp)
movq 0xc0(%rsp), %rax
incl %eax
movq %rax, 0xc0(%rsp)
jmp 0x10870
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x114e9
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 0x1151e
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x11543
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3dfa5e(%rip), %rbx    # 0x3f0fa8
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 0x2ad76(%rip), %rdi     # 0x3c329
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x4440
jmp 0x115fa
jmp 0x117af
jmp 0x117cf
jmp 0x115fa
jmp 0x117af
jmp 0x117cf
jmp 0x115fa
jmp 0x117af
jmp 0x117cf
jmp 0x115fa
jmp 0x117af
jmp 0x117cf
jmp 0x115fa
jmp 0x117af
jmp 0x117cf
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x117b2
movq 0x40(%rsp), %rsi
jmp 0x1174f
jmp 0x117af
jmp 0x117cf
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r13, %rdi
je 0x11644
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11644
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x11666
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11666
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r12, %rdi
je 0x11688
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x11688
movq %rax, %rbx
movl $0xd8, %esi
movq 0x50(%rsp), %rdi
jmp 0x117c4
jmp 0x117cf
jmp 0x117cf
movq %rax, %rbx
jmp 0x11862
movq %rax, %rbx
jmp 0x11883
jmp 0x117cf
jmp 0x117cf
jmp 0x117cf
movq %rax, %rbx
jmp 0x11716
jmp 0x117af
jmp 0x116d3
jmp 0x116d8
jmp 0x117cf
movq %rax, %rbx
jmp 0x1173b
movq %rax, %rbx
jmp 0x11795
movq %rax, %rbx
jmp 0x11779
jmp 0x117af
jmp 0x117af
jmp 0x117af
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11716
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x1173b
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x117b2
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x117b2
jmp 0x117cf
jmp 0x117af
jmp 0x117cf
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x11779
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x11795
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x117d2
movq 0x40(%rsp), %rsi
jmp 0x117c1
jmp 0x117cf
jmp 0x117cf
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r12, %rdi
je 0x117d2
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x117d2
jmp 0x117cf
jmp 0x117cf
movq %rax, %rbx
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x117f7
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x1181c
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x11841
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3df760(%rip), %rsi    # 0x3f0fa8
leaq 0x328(%rsp), %rdi
callq 0x4240
leaq 0x3a8(%rsp), %rdi
callq 0x4110
movq 0x3df73f(%rip), %rsi    # 0x3f0fa8
leaq 0x1a0(%rsp), %rdi
callq 0x4240
leaq 0x220(%rsp), %rdi
callq 0x4110
movq 0x3df71e(%rip), %rsi    # 0x3f0fa8
leaq 0x4b0(%rsp), %rdi
callq 0x4240
leaq 0x530(%rsp), %rdi
callq 0x4110
movq %rbx, %rdi
callq 0x4550