// File: 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:
subq $0x14d8, %rsp           # imm = 0x14D8
movq %rsi, 0x120(%rsp)
movq %rdi, 0x14d0(%rsp)
movq %rsi, 0x14c8(%rsp)
movq %rdx, 0x14c0(%rsp)
movq 0x14d0(%rsp), %rax
movq %rax, 0x128(%rsp)
leaq 0x1488(%rsp), %rdi
callq 0x5600
leaq 0x1460(%rsp), %rdi
callq 0x5600
leaq 0x1428(%rsp), %rdi
callq 0x5600
movl $0x238, %edi            # imm = 0x238
callq 0x5410
movq %rax, 0x130(%rsp)
jmp 0x55082
movq 0x130(%rsp), %rdi
callq 0x1e7f0
jmp 0x55091
movq 0x120(%rsp), %rsi
movq 0x130(%rsp), %rax
movq %rax, 0x1420(%rsp)
leaq 0x13d0(%rsp), %rdi
movl $0x4, %edx
movl $0x7, %ecx
callq 0x5440
jmp 0x550c2
leaq 0x13af(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x5730
movq 0x118(%rsp), %rdx
leaq 0x274b2(%rip), %rsi     # 0x7c598
leaq 0x13b0(%rsp), %rdi
callq 0x7900
jmp 0x550f5
leaq 0x13f0(%rsp), %rdi
leaq 0x13d0(%rsp), %rsi
leaq 0x13b0(%rsp), %rdx
callq 0x3dee0
jmp 0x55114
leaq 0x13f0(%rsp), %rdi
callq 0x3dcd0
movb %al, 0x117(%rsp)
jmp 0x5512a
leaq 0x13f0(%rsp), %rdi
callq 0x5250
leaq 0x13b0(%rsp), %rdi
callq 0x5250
leaq 0x13af(%rsp), %rdi
callq 0x5480
leaq 0x13d0(%rsp), %rdi
callq 0x5250
movb 0x117(%rsp), %al
testb $0x1, %al
jne 0x5516e
jmp 0x55392
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0x108(%rsp)
xorl %eax, %eax
movl %eax, %edx
leaq 0x1388(%rsp), %rdi
movl $0x4, %ecx
callq 0x5440
jmp 0x5519e
movq 0x108(%rsp), %rdi
leaq 0x1388(%rsp), %rsi
callq 0x1fc40
jmp 0x551b5
leaq 0x1388(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0x11e0(%rsp), %rdi
movl $0x4, %edx
movl $0x7, %ecx
callq 0x5440
jmp 0x551e3
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x104(%rsp)
jmp 0x551fb
movl 0x104(%rsp), %edx
leaq 0x1200(%rsp), %rdi
leaq 0x11e0(%rsp), %rsi
callq 0x5670
jmp 0x55219
leaq 0x1200(%rsp), %rdi
leaq 0x1484(%rsp), %rsi
callq 0x7820
jmp 0x55230
leaq 0x1200(%rsp), %rdi
callq 0x52e0
leaq 0x11e0(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rdi
leaq 0x1484(%rsp), %rsi
callq 0x1fc70
jmp 0x55261
jmp 0x554f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x566c4
movq 0x130(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
movl $0x238, %esi            # imm = 0x238
callq 0x5420
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55304
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x552f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x13f0(%rsp), %rdi
callq 0x5250
leaq 0x13b0(%rsp), %rdi
callq 0x5250
leaq 0x13af(%rsp), %rdi
callq 0x5480
leaq 0x13d0(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x1388(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x1200(%rsp), %rdi
callq 0x52e0
leaq 0x11e0(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0xf8(%rsp)
xorl %eax, %eax
movl %eax, %edx
leaq 0x11c0(%rsp), %rdi
movl $0x6, %ecx
callq 0x5440
jmp 0x553c2
movq 0xf8(%rsp), %rdi
leaq 0x11c0(%rsp), %rsi
callq 0x1fc40
jmp 0x553d9
leaq 0x11c0(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0x1018(%rsp), %rdi
movl $0x6, %edx
movl $0x5, %ecx
callq 0x5440
jmp 0x55407
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0xf4(%rsp)
jmp 0x5541f
movl 0xf4(%rsp), %edx
leaq 0x1038(%rsp), %rdi
leaq 0x1018(%rsp), %rsi
callq 0x5670
jmp 0x5543d
leaq 0x1038(%rsp), %rdi
leaq 0x1484(%rsp), %rsi
callq 0x7820
jmp 0x55454
leaq 0x1038(%rsp), %rdi
callq 0x52e0
leaq 0x1018(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rdi
leaq 0x1484(%rsp), %rsi
callq 0x1fc70
jmp 0x55485
jmp 0x554f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x11c0(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x554e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x1038(%rsp), %rdi
callq 0x52e0
leaq 0x1018(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0xe8(%rsp)
leaq 0xfd8(%rsp), %rdi
movl $0xc, %edx
movl $0x4, %ecx
callq 0x5440
jmp 0x55527
leaq 0xfb7(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x5730
movq 0xe0(%rsp), %rdx
leaq 0x2704d(%rip), %rsi     # 0x7c598
leaq 0xfb8(%rsp), %rdi
callq 0x7900
jmp 0x5555a
leaq 0xff8(%rsp), %rdi
leaq 0xfd8(%rsp), %rsi
leaq 0xfb8(%rsp), %rdx
callq 0x3dee0
jmp 0x55579
movq 0xe8(%rsp), %rdi
leaq 0xff8(%rsp), %rsi
callq 0x1fc90
jmp 0x55590
leaq 0xff8(%rsp), %rdi
callq 0x5250
leaq 0xfb8(%rsp), %rdi
callq 0x5250
leaq 0xfb7(%rsp), %rdi
callq 0x5480
leaq 0xfd8(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0xf90(%rsp), %rdi
movl $0x10, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x555f5
movq 0xd8(%rsp), %rdi
leaq 0xf90(%rsp), %rsi
callq 0x1fd30
jmp 0x5560c
leaq 0xf90(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0xf50(%rsp), %rdi
movl $0x11, %edx
movl $0x4, %ecx
callq 0x5440
jmp 0x5564a
leaq 0xf2f(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x5730
movq 0xc8(%rsp), %rdx
leaq 0x26f2a(%rip), %rsi     # 0x7c598
leaq 0xf30(%rsp), %rdi
callq 0x7900
jmp 0x5567d
leaq 0xf70(%rsp), %rdi
leaq 0xf50(%rsp), %rsi
leaq 0xf30(%rsp), %rdx
callq 0x3dee0
jmp 0x5569c
movq 0xd0(%rsp), %rdi
leaq 0xf70(%rsp), %rsi
callq 0x1fda0
jmp 0x556b3
leaq 0xf70(%rsp), %rdi
callq 0x5250
leaq 0xf30(%rsp), %rdi
callq 0x5250
leaq 0xf2f(%rsp), %rdi
callq 0x5480
leaq 0xf50(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0xf08(%rsp), %rdi
movl $0x15, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x55708
leaq 0x1460(%rsp), %rdi
leaq 0xf08(%rsp), %rsi
callq 0x5510
leaq 0xf08(%rsp), %rdi
callq 0x5250
cmpq $0x0, 0x14c0(%rsp)
je 0x5577a
movq 0x14c0(%rsp), %rdi
callq 0x1f660
movq %rax, 0xc0(%rsp)
jmp 0x5574c
movq 0xc0(%rsp), %rdi
leaq 0x1460(%rsp), %rsi
callq 0x5050
movl %eax, 0xbc(%rsp)
jmp 0x5576a
movl 0xbc(%rsp), %eax
cmpl $0x0, %eax
je 0x55957
movq 0x128(%rsp), %rdi
leaq 0x1460(%rsp), %rsi
callq 0x56c90
movq %rax, 0xb0(%rsp)
jmp 0x55799
movq 0x128(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq %rax, 0xf00(%rsp)
callq 0x56cc0
movq %rax, 0xef8(%rsp)
leaq 0xf00(%rsp), %rdi
leaq 0xef8(%rsp), %rsi
callq 0x56c70
testb $0x1, %al
jne 0x557dc
jmp 0x5593d
movq 0x128(%rsp), %rdi
callq 0x56cf0
movq 0x128(%rsp), %rdi
movl %eax, 0xa4(%rsp)
leaq 0x1460(%rsp), %rsi
callq 0x56d00
movq %rax, 0xa8(%rsp)
jmp 0x5580f
movq 0xa8(%rsp), %rax
movl 0xa4(%rsp), %ecx
movl %ecx, (%rax)
jmp 0x55955
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5587f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55872
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xff8(%rsp), %rdi
callq 0x5250
leaq 0xfb8(%rsp), %rdi
callq 0x5250
leaq 0xfb7(%rsp), %rdi
callq 0x5480
leaq 0xfd8(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xf90(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5591e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55911
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xf70(%rsp), %rdi
callq 0x5250
leaq 0xf30(%rsp), %rdi
callq 0x5250
leaq 0xf2f(%rsp), %rdi
callq 0x5480
leaq 0xf50(%rsp), %rdi
callq 0x5250
jmp 0x566c4
leaq 0x26c54(%rip), %rsi     # 0x7c598
leaq 0x1460(%rsp), %rdi
callq 0x55f0
jmp 0x55953
jmp 0x55955
jmp 0x55957
movq 0x1420(%rsp), %rdi
leaq 0x1460(%rsp), %rsi
callq 0x1fe10
jmp 0x5596e
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0x98(%rsp)
leaq 0xed8(%rsp), %rdi
movl $0x15, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x5599f
movq 0x98(%rsp), %rdi
leaq 0xed8(%rsp), %rsi
callq 0x1fe40
jmp 0x559b6
leaq 0xed8(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0xd30(%rsp), %rdi
movl $0x16, %edx
movl $0x6, %ecx
callq 0x5440
jmp 0x559e4
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x94(%rsp)
jmp 0x559fc
movl 0x94(%rsp), %edx
leaq 0xd50(%rsp), %rdi
leaq 0xd30(%rsp), %rsi
callq 0x5670
jmp 0x55a1a
leaq 0xd50(%rsp), %rdi
leaq 0x145c(%rsp), %rsi
callq 0x7820
jmp 0x55a31
leaq 0xd50(%rsp), %rdi
callq 0x52e0
leaq 0xd30(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rdi
leaq 0x145c(%rsp), %rsi
callq 0x1feb0
jmp 0x55a62
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0xd10(%rsp), %rdi
movl $0x1a, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x55a93
movq 0x88(%rsp), %rdi
leaq 0xd10(%rsp), %rsi
callq 0x1fed0
jmp 0x55aaa
leaq 0xd10(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0xb68(%rsp), %rdi
movl $0x1e, %edx
movl $0x8, %ecx
callq 0x5440
jmp 0x55ad8
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x84(%rsp)
jmp 0x55af0
movl 0x84(%rsp), %edx
leaq 0xb88(%rsp), %rdi
leaq 0xb68(%rsp), %rsi
callq 0x5670
jmp 0x55b0e
leaq 0xb88(%rsp), %rdi
leaq 0x14b8(%rsp), %rsi
callq 0x3c750
jmp 0x55b25
leaq 0xb88(%rsp), %rdi
callq 0x52e0
leaq 0xb68(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
movl $0x26, %edx
movl $0x8, %ecx
callq 0x5440
jmp 0x55b60
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x80(%rsp)
jmp 0x55b78
movl 0x80(%rsp), %edx
leaq 0x9e0(%rsp), %rdi
leaq 0x9c0(%rsp), %rsi
callq 0x5670
jmp 0x55b96
leaq 0x9e0(%rsp), %rdi
leaq 0x14b0(%rsp), %rsi
callq 0x3c750
jmp 0x55bad
leaq 0x9e0(%rsp), %rdi
callq 0x52e0
leaq 0x9c0(%rsp), %rdi
callq 0x5250
movq 0x120(%rsp), %rsi
leaq 0x818(%rsp), %rdi
movl $0x2e, %edx
movl $0x8, %ecx
callq 0x5440
jmp 0x55be8
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x7c(%rsp)
jmp 0x55bfd
movl 0x7c(%rsp), %edx
leaq 0x838(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x5670
jmp 0x55c18
leaq 0x838(%rsp), %rdi
leaq 0x14a8(%rsp), %rsi
callq 0x3c750
jmp 0x55c2f
leaq 0x838(%rsp), %rdi
callq 0x52e0
leaq 0x818(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rax
movq %rax, 0x70(%rsp)
movsd 0x14b8(%rsp), %xmm0
movsd 0x14b0(%rsp), %xmm1
movsd 0x14a8(%rsp), %xmm2
leaq 0x800(%rsp), %rdi
callq 0x76090
jmp 0x55c80
movq 0x70(%rsp), %rdi
leaq 0x800(%rsp), %rsi
callq 0x1ffe0
jmp 0x55c94
movq 0x120(%rsp), %rdi
callq 0x5290
cmpq $0x3c, %rax
jb 0x55f02
movq 0x120(%rsp), %rsi
leaq 0x658(%rsp), %rdi
movl $0x36, %edx
movl $0x6, %ecx
callq 0x5440
jmp 0x55ccc
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x6c(%rsp)
jmp 0x55ce1
movl 0x6c(%rsp), %edx
leaq 0x678(%rsp), %rdi
leaq 0x658(%rsp), %rsi
callq 0x5670
jmp 0x55cfc
leaq 0x678(%rsp), %rdi
leaq 0x1450(%rsp), %rsi
callq 0x3c750
jmp 0x55d13
leaq 0x678(%rsp), %rdi
callq 0x52e0
leaq 0x658(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rdi
leaq 0x1450(%rsp), %rsi
callq 0x20010
jmp 0x55d44
jmp 0x55f02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xed8(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55da6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xd50(%rsp), %rdi
callq 0x52e0
leaq 0xd30(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xd10(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0xb88(%rsp), %rdi
callq 0x52e0
leaq 0xb68(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55e5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x9e0(%rsp), %rdi
callq 0x52e0
leaq 0x9c0(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55ea7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x838(%rsp), %rdi
callq 0x52e0
leaq 0x818(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55ef0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x678(%rsp), %rdi
callq 0x52e0
leaq 0x658(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq 0x120(%rsp), %rdi
callq 0x5290
cmpq $0x42, %rax
jb 0x55ffd
movq 0x120(%rsp), %rsi
leaq 0x4b0(%rsp), %rdi
movl $0x3c, %edx
movl $0x6, %ecx
callq 0x5440
jmp 0x55f3a
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x68(%rsp)
jmp 0x55f4f
movl 0x68(%rsp), %edx
leaq 0x4d0(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
callq 0x5670
jmp 0x55f6a
leaq 0x4d0(%rsp), %rdi
leaq 0x1448(%rsp), %rsi
callq 0x3c750
jmp 0x55f81
leaq 0x4d0(%rsp), %rdi
callq 0x52e0
leaq 0x4b0(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rdi
leaq 0x1448(%rsp), %rsi
callq 0x20040
jmp 0x55fb2
jmp 0x55ffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x55feb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x4d0(%rsp), %rdi
callq 0x52e0
leaq 0x4b0(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq 0x120(%rsp), %rdi
callq 0x5290
cmpq $0x4c, %rax
jb 0x56070
movq 0x120(%rsp), %rsi
leaq 0x490(%rsp), %rdi
movl $0x48, %edx
movl $0x4, %ecx
callq 0x5440
jmp 0x56031
leaq 0x1428(%rsp), %rdi
movq %rdi, 0x60(%rsp)
leaq 0x490(%rsp), %rsi
movq %rsi, 0x58(%rsp)
callq 0x5510
movq 0x58(%rsp), %rdi
callq 0x5250
movq 0x60(%rsp), %rsi
movq 0x1420(%rsp), %rdi
callq 0x200a0
jmp 0x5606e
jmp 0x56070
movq 0x120(%rsp), %rdi
callq 0x5290
cmpq $0x4e, %rax
jb 0x561d5
movq 0x120(%rsp), %rsi
leaq 0x470(%rsp), %rdi
movl $0x4d, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x560a8
leaq 0x470(%rsp), %rdi
leaq 0x264e1(%rip), %rsi     # 0x7c598
callq 0x5140
movl %eax, 0x54(%rsp)
leaq 0x470(%rsp), %rdi
callq 0x5250
movl 0x54(%rsp), %eax
cmpl $0x0, %eax
jne 0x5615c
movq 0x1420(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x1f5c0
movq %rax, 0x48(%rsp)
jmp 0x560f3
movq 0x48(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq 0x450(%rsp), %rdi
movl $0x1, %ecx
callq 0x5440
jmp 0x56110
movq 0x40(%rsp), %rdi
leaq 0x450(%rsp), %rsi
callq 0x20070
jmp 0x56124
leaq 0x450(%rsp), %rdi
callq 0x5250
jmp 0x561d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x450(%rsp), %rdi
callq 0x5250
jmp 0x566c4
movq 0x120(%rsp), %rsi
movq 0x1420(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x430(%rsp), %rdi
movl $0x4d, %edx
movl $0x1, %ecx
callq 0x5440
jmp 0x5618a
movq 0x38(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x20070
jmp 0x5619e
leaq 0x430(%rsp), %rdi
callq 0x5250
jmp 0x561d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x5250
jmp 0x566c4
jmp 0x561d5
movq 0x1420(%rsp), %rdi
movl $0x1, %esi
callq 0x200f0
jmp 0x561e9
leaq 0x2a8(%rsp), %rdi
callq 0x52a0
jmp 0x561f8
leaq 0x2b8(%rsp), %rdi
movl 0x145c(%rsp), %esi
callq 0x56f0
jmp 0x5620e
movq 0x1420(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x25005(%rip), %rdx     # 0x7b227
leaq 0x1e8(%rsp), %rdi
leaq 0x1460(%rsp), %rsi
callq 0x17210
jmp 0x56239
movq 0x1420(%rsp), %rdi
callq 0x1f620
movq %rax, 0x28(%rsp)
jmp 0x5624d
movq 0x28(%rsp), %rdx
leaq 0x208(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x389e0
jmp 0x56269
leaq 0x1c8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x53e0
jmp 0x56280
leaq 0x228(%rsp), %rdi
leaq 0x208(%rsp), %rsi
leaq 0x1c8(%rsp), %rdx
callq 0x16d90
jmp 0x5629f
movq 0x1420(%rsp), %rdi
callq 0x1f6c0
movq %rax, 0x20(%rsp)
jmp 0x562b3
leaq 0x187(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x5730
movq 0x18(%rsp), %rdx
leaq 0x262c7(%rip), %rsi     # 0x7c598
leaq 0x188(%rsp), %rdi
callq 0x7900
jmp 0x562e0
movq 0x20(%rsp), %rsi
leaq 0x1a8(%rsp), %rdi
leaq 0x188(%rsp), %rdx
callq 0x3dee0
jmp 0x562fc
leaq 0x248(%rsp), %rdi
leaq 0x228(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
callq 0x16d90
jmp 0x5631b
leaq 0x26434(%rip), %rdx     # 0x7c756
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rsi
callq 0x16d40
jmp 0x56339
movq 0x1420(%rsp), %rdi
callq 0x1f5c0
movq %rax, 0x10(%rsp)
jmp 0x5634d
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x5730
movq 0x8(%rsp), %rdx
leaq 0x2622d(%rip), %rsi     # 0x7c598
leaq 0x140(%rsp), %rdi
callq 0x7900
jmp 0x5637a
movq 0x10(%rsp), %rsi
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x3dee0
jmp 0x56396
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
leaq 0x160(%rsp), %rdx
callq 0x16d90
jmp 0x563b5
movq 0x30(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x20120
jmp 0x563c9
leaq 0x288(%rsp), %rdi
callq 0x5250
leaq 0x160(%rsp), %rdi
callq 0x5250
leaq 0x140(%rsp), %rdi
callq 0x5250
leaq 0x13f(%rsp), %rdi
callq 0x5480
leaq 0x268(%rsp), %rdi
callq 0x5250
leaq 0x248(%rsp), %rdi
callq 0x5250
leaq 0x1a8(%rsp), %rdi
callq 0x5250
leaq 0x188(%rsp), %rdi
callq 0x5250
leaq 0x187(%rsp), %rdi
callq 0x5480
leaq 0x228(%rsp), %rdi
callq 0x5250
leaq 0x1c8(%rsp), %rdi
callq 0x5250
leaq 0x208(%rsp), %rdi
callq 0x5250
leaq 0x1e8(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rax
movq %rax, (%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x52e0
leaq 0x1428(%rsp), %rdi
callq 0x5250
leaq 0x1460(%rsp), %rdi
callq 0x5250
leaq 0x1488(%rsp), %rdi
callq 0x5250
movq (%rsp), %rax
addq $0x14d8, %rsp           # imm = 0x14D8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x566b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x566aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5669d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56690
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56683
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56669
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5665c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5664f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56642
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56635
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x56628
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
jmp 0x5661b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1418(%rsp)
movl %eax, 0x1414(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x5250
leaq 0x160(%rsp), %rdi
callq 0x5250
leaq 0x140(%rsp), %rdi
callq 0x5250
leaq 0x13f(%rsp), %rdi
callq 0x5480
leaq 0x268(%rsp), %rdi
callq 0x5250
leaq 0x248(%rsp), %rdi
callq 0x5250
leaq 0x1a8(%rsp), %rdi
callq 0x5250
leaq 0x188(%rsp), %rdi
callq 0x5250
leaq 0x187(%rsp), %rdi
callq 0x5480
leaq 0x228(%rsp), %rdi
callq 0x5250
leaq 0x1c8(%rsp), %rdi
callq 0x5250
leaq 0x208(%rsp), %rdi
callq 0x5250
leaq 0x1e8(%rsp), %rdi
callq 0x5250
leaq 0x2a8(%rsp), %rdi
callq 0x52e0
leaq 0x1428(%rsp), %rdi
callq 0x5250
leaq 0x1460(%rsp), %rdi
callq 0x5250
leaq 0x1488(%rsp), %rdi
callq 0x5250
movq 0x1418(%rsp), %rdi
callq 0x5720
nopl (%rax,%rax)