// File: Luthaf[P]zeopp/networkaccessibility.cc
// Function: AccessibilityClassNINF::getPLDvisData(std::vector<Point, std::allocator<Point>>*, std::vector<int, std::allocator<int>>*, std::vector<double, std::allocator<double>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void AccessibilityClassNINF::getPLDvisData(vector<Point> *NodeFracCoord, vector<int> *NodeSegmentIDs, vector<double> *NodeSegmentValue, string reqvisdata){

 // preparing data structures
 NodeFracCoord->clear();
 NodeSegmentIDs->clear();
 NodeSegmentValue->clear();

 if(reqvisdata == "INITSEGMAP"){
   // initial segment mapping (prints nodes initially assigned to semgents)
   for(unsigned int i=0; i<vornet.nodes.size(); i++)
     {
     if(segmentMapping[i]>=0) 
       {
       NodeFracCoord->push_back(orgAtomNet->xyz_to_abc(vornet.nodes.at(i).x, vornet.nodes.at(i).y, vornet.nodes.at(i).z));
       NodeSegmentIDs->push_back(segmentMapping[i]);
       NodeSegmentValue->push_back(segmentDi[segmentMapping[i]]);
       };
     };
   };

 if(reqvisdata == "FINALSEGMAP"){
   // initial segment mapping (prints nodes initially assigned to semgents)
   for(unsigned int i=0; i<vornet.nodes.size(); i++)
     {
     if(segmentMappingFinal[i]>=0)
       {
       NodeFracCoord->push_back(orgAtomNet->xyz_to_abc(vornet.nodes.at(i).x, vornet.nodes.at(i).y, vornet.nodes.at(i).z));
       NodeSegmentIDs->push_back(segmentMappingFinal[i]);
       NodeSegmentValue->push_back(segmentDiFinal[segmentMappingFinal[i]]);
       };
     };
   };

 if(reqvisdata == "INITSEGDINODE"){
   // initial segment mapping (prints nodes initially assigned to semgents)
   for(unsigned int j=0; j<segmentDiNodeID.size(); j++)
     {
     int i=segmentDiNodeID[j];
     NodeFracCoord->push_back(orgAtomNet->xyz_to_abc(vornet.nodes.at(i).x, vornet.nodes.at(i).y, vornet.nodes.at(i).z));
     NodeSegmentIDs->push_back(j);
     NodeSegmentValue->push_back(segmentDi[j]);
     };
   };

 if(reqvisdata == "PLDNODES"){
   // initial segment mapping (prints nodes initially assigned to semgents)
   for(int i=0; i<n_segments; i++)
   for(int j=i+1; j<n_segments; j++)
     {
     if(PLDtable[i].at(j)> 0.0)
       { // segments i and j are connected
       int node1 = PLDEdgeTable.at(i).at(j).first;
       int node2 = PLDEdgeTable.at(i).at(j).second;  
       for(unsigned int k=0; k<vornet.edges.size(); k++){
       int count=0;
       if((vornet.edges.at(k).from==node1&&vornet.edges.at(k).to==node2)||(vornet.edges.at(k).from==node2&&vornet.edges.at(k).to==node1))
         { // edge found
         if(count > 0) cerr << "Two nodes connected by more than one edge. Visualization may contain artefacts.\n";
         XYZ nd1(vornet.nodes.at(vornet.edges.at(k).from).x, vornet.nodes.at(vornet.edges.at(k).from).y, vornet.nodes.at(vornet.edges.at(k).from).z);
         XYZ nd2(vornet.nodes.at(vornet.edges.at(k).to).x, vornet.nodes.at(vornet.edges.at(k).to).y, vornet.nodes.at(vornet.edges.at(k).to).z);

         nd2 = nd2 + vornet.v_a.scale(vornet.edges.at(k).delta_uc_x) + vornet.v_b.scale(vornet.edges.at(k).delta_uc_y) + vornet.v_c.scale(vornet.edges.at(k).delta_uc_z);

         XYZ nd = midpoint(nd1, nd2);
         
         NodeFracCoord->push_back(orgAtomNet->xyz_to_abc(nd.x, nd.y, nd.z));
         NodeSegmentIDs->push_back(0); // no ID for edge
         NodeSegmentValue->push_back(PLDtable[i].at(j));
         count++;
         };
       };
     };
     };
   };

 if(reqvisdata == "DFSPHERES"){
   // display spheres in between connected cages
   // this is a temp function without PBC 
   for(int i=0; i<n_segments; i++)
   for(int j=i+1; j<n_segments; j++)
     {
     int dinode1 =segmentDiNodeID[i];
     int dinode2 =segmentDiNodeID[j];

     if(PLDtable[i].at(j)> 0.0 && calcEuclideanDistance(vornet.nodes.at(dinode1).x, vornet.nodes.at(dinode1).y, vornet.nodes.at(dinode1).z,
                               vornet.nodes.at(dinode2).x, vornet.nodes.at(dinode2).y, vornet.nodes.at(dinode2).z) < 15.0 )
       { // segments i and j are connected
       int count=0;
         if(count > 0) cerr << "Two nodes connected by more than one edge. Visualization may contain artefacts.\n";

         XYZ nd1(vornet.nodes.at(dinode1).x, vornet.nodes.at(dinode1).y, vornet.nodes.at(dinode1).z);
         XYZ nd2(vornet.nodes.at(dinode2).x, vornet.nodes.at(dinode2).y, vornet.nodes.at(dinode2).z);

         XYZ nd = midpoint(nd1, nd2);

         NodeFracCoord->push_back(orgAtomNet->xyz_to_abc(nd.x, nd.y, nd.z));
         NodeSegmentIDs->push_back(0); // no ID for edge
         NodeSegmentValue->push_back(PLDtable[i].at(j));
         count++;
       };
     };
   };


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x440, %rsp            # imm = 0x440
movq %r8, -0x280(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x10(%rbp), %rdi
callq 0x84ae0
movq -0x18(%rbp), %rdi
callq 0x163b0
movq -0x20(%rbp), %rdi
callq 0x851f0
movq -0x280(%rbp), %rdi
leaq 0xfbef7(%rip), %rsi     # 0x1fcec1
callq 0x845d0
testb $0x1, %al
jne 0x100fd8
jmp 0x101174
movl $0x0, -0x2c(%rbp)
movq -0x288(%rbp), %rdi
movl -0x2c(%rbp), %eax
movq %rax, -0x290(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
callq 0xf270
movq %rax, %rcx
movq -0x290(%rbp), %rax
cmpq %rcx, %rax
jae 0x101172
movq -0x288(%rbp), %rdi
addq $0x198, %rdi            # imm = 0x198
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xed60
cmpl $0x0, (%rax)
jl 0x101162
movq -0x288(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq (%rdi), %rax
movq %rax, -0x2c8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x2c0(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x2b8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x2c8(%rbp), %rsi
movsd -0x2c0(%rbp), %xmm0
movsd -0x2b8(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0x48(%rbp), %rdi
callq 0x97360
movq -0x2b0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x59bf0
movq -0x288(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x2a8(%rbp)
addq $0x198, %rdi            # imm = 0x198
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xed60
movq -0x2a8(%rbp), %rdi
movq %rax, %rsi
callq 0xd1b0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x298(%rbp)
movq %rdi, %rax
addq $0x1c8, %rax            # imm = 0x1C8
movq %rax, -0x2a0(%rbp)
addq $0x198, %rdi            # imm = 0x198
movl -0x2c(%rbp), %eax
movl %eax, %esi
callq 0xed60
movq -0x2a0(%rbp), %rdi
movslq (%rax), %rsi
callq 0xedb0
movq -0x298(%rbp), %rdi
movq %rax, %rsi
callq 0x105c0
jmp 0x101164
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x100fdf
jmp 0x101174
movq -0x280(%rbp), %rdi
leaq 0xfbd4a(%rip), %rsi     # 0x1fcecc
callq 0x845d0
testb $0x1, %al
jne 0x101190
jmp 0x10132c
movl $0x0, -0x4c(%rbp)
movq -0x288(%rbp), %rdi
movl -0x4c(%rbp), %eax
movq %rax, -0x2d0(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
callq 0xf270
movq %rax, %rcx
movq -0x2d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x10132a
movq -0x288(%rbp), %rdi
addq $0x1b0, %rdi            # imm = 0x1B0
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xed60
cmpl $0x0, (%rax)
jl 0x10131a
movq -0x288(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq (%rdi), %rax
movq %rax, -0x308(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x300(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x2f8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq -0x308(%rbp), %rsi
movsd -0x300(%rbp), %xmm0
movsd -0x2f8(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0x68(%rbp), %rdi
callq 0x97360
movq -0x2f0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x59bf0
movq -0x288(%rbp), %rdi
movq -0x18(%rbp), %rax
movq %rax, -0x2e8(%rbp)
addq $0x1b0, %rdi            # imm = 0x1B0
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xed60
movq -0x2e8(%rbp), %rdi
movq %rax, %rsi
callq 0xd1b0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq %rdi, %rax
addq $0x1f8, %rax            # imm = 0x1F8
movq %rax, -0x2e0(%rbp)
addq $0x1b0, %rdi            # imm = 0x1B0
movl -0x4c(%rbp), %eax
movl %eax, %esi
callq 0xed60
movq -0x2e0(%rbp), %rdi
movslq (%rax), %rsi
callq 0xedb0
movq -0x2d8(%rbp), %rdi
movq %rax, %rsi
callq 0x105c0
jmp 0x10131c
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x101197
jmp 0x10132c
movq -0x280(%rbp), %rdi
leaq 0xfbb9e(%rip), %rsi     # 0x1fced8
callq 0x845d0
testb $0x1, %al
jne 0x101348
jmp 0x1014a8
movl $0x0, -0x6c(%rbp)
movq -0x288(%rbp), %rdi
movl -0x6c(%rbp), %eax
movq %rax, -0x310(%rbp)
addq $0x1e0, %rdi            # imm = 0x1E0
callq 0x10090
movq %rax, %rcx
movq -0x310(%rbp), %rax
cmpq %rcx, %rax
jae 0x1014a6
movq -0x288(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movl -0x6c(%rbp), %eax
movl %eax, %esi
callq 0xed60
movq -0x288(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x320(%rbp)
movq (%rdi), %rax
movq %rax, -0x338(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x70(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x330(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x70(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x328(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x70(%rbp), %rsi
callq 0xf390
movq -0x338(%rbp), %rsi
movsd -0x330(%rbp), %xmm0
movsd -0x328(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0x88(%rbp), %rdi
callq 0x97360
movq -0x320(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x59bf0
movq -0x18(%rbp), %rdi
movl -0x6c(%rbp), %eax
movl %eax, -0x8c(%rbp)
leaq -0x8c(%rbp), %rsi
callq 0xffc0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x318(%rbp)
addq $0x1c8, %rdi            # imm = 0x1C8
movl -0x6c(%rbp), %eax
movl %eax, %esi
callq 0xedb0
movq -0x318(%rbp), %rdi
movq %rax, %rsi
callq 0x105c0
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x10134f
jmp 0x1014a8
movq -0x280(%rbp), %rdi
leaq 0xfba30(%rip), %rsi     # 0x1fcee6
callq 0x845d0
testb $0x1, %al
jne 0x1014c4
jmp 0x101b7c
movl $0x0, -0x90(%rbp)
movq -0x288(%rbp), %rcx
movl -0x90(%rbp), %eax
cmpl 0x190(%rcx), %eax
jge 0x101b7a
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
movq -0x288(%rbp), %rcx
movl -0x94(%rbp), %eax
cmpl 0x190(%rcx), %eax
jge 0x101b64
movq -0x288(%rbp), %rdi
addq $0x228, %rdi            # imm = 0x228
movslq -0x90(%rbp), %rsi
callq 0x162d0
movq %rax, %rdi
movslq -0x94(%rbp), %rsi
callq 0xfc80
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x101b4e
movq -0x288(%rbp), %rdi
addq $0x240, %rdi            # imm = 0x240
movslq -0x90(%rbp), %rsi
callq 0xce630
movq %rax, %rdi
movslq -0x94(%rbp), %rsi
callq 0xce670
movq -0x288(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x98(%rbp)
addq $0x240, %rdi            # imm = 0x240
movslq -0x90(%rbp), %rsi
callq 0xce630
movq %rax, %rdi
movslq -0x94(%rbp), %rsi
callq 0xce670
movl 0x4(%rax), %eax
movl %eax, -0x9c(%rbp)
movl $0x0, -0xa0(%rbp)
movq -0x288(%rbp), %rdi
movl -0xa0(%rbp), %eax
movq %rax, -0x340(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
callq 0xf290
movq %rax, %rcx
movq -0x340(%rbp), %rax
cmpq %rcx, %rax
jae 0x101b4c
movq -0x288(%rbp), %rdi
movl $0x0, -0xa4(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movl (%rax), %eax
cmpl -0x98(%rbp), %eax
jne 0x101641
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movl 0x4(%rax), %eax
cmpl -0x9c(%rbp), %eax
je 0x101696
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movl (%rax), %eax
cmpl -0x9c(%rbp), %eax
jne 0x101b36
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movl 0x4(%rax), %eax
cmpl -0x98(%rbp), %eax
jne 0x101b36
cmpl $0x0, -0xa4(%rbp)
jle 0x1016b2
movq 0x17194a(%rip), %rdi    # 0x272ff0
leaq 0xfb842(%rip), %rsi     # 0x1fceef
callq 0x5540
movq -0x288(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x3b8(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x3b8(%rbp), %rdi
movslq (%rax), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x3a0(%rbp)
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x3b0(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x3b0(%rbp), %rdi
movslq (%rax), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x398(%rbp)
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x3a8(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x3a8(%rbp), %rdi
movslq (%rax), %rsi
callq 0xf390
movsd -0x3a0(%rbp), %xmm0
movsd -0x398(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0xc0(%rbp), %rdi
callq 0xea8e0
movq -0x288(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x390(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x390(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x378(%rbp)
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x388(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x388(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x370(%rbp)
movq %rdi, %rax
addq $0x18, %rax
addq $0x48, %rax
movq %rax, -0x380(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x380(%rbp), %rdi
movslq 0x4(%rax), %rsi
callq 0xf390
movsd -0x378(%rbp), %xmm0
movsd -0x370(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0xd8(%rbp), %rdi
callq 0xea8e0
movq -0x288(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, -0x368(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x368(%rbp), %rsi
cvtsi2sdl 0x10(%rax), %xmm0
leaq -0x138(%rbp), %rdi
callq 0xea9f0
leaq -0x120(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0xeae50
movq -0x288(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
addq $0x18, %rax
movq %rax, -0x360(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x360(%rbp), %rsi
cvtsi2sdl 0x14(%rax), %xmm0
leaq -0x150(%rbp), %rdi
callq 0xea9f0
leaq -0x108(%rbp), %rdi
leaq -0x120(%rbp), %rsi
leaq -0x150(%rbp), %rdx
callq 0xeae50
movq -0x288(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
addq $0x30, %rax
movq %rax, -0x358(%rbp)
addq $0x18, %rdi
addq $0x60, %rdi
movl -0xa0(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq -0x358(%rbp), %rsi
cvtsi2sdl 0x18(%rax), %xmm0
leaq -0x168(%rbp), %rdi
callq 0xea9f0
leaq -0xf0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0xeae50
movq -0xf0(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0xd0(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0x198(%rbp), %rcx
leaq -0x1b0(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xeafc0
movq -0x288(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x350(%rbp)
movq (%rax), %rsi
movsd -0x180(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x170(%rbp), %xmm2
leaq -0x1c8(%rbp), %rdi
callq 0x97360
movq -0x350(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x59bf0
movq -0x18(%rbp), %rdi
movl $0x0, -0x1cc(%rbp)
leaq -0x1cc(%rbp), %rsi
callq 0xffc0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x348(%rbp)
addq $0x228, %rdi            # imm = 0x228
movslq -0x90(%rbp), %rsi
callq 0x162d0
movq %rax, %rdi
movslq -0x94(%rbp), %rsi
callq 0xfc80
movq -0x348(%rbp), %rdi
movq %rax, %rsi
callq 0x105c0
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x101b38
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x1015b6
jmp 0x101b4e
jmp 0x101b50
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x1014f6
jmp 0x101b66
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x1014ce
jmp 0x101b7c
movq -0x280(%rbp), %rdi
leaq 0xfb3b6(%rip), %rsi     # 0x1fcf40
callq 0x845d0
testb $0x1, %al
jne 0x101b98
jmp 0x10204c
movl $0x0, -0x1d0(%rbp)
movq -0x288(%rbp), %rcx
movl -0x1d0(%rbp), %eax
cmpl 0x190(%rcx), %eax
jge 0x10204a
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
movq -0x288(%rbp), %rcx
movl -0x1d4(%rbp), %eax
cmpl 0x190(%rcx), %eax
jge 0x102034
movq -0x288(%rbp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x1d0(%rbp), %rsi
callq 0xed60
movq -0x288(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x1d8(%rbp)
addq $0x1e0, %rdi            # imm = 0x1E0
movslq -0x1d4(%rbp), %rsi
callq 0xed60
movq -0x288(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x1dc(%rbp)
addq $0x228, %rdi            # imm = 0x228
movslq -0x1d0(%rbp), %rsi
callq 0x162d0
movq %rax, %rdi
movslq -0x1d4(%rbp), %rsi
callq 0xfc80
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x10201e
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x3e0(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x3d8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x3d0(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x3c8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x3c0(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movsd -0x3e0(%rbp), %xmm0
movsd -0x3d8(%rbp), %xmm1
movsd -0x3d0(%rbp), %xmm2
movsd -0x3c8(%rbp), %xmm3
movsd -0x3c0(%rbp), %xmm4
movsd 0x10(%rax), %xmm5
callq 0xebaf0
movaps %xmm0, %xmm1
movsd 0xf5af9(%rip), %xmm0    # 0x1f7878
ucomisd %xmm1, %xmm0
jbe 0x10201e
movl $0x0, -0x1e0(%rbp)
cmpl $0x0, -0x1e0(%rbp)
jle 0x101daf
movq 0x17124d(%rip), %rdi    # 0x272ff0
leaq 0xfb145(%rip), %rsi     # 0x1fceef
callq 0x5540
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x410(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x408(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1d8(%rbp), %rsi
callq 0xf390
movsd -0x410(%rbp), %xmm0
movsd -0x408(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0x1f8(%rbp), %rdi
callq 0xea8e0
movq -0x288(%rbp), %rdi
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x400(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movq -0x288(%rbp), %rdi
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x3f8(%rbp)
addq $0x18, %rdi
addq $0x48, %rdi
movslq -0x1dc(%rbp), %rsi
callq 0xf390
movsd -0x400(%rbp), %xmm0
movsd -0x3f8(%rbp), %xmm1
movsd 0x10(%rax), %xmm2
leaq -0x210(%rbp), %rdi
callq 0xea8e0
movq -0x1f8(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x1f0(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x210(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x208(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x200(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x228(%rbp), %rdi
leaq -0x240(%rbp), %rcx
leaq -0x258(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xeafc0
movq -0x288(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x3f0(%rbp)
movq (%rax), %rsi
movsd -0x228(%rbp), %xmm0
movsd -0x220(%rbp), %xmm1
movsd -0x218(%rbp), %xmm2
leaq -0x270(%rbp), %rdi
callq 0x97360
movq -0x3f0(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x59bf0
movq -0x18(%rbp), %rdi
movl $0x0, -0x274(%rbp)
leaq -0x274(%rbp), %rsi
callq 0xffc0
movq -0x288(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x3e8(%rbp)
addq $0x228, %rdi            # imm = 0x228
movslq -0x1d0(%rbp), %rsi
callq 0x162d0
movq %rax, %rdi
movslq -0x1d4(%rbp), %rsi
callq 0xfc80
movq -0x3e8(%rbp), %rdi
movq %rax, %rsi
callq 0x105c0
movl -0x1e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e0(%rbp)
jmp 0x102020
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x101bca
jmp 0x102036
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d0(%rbp)
jmp 0x101ba2
jmp 0x10204c
addq $0x440, %rsp            # imm = 0x440
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop