// File: Luthaf[P]zeopp/psd.cc
// Function: calcPoreSizeDistr(ATOM_NETWORK*, ATOM_NETWORK*, bool, double, double, int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, bool)
void calcPoreSizeDistr(ATOM_NETWORK *atmnet, ATOM_NETWORK *orgAtomnet, bool highAccuracy, double r_probe_chan, double r_probe, int numSamples, bool excludePockets, string histogramFile, string pointsFile, string nodeAndRadiiFile, string spheresDistFile, bool visualize, bool visVISIT){

    ofstream output; 
    if (!histogramFile.empty()) output.open(histogramFile.data());
    ofstream outfile;
    if (!pointsFile.empty()) outfile.open(pointsFile.data());
    ofstream nodeAndRadii;
    if (!nodeAndRadiiFile.empty()) nodeAndRadii.open(nodeAndRadiiFile.data());
    ofstream spheresDist;
  // Create an object that handles analysis of accessibility of sampled points
  AccessibilityClass accessAnalysis;
  if(highAccuracy) accessAnalysis.setupAndFindChannels(atmnet, orgAtomnet, highAccuracy, r_probe_chan, r_probe);
    else accessAnalysis.setupAndFindChannels(atmnet, atmnet, highAccuracy, r_probe_chan, r_probe);


  srand(randSeed);

//Vectors to store accessible points, inaccessible points, and accessible points which lie outside Voronoi nodes and edges. 
  vector<Point> axsPoint = vector<Point>();
  vector<Point> inaxsPoint = vector<Point>();

//List of largest sphere diameters for PSD histogram
  vector<double> diameterOfLargestSphere;

//List of sample points and radius of sphere that contains sample point for visualization in Visit
  vector <pair <Point, double> > axsPoint_and_radiiOfNodeSphere;
  vector <pair <Point, double> > axsPoint_and_radiiOfGhostSphere;
//List of node coordinates and radii for visualization
  vector <int> nodeIDs;
  vector <pair <Point, double> > coord_and_radiiOfNodeSphere;
  vector <pair <Point, double> > coord_and_radiiOfGhostSphere;
	vector <double> distanceBetweenNodeSpheres;
	vector <double> distanceBetweenGhostSpheres;

  int count = 0;
  int incount = 0;
  int outcount = 0;

//Generates random points across cell and tests accessibility.
  for(int i = 0; i < numSamples; i++){
    bool overlaps = false;
    bool inside = false;
    double aPoint = (rand()*1.0)/RAND_MAX;
    double bPoint = (rand()*1.0)/RAND_MAX;
    double cPoint = (rand()*1.0)/RAND_MAX;
    Point samplingPoint = atmnet->abc_to_xyz(aPoint, bPoint, cPoint);


    // Calling accessibility object to determine accessibility of the point (this replaced a big chunk of code by Thomas)
    double dist_var;
    pair<bool,bool> answer = (accessAnalysis.isVPointInsideAtomAndNotAccessible(samplingPoint, dist_var));
    inside = answer.first; overlaps = answer.second;
    if(accessAnalysis.needToResample() == true) i--; // the sampled point could not be analyzed in isVPointInsideAtomAndNotAccessible() function, resampling needed

    if(inside == false && excludePockets == false) overlaps = false; // if ignore inacceible pockets, treat the point as accessible (unless inside atom)




// Store sampled points that did not overlap with an atom but were inaccessible
    if(accessAnalysis.needToResample() == false && !inside && overlaps){
	Point abcCoords = Point(aPoint, bPoint, cPoint);
	Point coord = atmnet->abc_to_xyz(abcCoords);
	inaxsPoint.push_back(coord);
    }
// Store accessible points
    if(accessAnalysis.needToResample() == false &&!overlaps) {
	count++;     
	Point abcCoords = Point(aPoint, bPoint, cPoint);
	Point coords = atmnet->abc_to_xyz(abcCoords);
	axsPoint.push_back(coords); 
    }
  } // ends loop over all sampled points


  // Warn user if points were resampled
  int resampleCount =  accessAnalysis.getResampleCount();
  if(resampleCount != 0){
    cerr << "\n" << "\n"
         << "Warning: Resampled " << resampleCount << " points out of " << numSamples
         << " when analyzing " << atmnet->name << "\n"
         << "\n" << "\n";
  }


//Below are functions that go beyond accessible volume calcluation. Each accessible point is analyzed to find the largest encapsulating sphere


//Determine whether sample point is inside/outside node sphere
  for (int a=0; a<axsPoint.size(); a++){
    Point samplePt = axsPoint.at(a);
    Point maxNodeCoord = Point (0, 0, 0);
    double maxRadius = 0;
    for (int b=0; b<accessAnalysis.vornet.nodes.size(); b++)
      {
      bool access = accessAnalysis.accessInfo.at(b);
      if (access){
        Point nodePt = Point(accessAnalysis.vornet.nodes.at(b).x, accessAnalysis.vornet.nodes.at(b).y, accessAnalysis.vornet.nodes.at(b).z);
        double radius = accessAnalysis.vornet.nodes.at(b).rad_stat_sphere + r_probe;
        double sampToNode = accessAnalysis.analyzedAtomNet.calcDistanceXYZ(samplePt[0], samplePt[1], samplePt[2], nodePt[0], nodePt[1], nodePt[2]);
        bool inSphere = (sampToNode <= radius); 
        //if point is inside more than one sphere, chooses largest sphere (i.e. largest radius)
        if (inSphere){
          maxRadius = max(radius, maxRadius);
          //If query zpsd, this stores the largest node sphere and its coordinate for visualization in Visit
          if (visualize){
            if (radius==maxRadius){
               maxNodeCoord = nodePt; 
               }
            }
        } // ends if(inSphere)
      }
     }
    if (maxRadius==0) outcount++; 
    if (maxRadius!=0) incount++;





//Generate new "ghost" Voronoi cell
    double pointParticleRadius = r_probe;
//DEBUG next 4 lines
    voronoicell v(*(accessAnalysis.new_rad_con));
    accessAnalysis.new_rad_con->compute_ghost_cell(v, samplePt[0], samplePt[1], samplePt[2], pointParticleRadius);
    vector<double> vertexCoords;
    v.vertices(vertexCoords);

   //debug
   //cout << "number of ghost vertices = " << vertexCoords.size()/3 << "\n"; cout.flush();
   //for(unsigned int aa=0;aa<vertexCoords.size();aa++) cout << vertexCoords[aa] << " "; cout << "\n";

    vector <Point> pointVertexCoords;
    for (int c=0; c<vertexCoords.size(); c= c+3){
      Point vertexPoint = Point(vertexCoords.at(c), vertexCoords.at(c+1), vertexCoords.at(c+2));
      pointVertexCoords.push_back(vertexPoint);
    }

   //debug
   //cout << "vertex vector constructed \n"; cout.flush();

    double maxDistFromCtoV = 0;
    Point maxGhostCoord = Point (0, 0, 0);
//Calculate distance from center of cell to vertices
   for (int b=0; b<pointVertexCoords.size(); b++){
      Point vertexGlobalCoord = Point((samplePt[0]+pointVertexCoords.at(b)[0]), (samplePt[1]+pointVertexCoords.at(b)[1]), (samplePt[2]+pointVertexCoords.at(b)[2]));
      double calcDistFromCtoV = calcEuclideanDistance(pointVertexCoords.at(b)[0], pointVertexCoords.at(b)[1], pointVertexCoords.at(b)[2], 0.0, 0.0, 0.0) - pointParticleRadius;

      maxDistFromCtoV = max(maxDistFromCtoV, calcDistFromCtoV);
//If query zpsd, this stores the largest ghost sphere and its coordinate for visualization in Visit
      if (visualize){
        if (calcDistFromCtoV==maxDistFromCtoV){
          maxGhostCoord = vertexGlobalCoord;
        } 
      }
    }

  //debug:
  //cout << "getting ready for final comparison and assigment\n"; cout.flush();

//Compares node radius to biggest ghost radius and stores the larger of the two values accordingly
    double origNodeRadius = maxRadius;
    double ghostRadius = maxDistFromCtoV;  
    bool compareRadii = (origNodeRadius >= ghostRadius); 
    if (compareRadii) {
      diameterOfLargestSphere.push_back(2.0*origNodeRadius); 
      if (visualize){
      axsPoint_and_radiiOfNodeSphere.push_back(pair<Point, double>(samplePt, origNodeRadius));
      checkDuplicates(&(accessAnalysis.analyzedAtomNet), &(accessAnalysis.vornet), nodeIDs, coord_and_radiiOfNodeSphere, maxNodeCoord, origNodeRadius);
      }
    }
    if (!compareRadii) {
      diameterOfLargestSphere.push_back(2.0*ghostRadius);
      if (visualize){
        axsPoint_and_radiiOfGhostSphere.push_back(pair<Point, double>(samplePt, ghostRadius));
        coord_and_radiiOfGhostSphere.push_back(pair <Point, double> (maxGhostCoord, maxDistFromCtoV));
      }
    }

  //debug:
  //cout << "finishing pass in axsPoint loop\n"; cout.flush();

  }

  double volumeFraction = count*1.0/numSamples;
  double nodeVolFraction = incount*1.0/numSamples;
  double outFraction = outcount*1.0/numSamples;


  Histogram(output, BINSTEP, MAXBINS, diameterOfLargestSphere, count, nodeVolFraction, outFraction, numSamples);

  printf("Pore size distribution calculated.\n\n");

  if (visualize) {
    printFileCoords_Radii(outfile, axsPoint_and_radiiOfNodeSphere, axsPoint_and_radiiOfGhostSphere, distanceBetweenNodeSpheres, distanceBetweenGhostSpheres, false, -1, -1);
    printf("Points file generated.\n\n");
		if (!visVISIT){
                // here printing ZeoVis stuff
		}
		if (visVISIT) {
		  printFileCoords_Radii(nodeAndRadii, coord_and_radiiOfNodeSphere, coord_and_radiiOfGhostSphere, distanceBetweenNodeSpheres, distanceBetweenGhostSpheres, false, -1, -1);
		  printf("Radii file generated.\n");
		}
  }

  accessAnalysis.deconstruct();

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a00, %rsp           # imm = 0x1A00
movq %r9, -0x1768(%rbp)
movl %r8d, -0x1780(%rbp)
movl %ecx, %eax
movl -0x1780(%rbp), %ecx
movl %eax, -0x177c(%rbp)
movl %edx, %eax
movq %rsi, %r8
movl -0x177c(%rbp), %esi
movq %rdi, %r10
movb %cl, %dl
movb %al, %dil
movb 0x30(%rbp), %al
movb 0x28(%rbp), %cl
movq 0x20(%rbp), %r11
movq 0x18(%rbp), %r11
movq %r11, -0x1778(%rbp)
movq 0x10(%rbp), %r11
movq %r11, -0x1770(%rbp)
movq %r10, -0x8(%rbp)
movq %r8, -0x10(%rbp)
andb $0x1, %dil
movb %dil, -0x11(%rbp)
movsd %xmm0, -0x20(%rbp)
movsd %xmm1, -0x28(%rbp)
movl %esi, -0x2c(%rbp)
andb $0x1, %dl
movb %dl, -0x2d(%rbp)
movq %r9, -0x38(%rbp)
andb $0x1, %cl
movb %cl, -0x39(%rbp)
andb $0x1, %al
movb %al, -0x3a(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x5890
movq -0x1768(%rbp), %rdi
callq 0x5850
testb $0x1, %al
jne 0xf3183
movq -0x1768(%rbp), %rdi
callq 0x52c0
movq %rax, %rsi
leaq -0x240(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0xf316a
jmp 0xf3183
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf4752
leaq -0x450(%rbp), %rdi
callq 0x5890
jmp 0xf3191
movq -0x1770(%rbp), %rdi
callq 0x5850
testb $0x1, %al
jne 0xf31dc
movq -0x1770(%rbp), %rdi
callq 0x52c0
movq %rax, %rsi
leaq -0x450(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0xf31c3
jmp 0xf31dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf4746
leaq -0x650(%rbp), %rdi
callq 0x5890
jmp 0xf31ea
movq -0x1778(%rbp), %rdi
callq 0x5850
testb $0x1, %al
jne 0xf3235
movq -0x1778(%rbp), %rdi
callq 0x52c0
movq %rax, %rsi
leaq -0x650(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0xf321c
jmp 0xf3235
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf473a
leaq -0x850(%rbp), %rdi
callq 0x5890
jmp 0xf3243
leaq -0x1290(%rbp), %rdi
callq 0x84640
jmp 0xf3251
testb $0x1, -0x11(%rbp)
je 0xf32ae
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
movzbl -0x11(%rbp), %ecx
andl $0x1, %ecx
leaq -0x1290(%rbp), %rdi
callq 0xfd200
jmp 0xf327e
jmp 0xf32d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf472e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf4722
movq -0x8(%rbp), %rdx
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
movzbl -0x11(%rbp), %ecx
andl $0x1, %ecx
leaq -0x1290(%rbp), %rdi
movq %rdx, %rsi
callq 0xfd200
jmp 0xf32d4
jmp 0xf32d6
movl $0x3b4ca6f5, %edi       # imm = 0x3B4CA6F5
callq 0x5510
leaq -0x12a8(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x52a0
leaq -0x12a8(%rbp), %rdi
callq 0xed40
leaq -0x12c0(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x52a0
leaq -0x12c0(%rbp), %rdi
callq 0xed40
leaq -0x12d8(%rbp), %rdi
callq 0xf650
leaq -0x12f0(%rbp), %rdi
callq 0xf6db0
leaq -0x1308(%rbp), %rdi
callq 0xf6db0
leaq -0x1320(%rbp), %rdi
callq 0xd0d0
leaq -0x1338(%rbp), %rdi
callq 0xf6db0
leaq -0x1350(%rbp), %rdi
callq 0xf6db0
leaq -0x1368(%rbp), %rdi
callq 0xf650
leaq -0x1380(%rbp), %rdi
callq 0xf650
movl $0x0, -0x1384(%rbp)
movl $0x0, -0x1388(%rbp)
movl $0x0, -0x138c(%rbp)
movl $0x0, -0x1390(%rbp)
movl -0x1390(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0xf36d7
movb $0x0, -0x1391(%rbp)
movb $0x0, -0x1392(%rbp)
callq 0x5190
cvtsi2sd %eax, %xmm0
movsd 0x103234(%rip), %xmm1   # 0x1f6608
movsd %xmm1, -0x1788(%rbp)
divsd %xmm1, %xmm0
movsd %xmm0, -0x13a0(%rbp)
callq 0x5190
movsd -0x1788(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x13a8(%rbp)
callq 0x5190
movsd -0x1788(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x13b0(%rbp)
movq -0x8(%rbp), %rsi
movsd -0x13a0(%rbp), %xmm0
movsd -0x13a8(%rbp), %xmm1
movsd -0x13b0(%rbp), %xmm2
leaq -0x13c8(%rbp), %rdi
callq 0x97170
jmp 0xf344c
movq -0x13b8(%rbp), %rax
movq %rax, -0x13e0(%rbp)
movups -0x13c8(%rbp), %xmm0
movaps %xmm0, -0x13f0(%rbp)
movq -0x13e0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movaps -0x13f0(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x1290(%rbp), %rdi
leaq -0x13d0(%rbp), %rsi
callq 0xfd890
movw %ax, -0x178a(%rbp)
jmp 0xf349c
movw -0x178a(%rbp), %ax
movw %ax, -0x13d2(%rbp)
movb -0x13d2(%rbp), %al
andb $0x1, %al
movb %al, -0x1392(%rbp)
movb -0x13d1(%rbp), %al
andb $0x1, %al
movb %al, -0x1391(%rbp)
leaq -0x1290(%rbp), %rdi
callq 0x847d0
movb %al, -0x178b(%rbp)
jmp 0xf34da
movb -0x178b(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xf3512
movl -0x1390(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1390(%rbp)
jmp 0xf3512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf46aa
movb -0x1392(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xf3536
movb -0x2d(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xf3536
movb $0x0, -0x1391(%rbp)
leaq -0x1290(%rbp), %rdi
callq 0x847d0
movb %al, -0x178c(%rbp)
jmp 0xf354a
movb -0x178c(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xf35fb
testb $0x1, -0x1392(%rbp)
jne 0xf35fb
testb $0x1, -0x1391(%rbp)
je 0xf35fb
movsd -0x13a0(%rbp), %xmm0
movsd -0x13a8(%rbp), %xmm1
movsd -0x13b0(%rbp), %xmm2
leaq -0x1408(%rbp), %rdi
callq 0xe9c70
jmp 0xf359e
movq -0x8(%rbp), %rsi
movq -0x13f8(%rbp), %rax
movq %rax, -0x1430(%rbp)
movups -0x1408(%rbp), %xmm0
movaps %xmm0, -0x1440(%rbp)
movq -0x1430(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movaps -0x1440(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x1420(%rbp), %rdi
callq 0x961d0
jmp 0xf35e4
leaq -0x12c0(%rbp), %rdi
leaq -0x1420(%rbp), %rsi
callq 0x59bf0
jmp 0xf35f9
jmp 0xf35fb
leaq -0x1290(%rbp), %rdi
callq 0x847d0
movb %al, -0x178d(%rbp)
jmp 0xf360f
movb -0x178d(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xf36c1
testb $0x1, -0x1391(%rbp)
jne 0xf36c1
movl -0x1384(%rbp), %eax
incl %eax
movl %eax, -0x1384(%rbp)
movsd -0x13a0(%rbp), %xmm0
movsd -0x13a8(%rbp), %xmm1
movsd -0x13b0(%rbp), %xmm2
leaq -0x1458(%rbp), %rdi
callq 0xe9c70
jmp 0xf3664
movq -0x8(%rbp), %rsi
movq -0x1448(%rbp), %rax
movq %rax, -0x1480(%rbp)
movups -0x1458(%rbp), %xmm0
movaps %xmm0, -0x1490(%rbp)
movq -0x1480(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movaps -0x1490(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x1470(%rbp), %rdi
callq 0x961d0
jmp 0xf36aa
leaq -0x12a8(%rbp), %rdi
leaq -0x1470(%rbp), %rsi
callq 0x59bf0
jmp 0xf36bf
jmp 0xf36c1
jmp 0xf36c3
movl -0x1390(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1390(%rbp)
jmp 0xf33a6
leaq -0x1290(%rbp), %rdi
callq 0x849d0
movl %eax, -0x1794(%rbp)
jmp 0xf36eb
movl -0x1794(%rbp), %eax
movl %eax, -0x1494(%rbp)
cmpl $0x0, -0x1494(%rbp)
je 0xf3832
movq 0x17f8e5(%rip), %rdi    # 0x272ff0
leaq 0x105f13(%rip), %rsi    # 0x1f9625
callq 0x5540
movq %rax, -0x17a0(%rbp)
jmp 0xf3720
movq -0x17a0(%rbp), %rdi
leaq 0x105ef7(%rip), %rsi    # 0x1f9625
callq 0x5540
movq %rax, -0x17a8(%rbp)
jmp 0xf373c
movq -0x17a8(%rbp), %rdi
leaq 0x103054(%rip), %rsi    # 0x1f679e
callq 0x5540
movq %rax, -0x17b0(%rbp)
jmp 0xf3758
movq -0x17b0(%rbp), %rdi
movl -0x1494(%rbp), %esi
callq 0x58d0
movq %rax, -0x17b8(%rbp)
jmp 0xf3773
movq -0x17b8(%rbp), %rdi
leaq 0x103031(%rip), %rsi    # 0x1f67b2
callq 0x5540
movq %rax, -0x17c0(%rbp)
jmp 0xf378f
movq -0x17c0(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x58d0
movq %rax, -0x17c8(%rbp)
jmp 0xf37a7
movq -0x17c8(%rbp), %rdi
leaq 0x115fc0(%rip), %rsi    # 0x209775
callq 0x5540
movq %rax, -0x17d0(%rbp)
jmp 0xf37c3
movq -0x17d0(%rbp), %rdi
movq -0x8(%rbp), %rsi
addq $0x320, %rsi            # imm = 0x320
callq 0x5480
movq %rax, -0x17d8(%rbp)
jmp 0xf37e3
movq -0x17d8(%rbp), %rdi
leaq 0x105e34(%rip), %rsi    # 0x1f9625
callq 0x5540
movq %rax, -0x17e0(%rbp)
jmp 0xf37ff
movq -0x17e0(%rbp), %rdi
leaq 0x105e18(%rip), %rsi    # 0x1f9625
callq 0x5540
movq %rax, -0x17e8(%rbp)
jmp 0xf381b
movq -0x17e8(%rbp), %rdi
leaq 0x105dfc(%rip), %rsi    # 0x1f9625
callq 0x5540
jmp 0xf3830
jmp 0xf3832
movl $0x0, -0x1498(%rbp)
movslq -0x1498(%rbp), %rax
movq %rax, -0x17f0(%rbp)
leaq -0x12a8(%rbp), %rdi
callq 0x17c60
movq %rax, %rcx
movq -0x17f0(%rbp), %rax
cmpq %rcx, %rax
jae 0xf449c
movslq -0x1498(%rbp), %rsi
leaq -0x12a8(%rbp), %rdi
callq 0x59c60
movq %rax, -0x17f8(%rbp)
jmp 0xf3885
movq -0x17f8(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, -0x14a0(%rbp)
movups (%rax), %xmm0
movaps %xmm0, -0x14b0(%rbp)
leaq -0x14c8(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xe9c70
jmp 0xf38b8
xorps %xmm0, %xmm0
movsd %xmm0, -0x14d0(%rbp)
movl $0x0, -0x14d4(%rbp)
movslq -0x14d4(%rbp), %rax
movq %rax, -0x1800(%rbp)
leaq -0x1290(%rbp), %rdi
addq $0x8c8, %rdi            # imm = 0x8C8
addq $0x48, %rdi
callq 0xf270
movq %rax, %rcx
movq -0x1800(%rbp), %rax
cmpq %rcx, %rax
jae 0xf3c56
leaq -0x900(%rbp), %rdi
movslq -0x14d4(%rbp), %rsi
callq 0xfff0
movq %rdx, -0x1810(%rbp)
movq %rax, -0x1808(%rbp)
jmp 0xf3928
movq -0x1810(%rbp), %rax
movq -0x1808(%rbp), %rcx
movq %rcx, -0x14e8(%rbp)
movq %rax, -0x14e0(%rbp)
leaq -0x14e8(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movb %al, -0x14d5(%rbp)
testb $0x1, -0x14d5(%rbp)
je 0xf3c40
leaq -0x980(%rbp), %rdi
movslq -0x14d4(%rbp), %rsi
callq 0xf390
movq %rax, -0x1818(%rbp)
jmp 0xf3981
movq -0x1818(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1828(%rbp)
leaq -0x980(%rbp), %rdi
movslq -0x14d4(%rbp), %rsi
callq 0xf390
movq %rax, -0x1820(%rbp)
jmp 0xf39b0
movq -0x1820(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x1838(%rbp)
leaq -0x980(%rbp), %rdi
movslq -0x14d4(%rbp), %rsi
callq 0xf390
movq %rax, -0x1830(%rbp)
jmp 0xf39e0
movsd -0x1838(%rbp), %xmm1
movsd -0x1828(%rbp), %xmm0
movq -0x1830(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq -0x1500(%rbp), %rdi
callq 0xe9c70
jmp 0xf3a0a
leaq -0x980(%rbp), %rdi
movslq -0x14d4(%rbp), %rsi
callq 0xf390
movq %rax, -0x1840(%rbp)
jmp 0xf3a26
movq -0x1840(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd -0x28(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x1508(%rbp)
leaq -0xe30(%rbp), %rax
movq %rax, -0x1850(%rbp)
leaq -0x14b0(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x1848(%rbp)
jmp 0xf3a68
movq -0x1848(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1860(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x1858(%rbp)
jmp 0xf3a95
movq -0x1858(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1870(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x1868(%rbp)
jmp 0xf3ac2
movq -0x1868(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1880(%rbp)
leaq -0x1500(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x1878(%rbp)
jmp 0xf3aec
movq -0x1878(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1890(%rbp)
leaq -0x1500(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x1888(%rbp)
jmp 0xf3b19
movq -0x1888(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x18a0(%rbp)
leaq -0x1500(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x1898(%rbp)
jmp 0xf3b46
movsd -0x18a0(%rbp), %xmm4
movsd -0x1890(%rbp), %xmm3
movsd -0x1880(%rbp), %xmm2
movsd -0x1870(%rbp), %xmm1
movsd -0x1860(%rbp), %xmm0
movq -0x1850(%rbp), %rdi
movq -0x1898(%rbp), %rax
movsd (%rax), %xmm5
callq 0x97a10
movsd %xmm0, -0x18a8(%rbp)
jmp 0xf3b8f
movsd -0x18a8(%rbp), %xmm0
movsd %xmm0, -0x1510(%rbp)
movsd -0x1510(%rbp), %xmm1
movsd -0x1508(%rbp), %xmm0
ucomisd %xmm1, %xmm0
setae %al
andb $0x1, %al
movb %al, -0x1511(%rbp)
testb $0x1, -0x1511(%rbp)
je 0xf3c3e
leaq -0x1508(%rbp), %rdi
leaq -0x14d0(%rbp), %rsi
callq 0x64c70
movq %rax, -0x18b0(%rbp)
jmp 0xf3be3
movq -0x18b0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x14d0(%rbp)
testb $0x1, -0x39(%rbp)
je 0xf3c3c
movsd -0x1508(%rbp), %xmm0
ucomisd -0x14d0(%rbp), %xmm0
jne 0xf3c3a
jp 0xf3c3a
movq -0x1500(%rbp), %rax
movq %rax, -0x14c8(%rbp)
movq -0x14f8(%rbp), %rax
movq %rax, -0x14c0(%rbp)
movq -0x14f0(%rbp), %rax
movq %rax, -0x14b8(%rbp)
jmp 0xf3c3c
jmp 0xf3c3e
jmp 0xf3c40
jmp 0xf3c42
movl -0x14d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14d4(%rbp)
jmp 0xf38cd
movsd -0x14d0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xf3c78
jp 0xf3c78
movl -0x138c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x138c(%rbp)
movsd -0x14d0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xf3c8d
jp 0xf3c8d
jmp 0xf3c9c
movl -0x1388(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1388(%rbp)
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x1520(%rbp)
movq -0x8a0(%rbp), %rsi
leaq -0x1608(%rbp), %rdi
callq 0x15b70
jmp 0xf3cbe
movq -0x8a0(%rbp), %rax
movq %rax, -0x18c0(%rbp)
leaq -0x14b0(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x18b8(%rbp)
jmp 0xf3ce3
movq -0x18b8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x18d0(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x18c8(%rbp)
jmp 0xf3d10
movq -0x18c8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x18e0(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x18d8(%rbp)
jmp 0xf3d3d
movsd -0x18e0(%rbp), %xmm1
movsd -0x18d0(%rbp), %xmm0
movq -0x18c0(%rbp), %rdi
movq -0x18d8(%rbp), %rax
movsd (%rax), %xmm2
movsd -0x1520(%rbp), %xmm3
leaq -0x1608(%rbp), %rsi
callq 0xf6dd0
jmp 0xf3d75
leaq -0x1620(%rbp), %rdi
movq %rdi, -0x18e8(%rbp)
callq 0xf650
movq -0x18e8(%rbp), %rsi
leaq -0x1608(%rbp), %rdi
callq 0x1b0c40
jmp 0xf3d9d
leaq -0x1638(%rbp), %rdi
callq 0xed40
movl $0x0, -0x163c(%rbp)
movslq -0x163c(%rbp), %rax
movq %rax, -0x18f0(%rbp)
leaq -0x1620(%rbp), %rdi
callq 0xf990
movq %rax, %rcx
movq -0x18f0(%rbp), %rax
cmpq %rcx, %rax
jae 0xf3f08
movslq -0x163c(%rbp), %rsi
leaq -0x1620(%rbp), %rdi
callq 0xfc80
movq %rax, -0x18f8(%rbp)
jmp 0xf3dfc
movq -0x18f8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1908(%rbp)
movl -0x163c(%rbp), %eax
incl %eax
movslq %eax, %rsi
leaq -0x1620(%rbp), %rdi
callq 0xfc80
movq %rax, -0x1900(%rbp)
jmp 0xf3e2f
movq -0x1900(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1918(%rbp)
movl -0x163c(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
leaq -0x1620(%rbp), %rdi
callq 0xfc80
movq %rax, -0x1910(%rbp)
jmp 0xf3e63
movsd -0x1918(%rbp), %xmm1
movsd -0x1908(%rbp), %xmm0
movq -0x1910(%rbp), %rax
movsd (%rax), %xmm2
leaq -0x1658(%rbp), %rdi
callq 0xe9c70
jmp 0xf3e8c
leaq -0x1638(%rbp), %rdi
leaq -0x1658(%rbp), %rsi
callq 0x59bf0
jmp 0xf3ea1
jmp 0xf3ea3
movl -0x163c(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x163c(%rbp)
jmp 0xf3db3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf448b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0xf447f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x1638(%rbp), %rdi
callq 0xefe0
jmp 0xf447f
movq $0x0, -0x1660(%rbp)
leaq -0x1678(%rbp), %rdi
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xe9c70
jmp 0xf3f2a
movl $0x0, -0x167c(%rbp)
movslq -0x167c(%rbp), %rax
movq %rax, -0x1920(%rbp)
leaq -0x1638(%rbp), %rdi
callq 0x17c60
movq %rax, %rcx
movq -0x1920(%rbp), %rax
cmpq %rcx, %rax
jae 0xf4296
leaq -0x14b0(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x1928(%rbp)
jmp 0xf3f78
movq -0x1928(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1938(%rbp)
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x1930(%rbp)
jmp 0xf3fa7
movq -0x1930(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x1940(%rbp)
jmp 0xf3fbe
movsd -0x1938(%rbp), %xmm0
movq -0x1940(%rbp), %rax
movsd (%rax), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x1950(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x1948(%rbp)
jmp 0xf3ff7
movq -0x1948(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1960(%rbp)
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x1958(%rbp)
jmp 0xf4026
movq -0x1958(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x1968(%rbp)
jmp 0xf4040
movsd -0x1960(%rbp), %xmm0
movq -0x1968(%rbp), %rax
movsd (%rax), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x1978(%rbp)
leaq -0x14b0(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x1970(%rbp)
jmp 0xf4079
movq -0x1970(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1988(%rbp)
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x1980(%rbp)
jmp 0xf40a8
movq -0x1980(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x1990(%rbp)
jmp 0xf40c2
movsd -0x1978(%rbp), %xmm1
movsd -0x1950(%rbp), %xmm0
movsd -0x1988(%rbp), %xmm2
movq -0x1990(%rbp), %rax
movsd (%rax), %xmm3
addsd %xmm3, %xmm2
leaq -0x1698(%rbp), %rdi
callq 0xe9c70
jmp 0xf40f7
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x1998(%rbp)
jmp 0xf4113
movq -0x1998(%rbp), %rdi
xorl %esi, %esi
callq 0xe9d70
movq %rax, -0x19a0(%rbp)
jmp 0xf412a
movq -0x19a0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x19b0(%rbp)
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x19a8(%rbp)
jmp 0xf4159
movq -0x19a8(%rbp), %rdi
movl $0x1, %esi
callq 0xe9d70
movq %rax, -0x19b8(%rbp)
jmp 0xf4173
movq -0x19b8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x19c8(%rbp)
movslq -0x167c(%rbp), %rsi
leaq -0x1638(%rbp), %rdi
callq 0x59c60
movq %rax, -0x19c0(%rbp)
jmp 0xf41a2
movq -0x19c0(%rbp), %rdi
movl $0x2, %esi
callq 0xe9d70
movq %rax, -0x19d0(%rbp)
jmp 0xf41bc
movsd -0x19c8(%rbp), %xmm1
movsd -0x19b0(%rbp), %xmm0
movq -0x19d0(%rbp), %rax
movsd (%rax), %xmm2
xorps %xmm5, %xmm5
movaps %xmm5, %xmm3
movaps %xmm5, %xmm4
callq 0xebaf0
movsd %xmm0, -0x19d8(%rbp)
jmp 0xf41ef
movsd -0x19d8(%rbp), %xmm0
movsd -0x1520(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x16a0(%rbp)
leaq -0x1660(%rbp), %rdi
leaq -0x16a0(%rbp), %rsi
callq 0x64c70
movq %rax, -0x19e0(%rbp)
jmp 0xf4227
movq -0x19e0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x1660(%rbp)
testb $0x1, -0x39(%rbp)
je 0xf4280
movsd -0x16a0(%rbp), %xmm0
ucomisd -0x1660(%rbp), %xmm0
jne 0xf427e
jp 0xf427e
movq -0x1698(%rbp), %rax
movq %rax, -0x1678(%rbp)
movq -0x1690(%rbp), %rax
movq %rax, -0x1670(%rbp)
movq -0x1688(%rbp), %rax
movq %rax, -0x1668(%rbp)
jmp 0xf4280
jmp 0xf4282
movl -0x167c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x167c(%rbp)
jmp 0xf3f34
movsd -0x14d0(%rbp), %xmm0
movsd %xmm0, -0x16a8(%rbp)
movsd -0x1660(%rbp), %xmm0
movsd %xmm0, -0x16b0(%rbp)
movsd -0x16a8(%rbp), %xmm0
ucomisd -0x16b0(%rbp), %xmm0
setae %al
andb $0x1, %al
movb %al, -0x16b1(%rbp)
testb $0x1, -0x16b1(%rbp)
je 0xf43a5
movsd -0x16a8(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x16c0(%rbp)
leaq -0x12d8(%rbp), %rdi
leaq -0x16c0(%rbp), %rsi
callq 0xf6d0
jmp 0xf4307
testb $0x1, -0x39(%rbp)
je 0xf43a3
leaq -0x16e0(%rbp), %rdi
leaq -0x14b0(%rbp), %rsi
leaq -0x16a8(%rbp), %rdx
callq 0xf6f60
jmp 0xf432d
leaq -0x12f0(%rbp), %rdi
leaq -0x16e0(%rbp), %rsi
callq 0xf6f30
jmp 0xf4342
leaq -0xe30(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
movq -0x14b8(%rbp), %rax
movq %rax, -0x16f0(%rbp)
movups -0x14c8(%rbp), %xmm0
movaps %xmm0, -0x1700(%rbp)
movsd -0x16a8(%rbp), %xmm0
movq -0x16f0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movaps -0x1700(%rbp), %xmm1
movups %xmm1, (%rax)
leaq -0x1320(%rbp), %rdx
leaq -0x1338(%rbp), %rcx
callq 0xf4770
jmp 0xf43a1
jmp 0xf43a3
jmp 0xf43a5
testb $0x1, -0x16b1(%rbp)
jne 0xf4447
movsd -0x16b0(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x1708(%rbp)
leaq -0x12d8(%rbp), %rdi
leaq -0x1708(%rbp), %rsi
callq 0xf6d0
jmp 0xf43db
testb $0x1, -0x39(%rbp)
je 0xf4445
leaq -0x1728(%rbp), %rdi
leaq -0x14b0(%rbp), %rsi
leaq -0x16b0(%rbp), %rdx
callq 0xf6f60
jmp 0xf43fd
leaq -0x1308(%rbp), %rdi
leaq -0x1728(%rbp), %rsi
callq 0xf6f30
jmp 0xf4412
leaq -0x1748(%rbp), %rdi
leaq -0x1678(%rbp), %rsi
leaq -0x1660(%rbp), %rdx
callq 0xf6f60
jmp 0xf442e
leaq -0x1350(%rbp), %rdi
leaq -0x1748(%rbp), %rsi
callq 0xf6f30
jmp 0xf4443
jmp 0xf4445
jmp 0xf4447
leaq -0x1638(%rbp), %rdi
callq 0xefe0
leaq -0x1620(%rbp), %rdi
callq 0xf9d0
leaq -0x1608(%rbp), %rdi
callq 0x16350
movl -0x1498(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1498(%rbp)
jmp 0xf383c
leaq -0x1620(%rbp), %rdi
callq 0xf9d0
leaq -0x1608(%rbp), %rdi
callq 0x16350
jmp 0xf46aa
cvtsi2sdl -0x1384(%rbp), %xmm0
cvtsi2sdl -0x2c(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x1750(%rbp)
cvtsi2sdl -0x1388(%rbp), %xmm0
cvtsi2sdl -0x2c(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x1758(%rbp)
cvtsi2sdl -0x138c(%rbp), %xmm0
cvtsi2sdl -0x2c(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x1760(%rbp)
movl -0x1384(%rbp), %ecx
movsd -0x1758(%rbp), %xmm1
movsd -0x1760(%rbp), %xmm2
movl -0x2c(%rbp), %r8d
leaq -0x240(%rbp), %rdi
movsd 0x102e98(%rip), %xmm0   # 0x1f73a8
movl $0x3e8, %esi            # imm = 0x3E8
leaq -0x12d8(%rbp), %rdx
callq 0xf48c0
jmp 0xf4523
leaq 0x1081ae(%rip), %rdi    # 0x1fc6d8
xorl %eax, %eax
callq 0x5070
jmp 0xf4533
testb $0x1, -0x39(%rbp)
je 0xf45df
leaq -0x450(%rbp), %rdi
leaq -0x12f0(%rbp), %rsi
leaq -0x1308(%rbp), %rdx
leaq -0x1368(%rbp), %rcx
leaq -0x1380(%rbp), %r8
xorl %r9d, %r9d
movsd 0xfe20d(%rip), %xmm1    # 0x1f2778
movaps %xmm1, %xmm0
callq 0xf4dc0
jmp 0xf4575
leaq 0x108181(%rip), %rdi    # 0x1fc6fd
xorl %eax, %eax
callq 0x5070
jmp 0xf4585
testb $0x1, -0x3a(%rbp)
jne 0xf458d
jmp 0xf458d
testb $0x1, -0x3a(%rbp)
je 0xf45dd
leaq -0x650(%rbp), %rdi
leaq -0x1338(%rbp), %rsi
leaq -0x1350(%rbp), %rdx
leaq -0x1368(%rbp), %rcx
leaq -0x1380(%rbp), %r8
xorl %r9d, %r9d
movsd 0xfe1b7(%rip), %xmm1    # 0x1f2778
movaps %xmm1, %xmm0
callq 0xf4dc0
jmp 0xf45cb
leaq 0x108144(%rip), %rdi    # 0x1fc716
xorl %eax, %eax
callq 0x5070
jmp 0xf45db
jmp 0xf45dd
jmp 0xf45df
leaq -0x1290(%rbp), %rdi
callq 0x849f0
jmp 0xf45ed
leaq -0x1380(%rbp), %rdi
callq 0xf9d0
leaq -0x1368(%rbp), %rdi
callq 0xf9d0
leaq -0x1350(%rbp), %rdi
callq 0xf6fa0
leaq -0x1338(%rbp), %rdi
callq 0xf6fa0
leaq -0x1320(%rbp), %rdi
callq 0xec80
leaq -0x1308(%rbp), %rdi
callq 0xf6fa0
leaq -0x12f0(%rbp), %rdi
callq 0xf6fa0
leaq -0x12d8(%rbp), %rdi
callq 0xf9d0
leaq -0x12c0(%rbp), %rdi
callq 0xefe0
leaq -0x12a8(%rbp), %rdi
callq 0xefe0
leaq -0x1290(%rbp), %rdi
callq 0x84a30
leaq -0x850(%rbp), %rdi
callq 0x5780
leaq -0x650(%rbp), %rdi
callq 0x5780
leaq -0x450(%rbp), %rdi
callq 0x5780
leaq -0x240(%rbp), %rdi
callq 0x5780
addq $0x1a00, %rsp           # imm = 0x1A00
popq %rbp
retq
leaq -0x1380(%rbp), %rdi
callq 0xf9d0
leaq -0x1368(%rbp), %rdi
callq 0xf9d0
leaq -0x1350(%rbp), %rdi
callq 0xf6fa0
leaq -0x1338(%rbp), %rdi
callq 0xf6fa0
leaq -0x1320(%rbp), %rdi
callq 0xec80
leaq -0x1308(%rbp), %rdi
callq 0xf6fa0
leaq -0x12f0(%rbp), %rdi
callq 0xf6fa0
leaq -0x12d8(%rbp), %rdi
callq 0xf9d0
leaq -0x12c0(%rbp), %rdi
callq 0xefe0
leaq -0x12a8(%rbp), %rdi
callq 0xefe0
leaq -0x1290(%rbp), %rdi
callq 0x84a30
leaq -0x850(%rbp), %rdi
callq 0x5780
leaq -0x650(%rbp), %rdi
callq 0x5780
leaq -0x450(%rbp), %rdi
callq 0x5780
leaq -0x240(%rbp), %rdi
callq 0x5780
movq -0x248(%rbp), %rdi
callq 0x58f0
nopw (%rax,%rax)