// File: /workspace/github_cpp_makefile_star2_O3/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, 0x3b0(%rsp)
movl %edx, %ebx
movq %rsi, %r14
movq %rdi, 0x58(%rsp)
leaq 0x280(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq (%rsi), %rsi
leaq 0x790(%rsp), %rdi
movl $0x8, %edx
callq 0x65f0
movq %r14, 0xe8(%rsp)
movl %ebx, 0x178(%rsp)
leaq 0x808(%rsp), %rdi
callq 0x60b0
testb %al, %al
je 0x147ae
xorpd %xmm0, %xmm0
leaq 0x160(%rsp), %rax
movapd %xmm0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x10(%rax)
leaq 0x3f0(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x750(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x200(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x1e0(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x290(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x110(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x1c0(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x1a0(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x180(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x618(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x720(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x3c0(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x6d8(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x6a8(%rsp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x10(%rsp), %r14
leaq 0x998(%rsp), %r15
leaq 0x60(%rsp), %r12
movq %rsp, %r13
movq $0x0, 0x238(%rsp)
movq $0x0, 0xc0(%rsp)
movq $0x0, 0x230(%rsp)
movq $0x0, 0x128(%rsp)
movl $0x0, 0x4c(%rsp)
movq 0x790(%rsp), %rax
movq -0x18(%rax), %rdi
leaq 0x790(%rsp), %rbx
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %edx
movq %rbx, %rdi
leaq 0x270(%rsp), %rsi
callq 0x6600
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x13160
movl $0x3, %ecx
movq %r15, %rdi
leaq 0x270(%rsp), %rsi
xorl %edx, %edx
callq 0x6330
movq %r15, %rdi
leaq 0x18fe0(%rip), %rsi     # 0x2a87a
callq 0x6100
movl %eax, %ebx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x118c6
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
jne 0x11a34
movl $0x3, %edx
movq %r15, %rdi
leaq 0x270(%rsp), %rsi
movq $-0x1, %rcx
callq 0x6330
movq %r12, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x7e8f
movq 0x170(%rsp), %rax
movapd 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x170(%rsp)
movapd 0x160(%rsp), %xmm1
movapd %xmm0, 0x160(%rsp)
movapd %xmm1, (%rsp)
movq %rax, 0x10(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
movq %r13, %rdi
callq 0x8860
movq %r12, %rdi
callq 0x8860
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x11979
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rsi
leaq 0x18eee(%rip), %rdx     # 0x2a87e
callq 0x18915
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rsi
cmpq %rsi, %rax
setne %al
movq %rax, 0x128(%rsp)
leaq 0x18ece(%rip), %rdx     # 0x2a888
callq 0x18a06
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rsi
cmpq %rsi, %rax
setne %al
movq %rax, 0x230(%rsp)
leaq 0x18eaa(%rip), %rdx     # 0x2a88e
callq 0x18a06
movq %rax, %rbx
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %r15
movq %r15, %rsi
leaq 0x18e8e(%rip), %rdx     # 0x2a894
callq 0x18af7
cmpq %r15, %rbx
setne %cl
movq %rcx, 0xc0(%rsp)
cmpq 0x168(%rsp), %rax
setne %al
movq %rax, 0x238(%rsp)
leaq 0x998(%rsp), %r15
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x270(%rsp), %rsi
xorl %edx, %edx
callq 0x6330
movq %r15, %rdi
leaq 0x176e4(%rip), %rsi     # 0x29139
callq 0x6100
movl %eax, %ebx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x11a81
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x6310
incl 0x4c(%rsp)
testl %ebx, %ebx
je 0x11833
testb $0x1, 0x128(%rsp)
je 0x11aa9
movq 0x58(%rsp), %rax
cmpb $0x0, 0xa90(%rax)
je 0x1456c
leaq 0x5f8(%rsp), %rdi
leaq 0x270(%rsp), %rsi
movl $0x9, %edx
callq 0x7e8f
leaq 0x700(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x16a42
leaq 0x778(%rsp), %rbp
movq %rbp, %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x16a42
leaq 0x130(%rsp), %rdi
leaq 0x700(%rsp), %rbx
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x8046
movq %rbp, %rdi
callq 0x8860
movq %rbx, %rdi
callq 0x8860
leaq 0x9a8(%rsp), %rax
movq %rax, 0x998(%rsp)
movq %r15, %rdi
leaq 0x18d93(%rip), %rsi     # 0x2a8c8
leaq 0x18d91(%rip), %rdx     # 0x2a8cd
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r15, %rsi
callq 0x16acc
leaq 0x3e8(%rsp), %rdi
movq %rax, %rsi
callq 0x18d82
movq %rax, %rbx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x11b89
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rbx
jne 0x11d18
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18d20(%rip), %rsi     # 0x2a8c8
leaq 0x18d1e(%rip), %rdx     # 0x2a8cd
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x390(%rsp), %rbx
leaq 0x3a0(%rsp), %rcx
movq %rcx, 0x390(%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xa4a2
movq %r15, %rdi
movq %rbx, %rsi
callq 0xaf08
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x11c1e
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x11c34
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18c86(%rip), %rsi     # 0x2a8c8
leaq 0x18c84(%rip), %rdx     # 0x2a8cd
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x3e8(%rsp), %rdi
movq %rax, %rsi
callq 0x16b48
movq %rax, %rbx
movb 0x998(%rsp), %al
movb %al, (%rbx)
leaq 0x8(%rbx), %rdi
leaq 0x9a0(%rsp), %rsi
callq 0x61d0
leaq 0x998(%rsp), %r15
cmpq %rbx, %r15
je 0x11cd0
movq %rbx, %rcx
addq $0x28, %rcx
movq 0x75328(%rbx), %r8
movq 0x75cc0(%rsp), %r15
movq %rcx, %rdi
leaq 0x9c0(%rsp), %rsi
movq %r15, %rdx
callq 0x16e67
movq %r15, 0x75328(%rbx)
leaq 0x998(%rsp), %r15
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x11ce6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x9c0(%rsp), %rdi
callq 0xc046
movq 0x9a0(%rsp), %rdi
leaq 0x9b0(%rsp), %rax
cmpq %rax, %rdi
je 0x11d18
movq 0x9b0(%rsp), %rsi
incq %rsi
callq 0x6310
movsd 0x17308(%rip), %xmm0    # 0x29028
movsd %xmm0, 0x50(%rsp)
testb $0x1, 0x238(%rsp)
je 0x11dca
leaq 0x9a8(%rsp), %rax
movq %rax, 0x998(%rsp)
movq %r15, %rdi
leaq 0x18b46(%rip), %rsi     # 0x2a894
leaq 0x18b45(%rip), %rdx     # 0x2a89a
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r15, %rsi
callq 0x16acc
movq $0x0, 0x60(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
addq %rcx, %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
movq %r13, %rdi
movq %r12, %rsi
callq 0x19170
testb %al, %al
je 0x144f4
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x11dca
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18af6(%rip), %rsi     # 0x2a8ce
leaq 0x18af4(%rip), %rdx     # 0x2a8d3
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0xa0(%rsp), %rsi
movl $0x0, 0xa0(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
addq %rcx, %rax
movq %rcx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq %r12, %rdi
callq 0x19a2e
testb %al, %al
je 0x1449d
movl 0xa0(%rsp), %r15d
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %r12, %rdi
leaq 0x18a8d(%rip), %rsi     # 0x2a8d4
leaq 0x18a89(%rip), %rdx     # 0x2a8d7
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0x16acc
movl $0x0, 0xf0(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
addq %rcx, %rax
movq %rcx, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
leaq 0xa0(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x19a2e
testb %al, %al
je 0x144c7
movl 0xf0(%rsp), %ebx
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0xa0(%rsp), %rbp
movq %rbp, %rdi
leaq 0x1764c(%rip), %rsi     # 0x2951a
leaq 0x17647(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %rbp, %rsi
callq 0x16acc
leaq 0x370(%rsp), %rbp
leaq 0x380(%rsp), %rcx
movq %rcx, 0x370(%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0xa4a2
leaq 0x998(%rsp), %rdi
movl %r15d, %esi
movl %ebx, %edx
movsd 0x50(%rsp), %xmm0
movq %rbp, %rcx
callq 0xacac
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x11f54
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x998(%rsp), %r15
je 0x11f81
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x11f9d
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x11fb3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
movq %r15, %rdi
callq 0xad52
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x188f3(%rip), %rsi     # 0x2a8c8
leaq 0x188f1(%rip), %rdx     # 0x2a8cd
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rbx
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %r12, %rdi
leaq 0x17512(%rip), %rsi     # 0x2951a
leaq 0x1750d(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0x16acc
leaq 0x748(%rsp), %rdi
movq %rax, %rsi
callq 0x88be
movq %rax, %rdi
movq %rbx, %rsi
callq 0x61d0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1205b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12071
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testb $0x1, 0xc0(%rsp)
je 0x121cb
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18801(%rip), %rsi     # 0x2a88e
leaq 0x187ff(%rip), %rdx     # 0x2a893
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %r12, %rdi
movq %rax, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x120cf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x60(%rsp), %rax
movl $0x0, 0xa0(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
addq %rcx, %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x19d38
testb %al, %al
je 0x14544
movss 0xa0(%rsp), %xmm0
movss %xmm0, 0x50(%rsp)
movq 0x60(%rsp), %rax
movl $0x0, 0xa0(%rsp)
movq 0x20(%rax), %rcx
movq 0x28(%rax), %rax
addq %rcx, %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x19d38
testb %al, %al
je 0x1451c
movss 0xa0(%rsp), %xmm0
movss %xmm0, 0x17c(%rsp)
movq 0x60(%rsp), %rax
movl $0x0, 0xa0(%rsp)
movq 0x40(%rax), %rcx
movq 0x48(%rax), %rax
addq %rcx, %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
movq %r13, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x19d38
testb %al, %al
je 0x1458b
movss 0xa0(%rsp), %xmm2
movq %r15, %rdi
movss 0x50(%rsp), %xmm0
movss 0x17c(%rsp), %xmm1
callq 0xadb4
movq %r12, %rdi
callq 0x8860
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x186ef(%rip), %rsi     # 0x2a8c8
leaq 0x186ed(%rip), %rdx     # 0x2a8cd
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x3e8(%rsp), %rdi
movq %rax, %rsi
callq 0x16b48
movq %rax, %rbx
movq 0x9c8(%rsp), %rax
movq %rax, 0x670(%rsp)
movupd 0x998(%rsp), %xmm0
movupd 0x9a8(%rsp), %xmm1
movupd 0x9b8(%rsp), %xmm2
movapd %xmm2, 0x660(%rsp)
movapd %xmm1, 0x650(%rsp)
movapd %xmm0, 0x640(%rsp)
leaq 0x688(%rsp), %rax
movq %rax, 0x678(%rsp)
movq 0x9d0(%rsp), %rsi
movq 0x9d8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x678(%rsp), %rdi
callq 0xa4a2
movq 0x9f0(%rsp), %rax
movq %rax, 0x698(%rsp)
movq %rbx, %rdi
leaq 0x640(%rsp), %rsi
callq 0xafaa
movq 0x678(%rsp), %rdi
leaq 0x688(%rsp), %rax
cmpq %rax, %rdi
je 0x122c3
movq 0x688(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x122d9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testb $0x1, 0x128(%rsp)
je 0x129d5
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18589(%rip), %rsi     # 0x2a87e
leaq 0x1858b(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rdi
leaq 0x18678(%rip), %rsi     # 0x2a993
callq 0x6100
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12338
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x129d5
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18530(%rip), %rsi     # 0x2a87e
leaq 0x18532(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movl $0x1, %ecx
movq %rax, %rdi
leaq 0x1855f(%rip), %rsi     # 0x2a8d8
xorl %edx, %edx
callq 0x6580
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12399
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
cmpq $-0x1, %rbx
je 0x12715
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x184cd(%rip), %rsi     # 0x2a87e
leaq 0x184cf(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %r12, %rdi
movq %rax, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq 0x60(%rsp), %rdi
leaq 0x17392(%rip), %rsi     # 0x2977b
callq 0x6100
movl %eax, %ebx
movq %r12, %rdi
callq 0x8860
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x1240e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x125ad
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x1845a(%rip), %rsi     # 0x2a87e
leaq 0x1845c(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %r12, %rdi
movq %rax, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq 0x60(%rsp), %rdi
leaq 0x16ca4(%rip), %rsi     # 0x29100
callq 0x6100
movl %eax, %ebx
movq %r12, %rdi
callq 0x8860
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12481
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
jne 0x14686
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x17083(%rip), %rsi     # 0x2951a
leaq 0x1707e(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x1e0(%rsp), %rdi
movq %rax, %rsi
callq 0x8822
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x124d9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18397(%rip), %rsi     # 0x2a87e
leaq 0x18399(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0xa0(%rsp), %rdi
movq %rax, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq 0xa0(%rsp), %rax
movq $0x0, 0xf0(%rsp)
movq 0x20(%rax), %rcx
movq 0x28(%rax), %rax
addq %rcx, %rax
movq %rcx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq %r12, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x19170
testb %al, %al
je 0x14730
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %r12, %rdi
leaq 0x16f9e(%rip), %rsi     # 0x2951a
leaq 0x16f99(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0x16acc
leaq 0x6a0(%rsp), %rdi
movq %rax, %rsi
callq 0x16bec
jmp 0x126cc
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x16f5f(%rip), %rsi     # 0x2951a
leaq 0x16f5a(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x200(%rsp), %rdi
movq %rax, %rsi
callq 0x8822
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x125fd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18273(%rip), %rsi     # 0x2a87e
leaq 0x18275(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0xa0(%rsp), %rdi
movq %rax, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq 0xa0(%rsp), %rax
movq $0x0, 0xf0(%rsp)
movq 0x20(%rax), %rcx
movq 0x28(%rax), %rax
addq %rcx, %rax
movq %rcx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq %r12, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x19170
testb %al, %al
je 0x14784
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %r12, %rdi
leaq 0x16e7a(%rip), %rsi     # 0x2951a
leaq 0x16e75(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0x16acc
leaq 0x6d0(%rsp), %rdi
movq %rax, %rsi
callq 0x16bec
movsd 0x50(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x126f2
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0xa0(%rsp), %rdi
callq 0x8860
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12715
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x1815b(%rip), %rsi     # 0x2a87e
leaq 0x1815d(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rdi
leaq 0x17032(%rip), %rsi     # 0x2977b
callq 0x6100
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12766
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x12949
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18102(%rip), %rsi     # 0x2a87e
leaq 0x18104(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rdi
leaq 0x1695e(%rip), %rsi     # 0x29100
callq 0x6100
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x127bf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x12985
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x180a9(%rip), %rsi     # 0x2a87e
leaq 0x180ab(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rdi
leaq 0x18198(%rip), %rsi     # 0x2a993
callq 0x6100
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12818
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x129d5
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x18050(%rip), %rsi     # 0x2a87e
leaq 0x18052(%rip), %rdx     # 0x2a887
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq $0x0, 0xa0(%rsp)
movq (%rax), %rcx
movq 0x8(%rax), %rax
addq %rcx, %rax
movq %rcx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq %r12, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x19170
testb %al, %al
je 0x1475a
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %r12, %rdi
leaq 0x16c75(%rip), %rsi     # 0x2951a
leaq 0x16c70(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0x16acc
leaq 0x718(%rsp), %rdi
movq %rax, %rsi
callq 0x16bec
movsd 0x50(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x128f7
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x1290d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x16bff(%rip), %rsi     # 0x2951a
leaq 0x16bfa(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x290(%rsp), %rdi
movq %rax, %rsi
callq 0x8822
jmp 0x129bf
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x16bc3(%rip), %rsi     # 0x2951a
leaq 0x16bbe(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x200(%rsp), %rdi
movq %rax, %rsi
callq 0x8822
jmp 0x129bf
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x16b87(%rip), %rsi     # 0x2951a
leaq 0x16b82(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x1e0(%rsp), %rdi
movq %rax, %rsi
callq 0x8822
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x129d5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testb $0x1, 0x230(%rsp)
je 0x1311c
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x17e97(%rip), %rsi     # 0x2a888
leaq 0x17e95(%rip), %rdx     # 0x2a88d
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
movq %rax, %rdi
leaq 0x17f7c(%rip), %rsi     # 0x2a993
callq 0x6100
movl %eax, %ebx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12a34
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
testl %ebx, %ebx
je 0x1311c
movq %r14, (%rsp)
movq %r13, %rdi
leaq 0x17e3e(%rip), %rsi     # 0x2a888
leaq 0x17e3c(%rip), %rdx     # 0x2a88d
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x16acc
leaq 0x258(%rsp), %rdi
movq %rax, %rsi
movl $0x3b, %edx
callq 0x7e8f
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12a91
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
movq %r14, (%rsp)
xorl %ecx, %ecx
movq %rcx, 0x8(%rsp)
movb %cl, 0x10(%rsp)
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %rcx, 0x28(%rsp)
movb %cl, 0x30(%rsp)
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq %rcx, 0xa8(%rsp)
movb %cl, 0xb0(%rsp)
movq 0x258(%rsp), %rsi
cmpq %rsi, 0x260(%rsp)
je 0x130dd
movl $0x1, %r14d
xorl %r15d, %r15d
shlq $0x5, %r15
addq %r15, %rsi
leaq 0xa0(%rsp), %rdi
callq 0x61d0
movl $0x1, %ecx
leaq 0xa0(%rsp), %rdi
leaq 0x17df9(%rip), %rbp     # 0x2a912
movq %rbp, %rsi
xorl %edx, %edx
callq 0x6580
cmpq $-0x1, %rax
je 0x12e7a
movq 0x258(%rsp), %rbx
addq %r15, %rbx
movl $0x1, %ecx
movq %rbx, %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x6580
movq %r12, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x6330
leaq 0xa0(%rsp), %rdi
movq %r12, %rsi
callq 0x63b0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x12b86
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
addq 0x258(%rsp), %r15
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x17d75(%rip), %rsi     # 0x2a912
xorl %edx, %edx
callq 0x6580
leaq 0x1(%rax), %rdx
leaq 0xf0(%rsp), %rdi
movq %r15, %rsi
movq $-0x1, %rcx
callq 0x6330
leaq 0xd8(%rsp), %rax
movq %rax, 0xc8(%rsp)
leaq 0xc8(%rsp), %r15
movq %r15, %rdi
leaq 0x16939(%rip), %rsi     # 0x2951a
leaq 0x16934(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0xa0(%rsp), %rbx
leaq 0x130(%rsp), %rdi
movq %r15, %rsi
callq 0x16acc
leaq 0xf0(%rsp), %r15
movq %r12, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x1701e
movq %r13, %rdi
movq %r12, %rsi
callq 0x63b0
leaq 0x20(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x63b0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x12c5d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x12c79
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x12c9e
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x8(%rsp), %rdx
cmpq 0x28(%rsp), %rdx
jne 0x12cc9
testq %rdx, %rdx
je 0x14065
movq (%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6320
testl %eax, %eax
je 0x14065
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x17cbb(%rip), %rsi     # 0x2a993
xorl %edx, %edx
callq 0x6580
testq %rax, %rax
je 0x12fb4
leaq 0x218(%rsp), %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x7ffa
leaq 0x240(%rsp), %rdi
movq %r15, %rsi
movl $0x2c, %edx
callq 0x7e8f
movq 0x218(%rsp), %rax
movq 0x220(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq $0x1, %rcx
je 0x12fec
cmpq $0x3, %rcx
jne 0x141cd
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x163b0(%rip), %rsi     # 0x29100
callq 0x6100
testl %eax, %eax
je 0x12d95
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x16a0f(%rip), %rsi     # 0x2977b
callq 0x6100
testl %eax, %eax
je 0x12d95
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x17c0b(%rip), %rsi     # 0x2a993
callq 0x6100
testl %eax, %eax
jne 0x145d2
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x16358(%rip), %rsi     # 0x29100
callq 0x6100
leaq 0x180(%rsp), %rdi
testl %eax, %eax
je 0x12e05
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x169af(%rip), %rsi     # 0x2977b
callq 0x6100
leaq 0x1a0(%rsp), %rdi
testl %eax, %eax
je 0x12e05
movq 0x240(%rsp), %rdi
addq $0x40, %rdi
leaq 0x17ba3(%rip), %rsi     # 0x2a993
callq 0x6100
leaq 0x1c0(%rsp), %rdi
testl %eax, %eax
jne 0x145b3
movq %r13, %rsi
callq 0x16c68
movq 0x218(%rsp), %rax
movsd (%rax), %xmm1
xorpd %xmm0, %xmm0
movsd %xmm1, 0x50(%rsp)
ucomisd %xmm1, %xmm0
ja 0x14281
ucomisd 0x8(%rax), %xmm0
ja 0x14335
leaq 0x3b8(%rsp), %rdi
movq %r13, %rsi
callq 0x16c94
movsd 0x50(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x218(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
leaq 0x610(%rsp), %rdi
movq %r13, %rsi
callq 0x16c94
jmp 0x1302c
leaq 0x100(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0xf0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1667e(%rip), %rsi     # 0x2951a
leaq 0x16679(%rip), %rdx     # 0x2951c
callq 0xdf94
leaq 0x130(%rsp), %rdi
movq %rbx, %rsi
callq 0x16acc
leaq 0xa0(%rsp), %rdx
movq %r12, %rdi
movq %rax, %rsi
callq 0x1701e
movq %r13, %rdi
movq %r12, %rsi
callq 0x63b0
leaq 0x20(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x63b0
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x12f0d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x12f29
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x12f4e
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x8(%rsp), %rdx
cmpq 0x28(%rsp), %rdx
jne 0x12f79
testq %rdx, %rdx
je 0x14119
movq (%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x6320
testl %eax, %eax
je 0x14119
movq 0x110(%rsp), %rdi
movq 0x118(%rsp), %rsi
movq %r13, %rdx
callq 0x1a3bb
cmpq 0x118(%rsp), %rax
jne 0x13085
leaq 0x110(%rsp), %rdi
movq %r13, %rsi
callq 0x16c68
jmp 0x13085
movq 0x110(%rsp), %rdi
movq 0x118(%rsp), %rsi
movq %r13, %rdx
callq 0x1a3bb
cmpq 0x118(%rsp), %rax
jne 0x13060
leaq 0x110(%rsp), %rdi
movq %r13, %rsi
callq 0x16c68
jmp 0x13060
xorpd %xmm0, %xmm0
ucomisd (%rax), %xmm0
ja 0x143e9
leaq 0x110(%rsp), %rdi
movq %r13, %rsi
callq 0x16c68
movq 0x218(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
leaq 0x3b8(%rsp), %rdi
movq %r13, %rsi
callq 0x16c94
movsd 0x50(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x240(%rsp), %rdi
callq 0x8860
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0x13060
movq 0x228(%rsp), %rsi
subq %rdi, %rsi
callq 0x6310
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x13085
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x6310
movl %r14d, %r15d
movq 0x258(%rsp), %rsi
movq 0x260(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
incl %r14d
cmpq %r15, %rax
jne 0x12af1
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x10(%rsp), %r14
leaq 0x998(%rsp), %r15
je 0x130dd
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x130f9
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x1310f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x258(%rsp), %rdi
callq 0x8860
movq 0x9d0(%rsp), %rdi
leaq 0x9e0(%rsp), %rax
cmpq %rax, %rdi
je 0x13141
movq 0x9e0(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x130(%rsp), %rdi
callq 0x895c
leaq 0x5f8(%rsp), %rdi
callq 0x8860
jmp 0x11833
leaq 0x790(%rsp), %rdi
callq 0x6090
movq 0x400(%rsp), %rbx
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rbx
je 0x1329f
movq 0x58(%rsp), %rax
leaq 0x20(%rax), %r14
leaq 0x75cd0(%rsp), %r15
leaq 0x75ce0(%rsp), %rbp
leaq 0x75cf0(%rsp), %r12
leaq 0x75cc8(%rsp), %r13
testb $0x1, 0xc0(%rsp)
jne 0x13220
xorpd %xmm0, %xmm0
movsd 0x15e43(%rip), %xmm1    # 0x29008
movq %r14, %rdi
callq 0x72c4
movsd %xmm0, 0x128(%rsp)
xorpd %xmm0, %xmm0
movsd 0x15e26(%rip), %xmm1    # 0x29008
movq %r14, %rdi
callq 0x72c4
movsd %xmm0, 0x50(%rsp)
xorpd %xmm0, %xmm0
movsd 0x15e0c(%rip), %xmm1    # 0x29008
movq %r14, %rdi
callq 0x72c4
movapd %xmm0, %xmm2
leaq 0x40(%rbx), %rdi
movsd 0x128(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
callq 0xb42a
movb 0x40(%rbx), %al
movb %al, 0x75cc8(%rsp)
movq %rbp, 0x75cd0(%rsp)
movq 0x48(%rbx), %rsi
movq 0x50(%rbx), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xa4a2
leaq 0x68(%rbx), %rsi
movq %r12, %rdi
callq 0x17082
movq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0xe342
movq %r12, %rdi
callq 0xc046
movq 0x75cd0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13283
movq 0x75ce0(%rsp), %rsi
incq %rsi
callq 0x6310
movq %rbx, %rdi
callq 0x6250
movq %rax, %rbx
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rbx
jne 0x131af
cmpb $0x0, 0x178(%rsp)
je 0x13346
movq 0x24d2c(%rip), %rdi     # 0x37fe0
leaq 0x17764(%rip), %rsi     # 0x2aa1f
movl $0x1b, %edx
callq 0x6370
movq 0x58(%rsp), %rdi
callq 0x1542c
movq 0x24d0a(%rip), %rdi     # 0x37fe0
callq 0x64d0
movq 0x58(%rsp), %rdi
movsd 0x3b0(%rsp), %xmm0
callq 0x15494
movq 0x24ceb(%rip), %rdi     # 0x37fe0
leaq 0x1773f(%rip), %rsi     # 0x2aa3b
movl $0x4, %edx
callq 0x6370
movq 0x58(%rsp), %rdi
callq 0x1542c
movq 0x24cc9(%rip), %rdi     # 0x37fe0
callq 0x64d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x110(%rsp), %rbx
cmpq 0x118(%rsp), %rbx
je 0x13574
leaq 0x5e8(%rsp), %r14
addq $0x20, %rbx
leaq 0x748(%rsp), %r15
leaq 0x5d8(%rsp), %rbp
leaq 0x310(%rsp), %r12
leaq -0x20(%rbx), %r13
leaq 0x3b8(%rsp), %rdi
movq %r13, %rsi
callq 0x1ab62
movsd 0x15c6c(%rip), %xmm0    # 0x29008
movsd %xmm0, 0xc0(%rsp)
leaq 0x3c0(%rsp), %rcx
cmpq %rcx, %rax
je 0x133c0
movsd 0x60(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x88be
movq %rax, %r13
movq %r15, %rdi
movq %rbx, %rsi
callq 0x88be
movq 0x8(%r13), %rdx
cmpq 0x8(%rax), %rdx
jne 0x13400
testq %rdx, %rdx
je 0x134b9
movq (%rax), %rsi
movq (%r13), %rdi
callq 0x6320
testl %eax, %eax
je 0x134b9
movq %r14, 0x5d8(%rsp)
movq -0x20(%rbx), %rsi
movq -0x18(%rbx), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0xa4a2
leaq 0x320(%rsp), %rax
movq %rax, 0x310(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xa4a2
movq 0x58(%rsp), %rdi
movq %rbp, %rsi
movq %r12, %rdx
movsd 0xc0(%rsp), %xmm0
movl $0x8, %ecx
callq 0xe590
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x13480
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x5d8(%rsp), %rdi
movq %r14, %rax
cmpq %r14, %rdi
je 0x1349b
movq (%rax), %rsi
incq %rsi
callq 0x6310
leaq 0x40(%rbx), %rax
addq $0x20, %rbx
cmpq 0x118(%rsp), %rbx
movq %rax, %rbx
jne 0x13380
jmp 0x13574
leaq 0x360(%rsp), %rax
movq %rax, 0x350(%rsp)
movq -0x20(%rbx), %rsi
movq -0x18(%rbx), %rdx
addq %rsi, %rdx
leaq 0x350(%rsp), %rdi
callq 0xa4a2
leaq 0x340(%rsp), %rax
movq %rax, 0x330(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x330(%rsp), %r13
movq %r13, %rdi
callq 0xa4a2
movq 0x58(%rsp), %rdi
leaq 0x350(%rsp), %rsi
movq %r13, %rdx
movsd 0xc0(%rsp), %xmm0
movl $0x7, %ecx
callq 0xe590
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x13553
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rcx
movq %rcx, %rax
cmpq %rcx, %rdi
jne 0x13490
jmp 0x1349b
movq 0x1c0(%rsp), %rbx
cmpq 0x1c8(%rsp), %rbx
je 0x13674
leaq 0x4c8(%rsp), %r15
leaq 0x2f0(%rsp), %r12
leaq 0x4b8(%rsp), %r13
leaq 0x610(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %rbp
leaq 0x3b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %r14
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xa4a2
movq %r15, 0x4b8(%rsp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xa4a2
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x58(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xe778
movq 0x4b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1363d
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x13662
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x40, %rbx
cmpq 0x1c8(%rsp), %rbx
jne 0x135a2
movq 0x1a0(%rsp), %rbx
cmpq 0x1a8(%rsp), %rbx
je 0x13774
leaq 0x4a8(%rsp), %r15
leaq 0x2d0(%rsp), %r12
leaq 0x498(%rsp), %r13
leaq 0x610(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %rbp
leaq 0x3b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %r14
leaq 0x2e0(%rsp), %rax
movq %rax, 0x2d0(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xa4a2
movq %r15, 0x498(%rsp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xa4a2
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x58(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xe930
movq 0x498(%rsp), %rdi
cmpq %r15, %rdi
je 0x1373d
movq 0x4a8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x13762
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x40, %rbx
cmpq 0x1a8(%rsp), %rbx
jne 0x136a2
movq 0x180(%rsp), %rbx
cmpq 0x188(%rsp), %rbx
je 0x13874
leaq 0x488(%rsp), %r15
leaq 0x2b0(%rsp), %r12
leaq 0x478(%rsp), %r13
leaq 0x610(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %rbp
leaq 0x3b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ab62
movq %rax, %r14
leaq 0x2c0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xa4a2
movq %r15, 0x478(%rsp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xa4a2
movsd 0x60(%rbp), %xmm0
movsd 0x60(%r14), %xmm1
movq 0x58(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xeb10
movq 0x478(%rsp), %rdi
cmpq %r15, %rdi
je 0x1383d
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x13862
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x40, %rbx
cmpq 0x188(%rsp), %rbx
jne 0x137a2
movq 0x200(%rsp), %rbx
cmpq 0x208(%rsp), %rbx
je 0x13939
leaq 0x468(%rsp), %r12
leaq 0x6d0(%rsp), %r14
leaq 0x458(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1abcc
movsd 0x15753(%rip), %xmm0    # 0x29008
leaq 0x6d8(%rsp), %rcx
cmpq %rcx, %rax
je 0x138d1
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16bec
movsd (%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movq %r12, 0x458(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xa4a2
movq 0x58(%rsp), %rdi
movq %r15, %rsi
movsd 0xc0(%rsp), %xmm0
callq 0xef12
movq 0x458(%rsp), %rdi
cmpq %r12, %rdi
je 0x13927
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x20, %rbx
cmpq 0x208(%rsp), %rbx
jne 0x138a2
movq 0x290(%rsp), %rbx
cmpq 0x298(%rsp), %rbx
je 0x139d0
leaq 0x448(%rsp), %r12
leaq 0x438(%rsp), %r14
leaq 0x718(%rsp), %r15
movq %r12, 0x438(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xa4a2
movq %r15, %rdi
movq %rbx, %rsi
callq 0x16bec
movsd (%rax), %xmm0
movq 0x58(%rsp), %rdi
movq %r14, %rsi
movsd 0x15668(%rip), %xmm1    # 0x29008
callq 0xecf6
movq 0x438(%rsp), %rdi
cmpq %r12, %rdi
je 0x139c2
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x20, %rbx
cmpq 0x298(%rsp), %rbx
jne 0x13967
movq 0x1e0(%rsp), %rbx
cmpq 0x1e8(%rsp), %rbx
je 0x13a95
leaq 0x428(%rsp), %r12
leaq 0x6a0(%rsp), %r14
leaq 0x418(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1abcc
movsd 0x155f7(%rip), %xmm0    # 0x29008
leaq 0x6a8(%rsp), %rcx
cmpq %rcx, %rax
je 0x13a2d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16bec
movsd (%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movq %r12, 0x418(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xa4a2
movq 0x58(%rsp), %rdi
movq %r15, %rsi
movsd 0xc0(%rsp), %xmm0
callq 0xf038
movq 0x418(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a83
movq 0x428(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0x20, %rbx
cmpq 0x1e8(%rsp), %rbx
jne 0x139fe
leaq 0x110(%rsp), %rsi
callq 0x15578
testb %al, %al
je 0x147e0
leaq 0x1c0(%rsp), %rsi
callq 0x15578
testb %al, %al
je 0x14801
leaq 0x1a0(%rsp), %rsi
callq 0x15578
testb %al, %al
je 0x1481f
leaq 0x180(%rsp), %rsi
callq 0x15578
testb %al, %al
je 0x1483d
leaq 0x610(%rsp), %rsi
callq 0x1578a
testb %al, %al
je 0x1485b
leaq 0x3b8(%rsp), %rsi
callq 0x1578a
testb %al, %al
je 0x14879
movq 0x58(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x158f6
movq 0x58(%rsp), %rax
movq 0xa78(%rax), %r14
xorl %ebx, %ebx
cmpq 0xa80(%rax), %r14
je 0x13b5a
movq %r14, %rdi
callq 0xb138
addl %eax, %ebx
addq $0x75330, %r14          # imm = 0x75330
movq 0x58(%rsp), %rax
cmpq 0xa80(%rax), %r14
jne 0x13b39
movl %ebx, %ebx
movq 0x2447f(%rip), %rdi     # 0x37fe0
leaq 0x17123(%rip), %rsi     # 0x2ac8b
movl $0xf, %edx
callq 0x6370
movq 0x410(%rsp), %rsi
movq 0x2445f(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x24429(%rip), %rdi     # 0x37fe0
leaq 0x170dd(%rip), %rsi     # 0x2ac9b
movl $0x9, %edx
callq 0x6370
movq 0x24411(%rip), %rdi     # 0x37fe0
movq %rbx, %rsi
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x243d8(%rip), %rdi     # 0x37fe0
leaq 0x17096(%rip), %rsi     # 0x2aca5
movl $0x10, %edx
callq 0x6370
movq 0x118(%rsp), %rsi
subq 0x110(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq 0x243a9(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x24373(%rip), %rdi     # 0x37fe0
leaq 0x17042(%rip), %rsi     # 0x2acb6
movl $0x22, %edx
callq 0x6370
movq 0x3e0(%rsp), %rsi
shrq %rsi
movq 0x24350(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x2431a(%rip), %rdi     # 0x37fe0
leaq 0x1700c(%rip), %rsi     # 0x2acd9
movl $0x30, %edx
callq 0x6370
movq 0x1c8(%rsp), %rsi
subq 0x1c0(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq 0x242eb(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x242b5(%rip), %rdi     # 0x37fe0
leaq 0x16fd8(%rip), %rsi     # 0x2ad0a
movl $0x32, %edx
callq 0x6370
movq 0x188(%rsp), %rsi
subq 0x180(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq 0x24286(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x24250(%rip), %rdi     # 0x37fe0
leaq 0x16fa6(%rip), %rsi     # 0x2ad3d
movl $0x32, %edx
callq 0x6370
movq 0x1a8(%rsp), %rsi
subq 0x1a0(%rsp), %rsi
sarq $0x6, %rsi
shrq %rsi
movq 0x24221(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x241eb(%rip), %rdi     # 0x37fe0
leaq 0x16f74(%rip), %rsi     # 0x2ad70
movl $0x13, %edx
callq 0x6370
movq 0x208(%rsp), %rsi
subq 0x200(%rsp), %rsi
sarq $0x5, %rsi
movq 0x241bf(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x24189(%rip), %rdi     # 0x37fe0
leaq 0x16f26(%rip), %rsi     # 0x2ad84
movl $0x22, %edx
callq 0x6370
movq 0x6f8(%rsp), %rsi
movq 0x24169(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x24133(%rip), %rdi     # 0x37fe0
leaq 0x16ef3(%rip), %rsi     # 0x2ada7
movl $0x10, %edx
callq 0x6370
movq 0x1e8(%rsp), %rsi
subq 0x1e0(%rsp), %rsi
sarq $0x5, %rsi
movq 0x24107(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
movq 0x240d1(%rip), %rdi     # 0x37fe0
leaq 0x16ea2(%rip), %rsi     # 0x2adb8
movl $0x1f, %edx
callq 0x6370
movq 0x6c8(%rsp), %rsi
movq 0x240b1(%rip), %rdi     # 0x37fe0
callq 0x6230
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x62f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6240
leaq 0x6a0(%rsp), %rdi
callq 0x17166
leaq 0x6d0(%rsp), %rdi
callq 0x17166
leaq 0x3b8(%rsp), %rdi
callq 0x171de
leaq 0x718(%rsp), %rdi
callq 0x17166
leaq 0x610(%rsp), %rdi
callq 0x171de
leaq 0x180(%rsp), %rdi
callq 0x16d30
leaq 0x1a0(%rsp), %rdi
callq 0x16d30
leaq 0x1c0(%rsp), %rdi
callq 0x16d30
leaq 0x110(%rsp), %rdi
callq 0x16d30
leaq 0x290(%rsp), %rdi
callq 0x8860
leaq 0x1e0(%rsp), %rdi
callq 0x8860
leaq 0x200(%rsp), %rdi
callq 0x8860
leaq 0x748(%rsp), %rdi
callq 0x895c
leaq 0x3e8(%rsp), %rdi
callq 0x17270
leaq 0x160(%rsp), %rdi
callq 0x8860
leaq 0x790(%rsp), %rdi
callq 0x60d0
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x14053
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x6310
addq $0xeaff8, %rsp          # imm = 0xEAFF8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x588(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x578(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x578(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x578(%rsp), %rdi
cmpq %r14, %rdi
je 0x140c3
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x1683d(%rip), %rdx     # 0x2a914
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23ebb(%rip), %rsi     # 0x37fc0
movq 0x23e6c(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x5a8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x598(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x598(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x598(%rsp), %rdi
cmpq %r14, %rdi
je 0x14177
movq 0x5a8(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16789(%rip), %rdx     # 0x2a914
leaq 0xf0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xf0(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23e07(%rip), %rsi     # 0x37fc0
movq 0x23db8(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x4e8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x4d8(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x4d8(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x4d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1422b
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16790(%rip), %rdx     # 0x2a9cf
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23d53(%rip), %rsi     # 0x37fc0
movq 0x23d04(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x548(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x538(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x538(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x538(%rsp), %rdi
cmpq %r14, %rdi
je 0x142df
movq 0x548(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x166a8(%rip), %rdx     # 0x2a99b
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23c9f(%rip), %rsi     # 0x37fc0
movq 0x23c50(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x528(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x518(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x518(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x518(%rsp), %rdi
cmpq %r14, %rdi
je 0x14393
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x1660d(%rip), %rdx     # 0x2a9b4
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23beb(%rip), %rsi     # 0x37fc0
movq 0x23b9c(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x508(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x4f8(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x4f8(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x4f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x14447
movq 0x508(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16540(%rip), %rdx     # 0x2a99b
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x23b37(%rip), %rsi     # 0x37fc0
movq 0x23ae8(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x23034(%rip), %rax     # 0x374d8
leaq 0x60(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x22edd(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23a4a(%rip), %rax     # 0x37f08
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x2300a(%rip), %rax     # 0x374d8
leaq 0xa0(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x22eb0(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23a1d(%rip), %rax     # 0x37f08
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x22fdd(%rip), %rax     # 0x374d8
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x22e88(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23ad5(%rip), %rax     # 0x37fe8
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x22fb5(%rip), %rax     # 0x374d8
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x22e60(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23a5d(%rip), %rax     # 0x37f98
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x22f8d(%rip), %rax     # 0x374d8
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x22e38(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23a35(%rip), %rax     # 0x37f98
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x1614e(%rip), %rdi     # 0x2a6c1
leaq 0x15e2d(%rip), %rsi     # 0x2a3a7
leaq 0x1631a(%rip), %rcx     # 0x2a89b
movl $0x205, %edx            # imm = 0x205
callq 0x6210
leaq 0x22f46(%rip), %rax     # 0x374d8
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x22df1(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x239ee(%rip), %rax     # 0x37f98
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x163db(%rip), %rdi     # 0x2a995
leaq 0x15de6(%rip), %rsi     # 0x2a3a7
leaq 0x162d3(%rip), %rcx     # 0x2a89b
movl $0x27e, %edx            # imm = 0x27E
callq 0x6210
leaq 0x568(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x558(%rsp), %rdi
callq 0xa4a2
leaq 0x60(%rsp), %rdi
leaq 0x558(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x558(%rsp), %rdi
cmpq %r14, %rdi
je 0x14630
movq 0x568(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16325(%rip), %rdx     # 0x2a969
leaq 0xc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0xc8(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x2394e(%rip), %rsi     # 0x37fc0
movq 0x238ff(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x5c8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x5b8(%rsp), %rdi
callq 0xa4a2
movq %rsp, %rdi
leaq 0x5b8(%rsp), %rdx
movl 0x4c(%rsp), %esi
callq 0x8139
movq 0x5b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x146e2
movq 0x5c8(%rsp), %rsi
incq %rsi
callq 0x6310
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x161e4(%rip), %rdx     # 0x2a8da
leaq 0x60(%rsp), %rdi
movq %rsp, %rsi
callq 0x169ec
movb $0x1, %bpl
leaq 0x60(%rsp), %rsi
movq %r14, %rdi
callq 0x6440
xorl %ebp, %ebp
movq 0x238a4(%rip), %rsi     # 0x37fc0
movq 0x23855(%rip), %rdx     # 0x37f78
movq %r14, %rdi
callq 0x6550
jmp 0x147e0
leaq 0x22da1(%rip), %rax     # 0x374d8
leaq 0x60(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x22c4a(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23897(%rip), %rax     # 0x37fe8
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x22d77(%rip), %rax     # 0x374d8
leaq 0x60(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x22c20(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x2386d(%rip), %rax     # 0x37fe8
movq %rax, 0x10(%rdi)
callq 0x195b3
leaq 0x22d4d(%rip), %rax     # 0x374d8
leaq 0x60(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x22bf6(%rip), %rax     # 0x37390
movq %rax, 0x8(%rdi)
movq 0x23843(%rip), %rax     # 0x37fe8
movq %rax, 0x10(%rdi)
callq 0x195b3
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16090(%rip), %rsi     # 0x2a852
movq %rax, %rdi
callq 0x6150
movq 0x2381f(%rip), %rsi     # 0x37ff0
movq 0x23790(%rip), %rdx     # 0x37f68
movq %r14, %rdi
callq 0x6550
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x1624c(%rip), %rsi     # 0x2aa40
movq %rax, %rdi
callq 0x6150
jmp 0x14895
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x1622b(%rip), %rsi     # 0x2aa40
movq %rax, %rdi
callq 0x6150
jmp 0x14895
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x162bd(%rip), %rsi     # 0x2aaf0
movq %rax, %rdi
callq 0x6150
jmp 0x14895
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x1629f(%rip), %rsi     # 0x2aaf0
movq %rax, %rdi
callq 0x6150
jmp 0x14895
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16342(%rip), %rsi     # 0x2abb1
movq %rax, %rdi
callq 0x6150
jmp 0x14895
movl $0x10, %edi
callq 0x61a0
movq %rax, %r14
leaq 0x16396(%rip), %rsi     # 0x2ac23
movq %rax, %rdi
callq 0x6150
movq 0x23754(%rip), %rsi     # 0x37ff0
movq 0x236c5(%rip), %rdx     # 0x37f68
movq %r14, %rdi
callq 0x6550
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x148ca
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
testb %bpl, %bpl
jne 0x148d7
jmp 0x15201
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
jmp 0x15201
jmp 0x148ee
jmp 0x148ee
jmp 0x148ee
jmp 0x148ee
jmp 0x148ee
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
jmp 0x1532f
movq %rax, %rbx
jmp 0x153f2
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
jmp 0x153f2
movq %rax, %rbx
movq 0x5b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x152f0
movq 0x5c8(%rsp), %rsi
jmp 0x15218
movq %rax, %rbx
jmp 0x153ff
jmp 0x149ff
jmp 0x14a2e
jmp 0x14e51
jmp 0x14e51
jmp 0x14e51
jmp 0x149d7
jmp 0x149af
jmp 0x14e51
jmp 0x149d7
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x64a0
jmp 0x15201
jmp 0x14e51
jmp 0x14e45
jmp 0x14e51
jmp 0x14e51
movq %rax, %rbx
movq 0x558(%rsp), %rdi
cmpq %r14, %rdi
je 0x1523d
movq 0x568(%rsp), %rsi
jmp 0x14a51
jmp 0x151d1
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x64a0
jmp 0x14ab4
jmp 0x149d7
jmp 0x14e51
jmp 0x14e51
jmp 0x14e51
jmp 0x14e51
movq %rax, %rbx
jmp 0x14ab4
jmp 0x151d1
jmp 0x14e45
jmp 0x151d1
jmp 0x14a95
jmp 0x149ff
jmp 0x14a2e
jmp 0x149ff
jmp 0x14a2e
jmp 0x149ff
jmp 0x14a2e
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x14a27
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6310
testb %bpl, %bpl
jne 0x14a31
jmp 0x14a39
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1523d
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x1523d
jmp 0x14e45
jmp 0x151e2
jmp 0x151d1
jmp 0x14e51
jmp 0x151d1
jmp 0x14e51
jmp 0x151d1
jmp 0x1523a
jmp 0x151d1
jmp 0x14e45
jmp 0x151d1
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x14ab4
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0xa0(%rsp), %rdi
callq 0x8860
jmp 0x15201
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x14aee
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x6310
testb %bpl, %bpl
jne 0x14af8
jmp 0x14b00
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x152b6
movq 0x70(%rsp), %rsi
jmp 0x152ae
movq %rax, %rbx
movq 0x4f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1523d
movq 0x508(%rsp), %rsi
jmp 0x14a51
movq %rax, %rbx
movq 0x518(%rsp), %rdi
cmpq %r14, %rdi
je 0x1523d
movq 0x528(%rsp), %rsi
jmp 0x14a51
movq %rax, %rbx
movq 0x538(%rsp), %rdi
cmpq %r14, %rdi
je 0x1523d
movq 0x548(%rsp), %rsi
jmp 0x14a51
movq %rax, %rbx
movq 0x4d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1523d
movq 0x4e8(%rsp), %rsi
jmp 0x14a51
jmp 0x15227
jmp 0x14e51
jmp 0x151d1
jmp 0x14e51
jmp 0x14e51
jmp 0x151d1
movq %rax, %rbx
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x14bec
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x14bec
movq %rax, %rbx
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x1532f
movq 0x360(%rsp), %rsi
jmp 0x151b1
jmp 0x14e91
movq %rax, %rbx
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x14dcc
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x14dcc
movq %rax, %rbx
jmp 0x150ca
jmp 0x151d1
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x14c7d
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6310
testb %bpl, %bpl
jne 0x14c87
jmp 0x14c8f
movq %rax, %rbx
movq %r14, %rdi
callq 0x6280
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x15291
movq 0x70(%rsp), %rsi
jmp 0x15289
jmp 0x14e51
jmp 0x151d1
jmp 0x14cba
jmp 0x14cba
movq %rax, %rbx
movq %rsp, %rdi
callq 0x64a0
jmp 0x150f8
movq %rax, %rbx
movq %rsp, %rdi
callq 0x64a0
jmp 0x1516f
jmp 0x151d1
jmp 0x14e51
jmp 0x14e91
jmp 0x14e51
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15235
movq %rax, %rbx
movq 0x598(%rsp), %rdi
cmpq %r14, %rdi
je 0x152b6
movq 0x5a8(%rsp), %rsi
jmp 0x152ae
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x1532f
movq 0x9a8(%rsp), %rsi
jmp 0x151b1
jmp 0x1523a
jmp 0x1523a
jmp 0x1523a
jmp 0x1523a
jmp 0x151d1
movq %rax, %rbx
jmp 0x14dab
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x14dab
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x5d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1532f
movq 0x5e8(%rsp), %rsi
jmp 0x151b1
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
jne 0x15162
jmp 0x15315
movq %rax, %rbx
movq 0x578(%rsp), %rdi
cmpq %r14, %rdi
je 0x15291
movq 0x588(%rsp), %rsi
jmp 0x15289
movq %rax, %rbx
movq 0x678(%rsp), %rdi
leaq 0x688(%rsp), %rax
cmpq %rax, %rdi
je 0x14e2c
movq 0x688(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x10(%rsp), %r14
jmp 0x151d4
jmp 0x14e45
movq %rax, %rbx
jmp 0x15134
jmp 0x151d1
movq %rax, %rbx
jmp 0x15201
jmp 0x14e51
jmp 0x14e51
movq %rax, %rbx
jmp 0x152f0
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x1510f
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x1510f
movq %rax, %rbx
jmp 0x14ea9
jmp 0x14e91
movq %rax, %rbx
jmp 0x15315
movq %rax, %rbx
leaq 0x778(%rsp), %rdi
callq 0x8860
leaq 0x700(%rsp), %rdi
callq 0x8860
jmp 0x15322
jmp 0x15227
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x64a0
jmp 0x15134
jmp 0x15107
jmp 0x1516c
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x64a0
leaq 0x10(%rsp), %r14
jmp 0x15155
movq %rax, %rbx
jmp 0x15322
jmp 0x15227
movq %rax, %rbx
movq 0x418(%rsp), %rdi
cmpq %r12, %rdi
je 0x1532f
movq 0x428(%rsp), %rsi
jmp 0x151b1
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
movq 0x458(%rsp), %rdi
cmpq %r12, %rdi
je 0x1532f
movq 0x468(%rsp), %rsi
jmp 0x151b1
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
jmp 0x14f88
movq %rax, %rbx
movq 0x478(%rsp), %rdi
cmpq %r15, %rdi
je 0x14f88
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x1532f
movq 0x2c0(%rsp), %rsi
jmp 0x151b1
jmp 0x15227
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
jmp 0x14fe2
movq %rax, %rbx
movq 0x498(%rsp), %rdi
cmpq %r15, %rdi
je 0x14fe2
movq 0x4a8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x1532f
movq 0x2e0(%rsp), %rsi
jmp 0x151b1
jmp 0x15227
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
jmp 0x1503c
movq %rax, %rbx
movq 0x4b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1503c
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1532f
movq 0x300(%rsp), %rsi
jmp 0x151b1
jmp 0x15227
jmp 0x15227
jmp 0x15227
movq %rax, %rbx
movq 0x75cd0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1532f
movq 0x75ce0(%rsp), %rsi
jmp 0x151b1
movq %rax, %rbx
leaq 0x75cc8(%rsp), %rdi
callq 0x16bc4
jmp 0x1532f
jmp 0x15264
jmp 0x15235
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x150ca
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x998(%rsp), %rdi
callq 0x16bc4
jmp 0x15315
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15227
jmp 0x15235
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
jmp 0x152eb
movq %rax, %rbx
jmp 0x15139
movq %rax, %rbx
jmp 0x15155
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x15134
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x10(%rsp), %r14
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x15155
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x15315
movq 0x10(%rsp), %rsi
jmp 0x1530d
movq %rax, %rbx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0x15315
movq 0x9a8(%rsp), %rsi
jmp 0x1530d
movq %rax, %rbx
movq 0x438(%rsp), %rdi
cmpq %r12, %rdi
je 0x1532f
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x1532f
jmp 0x15264
jmp 0x15264
movq %rax, %rbx
jmp 0x1524a
jmp 0x15235
jmp 0x15227
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
jne 0x15213
jmp 0x152f0
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x15201
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6310
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x152f0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6310
jmp 0x152f0
jmp 0x15227
movq %rax, %rbx
jmp 0x1532f
jmp 0x15264
jmp 0x15264
jmp 0x15235
movq %rax, %rbx
jmp 0x15291
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0x8860
movq 0x218(%rsp), %rdi
testq %rdi, %rdi
je 0x15291
movq 0x228(%rsp), %rsi
subq %rdi, %rsi
jmp 0x1528c
movq %rax, %rbx
jmp 0x152b6
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x15291
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x152b6
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x6310
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x152db
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6310
movq %rsp, %rdi
callq 0x167c4
leaq 0x258(%rsp), %rdi
callq 0x8860
movq 0x9d0(%rsp), %rdi
leaq 0x9e0(%rsp), %rax
cmpq %rax, %rdi
je 0x15315
movq 0x9e0(%rsp), %rsi
incq %rsi
callq 0x6310
leaq 0x130(%rsp), %rdi
callq 0x895c
leaq 0x5f8(%rsp), %rdi
callq 0x8860
leaq 0x6a0(%rsp), %rdi
callq 0x17166
leaq 0x6d0(%rsp), %rdi
callq 0x17166
leaq 0x3b8(%rsp), %rdi
callq 0x171de
leaq 0x718(%rsp), %rdi
callq 0x17166
leaq 0x610(%rsp), %rdi
callq 0x171de
leaq 0x180(%rsp), %rdi
callq 0x16d30
leaq 0x1a0(%rsp), %rdi
callq 0x16d30
leaq 0x1c0(%rsp), %rdi
callq 0x16d30
leaq 0x110(%rsp), %rdi
callq 0x16d30
leaq 0x290(%rsp), %rdi
callq 0x8860
leaq 0x1e0(%rsp), %rdi
callq 0x8860
leaq 0x200(%rsp), %rdi
callq 0x8860
leaq 0x748(%rsp), %rdi
callq 0x895c
leaq 0x3e8(%rsp), %rdi
callq 0x17270
leaq 0x160(%rsp), %rdi
callq 0x8860
leaq 0x790(%rsp), %rdi
callq 0x60d0
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x15424
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x6310
movq %rbx, %rdi
callq 0x65b0