// File: /workspace/github_cpp_makefile_star2_O2/Chrom3D[P]Chrom3D/src/Model.cpp
// Function: Model::readGtrack(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, double)
void Model::readGtrack(string filename, bool scaleBeadSizes/*=false*/, double nuclearOccupancy /*=0.2*/) {
  string line;
  ifstream myfile(filename.c_str());
  uint line_counter = 0;
  if(!myfile.is_open()) throw std::runtime_error("Gtrack file not found or does not exist");

  typedef std::pair<std::string, std::string> idPair;
  
  vector<string> header;

  map<string,Chromosome> chromosomes;
  map<string, string> beadId2chr;
  vector<string> peripheryIds;
  vector<string> centerIds;
  vector<string> radialIds;
  vector<pair<string,string> > interactionIds;
  vector<pair<string,string> > interactionDistanceIds;
  vector<pair<string,string> > interactionLowerDistanceIds;
  vector<pair<string,string> > interactionUpperDistanceIds;
  //vector<pair<string,string> > nonInteractionDistanceIds;


  std::map<idPair,double> distInfo;
  std::map<string,double> radialDistInfo;
  
  std::map<idPair,double> weightInfo;
  std::map<string,double> peripheryWeight;
  std::map<string,double> centerWeight;

  double beadRadius;
  
  bool hasPeriphery = false;
  bool hasEdges = false;
  bool hasColor = false;
  bool hasBeadRadius = false;
  
  while(getline(myfile,line)) {    
    line_counter++;
    if(line.substr(0,3) == "###") {
      header = util::split(line.substr(3),'\t');
      hasPeriphery = find(header.begin(), header.end(), "periphery") != header.end();
      hasEdges = find(header.begin(), header.end(), "edges") != header.end();
      hasColor = find(header.begin(), header.end(), "color") != header.end();
      hasBeadRadius = find(header.begin(), header.end(), "radius") != header.end();
    }
    if(line.substr(0,1) == "#") { // Ignore comments
      continue;
    }

    if(hasPeriphery) {
      assert(this->hasNucleus);
    }

    
    vector<string> dataLine = util::split(line,'\t');
    map<string, string> fieldParser = util::makeMap(header, dataLine);
    
    
    if (chromosomes.find(fieldParser["seqid"]) == chromosomes.end() ) {
      Chromosome chr(fieldParser["seqid"]);
      chromosomes[fieldParser["seqid"]] = chr;
    }

    beadRadius = 0.5; // Default bead radius size
    if(hasBeadRadius) {
      beadRadius = boost::lexical_cast<double>(fieldParser["radius"]);
    }

    
    Bead myBead(boost::lexical_cast<int>(fieldParser["start"]), boost::lexical_cast<int>(fieldParser["end"]), beadRadius, fieldParser["id"]);
    myBead.setCoordinates(0,0,0); // Coordinates are not defined at this point, set all to zero.
    
    beadId2chr[fieldParser["id"]] = fieldParser["seqid"];
    
    if(hasColor) {
      vector<string> col = util::split(fieldParser["color"], ',');
      myBead.setColor(boost::lexical_cast<float>(col[0]), boost::lexical_cast<float>(col[1]), boost::lexical_cast<float>(col[2]));
    }
        
    chromosomes[fieldParser["seqid"]].addBead(myBead);

    if(hasPeriphery and fieldParser["periphery"] != ".") { 
      
      if (fieldParser["periphery"].find(",") != std::string::npos) { // has periphery-weights
	if( util::split(fieldParser["periphery"], ',')[0] == "1") {
	  peripheryIds.push_back(fieldParser["id"]);
	  peripheryWeight[fieldParser["id"]] = boost::lexical_cast<double>(util::split(fieldParser["periphery"], ',')[1]);
	}
	else if( util::split(fieldParser["periphery"], ',')[0] == "0") {
	  centerIds.push_back(fieldParser["id"]);
	  centerWeight[fieldParser["id"]] = boost::lexical_cast<double>(util::split(fieldParser["periphery"], ',')[1]);
	}
	else {
	  //assert(false); // 'periphery' can be either 0 or 1, when a weight is given.
            std::string error_line = util::errorLine(line_counter,filename);
            throw std::logic_error(error_line + "Periphery can be either 0 or 1, when a weight is given.");
	}
      }	// no weights:
      if (fieldParser["periphery"] == "1") {
	peripheryIds.push_back(fieldParser["id"]);
      }
      else if (fieldParser["periphery"] == "0") {
	centerIds.push_back(fieldParser["id"]);
      }
      else if (fieldParser["periphery"] != "."){
	radialDistInfo[fieldParser["id"]] =  boost::lexical_cast<double>(fieldParser["periphery"]);
        radialIds.push_back(fieldParser["id"]);
      }
    }

    if(hasEdges and fieldParser["edges"] != ".") {
      vector<string> edgeList = util::split(fieldParser["edges"], ';');
      idPair idPair1;
      string b2id;
      for(uint i=0; i!=edgeList.size(); i++) {
        b2id = edgeList[i];
        if(b2id.find("=") == std::string::npos){ // if edge information does not contain edge weights 
          idPair1 = make_pair(fieldParser["id"], b2id);
          //assert(idPair1.first != idPair1.second);	
          if(idPair1.first == idPair1.second)
          {
            std::string error_line = util::errorLine(line_counter,filename);
            throw std::logic_error(error_line + "Same beadId found in the edge column, please check the edge column of the above line");
          }
 
          if(find(interactionIds.begin(), interactionIds.end(), idPair1) == interactionIds.end())  {
            interactionIds.push_back(idPair1); // idPair2 should not be added here, since addConstraint will add both pairs automatically
          }
        }
        else {// edge information contains edge weights
          b2id = edgeList[i].substr(0,edgeList[i].find("="));
          string edgeInfoAll =  edgeList[i].substr(edgeList[i].find("=")+1);
          idPair1 = make_pair(fieldParser["id"], b2id);
          //assert(idPair1.first != idPair1.second);	
          if(idPair1.first == idPair1.second)
          {
            std::string error_line = util::errorLine(line_counter,filename);
            throw std::logic_error(error_line + "Same beadId found in the edge column, please check the edge column of the above line");
          }
         
          if(edgeInfoAll.find(".") == 0){//No weighting on edges: treat like ordinary interaction
            
            if(find(interactionIds.begin(), interactionIds.end(), idPair1) == interactionIds.end())  {
              interactionIds.push_back(idPair1); // idPair2 should not be added here, since addConstraint will add both pairs automatically
            }
          }
          else{ // split edge information
            vector<double> edgeInfoDetail = util::splitDbl(edgeInfoAll,',');
	    vector<string> edgeInfoDetailString = util::split(edgeInfoAll,',');
	    if(edgeInfoDetail.size() == 3) { // link information with 0) Distance, 1) Weight and 2) Boundary info
	      //assert(edgeInfoDetailString[2] == "0" or edgeInfoDetailString[2] == "1" or edgeInfoDetailString[2] == ".");
              if(edgeInfoDetailString[2] != "0" and edgeInfoDetailString[2] != "1" and edgeInfoDetailString[2] != ".")
              {
                std::string error_line = util::errorLine(line_counter,filename);
                throw std::logic_error(error_line + "Boundary information value can be 0, 1 or .");
              } 
	      // edgeInfoDetail contains [0]=weight (>0), [1]=distance (>0]), [2]=boundary (0/1). 
	      // If boundary is 1, define distance as the minimum required between the two "interacting" beads. (penalty for smaller distance than this defined distance)
	      // If boundary is 0, use distance as the maximum desired distance between the beads (penalty for larger distance than this defined distance)
	      // If boundary is . (missing), use the given distance as the desired distance (penalty for larger and smaller distances)

	      if(edgeInfoDetailString[2]=="0"){ // UpperBound
		interactionUpperDistanceIds.push_back(idPair1);
	      }
	      else if(edgeInfoDetailString[2]=="1") { // LowerBound
		interactionLowerDistanceIds.push_back(idPair1);
	      }
	      else if(edgeInfoDetailString[2]==".") { // Unbounded
		interactionDistanceIds.push_back(idPair1);
	      }
	      else {
		assert(false);
	      }
	      //assert(edgeInfoDetail[0] >= 0);
              if(edgeInfoDetail[0] < 0)
              {
                std::string error_line = util::errorLine(line_counter,filename);
                throw std::logic_error(error_line + "Weight should be above 0");
              }
	      //assert(edgeInfoDetail[1] >= 0);
              if(edgeInfoDetail[1] < 0)
              {
                std::string error_line = util::errorLine(line_counter,filename);
                throw std::logic_error(error_line + "Distance should be above 0");
              }
	      weightInfo[idPair1] = edgeInfoDetail[0];
	      distInfo[idPair1] = edgeInfoDetail[1];
	    }
	    else if(edgeInfoDetail.size() == 1) { // Only one number, gives the weight on that link.
	      //assert(edgeInfoDetail[0] > 0);
              if(edgeInfoDetail[0] < 0)
              {
                std::string error_line = util::errorLine(line_counter,filename);
                throw std::logic_error(error_line + "Weight should be above 0");
              }
	      interactionIds.push_back(idPair1);
	      weightInfo[idPair1] = edgeInfoDetail[0];	      
	    }
	    else {
	      //assert(false);
              std::string error_line = util::errorLine(line_counter,filename);
              throw std::logic_error(error_line + "Either only weight or all the information should be specified for a linked bead");
	    }
	    
          }
          
        }
    
      }
    }
  }


  myfile.close();
  

  // Adding the Chromosomes:
  for(map<string,Chromosome>::iterator it = chromosomes.begin(); it != chromosomes.end(); it++) {
    if(not hasColor) {
      double r = util::unif_real(0,1,randEngine);
      double g = util::unif_real(0,1,randEngine);
      double b = util::unif_real(0,1,randEngine);
      it->second.setColor(r,g,b);
    }
    this->addChromosome(it->second);
  }

  // Scale bead-sizes according to nuclear occupancy:
  if(scaleBeadSizes) {
    cerr << "# Rescaled bead sizes from " << this->getNuclearOccupancy();
    this->rescaleBeadSizes(nuclearOccupancy);
    cerr << " to " << this->getNuclearOccupancy() << endl;    
  }
  
  // Adding Interactions:
  for(vector<pair<string,string> >::iterator it = interactionIds.begin();  it != interactionIds.end(); it++) {
    //cout <<it->first << " " << it->second << endl;
    std::map<idPair,double>::iterator itWeight = weightInfo.find(*it);
    double weight = (itWeight != weightInfo.end()) ? itWeight->second : 1;
    if(beadId2chr[it->first] == beadId2chr[it->second]) {
      this->addInteractionConstraint(it->first, it->second, weight, INTERACTION_INTRA);
    }
    else {
      this->addInteractionConstraint(it->first, it->second, weight, INTERACTION_INTER);
    }
  }

  std::map<idPair,double>::iterator itDist;
  std::map<idPair,double>::iterator itWeight;

  // Adding non-bounded distances:
  for(vector<pair<string,string> >::iterator it = interactionDistanceIds.begin();  it != interactionDistanceIds.end(); it++) {    
    itDist = distInfo.find(*it);
    itWeight = weightInfo.find(*it);
       
    this->addInteractionDistanceConstraint(it->first, it->second, itDist->second, itWeight->second);
  }
  
    
  // Adding Lower-bound distances:
  for(vector<pair<string,string> >::iterator it = interactionLowerDistanceIds.begin();  it != interactionLowerDistanceIds.end(); it++) {    
    itDist = distInfo.find(*it);
    itWeight = weightInfo.find(*it);
   
    this->addInteractionLowerDistanceConstraint(it->first, it->second, itDist->second, itWeight->second);
  }

  // Adding Upper-bound distances:
  for(vector<pair<string,string> >::iterator it = interactionUpperDistanceIds.begin();  it != interactionUpperDistanceIds.end(); it++) {    
    itDist = distInfo.find(*it);
    itWeight = weightInfo.find(*it);
   
    this->addInteractionUpperDistanceConstraint(it->first, it->second, itDist->second, itWeight->second);
  }

  
  // Adding periphery:
  double w;
  for(vector<string>::iterator it = peripheryIds.begin();  it != peripheryIds.end(); it++) {
    w = 1.0;
    if(peripheryWeight.find(*it) != peripheryWeight.end()) {
      w = peripheryWeight[*it];
    }
    this->addPeripheryConstraint(*it,w);
  }

  // Adding radial:
  for(vector<string>::iterator it = radialIds.begin();  it != radialIds.end(); it++) {
    this->addBoundaryConstraint(*it, radialDistInfo[*it]);
  }

  // Adding center contraint:
  for(vector<string>::iterator it = centerIds.begin(); it != centerIds.end(); it++) {
    w = 1.0;
    if(centerWeight.find(*it) != centerWeight.end()) {
      w = centerWeight[*it];
    }    
    this->addCenterConstraint(*it,w);
  }

  // Assert all interactions specified twice:

  //assert(interactionSpecifiedSymmetricly(interactionIds));
  if(!interactionSpecifiedSymmetricly(interactionIds))
  {
    throw std::runtime_error("Advanced option: Edge column is not symmetrical for one or more beads. Interacting beads have to be specified twice in the corresponding edge column with the same information.");
  }
  //assert(interactionSpecifiedSymmetricly(interactionDistanceIds));
  if(!interactionSpecifiedSymmetricly(interactionDistanceIds))
  {
    throw std::runtime_error("Advanced option: Edge column is not symmetrical for one or more beads. Interacting beads have to be specified twice in the corresponding edge column with the same information.");
  }
  //assert(interactionSpecifiedSymmetricly(interactionLowerDistanceIds));
  if(!interactionSpecifiedSymmetricly(interactionLowerDistanceIds))
  {
    throw std::runtime_error("Advanced option: Edge column is not symmetrical for one or more beads. Interacting beads have to be specified twice in the corresponding edge column with the same boundary information [0,1,.].");
  }

  if(!interactionSpecifiedSymmetricly(interactionUpperDistanceIds))
  {
    throw std::runtime_error("Advanced option: Edge column is not symmetrical for one or more beads. Interacting beads have to be specified twice in the corresponding edge column with the same boundary information [0,1,.].");
  }

  // Assert all distances and weights specified (equally) twice:
  if(!interactionWeightsSpecifiedSymmetricly(distInfo))
  {
    throw std::runtime_error("Advanced option: Optimal distance specified is not the same for interacting beads. Please verify the edge column.");
  }
  if(!interactionWeightsSpecifiedSymmetricly(weightInfo))
  {
    throw std::runtime_error("Advanced option: Weight specified is not the same for interacting beads. Please verify the edge column.");
  }

  
  
  // Initialize structures randomly:
  
  this->resetAllChromosomes(1000); //, true);

  uint N=this->getNumberOfBeads();
  cerr << "# chromosomes: " << chromosomes.size() << endl;
  cerr << "# beads: " << N << endl;
  cerr << "# interactions: " << interactionIds.size() / 2 << endl; // Divide by 2, since each interact. is specified twice.
  cerr << "# interactions with given weight: " << weightInfo.size()  / 2 << endl;
  cerr << "# non-bounded interactions with given distance: " << interactionDistanceIds.size()  / 2 << endl;
  cerr << "# upper-bounded interactions with given distance: " << interactionUpperDistanceIds.size()  / 2 << endl;
  cerr << "# lower-bounded interactions with given distance: " << interactionLowerDistanceIds.size()  / 2 << endl;
  cerr << "# periphery beads: " << peripheryIds.size() << endl;
  cerr << "# periphery beads (with weights): " << peripheryWeight.size() << endl;
  cerr << "# center beads: " << centerIds.size() << endl;
  cerr << "# center beads (with weights): " << centerWeight.size() << endl;  

  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xeaff8, %rsp          # imm = 0xEAFF8
movsd %xmm0, 0x290(%rsp)
movl %edx, %ebx
leaq 0x2d8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rsi, %r14
movq %rdi, 0x10(%rsp)
movb $0x0, (%rax)
movq (%rsi), %rsi
leaq 0x790(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x6610
movq %r14, 0x20(%rsp)
movl %ebx, 0x158(%rsp)
leaq 0x808(%rsp), %rdi
callq 0x60b0
testb %al, %al
je 0x116d8
leaq 0x140(%rsp), %rcx
andq $0x0, 0x10(%rcx)
leaq 0x2f0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x510(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rcx)
leaq 0x200(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x1e0(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x270(%rsp), %rax
andq $0x0, 0x10(%rax)
leaq 0xe0(%rsp), %rcx
andq $0x0, 0x10(%rcx)
movapd %xmm0, (%rax)
movapd %xmm0, (%rcx)
leaq 0x1c0(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x1a0(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x180(%rsp), %rcx
andq $0x0, 0x10(%rcx)
leaq 0x338(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x4e0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x2a0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x398(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x368(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movapd %xmm0, (%rcx)
movq $0x0, 0x220(%rsp)
leaq 0x100(%rsp), %r15
movq $0x0, 0x18(%rsp)
movq $0x0, 0x218(%rsp)
movq $0x0, 0xa8(%rsp)
movl $0x0, 0x4(%rsp)
leaq 0x790(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
callq 0x6080
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x10920
leaq 0x998(%rsp), %r13
movq %r13, %rdi
leaq 0x2c8(%rsp), %rsi
xorl %edx, %edx
pushq $0x3
popq %rcx
callq 0x6360
movq %r13, %rdi
leaq 0x12174(%rip), %rsi     # 0x219da
callq 0x13017
movl %eax, %r14d
movq %r13, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0xf97b
movq %r13, %rdi
leaq 0x2c8(%rsp), %rsi
pushq $0x3
popq %rdx
pushq $-0x1
popq %rcx
callq 0x6360
movq %r15, %rdi
movq %r13, %rsi
pushq $0x9
popq %rdx
callq 0x77e2
leaq 0x140(%rsp), %rdi
movq %r15, %rsi
callq 0x150ac
movq %r15, %rdi
callq 0x7f2a
movq %r13, %rdi
callq 0x66d0
movq 0x140(%rsp), %rdi
movq 0x148(%rsp), %rsi
leaq 0x12104(%rip), %rdx     # 0x219de
callq 0x150fd
movq 0x140(%rsp), %rdi
movq 0x148(%rsp), %rsi
cmpq %rsi, %rax
setne %al
movq %rax, 0xa8(%rsp)
leaq 0x120e4(%rip), %rdx     # 0x219e8
callq 0x151e7
movq 0x140(%rsp), %rdi
movq 0x148(%rsp), %rsi
cmpq %rsi, %rax
setne %al
movq %rax, 0x218(%rsp)
leaq 0x120c0(%rip), %rdx     # 0x219ee
callq 0x151e7
movq %rax, %r14
movq 0x140(%rsp), %rdi
movq 0x148(%rsp), %r13
movq %r13, %rsi
leaq 0x120a4(%rip), %rdx     # 0x219f4
callq 0x152d1
cmpq %r13, %r14
setne %cl
movq %rcx, 0x18(%rsp)
cmpq 0x148(%rsp), %rax
setne %al
movq %rax, 0x220(%rsp)
leaq 0x998(%rsp), %r13
movq %r13, %rdi
leaq 0x2c8(%rsp), %rsi
xorl %edx, %edx
pushq $0x1
popq %rcx
callq 0x6360
incl 0x4(%rsp)
movq %r13, %rdi
leaq 0x1076b(%rip), %rsi     # 0x20109
callq 0x13017
movl %eax, %r14d
movq %r13, %rdi
callq 0x66d0
testb %r14b, %r14b
jne 0xf818
testb $0x1, 0xa8(%rsp)
je 0xf9d3
movq 0x10(%rsp), %rax
cmpb $0x0, 0xa90(%rax)
je 0x11591
leaq 0x318(%rsp), %rdi
leaq 0x2c8(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x77e2
leaq 0x4c0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x1330c
leaq 0x578(%rsp), %r12
movq %r12, %rdi
leaq 0x318(%rsp), %rsi
callq 0x1330c
leaq 0xb0(%rsp), %rdi
leaq 0x4c0(%rsp), %r14
movq %r14, %rsi
movq %r12, %rdx
callq 0x791f
movq %r12, %rdi
callq 0x7f2a
movq %r14, %rdi
callq 0x7f2a
leaq 0x998(%rsp), %r14
movq %r14, %rdi
leaq 0x11fd3(%rip), %rsi     # 0x21a28
movq %r15, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x2e8(%rsp), %rdi
movq %rax, %rsi
callq 0x1559c
movq %rax, %r14
leaq 0x998(%rsp), %rdi
callq 0x66d0
leaq 0x2f0(%rsp), %rax
cmpq %rax, %r14
jne 0xfb4e
movq %r15, %rdi
leaq 0x11f80(%rip), %rsi     # 0x21a28
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x710(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x6430
leaq 0x998(%rsp), %rdi
movq %r14, %rsi
callq 0xa568
movq %r14, %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x11f29(%rip), %rsi     # 0x21a28
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x2e8(%rsp), %rdi
movq %rax, %rsi
callq 0x133c6
movq %rax, %rdi
leaq 0x998(%rsp), %rsi
callq 0x1342c
movq %r15, %rdi
callq 0x66d0
leaq 0x998(%rsp), %rdi
callq 0x13462
movsd 0x104d2(%rip), %xmm0    # 0x20028
movsd %xmm0, 0x8(%rsp)
testb $0x1, 0x220(%rsp)
je 0xfbab
leaq 0x998(%rsp), %r14
movq %r14, %rdi
leaq 0x11e7c(%rip), %rsi     # 0x219f4
movq %r15, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
movq %rax, %rdi
callq 0x1347c
movsd %xmm0, 0x8(%rsp)
leaq 0x998(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x11e79(%rip), %rsi     # 0x21a2e
leaq 0x160(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
callq 0x13499
movl %eax, %r14d
leaq 0x28(%rsp), %r12
movq %r12, %rdi
leaq 0x11e48(%rip), %rsi     # 0x21a34
leaq 0x68(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
callq 0x13360
movq %rax, %rdi
callq 0x13499
movl %eax, %r13d
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
leaq 0x117f3(%rip), %rsi     # 0x21416
leaq 0x258(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %rbx, %rbp
movq %rbx, %rsi
callq 0x13360
leaq 0x6f0(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x6430
leaq 0x998(%rsp), %r12
movq %r12, %rdi
movl %r14d, %esi
movl %r13d, %edx
movsd 0x8(%rsp), %xmm0
movq %rbx, %rcx
callq 0xa32a
movq %rbx, %rdi
callq 0x66d0
movq %rbp, %rdi
callq 0x66d0
leaq 0x28(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x66d0
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
movq %r12, %rdi
callq 0xa3bc
movq %r15, %rdi
leaq 0x11d73(%rip), %rsi     # 0x21a28
movq %rbp, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %r14
leaq 0x28(%rsp), %r12
movq %r12, %rdi
leaq 0x11737(%rip), %rsi     # 0x21416
leaq 0x160(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
callq 0x13360
leaq 0x508(%rsp), %rdi
movq %rax, %rsi
callq 0x7f4c
movq %rax, %rdi
movq %r14, %rsi
callq 0x6200
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x66d0
testb $0x1, 0x18(%rsp)
je 0xfdd8
movq %r15, %rdi
leaq 0x11cad(%rip), %rsi     # 0x219ee
leaq 0x88(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x28(%rsp), %rdi
movq %rax, %rsi
pushq $0x2c
popq %rdx
callq 0x77e2
movq %r15, %rdi
callq 0x66d0
movq 0x28(%rsp), %rdi
callq 0x134b6
movss %xmm0, 0x8(%rsp)
movq 0x28(%rsp), %rdi
addq $0x20, %rdi
callq 0x134b6
movss %xmm0, 0x15c(%rsp)
movq 0x28(%rsp), %rdi
addq $0x40, %rdi
callq 0x134b6
movapd %xmm0, %xmm2
leaq 0x998(%rsp), %rdi
movss 0x8(%rsp), %xmm0
movss 0x15c(%rsp), %xmm1
callq 0xa40c
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x7f2a
movq %r15, %rdi
leaq 0x11c46(%rip), %rsi     # 0x21a28
movq %r14, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x2e8(%rsp), %rdi
movq %rax, %rsi
callq 0x133c6
movq %rax, %r14
leaq 0x730(%rsp), %rdi
leaq 0x998(%rsp), %rsi
callq 0xba22
movq %r14, %rdi
leaq 0x730(%rsp), %rsi
callq 0xa602
leaq 0x768(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x66d0
testb $0x1, 0xa8(%rsp)
je 0x10373
movq %r15, %rdi
leaq 0x11b7f(%rip), %rsi     # 0x219de
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0x11c70(%rip), %rsi     # 0x21af3
callq 0x134d5
movl %eax, %r14d
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x10373
movq %r15, %rdi
leaq 0x11b38(%rip), %rsi     # 0x219de
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0x11b6e(%rip), %rsi     # 0x21a38
xorl %edx, %edx
callq 0x6680
movq %rax, %r14
movq %r15, %rdi
callq 0x66d0
cmpq $-0x1, %r14
je 0x1016a
movq %r15, %rdi
leaq 0x11aee(%rip), %rsi     # 0x219de
leaq 0x88(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
pushq $0x2c
popq %rdx
callq 0x77e2
movq 0x28(%rsp), %rdi
leaq 0x108d5(%rip), %rsi     # 0x20801
callq 0x13017
movl %eax, %r14d
movq %r12, %rdi
callq 0x7f2a
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x10016
movq %r15, %rdi
leaq 0x114bf(%rip), %rsi     # 0x21416
movq %r12, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x200(%rsp), %rdi
movq %rax, %rsi
callq 0x7efe
movq %r15, %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x11a4d(%rip), %rsi     # 0x219de
leaq 0x160(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x88(%rsp), %rdi
movq %rax, %rsi
pushq $0x2c
popq %rdx
callq 0x77e2
movq 0x88(%rsp), %rdi
addq $0x20, %rdi
callq 0x1347c
movsd %xmm0, 0x8(%rsp)
leaq 0x28(%rsp), %r14
movq %r14, %rdi
leaq 0x1142f(%rip), %rsi     # 0x21416
leaq 0x68(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x390(%rsp), %rdi
movq %rax, %rsi
callq 0x134e0
jmp 0x10141
movq %r15, %rdi
leaq 0x119be(%rip), %rsi     # 0x219de
leaq 0x88(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
pushq $0x2c
popq %rdx
callq 0x77e2
movq 0x28(%rsp), %rdi
leaq 0x10074(%rip), %rsi     # 0x200d0
callq 0x13017
movl %eax, %r14d
movq %r12, %rdi
callq 0x7f2a
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x11652
movq %r15, %rdi
leaq 0x1138f(%rip), %rsi     # 0x21416
movq %r12, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x1e0(%rsp), %rdi
movq %rax, %rsi
callq 0x7efe
movq %r15, %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x1191d(%rip), %rsi     # 0x219de
leaq 0x160(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x88(%rsp), %rdi
movq %rax, %rsi
pushq $0x2c
popq %rdx
callq 0x77e2
movq 0x88(%rsp), %rdi
addq $0x20, %rdi
callq 0x1347c
movsd %xmm0, 0x8(%rsp)
leaq 0x28(%rsp), %r14
movq %r14, %rdi
leaq 0x112ff(%rip), %rsi     # 0x21416
leaq 0x68(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x360(%rsp), %rdi
movq %rax, %rsi
callq 0x134e0
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x28(%rsp), %rdi
callq 0x66d0
leaq 0x88(%rsp), %rdi
callq 0x7f2a
movq %r15, %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x1186a(%rip), %rsi     # 0x219de
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0x10669(%rip), %rsi     # 0x20801
callq 0x13017
movl %eax, %r14d
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x101e6
movq %r15, %rdi
leaq 0x1125f(%rip), %rsi     # 0x21416
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x200(%rsp), %rdi
movq %rax, %rsi
callq 0x7efe
jmp 0x1036b
movq %r15, %rdi
leaq 0x117ee(%rip), %rsi     # 0x219de
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0xfebc(%rip), %rsi      # 0x200d0
callq 0x13017
movl %eax, %r14d
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x10262
movq %r15, %rdi
leaq 0x111e3(%rip), %rsi     # 0x21416
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x1e0(%rsp), %rdi
movq %rax, %rsi
callq 0x7efe
jmp 0x1036b
movq %r15, %rdi
leaq 0x11772(%rip), %rsi     # 0x219de
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0x11863(%rip), %rsi     # 0x21af3
callq 0x134d5
movl %eax, %r14d
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x10373
movq %r15, %rdi
leaq 0x1172b(%rip), %rsi     # 0x219de
leaq 0x88(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
callq 0x1347c
movsd %xmm0, 0x8(%rsp)
leaq 0x28(%rsp), %r14
movq %r14, %rdi
leaq 0x11129(%rip), %rsi     # 0x21416
leaq 0x160(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x4d8(%rsp), %rdi
movq %rax, %rsi
callq 0x134e0
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x110d3(%rip), %rsi     # 0x21416
movq %r14, %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x270(%rsp), %rdi
movq %rax, %rsi
callq 0x7efe
movq %r15, %rdi
callq 0x66d0
testb $0x1, 0x218(%rsp)
je 0x108f4
movq %r15, %rdi
leaq 0x1165d(%rip), %rsi     # 0x219e8
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
movq %rax, %rdi
leaq 0x11744(%rip), %rsi     # 0x21af3
callq 0x134d5
movl %eax, %r14d
movq %r15, %rdi
callq 0x66d0
testb %r14b, %r14b
je 0x108f4
movq %r15, %rdi
leaq 0x11616(%rip), %rsi     # 0x219e8
leaq 0x28(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x13360
leaq 0x258(%rsp), %rdi
movq %rax, %rsi
pushq $0x3b
popq %rdx
callq 0x77e2
movq %r15, %rdi
callq 0x66d0
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
andq $0x0, 0x108(%rsp)
xorl %r12d, %r12d
movb %r12b, 0x110(%rsp)
leaq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
andq $0x0, 0x128(%rsp)
movb %r12b, 0x130(%rsp)
leaq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
andq $0x0, 0x90(%rsp)
movb %r12b, 0x98(%rsp)
movl %r12d, %r12d
movq 0x258(%rsp), %rsi
movq 0x260(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %r12, %rax
je 0x108d2
movq %r12, %r14
shlq $0x5, %r14
addq %r14, %rsi
leaq 0x88(%rsp), %rdi
callq 0x6200
movq %r15, %rbx
leaq 0x88(%rsp), %rdi
leaq 0x115b9(%rip), %r15     # 0x21a72
movq %r15, %rsi
xorl %edx, %edx
callq 0x6680
cmpq $-0x1, %rax
je 0x1076b
movq 0x258(%rsp), %r13
addq %r14, %r13
movq %r13, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x6680
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x6360
leaq 0x88(%rsp), %rdi
movq %rbp, %rsi
callq 0x63d0
movq %rbp, %rdi
callq 0x66d0
addq 0x258(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x6680
leaq 0x1(%rax), %rdx
leaq 0x160(%rsp), %rdi
movq %r14, %rsi
pushq $-0x1
popq %rcx
callq 0x6360
leaq 0x68(%rsp), %r14
movq %r14, %rdi
leaq 0x10ec9(%rip), %rsi     # 0x21416
leaq 0x240(%rsp), %rdx
callq 0xcaa6
movq %rbx, %r15
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
leaq 0x88(%rsp), %rdx
callq 0x13968
movq %r15, %rdi
movq %r14, %rsi
callq 0x12fb4
movq %r14, %rdi
callq 0x12f38
leaq 0x68(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x120(%rsp), %rsi
callq 0xa491
testb %al, %al
jne 0x11279
leaq 0x160(%rsp), %r14
movq %r14, %rdi
leaq 0x11527(%rip), %rsi     # 0x21af3
xorl %edx, %edx
callq 0x6680
testq %rax, %rax
je 0x10825
leaq 0x240(%rsp), %rdi
movq %r14, %rsi
pushq $0x2c
popq %rbp
movl %ebp, %edx
callq 0x78e2
leaq 0x228(%rsp), %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x77e2
movq 0x240(%rsp), %rax
movq 0x248(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq $0x1, %rcx
je 0x10859
cmpq $0x3, %rcx
jne 0x1148b
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0xfa8f(%rip), %rsi      # 0x200d0
callq 0x134d5
testb %al, %al
je 0x10686
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0x101a4(%rip), %rsi     # 0x20801
callq 0x134d5
testb %al, %al
je 0x10686
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0x1147a(%rip), %rsi     # 0x21af3
callq 0x134d5
testb %al, %al
jne 0x115b0
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0xfa37(%rip), %rsi      # 0x200d0
callq 0x13017
leaq 0x180(%rsp), %rdi
testb %al, %al
jne 0x106f6
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0x10144(%rip), %rsi     # 0x20801
callq 0x13017
leaq 0x1a0(%rsp), %rdi
testb %al, %al
jne 0x106f6
movq 0x228(%rsp), %rdi
addq $0x40, %rdi
leaq 0x11412(%rip), %rsi     # 0x21af3
callq 0x13017
leaq 0x1c0(%rsp), %rdi
testb %al, %al
je 0x11633
movq %r15, %rsi
callq 0x13546
movq 0x240(%rsp), %rax
movsd (%rax), %xmm1
xorpd %xmm0, %xmm0
movsd %xmm1, 0x8(%rsp)
ucomisd %xmm1, %xmm0
ja 0x11408
ucomisd 0x8(%rax), %xmm0
ja 0x11385
leaq 0x298(%rsp), %rdi
movq %r15, %rsi
callq 0x13572
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x240(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x330(%rsp), %rdi
movq %r15, %rsi
callq 0x13572
jmp 0x10899
leaq 0x160(%rsp), %r14
movq %r14, %rdi
leaq 0x10c99(%rip), %rsi     # 0x21416
leaq 0x68(%rsp), %rdx
callq 0xcaa6
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x13360
leaq 0x28(%rsp), %r14
movq %rbx, %r15
movq %r14, %rdi
movq %rax, %rsi
leaq 0x88(%rsp), %rdx
callq 0x13968
movq %r15, %rdi
movq %r14, %rsi
callq 0x12fb4
movq %r14, %rdi
callq 0x12f38
leaq 0x160(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
leaq 0x120(%rsp), %rsi
callq 0xa491
testb %al, %al
jne 0x112fc
movq 0xe0(%rsp), %rdi
movq 0xe8(%rsp), %rsi
movq %r15, %rdx
callq 0x16754
cmpq 0xe8(%rsp), %rax
jne 0x108ca
leaq 0xe0(%rsp), %rdi
movq %r15, %rsi
callq 0x13546
jmp 0x108ca
movq 0xe0(%rsp), %rdi
movq 0xe8(%rsp), %rsi
movq %r15, %rdx
callq 0x16754
cmpq 0xe8(%rsp), %rax
jne 0x108bd
leaq 0xe0(%rsp), %rdi
movq %r15, %rsi
callq 0x13546
jmp 0x108bd
xorpd %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0x1150e
leaq 0xe0(%rsp), %rdi
movq %r15, %rsi
callq 0x13546
movq 0x240(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x298(%rsp), %rdi
movq %r15, %rsi
callq 0x13572
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x228(%rsp), %rdi
callq 0x7f2a
leaq 0x240(%rsp), %rdi
callq 0x92fe
leaq 0x160(%rsp), %rdi
callq 0x66d0
incl %r12d
jmp 0x1046d
leaq 0x88(%rsp), %rdi
callq 0x66d0
movq %r15, %rdi
callq 0x12f38
leaq 0x258(%rsp), %rdi
callq 0x7f2a
leaq 0x9d0(%rsp), %rdi
callq 0x66d0
leaq 0xb0(%rsp), %rdi
callq 0x8034
leaq 0x318(%rsp), %rdi
callq 0x7f2a
jmp 0xf818
leaq 0x790(%rsp), %rdi
callq 0x6090
movq 0x300(%rsp), %r15
movq 0x10(%rsp), %rax
leaq 0x20(%rax), %rbx
leaq 0x75cc8(%rsp), %r14
leaq 0x2f0(%rsp), %rax
cmpq %rax, %r15
je 0x109f6
testb $0x1, 0x18(%rsp)
jne 0x109c5
xorpd %xmm0, %xmm0
movsd 0xf69e(%rip), %xmm1     # 0x20008
movq %rbx, %rdi
callq 0x6e93
movsd %xmm0, 0xa8(%rsp)
xorpd %xmm0, %xmm0
movsd 0xf681(%rip), %xmm1     # 0x20008
movq %rbx, %rdi
callq 0x6e93
movsd %xmm0, 0x8(%rsp)
xorpd %xmm0, %xmm0
movsd 0xf667(%rip), %xmm1     # 0x20008
movq %rbx, %rdi
callq 0x6e93
movapd %xmm0, %xmm2
leaq 0x40(%r15), %rdi
movsd 0xa8(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
callq 0xa9e6
leaq 0x40(%r15), %rsi
movq %r14, %rdi
callq 0x135d8
movq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0xce2c
movq %r14, %rdi
callq 0x13462
movq %r15, %rdi
callq 0x6280
movq %rax, %r15
jmp 0x10946
cmpb $0x0, 0x158(%rsp)
je 0x10a6b
movq 0x215d9(%rip), %rdi     # 0x31fe0
leaq 0x11171(%rip), %rsi     # 0x21b7f
callq 0x6330
movq %rax, %rbx
movq 0x10(%rsp), %rdi
callq 0x11eb8
movq %rbx, %rdi
callq 0x6500
movq 0x10(%rsp), %rdi
movsd 0x290(%rsp), %xmm0
callq 0x11f20
movq 0x2159e(%rip), %rdi     # 0x31fe0
leaq 0x11152(%rip), %rsi     # 0x21b9b
callq 0x6330
movq %rax, %rbx
movq 0x10(%rsp), %rdi
callq 0x11eb8
movq %rbx, %rdi
callq 0x6500
movq %rax, %rdi
callq 0x61d0
movq 0xe0(%rsp), %rbx
leaq 0x508(%rsp), %r12
leaq 0x6d0(%rsp), %r14
leaq 0x6b0(%rsp), %r15
cmpq 0xe8(%rsp), %rbx
je 0x10b94
leaq 0x298(%rsp), %rdi
movq %rbx, %rsi
callq 0x16eb0
movsd 0xf557(%rip), %xmm0     # 0x20008
movsd %xmm0, 0x18(%rsp)
leaq 0x2a0(%rsp), %rcx
cmpq %rcx, %rax
je 0x10acf
movsd 0x60(%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7f4c
movq %rax, %rbp
leaq 0x20(%rbx), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x7f4c
movq %rbp, %rdi
movq %rax, %rsi
callq 0xa491
testb %al, %al
je 0x10b3f
leaq 0x558(%rsp), %rdi
movq %rbx, %rsi
callq 0x6430
movq %r14, %rbp
movq %r14, %rdi
movq %r13, %rsi
callq 0x6430
movq 0x10(%rsp), %rdi
leaq 0x558(%rsp), %r13
movq %r13, %rsi
movq %rbp, %rdx
movsd 0x18(%rsp), %xmm0
pushq $0x7
popq %rcx
callq 0xd014
movq %rbp, %rdi
jmp 0x10b7e
leaq 0x538(%rsp), %rdi
movq %rbx, %rsi
callq 0x6430
movq %r15, %rdi
movq %r13, %rsi
callq 0x6430
movq 0x10(%rsp), %rdi
leaq 0x538(%rsp), %r13
movq %r13, %rsi
movq %r15, %rdx
movsd 0x18(%rsp), %xmm0
pushq $0x8
popq %rcx
callq 0xd014
movq %r15, %rdi
callq 0x66d0
movq %r13, %rdi
callq 0x66d0
addq $0x40, %rbx
jmp 0x10a8b
movq 0x1c0(%rsp), %rbx
leaq 0x298(%rsp), %r15
leaq 0x690(%rsp), %r12
leaq 0x670(%rsp), %r13
cmpq 0x1c8(%rsp), %rbx
je 0x10c2a
leaq 0x330(%rsp), %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %rbp
movq %r15, %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %r14
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6430
addq $0x20, %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6430
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x10(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xd192
movq %r13, %rdi
callq 0x66d0
movq %r12, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10bb4
movq 0x1a0(%rsp), %rbx
leaq 0x298(%rsp), %r15
leaq 0x650(%rsp), %r12
leaq 0x630(%rsp), %r13
cmpq 0x1a8(%rsp), %rbx
je 0x10cc0
leaq 0x330(%rsp), %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %rbp
movq %r15, %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %r14
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6430
addq $0x20, %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6430
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x10(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xd2ea
movq %r13, %rdi
callq 0x66d0
movq %r12, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10c4a
movq 0x180(%rsp), %rbx
leaq 0x298(%rsp), %r15
leaq 0x610(%rsp), %r12
leaq 0x5f0(%rsp), %r13
cmpq 0x188(%rsp), %rbx
je 0x10d56
leaq 0x330(%rsp), %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %rbp
movq %r15, %rdi
movq %rbx, %rsi
callq 0x16eb0
movq %rax, %r14
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6430
addq $0x20, %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6430
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x10(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xd46a
movq %r13, %rdi
callq 0x66d0
movq %r12, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10ce0
movq 0x200(%rsp), %rbx
leaq 0x390(%rsp), %r14
leaq 0x5d0(%rsp), %r15
cmpq 0x208(%rsp), %rbx
je 0x10ddf
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16eee
movsd 0xf27d(%rip), %xmm0     # 0x20008
movsd %xmm0, 0x18(%rsp)
leaq 0x398(%rsp), %rcx
cmpq %rcx, %rax
je 0x10db3
movq %r14, %rdi
movq %rbx, %rsi
callq 0x134e0
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6430
movq 0x10(%rsp), %rdi
movq %r15, %rsi
movsd 0x18(%rsp), %xmm0
callq 0xd7fc
movq %r15, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10d6e
movq 0x270(%rsp), %rbx
leaq 0x5b0(%rsp), %r14
leaq 0x4d8(%rsp), %r15
cmpq 0x278(%rsp), %rbx
je 0x10e3e
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6430
movq %r15, %rdi
movq %rbx, %rsi
callq 0x134e0
movsd (%rax), %xmm0
movq 0x10(%rsp), %rdi
movq %r14, %rsi
movsd 0xf1dd(%rip), %xmm1     # 0x20008
callq 0xd5ee
movq %r14, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10df7
movq 0x1e0(%rsp), %rbx
leaq 0x360(%rsp), %r14
leaq 0x590(%rsp), %r15
cmpq 0x1e8(%rsp), %rbx
je 0x10ec7
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16eee
movsd 0xf195(%rip), %xmm0     # 0x20008
movsd %xmm0, 0x18(%rsp)
leaq 0x368(%rsp), %rcx
cmpq %rcx, %rax
je 0x10e9b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x134e0
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6430
movq 0x10(%rsp), %rdi
movq %r15, %rsi
movsd 0x18(%rsp), %xmm0
callq 0xd918
movq %r15, %rdi
callq 0x66d0
addq $0x20, %rbx
jmp 0x10e56
leaq 0xe0(%rsp), %rsi
callq 0x1201c
testb %al, %al
je 0x11708
leaq 0x1c0(%rsp), %rsi
callq 0x1201c
testb %al, %al
je 0x11727
leaq 0x1a0(%rsp), %rsi
callq 0x1201c
testb %al, %al
je 0x11743
leaq 0x180(%rsp), %rsi
callq 0x1201c
testb %al, %al
je 0x1175f
leaq 0x330(%rsp), %rsi
callq 0x1216e
testb %al, %al
je 0x1177b
leaq 0x298(%rsp), %rsi
callq 0x1216e
testb %al, %al
je 0x11797
movq 0x10(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x12258
movq 0x10(%rsp), %rdi
callq 0x125f2
movl %eax, %ebx
movq 0x21079(%rip), %rdi     # 0x31fe0
leaq 0x10e7d(%rip), %rsi     # 0x21deb
callq 0x6330
movq 0x310(%rsp), %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x2104e(%rip), %rdi     # 0x31fe0
leaq 0x10e62(%rip), %rsi     # 0x21dfb
callq 0x6330
movl %ebx, %esi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x21029(%rip), %rdi     # 0x31fe0
leaq 0x10e47(%rip), %rsi     # 0x21e05
callq 0x6330
movq 0xe8(%rsp), %rsi
subq 0xe0(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20fef(%rip), %rdi     # 0x31fe0
leaq 0x10e1e(%rip), %rsi     # 0x21e16
callq 0x6330
movq 0x2c0(%rsp), %rsi
shrq %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20fc1(%rip), %rdi     # 0x31fe0
leaq 0x10e13(%rip), %rsi     # 0x21e39
callq 0x6330
movq 0x1c8(%rsp), %rsi
subq 0x1c0(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20f87(%rip), %rdi     # 0x31fe0
leaq 0x10e0a(%rip), %rsi     # 0x21e6a
callq 0x6330
movq 0x188(%rsp), %rsi
subq 0x180(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20f4d(%rip), %rdi     # 0x31fe0
leaq 0x10e03(%rip), %rsi     # 0x21e9d
callq 0x6330
movq 0x1a8(%rsp), %rsi
subq 0x1a0(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20f13(%rip), %rdi     # 0x31fe0
leaq 0x10dfc(%rip), %rsi     # 0x21ed0
callq 0x6330
movq 0x208(%rsp), %rsi
subq 0x200(%rsp), %rsi
sarq $0x5, %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20edc(%rip), %rdi     # 0x31fe0
leaq 0x10dd9(%rip), %rsi     # 0x21ee4
callq 0x6330
movq 0x3b8(%rsp), %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20eb1(%rip), %rdi     # 0x31fe0
leaq 0x10dd1(%rip), %rsi     # 0x21f07
callq 0x6330
movq 0x1e8(%rsp), %rsi
subq 0x1e0(%rsp), %rsi
sarq $0x5, %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
movq 0x20e7a(%rip), %rdi     # 0x31fe0
leaq 0x10dab(%rip), %rsi     # 0x21f18
callq 0x6330
movq 0x388(%rsp), %rsi
movq %rax, %rdi
callq 0x6270
movq %rax, %rdi
callq 0x61d0
leaq 0x360(%rsp), %rdi
callq 0x139c4
leaq 0x390(%rsp), %rdi
callq 0x139c4
leaq 0x298(%rsp), %rdi
callq 0x13a28
leaq 0x4d8(%rsp), %rdi
callq 0x139c4
leaq 0x330(%rsp), %rdi
callq 0x13a28
leaq 0x180(%rsp), %rdi
callq 0x13624
leaq 0x1a0(%rsp), %rdi
callq 0x13624
leaq 0x1c0(%rsp), %rdi
callq 0x13624
leaq 0xe0(%rsp), %rdi
callq 0x13624
leaq 0x270(%rsp), %rdi
callq 0x7f2a
leaq 0x1e0(%rsp), %rdi
callq 0x7f2a
leaq 0x200(%rsp), %rdi
callq 0x7f2a
leaq 0x508(%rsp), %rdi
callq 0x8034
leaq 0x2e8(%rsp), %rdi
callq 0x13a8c
leaq 0x140(%rsp), %rdi
callq 0x7f2a
leaq 0x790(%rsp), %rdi
callq 0x60f0
leaq 0x2c8(%rsp), %rdi
callq 0x66d0
addq $0xeaff8, %rsp          # imm = 0xEAFF8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x460(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x460(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x460(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x107b4(%rip), %rdx     # 0x21a74
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20cd8(%rip), %rsi     # 0x31fc0
movq 0x20c89(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x480(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x480(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x480(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x10731(%rip), %rdx     # 0x21a74
leaq 0x160(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x160(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20c4f(%rip), %rsi     # 0x31fc0
movq 0x20c00(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x400(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x400(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x400(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x10748(%rip), %rdx     # 0x21b14
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20bcc(%rip), %rsi     # 0x31fc0
movq 0x20b7d(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x420(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x420(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x420(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x106ac(%rip), %rdx     # 0x21afb
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20b49(%rip), %rsi     # 0x31fc0
movq 0x20afa(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x3c0(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x3c0(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x3c0(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x1065d(%rip), %rdx     # 0x21b2f
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20ac6(%rip), %rsi     # 0x31fc0
movq 0x20a77(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x3e0(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x3e0(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x3e0(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x105a6(%rip), %rdx     # 0x21afb
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x20a43(%rip), %rsi     # 0x31fc0
movq 0x209f4(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x10289(%rip), %rdi     # 0x21821
leaq 0xff68(%rip), %rsi      # 0x21507
leaq 0x10455(%rip), %rcx     # 0x219fb
movl $0x205, %edx            # imm = 0x205
callq 0x6250
leaq 0x440(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x28(%rsp), %rdi
leaq 0x440(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x440(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x104d2(%rip), %rdx     # 0x21ac9
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x68(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x209a1(%rip), %rsi     # 0x31fc0
movq 0x20952(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
leaq 0x104bb(%rip), %rdi     # 0x21af5
leaq 0xfec6(%rip), %rsi      # 0x21507
leaq 0x103b3(%rip), %rcx     # 0x219fb
movl $0x27e, %edx            # imm = 0x27E
callq 0x6250
leaq 0x4a0(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6430
leaq 0x100(%rsp), %rdi
leaq 0x4a0(%rsp), %rdx
movl 0x4(%rsp), %esi
callq 0x7a09
leaq 0x4a0(%rsp), %rdi
callq 0x66d0
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x1039e(%rip), %rdx     # 0x21a3a
leaq 0x28(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x132d4
movb $0x1, %bpl
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x6470
xorl %ebp, %ebp
movq 0x208f9(%rip), %rsi     # 0x31fc0
movq 0x208aa(%rip), %rdx     # 0x31f78
movq %r14, %rdi
callq 0x6580
jmp 0x11708
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x102c8(%rip), %rsi     # 0x219b2
movq %rax, %rdi
callq 0x6170
movq 0x208f7(%rip), %rsi     # 0x31ff0
movq 0x20868(%rip), %rdx     # 0x31f68
movq %r14, %rdi
callq 0x6580
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x10486(%rip), %rsi     # 0x21ba0
movq %rax, %rdi
callq 0x6170
jmp 0x117b1
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x10467(%rip), %rsi     # 0x21ba0
movq %rax, %rdi
callq 0x6170
jmp 0x117b1
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x104fb(%rip), %rsi     # 0x21c50
movq %rax, %rdi
callq 0x6170
jmp 0x117b1
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x104df(%rip), %rsi     # 0x21c50
movq %rax, %rdi
callq 0x6170
jmp 0x117b1
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x10584(%rip), %rsi     # 0x21d11
movq %rax, %rdi
callq 0x6170
jmp 0x117b1
pushq $0x10
popq %rdi
callq 0x61e0
movq %rax, %r14
leaq 0x105da(%rip), %rsi     # 0x21d83
movq %rax, %rdi
callq 0x6170
movq 0x20838(%rip), %rsi     # 0x31ff0
movq 0x207a9(%rip), %rdx     # 0x31f68
movq %r14, %rdi
callq 0x6580
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x66d0
testb %bpl, %bpl
jne 0x117e1
jmp 0x11d01
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
jmp 0x11d01
movq %rax, %rbx
leaq 0x4a0(%rsp), %rdi
jmp 0x11d09
jmp 0x11cef
jmp 0x11b3a
jmp 0x11b3a
jmp 0x11817
jmp 0x11817
jmp 0x11817
jmp 0x11817
jmp 0x11817
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
jmp 0x11dd2
movq %rax, %rbx
jmp 0x11e95
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
jmp 0x11e95
jmp 0x11b3a
jmp 0x11907
jmp 0x1191b
jmp 0x11b3a
jmp 0x11b3a
jmp 0x11cef
jmp 0x11cef
jmp 0x11cf4
jmp 0x11cef
movq %rax, %rbx
jmp 0x11ea2
jmp 0x11b3a
jmp 0x11889
jmp 0x11889
jmp 0x11b3a
jmp 0x11b3a
jmp 0x11889
movq %rax, %rbx
jmp 0x118d5
jmp 0x11b3a
jmp 0x11b3a
movq %rax, %rbx
leaq 0x440(%rsp), %rdi
jmp 0x1192b
jmp 0x11b3a
jmp 0x11b3a
jmp 0x11cef
jmp 0x11cef
jmp 0x118c8
jmp 0x11b3a
jmp 0x11cef
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x66d0
leaq 0x88(%rsp), %rdi
callq 0x7f2a
jmp 0x11d01
jmp 0x11cef
jmp 0x11cef
jmp 0x11cef
jmp 0x11cef
jmp 0x11907
jmp 0x1191b
jmp 0x11907
jmp 0x1191b
jmp 0x11907
jmp 0x1191b
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x66d0
testb %bpl, %bpl
jne 0x1191e
jmp 0x11926
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
leaq 0x28(%rsp), %rdi
callq 0x66d0
jmp 0x11d49
jmp 0x11d46
jmp 0x11cef
jmp 0x11b3a
jmp 0x11b3a
jmp 0x11cef
jmp 0x11cef
jmp 0x11b3a
jmp 0x11cef
jmp 0x11d3e
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x66d0
testb %bpl, %bpl
jne 0x1197c
jmp 0x11984
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
leaq 0x28(%rsp), %rdi
jmp 0x11d7f
jmp 0x11b42
movq %rax, %rbx
jmp 0x11b81
movq %rax, %rbx
leaq 0x710(%rsp), %rdi
jmp 0x11cad
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
jmp 0x1192b
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
jmp 0x1192b
movq %rax, %rbx
leaq 0x420(%rsp), %rdi
jmp 0x1192b
movq %rax, %rbx
leaq 0x400(%rsp), %rdi
jmp 0x1192b
jmp 0x11b42
jmp 0x11cef
jmp 0x11b3a
jmp 0x11cef
jmp 0x11b3a
jmp 0x11cef
jmp 0x11b3a
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x66d0
testb %bpl, %bpl
jne 0x11a25
jmp 0x11a2d
movq %rax, %rbx
movq %r14, %rdi
callq 0x62b0
leaq 0x28(%rsp), %rdi
jmp 0x11d72
jmp 0x11d3e
jmp 0x11d39
movq %rax, %rbx
leaq 0x480(%rsp), %rdi
jmp 0x11d7f
jmp 0x11cb4
jmp 0x11d46
jmp 0x11d46
jmp 0x11d46
jmp 0x11d46
movq %rax, %rbx
jmp 0x11a84
movq %rax, %rbx
jmp 0x11aa1
movq %rax, %rbx
leaq 0x6b0(%rsp), %rdi
callq 0x66d0
leaq 0x538(%rsp), %rdi
jmp 0x11d29
movq %rax, %rbx
leaq 0x6d0(%rsp), %rdi
callq 0x66d0
leaq 0x558(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
leaq 0x768(%rsp), %rdi
jmp 0x11cfc
jmp 0x11b3a
jmp 0x11cef
movq %rax, %rbx
jmp 0x11b5a
jmp 0x11b3a
jmp 0x11cd3
movq %rax, %rbx
jmp 0x11dc5
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
leaq 0x998(%rsp), %rdi
jmp 0x11d29
jmp 0x11cb4
movq %rax, %rbx
leaq 0x6f0(%rsp), %rdi
callq 0x66d0
jmp 0x11c9b
jmp 0x11c93
jmp 0x11d3e
jmp 0x11b42
jmp 0x11cef
jmp 0x11d3e
movq %rax, %rbx
jmp 0x11dab
movq %rax, %rbx
jmp 0x11db8
movq %rax, %rbx
leaq 0x578(%rsp), %rdi
callq 0x7f2a
leaq 0x4c0(%rsp), %rdi
callq 0x7f2a
jmp 0x11dc5
jmp 0x11cef
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
callq 0x66d0
leaq 0x998(%rsp), %rdi
callq 0x13462
jmp 0x11db8
movq %rax, %rbx
leaq 0x460(%rsp), %rdi
jmp 0x11d72
jmp 0x11d65
jmp 0x11d39
jmp 0x11d3e
movq %rax, %rbx
leaq 0x590(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
leaq 0x5d0(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
jmp 0x11bfb
movq %rax, %rbx
leaq 0x5f0(%rsp), %rdi
callq 0x66d0
leaq 0x610(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
jmp 0x11c2c
movq %rax, %rbx
leaq 0x630(%rsp), %rdi
callq 0x66d0
leaq 0x650(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
jmp 0x11c5d
movq %rax, %rbx
leaq 0x670(%rsp), %rdi
callq 0x66d0
leaq 0x690(%rsp), %rdi
jmp 0x11d29
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
leaq 0x75cc8(%rsp), %rdi
callq 0x13462
jmp 0x11dd2
movq %rax, %rbx
jmp 0x11ca8
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x66d0
leaq 0x28(%rsp), %rdi
callq 0x66d0
jmp 0x11cb7
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
jmp 0x11db3
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0x11da6
jmp 0x11d3e
movq %rax, %rbx
leaq 0x998(%rsp), %rdi
jmp 0x11db3
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d3e
jmp 0x11d39
jmp 0x11d65
jmp 0x11d65
movq %rax, %rbx
jmp 0x11d01
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x66d0
leaq 0x100(%rsp), %rdi
callq 0x66d0
jmp 0x11dab
jmp 0x11d39
movq %rax, %rbx
jmp 0x11d56
jmp 0x11d3e
jmp 0x11d3e
movq %rax, %rbx
leaq 0x5b0(%rsp), %rdi
callq 0x66d0
jmp 0x11dd2
jmp 0x11d65
jmp 0x11d39
jmp 0x11d65
movq %rax, %rbx
jmp 0x11d77
movq %rax, %rbx
jmp 0x11dd2
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
callq 0x7f2a
leaq 0x240(%rsp), %rdi
callq 0x92fe
jmp 0x11d77
movq %rax, %rbx
jmp 0x11d84
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x66d0
leaq 0x160(%rsp), %rdi
callq 0x66d0
leaq 0x88(%rsp), %rdi
callq 0x66d0
leaq 0x100(%rsp), %rdi
callq 0x12f38
leaq 0x258(%rsp), %rdi
callq 0x7f2a
leaq 0x9d0(%rsp), %rdi
callq 0x66d0
leaq 0xb0(%rsp), %rdi
callq 0x8034
leaq 0x318(%rsp), %rdi
callq 0x7f2a
leaq 0x360(%rsp), %rdi
callq 0x139c4
leaq 0x390(%rsp), %rdi
callq 0x139c4
leaq 0x298(%rsp), %rdi
callq 0x13a28
leaq 0x4d8(%rsp), %rdi
callq 0x139c4
leaq 0x330(%rsp), %rdi
callq 0x13a28
leaq 0x180(%rsp), %rdi
callq 0x13624
leaq 0x1a0(%rsp), %rdi
callq 0x13624
leaq 0x1c0(%rsp), %rdi
callq 0x13624
leaq 0xe0(%rsp), %rdi
callq 0x13624
leaq 0x270(%rsp), %rdi
callq 0x7f2a
leaq 0x1e0(%rsp), %rdi
callq 0x7f2a
leaq 0x200(%rsp), %rdi
callq 0x7f2a
leaq 0x508(%rsp), %rdi
callq 0x8034
leaq 0x2e8(%rsp), %rdi
callq 0x13a8c
leaq 0x140(%rsp), %rdi
callq 0x7f2a
leaq 0x790(%rsp), %rdi
callq 0x60f0
leaq 0x2c8(%rsp), %rdi
callq 0x66d0
movq %rbx, %rdi
callq 0x65d0
nop