// File: /workspace/github_cpp_makefile_star2_O3/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, 0x90(%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 0x4866a
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
movl %ebx, %ecx
movsd 0x108(%rsp), %xmm0
movsd 0x90(%rsp), %xmm1
callq 0x93b2c
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 0x4c267
leaq 0x190(%rsp), %rsi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xc80(%rsp), %rdi
leaq 0xd48(%rsp), %rdx
callq 0x4c0f9
xorpd %xmm0, %xmm0
leaq 0x1d0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
movq %r15, %rdi
callq 0x4b5f6
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
movq %r15, %rdi
callq 0x4ba23
leaq 0x190(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
movq %r15, %rdi
callq 0x4ba23
xorpd %xmm0, %xmm0
movapd %xmm0, 0x110(%rsp)
xorl %eax, %eax
movq %rax, 0x120(%rsp)
movq %rax, 0x140(%rsp)
movapd %xmm0, 0x130(%rsp)
movq 0x1482fe(%rip), %rbx    # 0x194fc0
leaq 0x1057d3(%rip), %rsi    # 0x15249c
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 0x1482cc(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0xe30(%rsp), %rbx
leaq 0x10a6fb(%rip), %rsi    # 0x15740b
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4d1f9
movq 0x148299(%rip), %rbx    # 0x194fc0
leaq 0x105819(%rip), %rsi    # 0x152547
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 0x148267(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x148253(%rip), %rdi    # 0x194fc0
leaq 0x105745(%rip), %rsi    # 0x1524b9
movl $0x13, %edx
callq 0x44e0
movq 0x14823b(%rip), %rdi    # 0x194fc0
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 0x83f68
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x83f68
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x168(%rsp), %r14
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x83f68
leaq 0x98(%rsp), %rdi
callq 0x501a8
cmpl $0x0, 0x3c(%rsp)
jle 0x4d1f1
leaq 0xd0(%rsp), %r13
xorl %r12d, %r12d
movl 0x3c(%rsp), %ebp
leaq 0x3a0(%rsp), %rdi
callq 0x4c5d5
movq 0x3b0(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x3a0(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x51d04
movq 0xe0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0xd0(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r13, %rdi
callq 0x4c4cd
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0xd0(%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 0x94bd4
testb %al, %al
je 0x4d102
movq 0x50(%rsp), %rax
movq %rax, 0x160(%rsp)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
movsd 0x104463(%rip), %xmm0   # 0x151360
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0xd0(%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 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rbx)
movq %r12, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movq %r12, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rcx)
movapd 0x150(%rsp), %xmm0
movapd 0x160(%rsp), %xmm1
movaps 0x170(%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 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
movq %r13, %rdi
movq %r14, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0xd0(%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 0x84196
movq 0xe0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0xd0(%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 0x84174
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4d180
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 0x4d192
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x4d16c
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, 0x138(%rsp)
jmp 0x4d1e9
leaq 0x130(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
jmp 0x4d1e9
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movq %r12, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movq %r12, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rcx)
decl %ebp
jne 0x4ce3f
movq 0xe30(%rsp), %rbx
leaq 0x109471(%rip), %rsi    # 0x156671
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
movq %r15, 0x188(%rsp)
jne 0x4d6ca
movq 0x147da1(%rip), %rbx    # 0x194fc0
leaq 0x1052a7(%rip), %rsi    # 0x1524cd
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 0x147d6f(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x147d5b(%rip), %rdi    # 0x194fc0
leaq 0x10524d(%rip), %rsi    # 0x1524b9
movl $0x13, %edx
callq 0x44e0
movq 0x147d43(%rip), %rdi    # 0x194fc0
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 0x83f68
leaq 0x58(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x168(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x98(%rsp), %rdi
callq 0x501a8
cmpl $0x0, 0x3c(%rsp)
jle 0x4d6c2
movabsq $-0x8000000000000000, %rbp # imm = 0x8000000000000000
xorl %r13d, %r13d
leaq 0x3f(%rbp), %rbx
xorl %edx, %edx
xorl %r14d, %r14d
movl %edx, 0x90(%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
leal 0x3f(%rdx), %esi
testl %edx, %edx
cmovnsl %edx, %esi
sarl $0x6, %esi
movslq %esi, %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 0x4d35d
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 0xd0(%rsp), %r12
movq %r12, %rdi
callq 0x4c4cd
movq 0xe0(%rsp), %rax
leaq 0x58(%rsp), %rsi
movq %rax, 0x10(%rsi)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rsi)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x160(%rsp)
movq %r12, %rdi
movsd 0x103f56(%rip), %xmm0   # 0x151360
callq 0x84096
movq 0xe0(%rsp), %rax
leaq 0x168(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0xd0(%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 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
leaq 0xd0(%rsp), %r15
movq %r15, %rdi
leaq 0x58(%rsp), %r12
movq %r12, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%r12)
movq %r13, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movq %r13, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r15, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rcx)
movaps 0x150(%rsp), %xmm0
movapd 0x160(%rsp), %xmm1
movaps 0x170(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq 0x188(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0x98(%rsp), %rcx
callq 0x4c996
leaq 0x168(%rsp), %r12
movsd 0xb8(%rsp), %xmm0
leaq 0xd0(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0xd0(%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 0x84196
movq 0xe0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0xd0(%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 0x84174
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4d63a
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 0x4d64c
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movq %r13, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movq %r13, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
leaq 0xd0(%rsp), %rdi
callq 0x83f68
movl 0x90(%rsp), %edx
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rcx)
incl %edx
cmpl 0x3c(%rsp), %edx
movq 0x188(%rsp), %r15
jne 0x4d338
movq 0xe30(%rsp), %rbx
leaq 0x10fb3d(%rip), %rsi    # 0x15d20e
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4db94
movq 0x1478d8(%rip), %rbx    # 0x194fc0
leaq 0x104e04(%rip), %rsi    # 0x1524f3
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 0x1478a6(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x147892(%rip), %rdi    # 0x194fc0
leaq 0x104d84(%rip), %rsi    # 0x1524b9
movl $0x13, %edx
callq 0x44e0
movq 0x14787a(%rip), %rdi    # 0x194fc0
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 0x83f68
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x83f68
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x168(%rsp), %r14
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x83f68
leaq 0x98(%rsp), %rdi
callq 0x501a8
cmpl $0x0, 0x3c(%rsp)
jle 0x4db8c
leaq 0xd0(%rsp), %r13
xorl %r12d, %r12d
movl 0x3c(%rsp), %ebp
leaq 0x388(%rsp), %rdi
callq 0x4c5d5
movq 0x398(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x388(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x51d04
movq 0xe0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0xd0(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r13, %rdi
callq 0x4c4cd
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rbx)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x160(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
movsd 0x103acc(%rip), %xmm0   # 0x151360
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0xd0(%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 0x98(%rsp), %rdx
callq 0x4c63a
cmpb $0x0, 0x98(%rsp)
je 0x4da97
movsd 0xb8(%rsp), %xmm0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rbx)
movq %r12, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
movq %r12, 0xc8(%rsp)
xorps %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movups 0xd0(%rsp), %xmm0
movups %xmm0, (%rcx)
movapd 0x150(%rsp), %xmm0
movapd 0x160(%rsp), %xmm1
movaps 0x170(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x4c63a
movsd 0xb8(%rsp), %xmm0
movq %r13, %rdi
movq %r14, %rsi
callq 0x84096
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%r14)
movups 0xd0(%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 0x84196
movq 0xe0(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0xd0(%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 0x84174
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4db05
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 0x4db17
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x4db78
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, 0x138(%rsp)
jmp 0x4db6e
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movq %r12, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
movq %r12, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r13, %rdi
callq 0x83f68
movq 0xe0(%rsp), %rax
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movupd 0xd0(%rsp), %xmm0
movupd %xmm0, (%rcx)
decl %ebp
jne 0x4d800
jmp 0x4db8c
leaq 0x130(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
jmp 0x4db6e
movq 0xe30(%rsp), %rbx
leaq 0x10f66c(%rip), %rsi    # 0x15d207
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4e3a1
movq 0x14740e(%rip), %rbx    # 0x194fc0
leaq 0x104931(%rip), %rsi    # 0x1524ea
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 0x1473dc(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x1473c8(%rip), %rdi    # 0x194fc0
leaq 0x1048ba(%rip), %rsi    # 0x1524b9
movl $0x13, %edx
callq 0x44e0
movq 0x1473b0(%rip), %rdi    # 0x194fc0
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 0x83f68
leaq 0x58(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x83f68
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x168(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0xd0(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0xe8(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x200(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x218(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x98(%rsp), %rdi
callq 0x501a8
cmpl $0x0, 0x3c(%rsp)
jle 0x4e353
movb $0x1, %r14b
xorl %r13d, %r13d
leaq 0xa0(%rsp), %rbp
leaq 0x70(%rsp), %r12
leaq 0x370(%rsp), %rdi
callq 0x4c5d5
movq 0x380(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x370(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x51d04
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r12, %rdi
callq 0x4c4cd
movq %r13, 0x1c8(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x160(%rsp)
movq %r12, %rdi
movq %rbx, %rsi
movsd 0x10359f(%rip), %xmm0   # 0x151360
callq 0x84096
movq 0x80(%rsp), %rax
leaq 0x168(%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, 0xd0(%rsp)
movaps %xmm1, 0xe0(%rsp)
movaps %xmm2, 0xf0(%rsp)
movaps 0x150(%rsp), %xmm0
movapd 0x160(%rsp), %xmm1
movaps 0x170(%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)
je 0x4deda
xorl %r15d, %r15d
xorl %r13d, %r13d
shlq $0x5, %r15
movq 0x10(%rax,%r15), %rcx
movq %rcx, 0x28(%rsp)
movups (%rax,%r15), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rsp)
movapd 0x70(%rsp), %xmm0
movupd %xmm0, (%rsp)
callq 0x84ce3
movq 0x190(%rsp), %rax
movsd 0x18(%rax,%r15), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x4dec0
cmpl 0xc0(%rsp), %r13d
jne 0x4dedf
incl %r13d
movq 0x198(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %r13, %r15
cmpq %r13, %rcx
ja 0x4de6c
xorl %r14d, %r14d
jmp 0x4dee7
movl %r13d, 0xc0(%rsp)
xorpd %xmm0, %xmm0
movsd %xmm0, 0x90(%rsp)
movq 0x188(%rsp), %r15
leaq 0xe8(%rsp), %r13
testb $0x1, %r14b
jne 0x4e00d
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 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x84096
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
leaq 0x358(%rsp), %rdi
movq %r13, %rsi
movsd 0x90(%rsp), %xmm0
callq 0x84096
movq 0x368(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x358(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
leaq 0xd0(%rsp), %rsi
callq 0x84196
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x4e104
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, 0x138(%rsp)
jmp 0x4e116
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 0x98(%rsp), %rdx
callq 0x4c63a
movsd 0xb8(%rsp), %xmm0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x84096
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbx)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbx)
leaq 0x310(%rsp), %rdi
movq %r13, %rsi
movsd 0x90(%rsp), %xmm0
callq 0x84096
movq 0x320(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x310(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
leaq 0xd0(%rsp), %rsi
callq 0x84196
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 0x4e203
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 0x4e215
leaq 0x130(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movsd 0xb8(%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 0x10412d(%rip), %xmm0   # 0x152278
callq 0x84096
movq 0x338(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x328(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x340(%rsp), %rdi
movq %rbp, %rsi
callq 0x84196
movq 0x350(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x340(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x53b0e
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x83f68
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
movb $0x1, %r14b
xorl %eax, %eax
jmp 0x4e304
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movsd 0xb8(%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 0x10402e(%rip), %xmm0   # 0x152278
callq 0x84096
movq 0x2f0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2e0(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x2f8(%rsp), %rdi
movq %rbp, %rsi
callq 0x84196
movq 0x308(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2f8(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x53b0e
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x83f68
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movslq 0xc0(%rsp), %rax
shlq $0x5, %rax
addq 0x190(%rsp), %rax
xorl %r14d, %r14d
movsd 0x108(%rsp), %xmm0
movq %rax, 0xc8(%rsp)
movsd 0x90(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd 0xfed16(%rip), %xmm0    # 0x14d040
movsd %xmm1, 0x90(%rsp)
ucomisd %xmm1, %xmm0
ja 0x4df04
movq 0x1c8(%rsp), %r13
incl %r13d
cmpl 0x3c(%rsp), %r13d
jne 0x4dd2b
movq 0x146c66(%rip), %rbx    # 0x194fc0
leaq 0x1041b1(%rip), %rsi    # 0x152512
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 0x146c34(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0xe30(%rsp), %rbx
leaq 0x10eead(%rip), %rsi    # 0x15d255
movq %rbx, %rdi
callq 0x4170
testl %eax, %eax
jne 0x4eca7
movq 0x146c01(%rip), %rbx    # 0x194fc0
leaq 0x104178(%rip), %rsi    # 0x15253e
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 0x146bcf(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x146bbb(%rip), %rdi    # 0x194fc0
leaq 0x1040ad(%rip), %rsi    # 0x1524b9
movl $0x13, %edx
callq 0x44e0
movq 0x146ba3(%rip), %rdi    # 0x194fc0
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 0x83f68
leaq 0x58(%rsp), %r12
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r12, %rdi
callq 0x83f68
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x168(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0xd0(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0xe8(%rsp), %rbx
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %rbx, %rdi
callq 0x83f68
leaq 0x200(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x218(%rsp), %rdi
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x83f68
leaq 0x98(%rsp), %rdi
callq 0x501a8
cmpl $0x0, 0x3c(%rsp)
jle 0x4ec61
movl $0x0, 0x1c8(%rsp)
leaq 0xa0(%rsp), %rbp
leaq 0x70(%rsp), %r14
leaq 0x2c8(%rsp), %rdi
callq 0x4c5d5
movq 0x2d8(%rsp), %rax
movq %rax, 0x10(%rsp)
movupd 0x2c8(%rsp), %xmm0
movupd %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x51d04
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq %r14, %rdi
callq 0x4c4cd
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movaps 0x40(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x160(%rsp)
movq %r14, %rdi
movq %r12, %rsi
movsd 0x102d8f(%rip), %xmm0   # 0x151360
callq 0x84096
movq 0x80(%rsp), %rax
leaq 0x168(%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, 0xd0(%rsp)
movaps %xmm1, 0xe0(%rsp)
movaps %xmm2, 0xf0(%rsp)
movaps 0x150(%rsp), %xmm0
movapd 0x160(%rsp), %xmm1
movaps 0x170(%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
xorl %r15d, %r15d
cmpq %rax, 0x1b8(%rsp)
je 0x4e6fe
xorl %r13d, %r13d
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 0x84ce3
movq 0x1b0(%rsp), %rax
movsd 0x18(%rax,%r13), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x4e6d4
cmpl 0xc0(%rsp), %r15d
jne 0x4e6f3
incl %r15d
movq 0x1b8(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %r15, %r13
cmpq %r15, %rcx
ja 0x4e680
xorl %r15d, %r15d
jmp 0x4e6fe
movl %r15d, 0xc0(%rsp)
movb $0x1, %r15b
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x94bd4
movl %eax, %r13d
xorpd %xmm1, %xmm1
movsd %xmm1, 0x90(%rsp)
testb $0x1, %r15b
movq 0x188(%rsp), %r15
je 0x4e8a9
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 0x1b0(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x4c63a
movsd 0xb8(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x84096
movsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%r12)
movups (%rbx), %xmm0
movups %xmm0, (%r12)
leaq 0x238(%rsp), %rdi
movq %rbx, %rsi
movsd 0x103ab9(%rip), %xmm0   # 0x152278
callq 0x84096
movq 0x248(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x238(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x250(%rsp), %rdi
movq %rbp, %rsi
callq 0x84196
movq 0x260(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x250(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x53b0e
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x83f68
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movslq 0xc0(%rsp), %rax
shlq $0x5, %rax
addq 0x190(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x94bd4
movl %eax, %r13d
xorl %r15d, %r15d
jmp 0x4ec17
testb $0x1, %r13b
je 0x4e95c
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 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x84096
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x4ea0b
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 0x4ea1d
jne 0x4e740
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 0x1b0(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
leaq 0x98(%rsp), %rcx
callq 0x4c996
movsd 0xb8(%rsp), %xmm0
movq %r14, %rdi
movq %r12, %rsi
callq 0x84096
movq 0x80(%rsp), %rax
movq %rax, 0x10(%r12)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%r12)
movq 0x138(%rsp), %rsi
cmpq 0x140(%rsp), %rsi
je 0x4eb12
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, 0x138(%rsp)
jmp 0x4eb24
leaq 0x110(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%r12)
movups (%rbx), %xmm0
movups %xmm0, (%r12)
leaq 0x298(%rsp), %rdi
movq %r12, %rsi
movsd 0x103825(%rip), %xmm0   # 0x152278
callq 0x84096
movq 0x2a8(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x298(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x2b0(%rsp), %rdi
movq %rbp, %rsi
callq 0x84196
movq 0x2c0(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x2b0(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x53b0e
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x83f68
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
movq $0x0, 0xc8(%rsp)
jmp 0x4ec14
leaq 0x130(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x50508
movsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x108(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%r12)
movups (%rbx), %xmm0
movups %xmm0, (%r12)
leaq 0x268(%rsp), %rdi
movq %rbx, %rsi
movsd 0x10371e(%rip), %xmm0   # 0x152278
callq 0x84096
movq 0x278(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x268(%rsp), %xmm0
movups %xmm0, (%rsp)
leaq 0x280(%rsp), %rdi
movq %rbp, %rsi
callq 0x84196
movq 0x290(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x280(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x53b0e
movq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x70(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0xb8(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
movq %r14, %rdi
callq 0x83f68
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rbp)
movups 0x70(%rsp), %xmm0
movups %xmm0, (%rbp)
movq $0x0, 0xc8(%rsp)
movl $0xffffffff, 0xc0(%rsp) # imm = 0xFFFFFFFF
movb $0x1, %r15b
movsd 0x90(%rsp), %xmm1
movsd 0x108(%rsp), %xmm0
addsd %xmm0, %xmm1
movsd 0xfe40b(%rip), %xmm0    # 0x14d040
ucomisd %xmm1, %xmm0
ja 0x4e725
movl 0x1c8(%rsp), %eax
incl %eax
movl %eax, 0x1c8(%rsp)
cmpl 0x3c(%rsp), %eax
movq 0x188(%rsp), %r15
jne 0x4e540
movq 0x146358(%rip), %rbx    # 0x194fc0
leaq 0x1038f5(%rip), %rsi    # 0x152564
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 0x146326(%rip), %rdi    # 0x194fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
cmpb $0x0, 0x1f4(%rsp)
je 0x4ecd5
leaq 0x110(%rsp), %rsi
leaq 0x130(%rsp), %rdx
movq 0x1f8(%rsp), %rdi
movl $0x1, %ecx
callq 0x4ef66
jmp 0x4ecf7
movsd 0x1035ab(%rip), %xmm0   # 0x152288
leaq 0x110(%rsp), %rdx
movq 0x1f8(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x4fb27
leaq 0x110(%rsp), %rdi
callq 0x4fd06
leaq 0x3b8(%rsp), %rdi
callq 0x48944
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x4ed2e
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x4ed4b
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1d0(%rsp), %rdi
testq %rdi, %rdi
je 0x4ed68
movq 0x1e0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x4ed85
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x4eda2
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x3b8(%rsp), %rdi
callq 0x48974
addq $0xdf8, %rsp            # imm = 0xDF8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
movq %rax, %rbx
jmp 0x4ef17
movq %rax, %rbx
jmp 0x4ef34
movq %rax, %rbx
jmp 0x4ef51
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
movq %rax, %rbx
jmp 0x4eefa
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
jmp 0x4eebd
movq %rax, %rbx
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x4eedd
movq 0x140(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x4eefa
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1d0(%rsp), %rdi
testq %rdi, %rdi
je 0x4ef17
movq 0x1e0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x4ef34
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x4ef51
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x3b8(%rsp), %rdi
callq 0x48974
movq %rbx, %rdi
callq 0x4780