// File: /workspace/github_cpp_makefile_star2_O1/Luthaf[P]zeopp/ray.cc
// Function: calcRaysInAV(ATOM_NETWORK*, ATOM_NETWORK*, bool, double, double, int, std::ostream&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void calcRaysInAV(ATOM_NETWORK *hiaccatmnet, ATOM_NETWORK *orgatmnet, bool highAccuracy, double r_probe_chan,double r_probe,int numSamples, ostream &output, bool visualize,string option){

  ATOM_NETWORK *cell;

  if(highAccuracy) cell=orgatmnet; else cell = hiaccatmnet; // this ensures that the loops below loop over original atoms
                                                                // and not "high-acuracy" clusters, which are used only for
                                                                // voronoi decomposition

  // Create an object that handles analysis of accessibility of sampled points
  AccessibilityClass accessAnalysis;
  if(highAccuracy) accessAnalysis.setupAndFindChannels(hiaccatmnet, orgatmnet, highAccuracy, r_probe_chan, r_probe);
    else accessAnalysis.setupAndFindChannels(hiaccatmnet, hiaccatmnet, highAccuracy, r_probe_chan, r_probe);


  srand(randSeed); //randSeed can be set in network.h
  
  //Initialize Ray Trace World
  vector<Sphere> atoms;
  convertAtomToSphere(cell,atoms);
  vector<Sphere> nodes;
  convertNodeToSphere(accessAnalysis.vornet,nodes,accessAnalysis.accessInfo);
  vector<Plane> faces;
  calcPlanesToCell(cell,faces);
  
  //Duplicate the nodes and atoms that intersect with the plane faces	
  duplicateSpheresOnFace(cell,atoms,faces);
  duplicateSpheresOnFace(cell,nodes,faces);	
  
  //Lists of Accessible, Inaccessible, and Resampled Rays
  vector<ray> axsray; //List of successful rays that were shot
  vector<ray> inaxsray;
  vector<ray> resampledray;  // List of resampled rays

#if DEBUG
  //List Atoms, Nodes, and Planes
  cout << "List of Atoms: " << endl;
  for (unsigned int i=0; i<atoms.size(); i++)
    {
      cout << "Center: " << atoms[i].center << " Radius: " << atoms[i].radius << endl;;
    }
  cout << "List of Nodes: " << endl;
  for (unsigned int i=0; i<nodes.size(); i++)
    {
      cout << "Center: " << nodes[i].center << " Radius: " << nodes[i].radius << endl;;
    }
  cout << "List of Cell Wall Faces: " << endl;
  for (unsigned int i=0; i<faces.size(); i++)
    {
      cout << "Point: " << faces[i].point << " Normal: " << faces[i].normal << endl;;
    }
#endif
  
  //Begin Implementaitons of Ray Tracing Algorithm
  cout << "Begin Ray Tracing Analysis: " << endl;
  if (option.compare("atom") == 0)
    {
      cout << "Atom Implementation Chosen: " << endl;
      cout << "Number of Samples: " << numSamples << endl;
      ray rand_ray;
      ray opposite_rand_ray;
      hitdata hitobject;
      for (int i=0; i<numSamples; i++)
	{
	  rand_ray.base =  cell->abc_to_xyz(genRandomPoint());
	  rand_ray.vector = genRandomVec();
	  
	  bool point_accessible = accessAnalysis.isVPointAccessible(rand_ray.base); 
	  
	  if (point_accessible == false)
	    {
              rand_ray.vector = Point(0,0,0);
	      inaxsray.push_back(rand_ray);
	    }
	  else //point is accessible
	    {
	      opposite_rand_ray.base = rand_ray.base;
	      opposite_rand_ray.vector  = rand_ray.vector.scale(-1);
	      
	      rayTraceToSphere(cell,atoms,rand_ray,faces,hitobject);
	      rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
	      
              hitobject.dist = 0.0;
              hitobject.hit = false;
	      hitobject.object = NULL;
	      hitobject.id = -1;
	      hitobject.hitpoint = Point(0,0,0);
	      
	      //Test negative of ray
	      rayTraceToSphere(cell,atoms,opposite_rand_ray,faces,hitobject);
	      opposite_rand_ray.vector = opposite_rand_ray.vector.scale(hitobject.dist);
	      
	      rand_ray.base = rand_ray.base + opposite_rand_ray.vector;
	      rand_ray.vector = rand_ray.vector - opposite_rand_ray.vector;
	      
	      axsray.push_back(rand_ray);
	      
	      hitobject.dist = 0.0;
              hitobject.hit = false;
	      hitobject.object = NULL;
	      hitobject.id = -1;
	      hitobject.hitpoint = Point(0,0,0);
	      
	    }
	}
    }

  if (option.compare("node") == 0)
    {
      cout << "Node Implementation Chosen: " << endl;
      cout << "Number of Samples: " << numSamples << endl;
      int ndx = 0;
      ray rand_ray;
      ray opposite_rand_ray;
      hitdata hitobject;
      for (int i=0; i<numSamples; i++)
	{
	  do {
	    ndx++;
	    if (ndx >= accessAnalysis.accessInfo.size())
	      {
		ndx = 0;
	      }
	  } while(accessAnalysis.accessInfo[ndx] != true);
	  rand_ray.base = nodes[ndx].center;  
	  rand_ray.vector = genRandomVec();
	  
	  opposite_rand_ray.base = rand_ray.base;
	  opposite_rand_ray.vector  = rand_ray.vector.scale(-1);
	  
	  rayTraceToSphere(cell,atoms,rand_ray,faces,hitobject);
	  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
	  
	  hitobject.dist = 0.0;
	  hitobject.hit = false;
	  hitobject.object = NULL;
	  hitobject.id = -1;
	  hitobject.hitpoint = Point(0,0,0);
	  
	  //Test negative of ray
	  rayTraceToSphere(cell,atoms,opposite_rand_ray,faces,hitobject);
	  opposite_rand_ray.vector = opposite_rand_ray.vector.scale(hitobject.dist);
	  
	  rand_ray.base = rand_ray.base + opposite_rand_ray.vector;
	  rand_ray.vector = rand_ray.vector - opposite_rand_ray.vector;
	  
	  axsray.push_back(rand_ray);
	  
	  hitobject.dist = 0.0;
	  hitobject.hit = false;
	  hitobject.object = NULL;
	  hitobject.id = -1;
	  hitobject.hitpoint = Point(0,0,0);
	}
    }

  
  //Does not require to be found out if point is accessible
  if (option.compare("sphere") == 0)
    {
      cout << "Sphere Implementation Chosen: " << endl;
      cout << "Number of Samples: " << numSamples << endl;
      ray rand_ray;
      ray opposite_rand_ray;
      hitdata hitobject;
      for (int i=0; i<numSamples; i++)
	{
	  rand_ray.base =  cell->abc_to_xyz(genRandomPoint());
	  rand_ray.vector = genRandomVec();
	  opposite_rand_ray.base = rand_ray.base;
	  opposite_rand_ray.vector  = rand_ray.vector.scale(-1);
	      
	  rayTraceInsideSphere(cell,nodes,rand_ray,hitobject);
	  
	  if (hitobject.hit == false)
	    {
	      rand_ray.vector = Point(0,0,0);
	      inaxsray.push_back(rand_ray);
	    }
	  else
	    { //It was traveling within a sphere    
	      rand_ray.vector = rand_ray.vector.scale(hitobject.dist);

              hitobject.dist = 0.0;
              hitobject.hit = false;
	      hitobject.id = -1;
	      hitobject.object = NULL;
	      hitobject.hitpoint = Point(0,0,0);

	      rayTraceInsideSphere(cell,nodes,opposite_rand_ray,hitobject);
	      opposite_rand_ray.vector = opposite_rand_ray.vector.scale(hitobject.dist);

	      rand_ray.base = rand_ray.base + opposite_rand_ray.vector;
	      rand_ray.vector = rand_ray.vector - opposite_rand_ray.vector;

	      axsray.push_back(rand_ray);

	      hitobject.dist = 0.0;
              hitobject.hit = false;
	      hitobject.object = NULL;
	      hitobject.id = -1;
	      hitobject.hitpoint = Point(0,0,0);
	    }
	}
    }
  
  //Does not require to be found out if point is accessible
  if (option.compare("andrew_sphere") == 0)
    {
      cout << "Andrew's Sphere Implementation Chosen: " << endl;
      cout << "Number of Samples: " << numSamples << endl;
      ray rand_ray;
      ray opposite_rand_ray;
      ray init_ray;
      ray opposite_init_ray;
      double distance = 0.0;
      hitdata hitobject;
      bool inside_node = true;
      for (int i=0; i<numSamples; i++)
	{
	  distance = 0.0;
	  
	  rand_ray.base =  cell->abc_to_xyz(genRandomPoint());
	  rand_ray.vector = genRandomVec();
	  
	  //Ray in the opposite direction
	  opposite_rand_ray.base = rand_ray.base;
	  opposite_rand_ray.vector  = rand_ray.vector.scale(-1);
	  
	  //For this implementation I need a reference to the original ray
	  init_ray = rand_ray;
	  opposite_init_ray = opposite_rand_ray;
	  
	  if (findSphereOfPoint(rand_ray.base,nodes,hitobject.id) == false)
	    {
	      inside_node = false; //Point is not within a node
	    }
	  
	  while(distance < MAXRAYDIST) //Iterate Ray untill it reaches max distance
	    {	      
	      if (inside_node == false)
		{
		  rayTraceToSphere(cell,nodes,rand_ray,faces,hitobject);
		  
		  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
		  rand_ray.base = init_ray.base + init_ray.vector.scale(distance);
		  inaxsray.push_back(rand_ray);
		  
		  //Update Total Info
		  distance += hitobject.dist;
		  rand_ray.vector = init_ray.vector;
		  rand_ray.base = cell->shiftXYZInUC(hitobject.hitpoint+rand_ray.vector.scale(threshold));
		  
		  hitobject.dist = 0.0;
		  hitobject.hit = false;
		  hitobject.hitpoint = Point(0,0,0); 
		  hitobject.id = -1;
		  hitobject.object = NULL;
		  
		  inside_node = true; //Now inside node
		}
	      else
		{ //Shoot Through Nodes    
		  rayTraceInsideSphere(cell,nodes,rand_ray,hitobject);
		  
		  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
		  rand_ray.base = init_ray.base + init_ray.vector.scale(distance);
		  axsray.push_back(rand_ray);
		  
		  //Update Total Info
		  distance += hitobject.dist;
		  rand_ray.vector = init_ray.vector;
		  rand_ray.base = cell->shiftXYZInUC(hitobject.hitpoint+rand_ray.vector.scale(threshold));
		  
		  hitobject.dist = 0.0;
		  hitobject.hit = false;
		  hitobject.hitpoint = Point(0,0,0);  
		  //Notice that I am not resetting hitobject.id and setting object
		  hitobject.object = &(nodes[hitobject.id]);
		  
		  inside_node = false; //Now outside of nodes
		}
	    }	  
	}
      cout << "Ray Andrew Sphere Implementation Completed:" << endl;
    }
  
  
  //Does not require to be found out if point is accessible
  if (option.compare("andrew_atom") == 0)
    {
      cout << "Andrew's Atom Implementation Chosen: " << endl;
      cout << "Number of Samples: " << numSamples << endl;
      ray rand_ray;
      ray opposite_rand_ray;
      ray init_ray;
      ray opposite_init_ray;
      double distance = 0.0;
      hitdata hitobject;
      bool inside_atom = false;
      bool inside_accessible_region;
      for (int i=0; i<numSamples; i++)
	{
	  distance = 0.0;
	  
	  rand_ray.base =  cell->abc_to_xyz(genRandomPoint());
	  rand_ray.vector = genRandomVec();
	  
	  //Ray in the opposite direction
	  opposite_rand_ray.base = rand_ray.base;
	  opposite_rand_ray.vector  = rand_ray.vector.scale(-1);
	  
	  //For this implementation I need a reference to the original ray
	  init_ray = rand_ray;
	  opposite_init_ray = opposite_rand_ray;
	  
	  if ((findSphereOfPoint(rand_ray.base,atoms,hitobject.id) == true))
	    {
	      inside_atom = true; //Point is within an atom
	    }
	  else //Point is not within an atom
	    {
	      inside_atom = false;
	    }
	  inside_accessible_region = accessAnalysis.isVPointAccessible(rand_ray.base);
	  
	  while(distance < MAXRAYDIST) //Iterate Ray untill it reaches max distance
	    {	      
	      if ((inside_atom == false) && (inside_accessible_region == true))
		{
		  rayTraceToSphere(cell,atoms,rand_ray,faces,hitobject);
		  
		  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
		  //rand_ray.base = init_ray.base + init_ray.vector.scale(distance);
		  axsray.push_back(rand_ray);
		  
		  //Update Total Info
		  distance += hitobject.dist;
		  rand_ray.vector = init_ray.vector;
		  rand_ray.base = cell->shiftXYZInUC(hitobject.hitpoint+rand_ray.vector.scale(threshold));
		  //Reset all hitobject data
		  hitobject.dist = 0.0;
		  hitobject.hit = false;
		  hitobject.hitpoint = Point(0,0,0); 
		  hitobject.id = -1;
		  hitobject.object = NULL;
		  
		  inside_atom = true; //Now inside atom
		}
	      else if ((inside_atom == false) && (inside_accessible_region == false))
		{ //not within an atom but in inaccessible region
		  rayTraceToSphere(cell,atoms,rand_ray,faces,hitobject);
		  
		  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
		  //rand_ray.base = init_ray.base + init_ray.vector.scale(distance);
		  inaxsray.push_back(rand_ray);
		  
		  //Update Total Info
		  distance += hitobject.dist;
		  rand_ray.vector = init_ray.vector;
		  rand_ray.base = cell->shiftXYZInUC(hitobject.hitpoint+init_ray.vector.scale(threshold));
		  //Reset all hitobject data
		  hitobject.dist = 0.0;
		  hitobject.hit = false;
		  hitobject.hitpoint = Point(0,0,0); 
		  hitobject.object = NULL;
		  hitobject.id = -1;
		  
		  inside_atom = true; //Now inside atom
		}
	      else // Ray is inside of atoms
		{    
		  rayTraceInsideSphere(cell,atoms,rand_ray,hitobject);
		  		  
		  rand_ray.vector = rand_ray.vector.scale(hitobject.dist);
		  //rand_ray.base = init_ray.base + init_ray.vector.scale(distance);
		  //This is where I would push data on traveling through atoms  
		  //but it is not here yet
   
		  //Update Total Info
		  distance += hitobject.dist;
		  rand_ray.vector = init_ray.vector;
		  rand_ray.base = cell->shiftXYZInUC(hitobject.hitpoint+init_ray.vector.scale(threshold));
		 
		  //Reset all hitobject data besides the last object id hit
		  hitobject.dist = 0.0;
		  hitobject.hit = false;
		  hitobject.hitpoint = Point(0,0,0);  
		  //Notice that I am not resetting hitobject.id and setting object
		  hitobject.object = &(nodes[hitobject.id]);
		  
		  //So at this point I know that I am outside an atom however am
		  //I in an accesible region or not?
		  inside_atom = false; //Now outside of atoms and in accessible region
		  inside_accessible_region = accessAnalysis.isVPointAccessible(rand_ray.base);
		}
	    }	  
	}
      cout << "Ray Andrew Atom Implementation Completed:" << endl;
    }
  
  
  //Post Process Information
  if(visualize)
    {
      reportRays(output, axsray, inaxsray, true);
      //reportAtoms(output,atoms);
      //reportNodes(output,nodes);
    }
  else //no visulization then output a histogram
    {
      //This parameter can be changed in network.h
      reportHistogram(output,BINSIZE,MAXBINS,axsray);
    }
  reportRayInfo(axsray); // A more detailed output of ray info from program

  //FREE MEMORY
  accessAnalysis.deconstruct();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xdf8, %rsp            # imm = 0xDF8
movl %r9d, 0x1f4(%rsp)
movq %r8, 0x1f8(%rsp)
movl %ecx, 0x3c(%rsp)
movsd %xmm1, 0xc8(%rsp)
movsd %xmm0, 0x108(%rsp)
movl %edx, %ebx
movq %rsi, %r15
movq %rdi, %r14
testl %edx, %edx
cmoveq %rdi, %r15
leaq 0x3b8(%rsp), %r12
movq %r12, %rdi
callq 0x48f44
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
movl %ebx, %ecx
movsd 0x108(%rsp), %xmm0
movsd 0xc8(%rsp), %xmm1
callq 0x95b90
movl $0x3b4ca6f5, %edi       # imm = 0x3B4CA6F5
callq 0x4410
xorpd %xmm0, %xmm0
leaq 0x1b0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
movq %r15, %rdi
callq 0x4c500
leaq 0x190(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xc80(%rsp), %rdi
leaq 0xd48(%rsp), %rdx
callq 0x4c391
xorpd %xmm0, %xmm0
leaq 0x1d0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
movq %r15, %rdi
callq 0x4b8e2
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
movq %r15, %rdi
callq 0x4bd0f
leaq 0x190(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
movq %r15, %rdi
callq 0x4bd0f
xorpd %xmm0, %xmm0
movapd %xmm0, 0x110(%rsp)
xorl %eax, %eax
movq %rax, 0x120(%rsp)
movq %rax, 0x150(%rsp)
movapd %xmm0, 0x140(%rsp)
movq 0x14a01b(%rip), %rbx    # 0x196fc0
leaq 0x107440(%rip), %rsi    # 0x1543ec
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x149fe9(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0xe30(%rsp), %rbx
leaq 0x10c258(%rip), %rsi    # 0x15924b
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4d4dc
movq 0x149fb6(%rip), %rbx    # 0x196fc0
leaq 0x107486(%rip), %rsi    # 0x154497
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x149f84(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x149f70(%rip), %rdi    # 0x196fc0
leaq 0x1073b2(%rip), %rsi    # 0x154409
movl $0x13, %edx
callq 0x44e0
movq 0x149f58(%rip), %rdi    # 0x196fc0
movl 0x3c(%rsp), %esi
callq 0x4750
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x40(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x85436
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x178(%rsp), %r14
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x85436
leaq 0xd0(%rsp), %rdi
callq 0x504d0
cmpl $0x0, 0x3c(%rsp)
jle 0x4d4d4
leaq 0x90(%rsp), %r13
xorl %r12d, %r12d
movl 0x3c(%rsp), %ebp
leaq 0x3a0(%rsp), %rdi
callq 0x4c8b5
movq 0x3b0(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x3a0(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x52144
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x90(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r13, %rdi
callq 0x4c7ad
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rbx)
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsp)
movapd 0x40(%rsp), %xmm0
movupd %xmm0, (%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x96c4e
testb %al, %al
je 0x4d3e5
movq 0x50(%rsp), %rax
movq %rax, 0x170(%rsp)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x160(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
movsd 0x1060f0(%rip), %xmm0   # 0x1532d0
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r14)
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rbx)
movq %r12, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movq %r12, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rcx)
movapd 0x160(%rsp), %xmm0
movapd 0x170(%rsp), %xmm1
movaps 0x180(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
movq %r13, %rdi
movq %r14, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r14)
movq 0x10(%r14), %rax
movq %rax, 0x10(%rsp)
movups (%r14), %xmm0
movups %xmm0, (%rsp)
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
callq 0x857a0
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x90(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x10(%r14), %rax
movq %rax, 0x10(%rsp)
movups (%r14), %xmm0
movups %xmm0, (%rsp)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x8576e
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4d463
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x118(%rsp)
jmp 0x4d475
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x4d44f
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x4d4cc
leaq 0x140(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
jmp 0x4d4cc
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movq %r12, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movq %r12, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rcx)
decl %ebp
jne 0x4d122
movq 0xe30(%rsp), %rbx
leaq 0x10afce(%rip), %rsi    # 0x1584b1
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
movq %r15, 0x130(%rsp)
jne 0x4d9ae
movq 0x149abe(%rip), %rbx    # 0x196fc0
leaq 0x106f14(%rip), %rsi    # 0x15441d
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x149a8c(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x149a78(%rip), %rdi    # 0x196fc0
leaq 0x106eba(%rip), %rsi    # 0x154409
movl $0x13, %edx
callq 0x44e0
movq 0x149a60(%rip), %rdi    # 0x196fc0
movl 0x3c(%rsp), %esi
callq 0x4750
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x40(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x58(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x178(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0xd0(%rsp), %rdi
callq 0x504d0
cmpl $0x0, 0x3c(%rsp)
jle 0x4d9a6
movabsq $-0x8000000000000000, %rbp # imm = 0x8000000000000000
xorl %r13d, %r13d
leaq 0x3f(%rbp), %rbx
xorl %edx, %edx
xorl %r14d, %r14d
movl %edx, 0xc8(%rsp)
movq 0xd48(%rsp), %rax
movq 0xd58(%rsp), %rcx
movl 0xd60(%rsp), %edx
subq %rax, %rcx
leaq (%rdx,%rcx,8), %rcx
incl %r14d
movslq %r14d, %r14
cmpq %r14, %rcx
cmovbel %r13d, %r14d
movslq %r14d, %rdx
leaq 0x3f(%rdx), %rsi
testq %rdx, %rdx
cmovnsq %rdx, %rsi
sarq $0x6, %rsi
leaq (%rax,%rsi,8), %rsi
movq %rdx, %rdi
andq %rbx, %rdi
xorl %r8d, %r8d
cmpq %rbp, %rdi
setbe %r8b
movq -0x8(%rsi,%r8,8), %rsi
btq %rdx, %rsi
jae 0x4d640
movq 0x190(%rsp), %rax
shlq $0x5, %rdx
movups (%rax,%rdx), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x10(%rax,%rdx), %rax
movq %rax, 0x50(%rsp)
leaq 0x90(%rsp), %r12
movq %r12, %rdi
callq 0x4c7ad
movq 0xa0(%rsp), %rax
leaq 0x58(%rsp), %rsi
movq %rax, 0x10(%rsi)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rsi)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x160(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x170(%rsp)
movq %r12, %rdi
movsd 0x105be2(%rip), %xmm0   # 0x1532d0
callq 0x85590
movq 0xa0(%rsp), %rax
leaq 0x178(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rcx)
movaps 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
leaq 0x90(%rsp), %r15
movq %r15, %rdi
leaq 0x58(%rsp), %r12
movq %r12, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r12)
movq %r13, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movq %r13, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r15, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rcx)
movaps 0x160(%rsp), %xmm0
movapd 0x170(%rsp), %xmm1
movaps 0x180(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x130(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
leaq 0x178(%rsp), %r12
movsd 0xf0(%rsp), %xmm0
leaq 0x90(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
callq 0x857a0
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x90(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x58(%rsp), %r12
movq %r12, %rsi
callq 0x8576e
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4d91e
movaps 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x118(%rsp)
jmp 0x4d930
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movq %r13, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movq %r13, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
leaq 0x90(%rsp), %rdi
callq 0x85436
movl 0xc8(%rsp), %edx
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rcx)
incl %edx
cmpl 0x3c(%rsp), %edx
movq 0x130(%rsp), %r15
jne 0x4d61b
movq 0xe30(%rsp), %rbx
leaq 0x1119dc(%rip), %rsi    # 0x15f391
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4de78
movq 0x1495f4(%rip), %rbx    # 0x196fc0
leaq 0x106a70(%rip), %rsi    # 0x154443
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x1495c2(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x1495ae(%rip), %rdi    # 0x196fc0
leaq 0x1069f0(%rip), %rsi    # 0x154409
movl $0x13, %edx
callq 0x44e0
movq 0x149596(%rip), %rdi    # 0x196fc0
movl 0x3c(%rsp), %esi
callq 0x4750
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x40(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x85436
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x178(%rsp), %r14
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x85436
leaq 0xd0(%rsp), %rdi
callq 0x504d0
cmpl $0x0, 0x3c(%rsp)
jle 0x4de70
leaq 0x90(%rsp), %r13
xorl %r12d, %r12d
movl 0x3c(%rsp), %ebp
leaq 0x388(%rsp), %rdi
callq 0x4c8b5
movq 0x398(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x388(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x52144
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x90(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r13, %rdi
callq 0x4c7ad
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rbx)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x160(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x170(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
movsd 0x105758(%rip), %xmm0   # 0x1532d0
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r14)
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4c91a
cmpb $0x0, 0xd0(%rsp)
je 0x4dd7b
movsd 0xf0(%rsp), %xmm0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rbx)
movq %r12, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
movq %r12, 0x100(%rsp)
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%rcx)
movapd 0x160(%rsp), %xmm0
movapd 0x170(%rsp), %xmm1
movaps 0x180(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4c91a
movsd 0xf0(%rsp), %xmm0
movq %r13, %rdi
movq %r14, %rsi
callq 0x85590
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0x90(%rsp), %xmm0
movups %xmm0, (%r14)
movq 0x10(%r14), %rax
movq %rax, 0x10(%rsp)
movups (%r14), %xmm0
movups %xmm0, (%rsp)
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
callq 0x857a0
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x90(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x10(%r14), %rax
movq %rax, 0x10(%rsp)
movups (%r14), %xmm0
movups %xmm0, (%rsp)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x8576e
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4dde9
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x118(%rsp)
jmp 0x4ddfb
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x4de5c
movapd 0x40(%rsp), %xmm0
movapd 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x4de52
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movq %r12, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
movq %r12, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x85436
movq 0xa0(%rsp), %rax
leaq 0xd8(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0x90(%rsp), %xmm0
movupd %xmm0, (%rcx)
decl %ebp
jne 0x4dae4
jmp 0x4de70
leaq 0x140(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
jmp 0x4de52
movq 0xe30(%rsp), %rbx
leaq 0x11150b(%rip), %rsi    # 0x15f38a
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4e69c
movq 0x14912a(%rip), %rbx    # 0x196fc0
leaq 0x10659d(%rip), %rsi    # 0x15443a
movl $0x27, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x1490f8(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x1490e4(%rip), %rdi    # 0x196fc0
leaq 0x106526(%rip), %rsi    # 0x154409
movl $0x13, %edx
callq 0x44e0
movq 0x1490cc(%rip), %rdi    # 0x196fc0
movl 0x3c(%rsp), %esi
callq 0x4750
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x40(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x85436
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x178(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x90(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0xa8(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x200(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x218(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0xd0(%rsp), %rdi
callq 0x504d0
cmpl $0x0, 0x3c(%rsp)
jle 0x4e64e
movb $0x1, %r14b
leaq 0x70(%rsp), %r12
xorl %ebp, %ebp
leaq 0x370(%rsp), %rdi
callq 0x4c8b5
movq 0x380(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x370(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x52144
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r12, %rdi
callq 0x4c7ad
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x160(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x170(%rsp)
movq %r12, %rdi
movq %rbx, %rsi
movsd 0x10523c(%rip), %xmm0   # 0x1532d0
callq 0x85590
movl %ebp, 0x13c(%rsp)
movq 0x80(%rsp), %rax
leaq 0x178(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rcx)
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movaps %xmm0, 0x90(%rsp)
movaps %xmm1, 0xa0(%rsp)
movaps %xmm2, 0xb0(%rsp)
movaps 0x160(%rsp), %xmm0
movapd 0x170(%rsp), %xmm1
movaps 0x180(%rsp), %xmm2
movaps %xmm0, 0x200(%rsp)
movapd %xmm1, 0x210(%rsp)
movaps %xmm2, 0x220(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x80(%rsp)
movapd 0x40(%rsp), %xmm0
movapd %xmm0, 0x70(%rsp)
movq 0x190(%rsp), %rax
cmpq %rax, 0x198(%rsp)
setne %r15b
je 0x4e1c2
xorl %r13d, %r13d
xorl %ebp, %ebp
shlq $0x5, %r13
movq 0x10(%rax,%r13), %rcx
movq %rcx, 0x28(%rsp)
movups (%rax,%r13), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rsp)
movapd 0x70(%rsp), %xmm0
movupd %xmm0, (%rsp)
callq 0x86935
movq 0x190(%rsp), %rax
movsd 0x18(%rax,%r13), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x4e19c
cmpl 0xf8(%rsp), %ebp
jne 0x4e1bb
incl %ebp
movq 0x198(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %rbp, %r13
cmpq %rbp, %rcx
seta %r15b
ja 0x4e149
jmp 0x4e1c2
movl %ebp, 0xf8(%rsp)
movzbl %r14b, %r14d
testb $0x1, %r15b
movl $0x0, %eax
cmovel %eax, %r14d
xorpd %xmm0, %xmm0
movsd %xmm0, 0xc8(%rsp)
movq 0x130(%rsp), %r15
leaq 0xa8(%rsp), %r13
leaq 0xd8(%rsp), %rbp
testb $0x1, %r14b
jne 0x4e301
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x85590
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
leaq 0x358(%rsp), %rdi
movq %r13, %rsi
movsd 0xc8(%rsp), %xmm0
callq 0x85590
movq 0x368(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x358(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
leaq 0x90(%rsp), %rsi
callq 0x857a0
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x4e3f8
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x4e40a
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4c91a
movsd 0xf0(%rsp), %xmm0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x85590
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
leaq 0x310(%rsp), %rdi
movq %r13, %rsi
movsd 0xc8(%rsp), %xmm0
callq 0x85590
movq 0x320(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x310(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
leaq 0x90(%rsp), %rsi
callq 0x857a0
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4e501
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x118(%rsp)
jmp 0x4e513
leaq 0x140(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
movq 0x10(%r13), %rax
movq %rax, 0x10(%rbx)
movups (%r13), %xmm0
movups %xmm0, (%rbx)
leaq 0x328(%rsp), %rdi
movq %rbx, %rsi
movsd 0x105d89(%rip), %xmm0   # 0x1541c8
callq 0x85590
movq 0x338(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x328(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x340(%rsp), %rdi
movq %rbp, %rsi
callq 0x857a0
movq 0x350(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x340(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x53e0c
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x85436
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
movq $0x0, 0x100(%rsp)
movb $0x1, %r14b
jmp 0x4e60a
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
movq 0x10(%r13), %rax
movq %rax, 0x10(%rbx)
movups (%r13), %xmm0
movups %xmm0, (%rbx)
leaq 0x2e0(%rsp), %rdi
movq %rbx, %rsi
movsd 0x105c80(%rip), %xmm0   # 0x1541c8
callq 0x85590
movq 0x2f0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2e0(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x2f8(%rsp), %rdi
movq %rbp, %rsi
callq 0x857a0
movq 0x308(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2f8(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x53e0c
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x85436
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movslq 0xf8(%rsp), %rax
shlq $0x5, %rax
addq 0x190(%rsp), %rax
movq %rax, 0x100(%rsp)
xorl %r14d, %r14d
movsd 0x108(%rsp), %xmm0
movsd 0xc8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd 0x100a18(%rip), %xmm0   # 0x14f040
movsd %xmm1, 0xc8(%rsp)
ucomisd %xmm1, %xmm0
ja 0x4e1f8
movl 0x13c(%rsp), %ebp
incl %ebp
cmpl 0x3c(%rsp), %ebp
jne 0x4e006
movq 0x14896b(%rip), %rbx    # 0x196fc0
leaq 0x105e06(%rip), %rsi    # 0x154462
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x148939(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0xe30(%rsp), %rbx
leaq 0x110d35(%rip), %rsi    # 0x15f3d8
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4efd0
movq 0x148906(%rip), %rbx    # 0x196fc0
leaq 0x105dcd(%rip), %rsi    # 0x15448e
movl $0x25, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x1488d4(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x1488c0(%rip), %rdi    # 0x196fc0
leaq 0x105d02(%rip), %rsi    # 0x154409
movl $0x13, %edx
callq 0x44e0
movq 0x1488a8(%rip), %rdi    # 0x196fc0
movl 0x3c(%rsp), %esi
callq 0x4750
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x40(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x58(%rsp), %r12
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x85436
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x178(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x90(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0xa8(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x200(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0x218(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
leaq 0xd0(%rsp), %rdi
callq 0x504d0
cmpl $0x0, 0x3c(%rsp)
jle 0x4ef8a
leaq 0xd8(%rsp), %rbp
xorl %ebx, %ebx
leaq 0x70(%rsp), %r14
leaq 0x2c8(%rsp), %rdi
callq 0x4c8b5
movq 0x2d8(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x2c8(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x52144
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r14, %rdi
callq 0x4c7ad
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x160(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x170(%rsp)
movq %r14, %rdi
movq %r12, %rsi
movsd 0x104a10(%rip), %xmm0   # 0x1532d0
callq 0x85590
movl %ebx, 0x13c(%rsp)
movq 0x80(%rsp), %rax
leaq 0x178(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rcx)
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movaps %xmm0, 0x90(%rsp)
movaps %xmm1, 0xa0(%rsp)
movaps %xmm2, 0xb0(%rsp)
movaps 0x160(%rsp), %xmm0
movapd 0x170(%rsp), %xmm1
movaps 0x180(%rsp), %xmm2
movaps %xmm0, 0x200(%rsp)
movapd %xmm1, 0x210(%rsp)
movaps %xmm2, 0x220(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x80(%rsp)
movapd 0x40(%rsp), %xmm0
movapd %xmm0, 0x70(%rsp)
movq 0x1b0(%rsp), %rax
cmpq %rax, 0x1b8(%rsp)
setne %r15b
je 0x4e9ee
xorl %r13d, %r13d
xorl %ebx, %ebx
shlq $0x5, %r13
movq 0x10(%rax,%r13), %rcx
movq %rcx, 0x28(%rsp)
movups (%rax,%r13), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rsp)
movapd 0x70(%rsp), %xmm0
movupd %xmm0, (%rsp)
callq 0x86935
movq 0x1b0(%rsp), %rax
movsd 0x18(%rax,%r13), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x4e9c8
cmpl 0xf8(%rsp), %ebx
jne 0x4e9e7
incl %ebx
movq 0x1b8(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %rbx, %r13
cmpq %rbx, %rcx
seta %r15b
ja 0x4e975
jmp 0x4e9ee
movl %ebx, 0xf8(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x96c4e
movl %eax, %r13d
xorpd %xmm1, %xmm1
movsd %xmm1, 0xc8(%rsp)
testb $0x1, %r15b
je 0x4ebb5
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x130(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4c91a
movsd 0xf0(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x85590
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
leaq 0xa8(%rsp), %rsi
movq 0x10(%rsi), %rax
movq %rax, 0x10(%r12)
movups (%rsi), %xmm0
movups %xmm0, (%r12)
leaq 0x238(%rsp), %rdi
movsd 0x1056fd(%rip), %xmm0   # 0x1541c8
callq 0x85590
movq 0x248(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x238(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x250(%rsp), %rdi
movq %rbp, %rsi
callq 0x857a0
movq 0x260(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x250(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x53e0c
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x85436
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movslq 0xf8(%rsp), %rax
shlq $0x5, %rax
addq 0x190(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x96c4e
movl %eax, %r13d
xorl %r15d, %r15d
jmp 0x4ef47
testb $0x1, %r13b
je 0x4ec70
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x130(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x85590
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4ed2e
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x118(%rsp)
jmp 0x4ed40
orb %r13b, %r15b
testb $0x1, %r15b
jne 0x4ea28
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x130(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
callq 0x4cc79
movsd 0xf0(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x85590
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x4ee3d
movaps 0x40(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movaps 0x60(%rsp), %xmm2
movups %xmm2, 0x20(%rsi)
movups %xmm1, 0x10(%rsi)
movups %xmm0, (%rsi)
addq $0x30, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x4ee4f
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
leaq 0xa8(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x10(%r12)
movups (%rcx), %xmm0
movups %xmm0, (%r12)
leaq 0x298(%rsp), %rdi
movq %r12, %rsi
movsd 0x10544a(%rip), %xmm0   # 0x1541c8
callq 0x85590
movq 0x2a8(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x298(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x2b0(%rsp), %rdi
movq %rbp, %rsi
callq 0x857a0
movq 0x2c0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2b0(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x53e0c
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x85436
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
movq $0x0, 0x100(%rsp)
jmp 0x4ef44
leaq 0x140(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50830
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
leaq 0xa8(%rsp), %rsi
movq 0x10(%rsi), %rax
movq %rax, 0x10(%r12)
movups (%rsi), %xmm0
movups %xmm0, (%r12)
leaq 0x268(%rsp), %rdi
movsd 0x10533e(%rip), %xmm0   # 0x1541c8
callq 0x85590
movq 0x278(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x268(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x280(%rsp), %rdi
movq %rbp, %rsi
callq 0x857a0
movq 0x290(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x280(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x53e0c
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xd0(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x85436
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movq $0x0, 0x100(%rsp)
movl $0xffffffff, 0xf8(%rsp) # imm = 0xFFFFFFFF
movb $0x1, %r15b
movsd 0xc8(%rsp), %xmm1
movsd 0x108(%rsp), %xmm0
addsd %xmm0, %xmm1
movsd 0x1000db(%rip), %xmm0   # 0x14f040
ucomisd %xmm1, %xmm0
ja 0x4ea15
movl 0x13c(%rsp), %ebx
incl %ebx
cmpl 0x3c(%rsp), %ebx
movq 0x130(%rsp), %r15
jne 0x4e82f
movq 0x14802f(%rip), %rbx    # 0x196fc0
leaq 0x10551c(%rip), %rsi    # 0x1544b4
movl $0x29, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x147ffd(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
cmpb $0x0, 0x1f4(%rsp)
je 0x4effe
leaq 0x110(%rsp), %rsi
leaq 0x140(%rsp), %rdx
movq 0x1f8(%rsp), %rdi
movl $0x1, %ecx
callq 0x4f28f
jmp 0x4f020
movsd 0x1051d2(%rip), %xmm0   # 0x1541d8
leaq 0x110(%rsp), %rdx
movq 0x1f8(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x4fe50
leaq 0x110(%rsp), %rdi
callq 0x5002f
leaq 0x3b8(%rsp), %rdi
callq 0x4922a
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x4f057
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x4f074
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1d0(%rsp), %rdi
testq %rdi, %rdi
je 0x4f091
movq 0x1e0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x4f0ae
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x4f0cb
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x3b8(%rsp), %rdi
callq 0x4925c
addq $0xdf8, %rsp            # imm = 0xDF8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
movq %rax, %rbx
jmp 0x4f240
movq %rax, %rbx
jmp 0x4f25d
movq %rax, %rbx
jmp 0x4f27a
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
movq %rax, %rbx
jmp 0x4f223
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
jmp 0x4f1e6
movq %rax, %rbx
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x4f206
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x4f223
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1d0(%rsp), %rdi
testq %rdi, %rdi
je 0x4f240
movq 0x1e0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x4f25d
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x4f27a
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x3b8(%rsp), %rdi
callq 0x4925c
movq %rbx, %rdi
callq 0x4780