// File: /workspace/github_cpp_makefile_star2_O1/atfrank[P]PCASA/lib/PDB.cpp
// Function: PDB::processAtomLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Atom*)
Atom* PDB::processAtomLine (std::string line, Atom* lastAtom){
  double x,y,z;
  std::string recname; //Record name: "ATOM  ", "HETATM"
  int  atmnum; //Atom serial number
  std::string chainid;
  int  resid; //Residue sequence number
  double occu; //Occupancy
  double bfac; //B-factor or Temperature factor
  std::string segid; //Segment identifier
  Atom *atmEntry=new Atom;

  //substr: first character is denoted by a value of 0 (not 1)
  if (Misc::isdigit(Misc::trim(line.substr(4,7)))){
    atmEntry->setRecName(line.substr(0,4));
    std::stringstream(line.substr(4,7)) >> atmnum;
    atmEntry->setAtmNum(atmnum);
  }
  else{
    atmEntry->setRecName(line.substr(0,6)); //PDB format
    std::stringstream(line.substr(6,5)) >> atmnum; //PDB format
    atmEntry->setAtmNum(atmnum); //PDB format
  }
  atmEntry->setAtmName(Misc::trim(line.substr(12,4)));
  atmEntry->setAlt(line.substr(16,1));
  //atmEntry->setResName(line.substr(17,3)); //PDB format
  atmEntry->setResName(Misc::trim(line.substr(17,4)));
  chainid=line.substr(21,1);
  if(lastAtom == NULL || lastAtom->getChainId().compare(chainid) != 0){
    //New chain, check if duplicate
    if (chnMap.find(chainid) == chnMap.end()){
      chnMap[chainid]=chnMap.size();
    }
    else{
      //Duplicate, likely HETATM ligand bound to same chain
      //Assign numeric chainid, this is valid PDB format
      //std::ostringstream ossChainId;
      //ossChainId<< chnMap.find(chainid)->second;
      //chainid=ossChainId.str();
      //Set chainid to blank
      chainid=" ";
    }
  }
  atmEntry->setChainId(chainid);
  atmEntry->setRealId(line.substr(21,1)); 
  //std::stringstream(line.substr(22,4)) >> resid; //PDB format
  std::stringstream(line.substr(22,6)) >> resid; //Automagically truncates anything that is not numeric, i.e. iCode
  atmEntry->setResId(resid);
  atmEntry->setICode(line.substr(26,1));
  std::stringstream(line.substr(30,8)) >> x;
  std::stringstream(line.substr(38,8)) >> y;
  std::stringstream(line.substr(46,8)) >> z;
  atmEntry->setCoor(Coor(x,y,z));
  if (line.size() >= 60){
    std::stringstream(line.substr(54,6)) >> occu;
    atmEntry->setOccu(occu);
  }
  if (line.size() >= 66){
    std::stringstream(line.substr(60,6)) >> bfac;
    atmEntry->setBFac(bfac);
  }
  if (line.size() >= 76){
    segid=line.substr(72,4);
    atmEntry->setSegId(segid);
  }
  if (line.size() >= 78){
    if (line.substr(77,1).compare(" ") == 0){
      atmEntry->setElem(atmEntry->getAtmName().substr(0,1));
    }
    else{
      atmEntry->setElem(line.substr(77,1));
    }
  }
  atmEntry->setSel(true);
  std::stringstream ss;
  ss << resid;
  atmEntry->setSummary(chainid+":"+atmEntry->getResName()+ss.str()+Misc::trim(atmEntry->getICode())+"."+Misc::trim(atmEntry->getAtmName()));

  return atmEntry;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3e8, %rsp            # imm = 0x3E8
movq %rdx, 0xb0(%rsp)
movq %rsi, %r14
movq %rdi, %r15
leaq 0x3d8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x60(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x310(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movl $0x238, %edi            # imm = 0x238
callq 0x42d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x13a54
leaq 0x8(%rsp), %rdi
movl $0x4, %edx
movl $0x7, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x3b8(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x12265(%rip), %rsi     # 0x3d6a0
leaq 0x1225f(%rip), %rdx     # 0x3d6a1
leaq 0x3a8(%rsp), %rdi
callq 0x6516
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x3a8(%rsp), %rdx
callq 0x21f22
leaq 0xd8(%rsp), %rdi
callq 0x21d8e
movl %eax, %ebp
leaq 0xe8(%rsp), %r12
movq -0x10(%r12), %rdi
cmpq %r12, %rdi
je 0x2b49a
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3a8(%rsp), %rdi
cmpq %r13, %rdi
je 0x2b4b7
movq 0x3b8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b4d2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
testb %bpl, %bpl
je 0x2b569
leaq 0xd8(%rsp), %rdi
movl $0x4, %ecx
movq %r14, %rsi
xorl %edx, %edx
callq 0x4300
leaq 0x18(%rsp), %rbp
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14ec8
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b524
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x4, %edx
movl $0x7, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x2c(%rsp), %rsi
callq 0x41b0
jmp 0x2b5f2
leaq 0xd8(%rsp), %rdi
movl $0x6, %ecx
movq %r14, %rsi
xorl %edx, %edx
callq 0x4300
leaq 0x18(%rsp), %rbp
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14ec8
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b5b2
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x6, %edx
movl $0x5, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x2c(%rsp), %rsi
callq 0x41b0
movq 0x3c59af(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2b62a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x2c(%rsp), %rsi
movq %rbx, %rdi
callq 0x14ed2
leaq 0x8(%rsp), %rdi
movl $0xc, %edx
movl $0x4, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x398(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1203f(%rip), %rsi     # 0x3d6a0
leaq 0x12039(%rip), %rdx     # 0x3d6a1
leaq 0x388(%rsp), %rdi
callq 0x6516
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x388(%rsp), %rdx
callq 0x21f22
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14ed8
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b6bc
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x388(%rsp), %rdi
cmpq %r13, %rdi
je 0x2b6d9
movq 0x398(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2b6f0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0xd8(%rsp), %rdi
movl $0x10, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f24
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b737
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x11, %edx
movl $0x4, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x378(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x11f3f(%rip), %rsi     # 0x3d6a0
leaq 0x11f39(%rip), %rdx     # 0x3d6a1
leaq 0x368(%rsp), %rdi
callq 0x6516
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0x21f22
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f5a
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b7bc
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x368(%rsp), %rdi
cmpq %r13, %rdi
je 0x2b7d9
movq 0x378(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2b7f0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0xd8(%rsp), %rdi
movl $0x15, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x50(%rsp), %rdi
leaq 0xd8(%rsp), %r13
movq %r13, %rsi
callq 0x4370
movq (%r13), %rdi
cmpq %r12, %rdi
je 0x2b838
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
cmpq $0x0, 0xb0(%rsp)
je 0x2b861
movq 0xb0(%rsp), %rdi
callq 0x14a9e
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0x4050
testl %eax, %eax
je 0x2b8aa
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x2cce8
leaq 0x8(%r15), %rcx
cmpq %rcx, %rax
je 0x2b896
leaq 0x50(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x11e19(%rip), %rcx     # 0x3d6a0
movl $0x1, %r8d
xorl %esi, %esi
callq 0x4470
jmp 0x2b8aa
movq 0x28(%r15), %r13
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x2cbc6
movl %r13d, (%rax)
leaq 0x50(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f90
leaq 0xd8(%rsp), %rdi
movl $0x15, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f9c
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b8fe
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x16, %edx
movl $0x6, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x41b0
movq 0x3c5663(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2b976
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x14fec
leaq 0xd8(%rsp), %rdi
movl $0x1a, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14ff6
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b9ca
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x1e, %edx
movl $0x8, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x41d0
movq 0x3c5594(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2ba45
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x26, %edx
movl $0x8, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x41d0
movq 0x3c5519(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2bac0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x8(%rsp), %rdi
movl $0x2e, %edx
movl $0x8, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0x41d0
movq 0x3c549e(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2bb3b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
movsd 0x340(%rsp), %xmm0
movsd 0x338(%rsp), %xmm1
movsd 0x330(%rsp), %xmm2
leaq 0xd8(%rsp), %rdi
callq 0x3a28c
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1504e
cmpq $0x3c, 0x8(%r14)
jb 0x2bc09
leaq 0x8(%rsp), %rdi
movl $0x36, %edx
movl $0x6, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x41d0
movq 0x3c53e0(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2bbf9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x328(%rsp), %rsi
movq %rbx, %rdi
callq 0x1505a
cmpq $0x42, 0x8(%r14)
jb 0x2bc9f
leaq 0x8(%rsp), %rdi
movl $0x3c, %edx
movl $0x6, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movl $0x18, %edx
callq 0x4490
leaq 0xd8(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0x41d0
movq 0x3c534a(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2bc8f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x320(%rsp), %rsi
movq %rbx, %rdi
callq 0x15068
cmpq $0x4c, 0x8(%r14)
jb 0x2bd00
leaq 0xd8(%rsp), %rdi
movl $0x48, %edx
movl $0x4, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x300(%rsp), %rdi
leaq 0xd8(%rsp), %r15
movq %r15, %rsi
callq 0x4370
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x2bcf0
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x300(%rsp), %rsi
movq %rbx, %rdi
callq 0x15082
cmpq $0x4e, 0x8(%r14)
jb 0x2bdd2
leaq 0xd8(%rsp), %rdi
movl $0x4d, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0x11974(%rip), %rsi     # 0x3d6a0
leaq 0xd8(%rsp), %r15
movq %r15, %rdi
callq 0x40e0
movl %eax, %ebp
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x2bd56
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
testl %ebp, %ebp
je 0x2bd86
leaq 0xd8(%rsp), %rdi
movl $0x4d, %edx
movl $0x1, %ecx
movq %r14, %rsi
callq 0x4300
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x15076
jmp 0x2bdb5
movq %rbx, %rdi
callq 0x14a72
leaq 0xd8(%rsp), %rdi
movl $0x1, %ecx
movq %rax, %rsi
xorl %edx, %edx
callq 0x4300
leaq 0xd8(%rsp), %rsi
movq %rbx, %rdi
callq 0x15076
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2bdd2
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq %rbx, %rdi
movl $0x1, %esi
callq 0x150b0
leaq 0xd8(%rsp), %rdi
callq 0x4210
leaq 0xe8(%rsp), %rdi
movl 0x28(%rsp), %esi
callq 0x4500
leaq 0x2d0(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x6486
leaq 0x10409(%rip), %rsi     # 0x3c233
leaq 0x2c0(%rsp), %rdi
callq 0x45a0
movq %rbx, %rdi
callq 0x14a8e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x4100
leaq 0x80(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2be80
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
jmp 0x2be87
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xf0(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x4480
movq 0x70(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x2a8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r14, %rcx
je 0x2bedc
movq 0x80(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2bf01
leaq 0x2b0(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x2befc
movq 0x2b0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2bf15
movq 0x2a0(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x4100
jmp 0x2bf26
leaq 0x2a0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4320
leaq 0x40(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2bf4a
movq %rsi, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x2bf50
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %rbx, %rdi
callq 0x14ab6
movq %rax, %r14
leaq 0x2f0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x11715(%rip), %rsi     # 0x3d6a0
leaq 0x1170f(%rip), %rdx     # 0x3d6a1
leaq 0x2e0(%rsp), %rdi
callq 0x6516
leaq 0x280(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
movq %r14, %rsi
callq 0x21f22
leaq 0x40(%rsp), %rbp
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %r8
movq 0x288(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %rbp, %rcx
je 0x2bfdf
movq 0x40(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c004
leaq 0x290(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x2bfff
movq 0x290(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c018
movq 0x280(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x4100
jmp 0x2c029
leaq 0x280(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4320
leaq 0xa0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2c056
movq %rsi, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x2c05c
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x117db(%rip), %rsi     # 0x3d85e
leaq 0x90(%rsp), %rdi
callq 0x45a0
leaq 0xc8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2c0c0
movq %rdx, 0xb8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc8(%rsp)
jmp 0x2c0c7
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0xc0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
callq 0x14a72
movq %rax, %r14
leaq 0x358(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1159f(%rip), %rsi     # 0x3d6a0
leaq 0x11599(%rip), %rdx     # 0x3d6a1
leaq 0x348(%rsp), %rdi
callq 0x6516
leaq 0x260(%rsp), %rdi
leaq 0x348(%rsp), %rdx
movq %r14, %rsi
callq 0x21f22
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %r8
movq 0x268(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r15, %rcx
je 0x2c15b
movq 0xc8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c180
leaq 0x270(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x2c17b
movq 0x270(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c197
movq 0x260(%rsp), %rsi
leaq 0xb8(%rsp), %rdi
callq 0x4100
jmp 0x2c1a8
leaq 0x260(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4320
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x2c1cd
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x2c1d3
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x150b8
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2c219
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x270(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c23a
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x348(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c257
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0xb8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2c274
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
leaq 0x80(%rsp), %r14
leaq 0x2f0(%rsp), %r15
je 0x2c2a5
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x290(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c2c6
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x2e0(%rsp), %rdi
cmpq %r15, %rdi
je 0x2c2e3
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x30(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2c2fa
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x2b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c31b
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x70(%rsp), %rdi
cmpq %r14, %rdi
je 0x2c335
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x2c0(%rsp), %rdi
cmpq %r13, %rdi
je 0x2c352
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3c4c4f(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x2c398
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x2c3b4
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3c8(%rsp), %rdi
leaq 0x3d8(%rsp), %rax
cmpq %rax, %rdi
je 0x2c3d9
movq 0x3d8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq %rbx, %rax
addq $0x3e8, %rsp            # imm = 0x3E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2c69e
jmp 0x2c69e
jmp 0x2c7dc
jmp 0x2c7dc
jmp 0x2c7dc
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c7dc
jmp 0x2c69e
jmp 0x2c69e
jmp 0x2c7dc
jmp 0x2c7dc
jmp 0x2c7dc
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2c485
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c485
movq %rax, %r14
leaq 0x270(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c4ab
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c4ab
movq %rax, %r14
movq 0x348(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c4cf
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c4cf
jmp 0x2c4cc
movq %rax, %r14
movq 0xb8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2c4f1
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c4f1
movq %rax, %r14
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c517
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c517
movq %rax, %r14
leaq 0x290(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c53d
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c53d
movq %rax, %r14
movq 0x2e0(%rsp), %rdi
leaq 0x2f0(%rsp), %rax
cmpq %rax, %rdi
je 0x2c569
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c569
jmp 0x2c566
movq %rax, %r14
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c584
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x42e0
leaq 0x2b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c5a5
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x2c79a
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c79a
movq %rax, %r14
jmp 0x2c584
movq %rax, %r14
jmp 0x2c5a5
jmp 0x2c797
jmp 0x2c5e1
movq %rax, %r14
jmp 0x2c7b7
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c61c
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c69e
jmp 0x2c7dc
movq %rax, %r14
movq 0x3c4982(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
jmp 0x2c708
jmp 0x2c705
jmp 0x2c7dc
jmp 0x2c69e
jmp 0x2c7dc
jmp 0x2c7dc
movq %rax, %r14
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c680
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c680
movq %rax, %r14
movq 0x368(%rsp), %rdi
cmpq %r13, %rdi
je 0x2c708
movq 0x378(%rsp), %rsi
jmp 0x2c6fb
jmp 0x2c705
jmp 0x2c7dc
movq %rax, %r14
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c7df
movq 0xe8(%rsp), %rsi
jmp 0x2c720
jmp 0x2c7dc
movq %rax, %r14
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c6e6
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c6e6
movq %rax, %r14
movq 0x388(%rsp), %rdi
cmpq %r13, %rdi
je 0x2c708
movq 0x398(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c708
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2c7df
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c7df
jmp 0x2c7dc
movq %rax, %r14
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c75b
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c75b
movq %rax, %r14
movq 0x3a8(%rsp), %rdi
cmpq %r13, %rdi
je 0x2c77d
movq 0x3b8(%rsp), %rsi
incq %rsi
callq 0x42e0
jmp 0x2c77d
movq %rax, %r14
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x2c712
jmp 0x2c7dc
movq %rax, %r14
movl $0x238, %esi            # imm = 0x238
movq %rbx, %rdi
jmp 0x2c723
movq %rax, %r14
movq 0x2c0(%rsp), %rdi
cmpq %r13, %rdi
je 0x2c7b7
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3c47ea(%rip), %rsi    # 0x3f0fa8
leaq 0xd8(%rsp), %rdi
callq 0x4240
leaq 0x158(%rsp), %rdi
callq 0x4110
jmp 0x2c7df
jmp 0x2c7dc
movq %rax, %r14
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x2c804
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x2c820
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x42e0
movq 0x3c8(%rsp), %rdi
leaq 0x3d8(%rsp), %rax
cmpq %rax, %rdi
je 0x2c845
movq 0x3d8(%rsp), %rsi
incq %rsi
callq 0x42e0
movq %r14, %rdi
callq 0x4550
nop