// File: /workspace/github_cpp_makefile_star2_O1/Luthaf[P]zeopp/area_and_volume.cc
// Function: visVoro(char*, double, int, int, int, VORONOI_NETWORK*, ATOM_NETWORK*)
void visVoro(char* name, double probeRad, int skel_a, int skel_b, int skel_c, VORONOI_NETWORK* vornet, ATOM_NETWORK* atmnet) {
  string filename_xyz = string(name).append("_voro.xyz");
  string filename2_xyz = string(name).append("_voro_accessible.xyz");
  string filename3_xyz = string(name).append("_voro_nonaccessible.xyz");
  vector<bool> accessInfo;
  vector<bool> nonaccessInfo;
  vector<CHANNEL> channels;
  CHANNEL::findChannels(vornet, probeRad, &accessInfo, &channels);
  int num_accessible = 0;
  for(unsigned int i = 0; i < accessInfo.size(); i++) if(accessInfo.at(i)==1) num_accessible++;

  int num_nonaccessible = 0;
  nonaccessInfo.resize(accessInfo.size(),false);
  for(unsigned int i = 0; i < accessInfo.size(); i++) 
    if(vornet->nodes.at(i).rad_stat_sphere>probeRad&&accessInfo.at(i)==0) 
       {
       num_nonaccessible++;
       nonaccessInfo[i]=true;
       };

  //write Voronoi nodes as .xyz
  FILE *output_xyz; output_xyz = fopen(filename_xyz.c_str(), "w");
  FILE *output2_xyz; output2_xyz = fopen(filename2_xyz.c_str(), "w");
  FILE *output3_xyz; output3_xyz = fopen(filename3_xyz.c_str(), "w");
  fprintf(output_xyz, "%d\nVoronoi diagram for %s with probe radius %.3f\n", (int)(accessInfo.size()), name, probeRad);
  fprintf(output2_xyz, "%d\nVoronoi accessible diagram for %s with probe radius %.3f\n", num_accessible, name, probeRad);
  fprintf(output3_xyz, "%d\nVoronoi non-accessible diagram for %s with probe radius %.3f\n", num_nonaccessible, name, probeRad);
  for(unsigned int i = 0; i < accessInfo.size(); i++) {
    fprintf(output_xyz, "Al %.3f %.3f %.3f %.3f\n", vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z, vornet->nodes.at(i).rad_stat_sphere); //"Al" for 'all' Voronoi nodes, shown in main unit cell
    if(accessInfo.at(i)==1) {
      Point abc = atmnet->xyz_to_abc(vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
      float new_a = abc.vals[0] + skel_a;
      float new_b = abc.vals[1] + skel_b;
      float new_c = abc.vals[2] + skel_c;
      Point new_xyz = atmnet->abc_to_xyz(new_a, new_b, new_c);
      fprintf(output2_xyz, "Ac %.3f %.3f %.3f %.3f\n", new_xyz.vals[0], new_xyz.vals[1], new_xyz.vals[2], vornet->nodes.at(i).rad_stat_sphere); //"Ac" for 'accessible' Voronoi nodes, shown in adjacent cell
    } else {
    if(vornet->nodes.at(i).rad_stat_sphere>probeRad) {
      Point abc = atmnet->xyz_to_abc(vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
      float new_a = abc.vals[0] + skel_a;
      float new_b = abc.vals[1] + skel_b;
      float new_c = abc.vals[2] + skel_c;
      Point new_xyz = atmnet->abc_to_xyz(new_a, new_b, new_c);
      fprintf(output3_xyz, "In %.3f %.3f %.3f %.3f\n", new_xyz.vals[0], new_xyz.vals[1], new_xyz.vals[2], vornet->nodes.at(i).rad_stat_sphere); //"In" for 'nonaccessible' Voronoi nodes, shown in adjacent cell

     }; // ends if for nodes larger than probeRad

    };
  }
  fclose(output_xyz);
  fclose(output2_xyz);
  fclose(output3_xyz);


  // VTK saving function
  // Note: to avoid issues with reindexing of nodes in .vtk file
  //       when printing (non)accesible network, all nodes are printed first

  //write Voronoi edges as .vtk
  string filename_vtk = string(name).append("_voro.vtk");
  string filename2_vtk = string(name).append("_voro_accessible.vtk");
  string filename3_vtk = string(name).append("_voro_nonaccessible.vtk");
  //start saving the addresses of (non)accessible nodes
  int *accessIndex;
  accessIndex = new int[accessInfo.size()];
  int *nonaccessIndex;
  nonaccessIndex = new int[nonaccessInfo.size()];
  int count = accessInfo.size(); //start counter at total number of nodes - because accessible nodes are added on after
  int countNonacc = nonaccessInfo.size(); //start counter at total number of nodes - because nonaccessible nodes are added on after
  for(unsigned int i = 0; i < accessInfo.size(); i++) {
    if(accessInfo.at(i)==1) {
      accessIndex[i] = count;
      count++;
    } else accessIndex[i] = -1;
    if(nonaccessInfo.at(i)==1) {
      nonaccessIndex[i] = countNonacc;
      countNonacc++;
    } else nonaccessIndex[i] = -1;
  }
  //refer to those addresses in edge storage
  vector <int> to_vector, from_vector;
  vector <int> to2_vector, from2_vector;
  vector <int> to3_vector, from3_vector;
  for(unsigned int i=0; i<vornet->edges.size(); i++) {
		if(accessInfo.at(vornet->edges.at(i).from)>0 && accessInfo.at(vornet->edges.at(i).to)>0 && vornet->edges.at(i).rad_moving_sphere>probeRad) {
      //this edge is accessible - save it for accessible part of the image
      if(vornet->edges.at(i).delta_uc_x==0 && vornet->edges.at(i).delta_uc_y==0 && vornet->edges.at(i).delta_uc_z==0) { //just edges within the unit cell
        from2_vector.push_back(accessIndex[vornet->edges.at(i).from]);
        to2_vector.push_back(accessIndex[vornet->edges.at(i).to]);
      } else if(vornet->edges.at(i).delta_uc_x==skel_a && vornet->edges.at(i).delta_uc_y==skel_b && vornet->edges.at(i).delta_uc_z==skel_c) { //just edges from overall section to accessible section
        from2_vector.push_back(vornet->edges.at(i).from);
        to2_vector.push_back(accessIndex[vornet->edges.at(i).to]);
      }
    } // ends if for accessible

      if(nonaccessInfo.at(vornet->edges.at(i).from)>0 && nonaccessInfo.at(vornet->edges.at(i).to)>0 && vornet->edges.at(i).rad_moving_sphere>probeRad) {
      //this edge is within nonaccessible pocket - save it for nonaccessible part of the image
      if(vornet->edges.at(i).delta_uc_x==0 && vornet->edges.at(i).delta_uc_y==0 && vornet->edges.at(i).delta_uc_z==0) { //just edges within the unit cell
        from3_vector.push_back(nonaccessIndex[vornet->edges.at(i).from]);
        to3_vector.push_back(nonaccessIndex[vornet->edges.at(i).to]);
      } else if(vornet->edges.at(i).delta_uc_x==skel_a && vornet->edges.at(i).delta_uc_y==skel_b && vornet->edges.at(i).delta_uc_z==skel_c) { //just edges from overall section to accessible section
        from3_vector.push_back(nonaccessIndex[vornet->edges.at(i).from]);
        to3_vector.push_back(nonaccessIndex[vornet->edges.at(i).to]);
      }
    } // ends if for nonaccessible

    if(vornet->edges.at(i).delta_uc_x==0 && vornet->edges.at(i).delta_uc_y==0 && vornet->edges.at(i).delta_uc_z==0) { //just edges within the unit cell
      //regardless of accessibility, want to save the within-cell edges for overall part of the image
      from_vector.push_back(vornet->edges.at(i).from);
      to_vector.push_back(vornet->edges.at(i).to);
    }
  }; // end loop over all edges


  // VTK file write
  FILE *output_vtk; output_vtk = fopen(filename_vtk.c_str(), "w");
  FILE *output2_vtk; output2_vtk = fopen(filename2_vtk.c_str(), "w");
  FILE *output3_vtk; output3_vtk = fopen(filename3_vtk.c_str(), "w");
  fprintf(output_vtk, "# vtk DataFile Version 2.0\nvtk data for file %s\nASCII\nDATASET POLYDATA\nPOINTS %d double\n", name, (int)(accessInfo.size()));
  fprintf(output2_vtk, "# vtk DataFile Version 2.0\nvtk data for file %s\nASCII\nDATASET POLYDATA\nPOINTS %d double\n", name, (int)(accessInfo.size())+num_accessible);
  fprintf(output3_vtk, "# vtk DataFile Version 2.0\nvtk data for file %s\nASCII\nDATASET POLYDATA\nPOINTS %d double\n", name, (int)(accessInfo.size())+num_nonaccessible);
  //write nodes to file
  for(unsigned int i = 0; i < accessInfo.size(); i++) {
    fprintf(output_vtk, "%.3f %.3f %.3f\n", vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
    fprintf(output2_vtk, "%.3f %.3f %.3f\n", vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
    fprintf(output3_vtk, "%.3f %.3f %.3f\n", vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
  }
  for(unsigned int i = 0; i < accessInfo.size(); i++) {
    if(accessInfo.at(i)==1) {
      Point abc = atmnet->xyz_to_abc(vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
      float new_a = abc.vals[0] + skel_a;
      float new_b = abc.vals[1] + skel_b;
      float new_c = abc.vals[2] + skel_c;
      Point new_xyz = atmnet->abc_to_xyz(new_a, new_b, new_c);
      fprintf(output2_vtk, "%.3f %.3f %.3f\n", new_xyz.vals[0], new_xyz.vals[1], new_xyz.vals[2]);
    };
    if(nonaccessInfo.at(i)==1) {
      Point abc = atmnet->xyz_to_abc(vornet->nodes.at(i).x, vornet->nodes.at(i).y, vornet->nodes.at(i).z);
      float new_a = abc.vals[0] + skel_a;
      float new_b = abc.vals[1] + skel_b;
      float new_c = abc.vals[2] + skel_c;
      Point new_xyz = atmnet->abc_to_xyz(new_a, new_b, new_c);
      fprintf(output3_vtk, "%.3f %.3f %.3f\n", new_xyz.vals[0], new_xyz.vals[1], new_xyz.vals[2]);
    };
  }
  //write edges to file
  fprintf(output_vtk, "LINES %d %d\n", (int)(to_vector.size()), ((int)(to_vector.size()))*3);
  for(unsigned int i = 0; i < to_vector.size(); i++) {
    fprintf(output_vtk, "2 %d %d\n", to_vector.at(i), from_vector.at(i));
  }
  fprintf(output2_vtk, "LINES %d %d\n", (int)(to2_vector.size()), ((int)(to2_vector.size()))*3);
  for(unsigned int i = 0; i < to2_vector.size(); i++) {
    fprintf(output2_vtk, "2 %d %d\n", to2_vector.at(i), from2_vector.at(i));
  }
  fprintf(output3_vtk, "LINES %d %d\n", (int)(to3_vector.size()), ((int)(to3_vector.size()))*3);
  for(unsigned int i = 0; i < to3_vector.size(); i++) {
    fprintf(output3_vtk, "2 %d %d\n", to3_vector.at(i), from3_vector.at(i));
  }
  fclose(output_vtk);
  fclose(output2_vtk);
  fclose(output3_vtk);
  //FREE MEMORY
  delete[] accessIndex;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %r9, %r13
movq %r8, %r14
movl %ecx, 0xc4(%rsp)
movl %edx, 0xc8(%rsp)
movl %esi, 0xcc(%rsp)
movsd %xmm0, 0x28(%rsp)
movq %rdi, %rsi
movq %rsp, %rdi
leaq 0xd8(%rsp), %rdx
movq %rsi, 0xd0(%rsp)
callq 0x2f6b2
leaq 0x110c1b(%rip), %rsi    # 0x153b5d
movq %rsp, %rdi
callq 0x4820
leaq 0x88(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0xf32a
leaq 0x10(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x42f86
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x4470
movq %rsp, %rdi
leaq 0xd8(%rsp), %rdx
movq 0xd0(%rsp), %rsi
callq 0x2f6b2
leaq 0x110bc2(%rip), %rsi    # 0x153b67
movq %rsp, %rdi
callq 0x4820
leaq 0x68(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0xf32a
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x42fe0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x4470
movq %rsp, %rdi
leaq 0xd8(%rsp), %rdx
movq 0xd0(%rsp), %rsi
callq 0x2f6b2
leaq 0x110b7d(%rip), %rsi    # 0x153b7c
movq %rsp, %rdi
callq 0x4820
leaq 0x48(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0xf32a
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x4303a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x4470
xorl %ebp, %ebp
movq %rsp, %rsi
movq %rbp, (%rsi)
movl %ebp, 0x8(%rsi)
movq %rbp, 0x10(%rsi)
movl %ebp, 0x18(%rsi)
movq %rbp, 0x20(%rsi)
movq %rbp, 0xd8(%rsp)
movl %ebp, 0xe0(%rsp)
movq %rbp, 0xe8(%rsp)
movl %ebp, 0xf0(%rsp)
movq %rbp, 0xf8(%rsp)
leaq 0x260(%rsp), %rdx
movq %rbp, 0x10(%rdx)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdx)
movq %r14, %rdi
movsd 0x28(%rsp), %xmm0
callq 0x7481a
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
je 0x430e9
xorl %esi, %esi
movl $0x1, %r15d
movq %rsp, %rbx
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0xedb6
andq (%rax), %rdx
cmpq $0x1, %rdx
sbbl $-0x1, %ebp
movl %r15d, %esi
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %r15d
cmpq %rsi, %rax
ja 0x430bb
leaq 0xd8(%rsp), %rdi
movq $0x0, 0x140(%rsp)
movq %rax, %rsi
xorl %edx, %edx
callq 0xed48
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
je 0x431c6
xorl %r15d, %r15d
movl $0x1, %r12d
movq %rsp, %rbx
movq $0x0, 0x140(%rsp)
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x44537
movq %r15, %rcx
shlq $0x6, %rcx
movsd 0x18(%rax,%rcx), %xmm0
ucomisd 0x28(%rsp), %xmm0
jbe 0x431a6
movq %rbx, %rdi
movq %r15, %rsi
callq 0xedb6
testq %rdx, (%rax)
jne 0x431a6
movq 0xd8(%rsp), %rax
movq %r15, %rdx
shrq $0x6, %rdx
movl $0x1, %esi
movl %r15d, %ecx
shlq %cl, %rsi
movq 0x140(%rsp), %rcx
incl %ecx
movq %rcx, 0x140(%rsp)
orq %rsi, (%rax,%rdx,8)
movl %r12d, %r15d
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %r12d
cmpq %r15, %rax
ja 0x43139
movq %r13, 0x200(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x1109ba(%rip), %rbx    # 0x153b94
movq %rbx, %rsi
callq 0x4510
movq %rax, %r15
movq 0x58(%rsp), %rdi
movq %rbx, %rsi
callq 0x4510
movq %rax, %r12
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0x4510
movl 0x10(%rsp), %edx
subl (%rsp), %edx
movq %rax, %r13
shll $0x3, %edx
addl 0x18(%rsp), %edx
leaq 0x11097c(%rip), %rsi    # 0x153b96
movq %r15, 0x30(%rsp)
movq %r15, %rdi
movq 0xd0(%rsp), %rbx
movq %rbx, %rcx
movsd 0x28(%rsp), %xmm0
movb $0x1, %al
callq 0x45f0
leaq 0x110987(%rip), %rsi    # 0x153bc8
movq %r12, 0x148(%rsp)
movq %r12, %rdi
movl %ebp, %edx
movq %rbx, %rcx
movsd 0x28(%rsp), %xmm0
movb $0x1, %al
callq 0x45f0
leaq 0x1109a0(%rip), %rsi    # 0x153c05
movq %r13, 0x228(%rsp)
movq %r13, %rdi
movq 0x140(%rsp), %rdx
movq %rbx, %rcx
movsd 0x28(%rsp), %xmm0
movb $0x1, %al
callq 0x45f0
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
je 0x4355b
xorps %xmm0, %xmm0
cvtsi2sdl 0xcc(%rsp), %xmm0
movsd %xmm0, 0x158(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc8(%rsp), %xmm0
movsd %xmm0, 0x150(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc4(%rsp), %xmm0
movsd %xmm0, 0xb8(%rsp)
movl $0x1, %ebx
xorl %r12d, %r12d
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r12, %rdx
jbe 0x444c9
movq %r12, %r13
shlq $0x6, %r13
movsd (%rax,%r13), %xmm0
movsd 0x8(%rax,%r13), %xmm1
movsd 0x10(%rax,%r13), %xmm2
movsd 0x18(%rax,%r13), %xmm3
movq 0x30(%rsp), %rdi
leaq 0x110917(%rip), %rsi    # 0x153c46
movb $0x4, %al
callq 0x45f0
movq %rsp, %rdi
movq %r12, %rsi
callq 0xedb6
testq %rdx, (%rax)
je 0x4343a
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r12, %rdx
jbe 0x44548
movsd (%rax,%r13), %xmm0
movsd 0x8(%rax,%r13), %xmm1
movsd 0x10(%rax,%r13), %xmm2
leaq 0x98(%rsp), %rdi
movq 0x200(%rsp), %r15
movq %r15, %rsi
callq 0x531ea
movsd 0x98(%rsp), %xmm0
addsd 0x158(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movsd 0xa0(%rsp), %xmm1
addsd 0x150(%rsp), %xmm1
cvtsd2ss %xmm1, %xmm1
movsd 0xa8(%rsp), %xmm2
addsd 0xb8(%rsp), %xmm2
cvtsd2ss %xmm2, %xmm2
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
cvtss2sd %xmm2, %xmm2
leaq 0x180(%rsp), %rdi
movq %r15, %rsi
callq 0x53092
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r12, %rdx
jbe 0x44559
movsd 0x190(%rsp), %xmm2
movsd 0x180(%rsp), %xmm0
movsd 0x188(%rsp), %xmm1
movsd 0x18(%rax,%r13), %xmm3
movq 0x148(%rsp), %rdi
leaq 0x110829(%rip), %rsi    # 0x153c5e
jmp 0x43535
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r12, %rdx
jbe 0x444c9
movsd 0x18(%rax,%r13), %xmm0
ucomisd 0x28(%rsp), %xmm0
jbe 0x4353c
addq %r13, %rax
movsd (%rax), %xmm0
movsd 0x8(%rax), %xmm1
movsd 0x10(%rax), %xmm2
leaq 0x98(%rsp), %rdi
movq 0x200(%rsp), %r15
movq %r15, %rsi
callq 0x531ea
movsd 0x98(%rsp), %xmm0
addsd 0x158(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movsd 0xa0(%rsp), %xmm1
addsd 0x150(%rsp), %xmm1
cvtsd2ss %xmm1, %xmm1
movsd 0xa8(%rsp), %xmm2
addsd 0xb8(%rsp), %xmm2
cvtsd2ss %xmm2, %xmm2
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
cvtss2sd %xmm2, %xmm2
leaq 0x180(%rsp), %rdi
movq %r15, %rsi
callq 0x53092
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r12, %rdx
jbe 0x4458c
movsd 0x190(%rsp), %xmm2
movsd 0x180(%rsp), %xmm0
movsd 0x188(%rsp), %xmm1
movsd 0x18(%rax,%r13), %xmm3
movq 0x228(%rsp), %rdi
leaq 0x110741(%rip), %rsi    # 0x153c76
movb $0x4, %al
callq 0x45f0
movl %ebx, %r12d
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %ebx
cmpq %r12, %rax
ja 0x432e9
movq 0x30(%rsp), %rdi
callq 0x4450
movq 0x148(%rsp), %rdi
callq 0x4450
movq 0x228(%rsp), %rdi
callq 0x4450
leaq 0x180(%rsp), %rdi
leaq 0x208(%rsp), %rdx
movq 0xd0(%rsp), %rsi
callq 0x2f6b2
leaq 0x1106eb(%rip), %rsi    # 0x153c8e
leaq 0x180(%rsp), %rdi
callq 0x4820
leaq 0xa8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x98(%rsp), %rdi
callq 0xf32a
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x435f4
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x208(%rsp), %rdi
leaq 0x160(%rsp), %rdx
movq 0xd0(%rsp), %rsi
callq 0x2f6b2
leaq 0x110680(%rip), %rsi    # 0x153c98
leaq 0x208(%rsp), %rdi
callq 0x4820
leaq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0xf32a
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x43668
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x160(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
movq 0xd0(%rsp), %rsi
callq 0x2f6b2
leaq 0x110621(%rip), %rsi    # 0x153cad
leaq 0x160(%rsp), %rdi
callq 0x4820
leaq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0xf32a
leaq 0x170(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x436dc
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
leaq (%rcx,%rax,8), %r13
movq %r13, %rax
shrq $0x3e, %rax
leaq (,%r13,4), %rcx
xorl %edi, %edi
negq %rax
sbbq %rdi, %rdi
orq %rcx, %rdi
callq 0x4030
movq %rax, 0xb8(%rsp)
movabsq $0x3fffffffffffffff, %rax # imm = 0x3FFFFFFFFFFFFFFF
movq 0xe8(%rsp), %rcx
subq 0xd8(%rsp), %rcx
movl 0xf0(%rsp), %edx
leaq (%rdx,%rcx,8), %rbx
leaq (,%rbx,4), %rcx
cmpq %rax, %rbx
movq $-0x1, %rdi
cmovbeq %rcx, %rdi
callq 0x4030
movq %rax, 0x30(%rsp)
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
je 0x437f8
movl $0x1, %r15d
xorl %r12d, %r12d
movq %rsp, %rdi
movq %r12, %rsi
callq 0xedb6
testq %rdx, (%rax)
je 0x4379d
movq 0xb8(%rsp), %rax
movl %r13d, (%rax,%r12,4)
incl %r13d
jmp 0x437ad
movq 0xb8(%rsp), %rax
movl $0xffffffff, (%rax,%r12,4) # imm = 0xFFFFFFFF
leaq 0xd8(%rsp), %rdi
movq %r12, %rsi
callq 0xedb6
testq %rdx, (%rax)
je 0x437cf
movq 0x30(%rsp), %rax
movl %ebx, (%rax,%r12,4)
incl %ebx
jmp 0x437dc
movq 0x30(%rsp), %rax
movl $0xffffffff, (%rax,%r12,4) # imm = 0xFFFFFFFF
movl %r15d, %r12d
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %r15d
cmpq %r12, %rax
ja 0x4377c
xorpd %xmm0, %xmm0
movapd %xmm0, 0x160(%rsp)
xorl %eax, %eax
movq %rax, 0x170(%rsp)
movq %rax, 0x1f0(%rsp)
movapd %xmm0, 0x1e0(%rsp)
movq %rax, 0x130(%rsp)
movapd %xmm0, 0x120(%rsp)
movq %rax, 0x1d0(%rsp)
movapd %xmm0, 0x1c0(%rsp)
movq %rax, 0x110(%rsp)
movapd %xmm0, 0x100(%rsp)
movq %rax, 0x1b0(%rsp)
movapd %xmm0, 0x1a0(%rsp)
movq 0x60(%r14), %rax
cmpq %rax, 0x68(%r14)
je 0x43c9d
movl $0x1, %ebx
xorl %r15d, %r15d
movabsq $-0x3333333333333333, %r12 # imm = 0xCCCCCCCCCCCCCCCD
leaq (%r15,%r15,4), %r13
movslq (%rax,%r13,8), %rsi
movq %rsp, %rdi
callq 0xedb6
testq %rdx, (%rax)
je 0x439f6
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444da
movslq 0x4(%rax,%r13,8), %rsi
movq %rsp, %rdi
callq 0xedb6
testq %rdx, (%rax)
je 0x439f6
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444da
movsd 0x8(%rax,%r13,8), %xmm0
ucomisd 0x28(%rsp), %xmm0
jbe 0x439f6
leaq (%rax,%r13,8), %rdx
movl 0x10(%rdx), %eax
testl %eax, %eax
jne 0x43915
cmpl $0x0, 0x14(%rdx)
jne 0x43915
cmpl $0x0, 0x18(%rdx)
je 0x43963
cmpl 0xcc(%rsp), %eax
jne 0x439f6
movl 0xc8(%rsp), %eax
cmpl %eax, 0x14(%rdx)
jne 0x439f6
movl 0xc4(%rsp), %eax
cmpl %eax, 0x18(%rdx)
jne 0x439f6
movq 0x1c8(%rsp), %rsi
cmpq 0x1d0(%rsp), %rsi
jne 0x43988
leaq 0x1c0(%rsp), %rdi
callq 0xf7b4
jmp 0x43998
movslq (%rdx), %rax
movq 0xb8(%rsp), %rcx
leaq (%rcx,%rax,4), %rdx
movq 0x1c8(%rsp), %rsi
cmpq 0x1d0(%rsp), %rsi
je 0x43c79
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1c8(%rsp)
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444b8
movslq 0x4(%rax,%r13,8), %rax
movq 0xb8(%rsp), %rcx
leaq (%rcx,%rax,4), %rdx
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0x439e9
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x128(%rsp)
jmp 0x439f6
leaq 0x120(%rsp), %rdi
callq 0xf7b4
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444fc
movslq (%rax,%r13,8), %rsi
leaq 0xd8(%rsp), %rdi
callq 0xedb6
testq %rdx, (%rax)
je 0x43b90
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444eb
movslq 0x4(%rax,%r13,8), %rsi
leaq 0xd8(%rsp), %rdi
callq 0xedb6
testq %rdx, (%rax)
je 0x43b90
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444eb
movsd 0x8(%rax,%r13,8), %xmm0
ucomisd 0x28(%rsp), %xmm0
jbe 0x43b90
leaq (%rax,%r13,8), %rax
movl 0x10(%rax), %ecx
testl %ecx, %ecx
jne 0x43aa9
cmpl $0x0, 0x14(%rax)
jne 0x43aa9
cmpl $0x0, 0x18(%rax)
je 0x43b03
cmpl 0xcc(%rsp), %ecx
jne 0x43b90
movl 0xc8(%rsp), %ecx
cmpl %ecx, 0x14(%rax)
jne 0x43b90
movl 0xc4(%rsp), %ecx
cmpl %ecx, 0x18(%rax)
jne 0x43b90
movslq (%rax), %rax
movq 0x30(%rsp), %rcx
leaq (%rcx,%rax,4), %rdx
movq 0x1a8(%rsp), %rsi
cmpq 0x1b0(%rsp), %rsi
jne 0x43b25
leaq 0x1a0(%rsp), %rdi
callq 0xf7b4
jmp 0x43b35
movslq (%rax), %rax
movq 0x30(%rsp), %rcx
leaq (%rcx,%rax,4), %rdx
movq 0x1a8(%rsp), %rsi
cmpq 0x1b0(%rsp), %rsi
je 0x43c8b
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1a8(%rsp)
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444b8
movslq 0x4(%rax,%r13,8), %rax
movq 0x30(%rsp), %rcx
leaq (%rcx,%rax,4), %rdx
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x43b83
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x108(%rsp)
jmp 0x43b90
leaq 0x100(%rsp), %rdi
callq 0xf7b4
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444b8
cmpl $0x0, 0x10(%rax,%r13,8)
jne 0x43c56
leaq (%rax,%r13,8), %rdx
cmpl $0x0, 0x14(%rdx)
jne 0x43c56
cmpl $0x0, 0x18(%rdx)
jne 0x43c56
movq 0x1e8(%rsp), %rsi
cmpq 0x1f0(%rsp), %rsi
je 0x43bf4
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x1e8(%rsp)
jmp 0x43c01
leaq 0x1e0(%rsp), %rdi
callq 0xf7b4
movq 0x60(%r14), %rax
movq 0x68(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
imulq %r12, %rdx
cmpq %r15, %rdx
jbe 0x444b8
leaq (%rax,%r13,8), %rdx
addq $0x4, %rdx
movq 0x168(%rsp), %rsi
cmpq 0x170(%rsp), %rsi
je 0x43c49
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x168(%rsp)
jmp 0x43c56
leaq 0x160(%rsp), %rdi
callq 0xf7b4
movl %ebx, %r15d
movq 0x60(%r14), %rax
movq 0x68(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
imulq %r12, %rcx
incl %ebx
cmpq %r15, %rcx
ja 0x43884
jmp 0x43c9d
leaq 0x1c0(%rsp), %rdi
callq 0xf7b4
jmp 0x43998
leaq 0x1a0(%rsp), %rdi
callq 0xf7b4
jmp 0x43b35
movq 0x98(%rsp), %rdi
leaq 0x10fee8(%rip), %rbx    # 0x153b94
movq %rbx, %rsi
callq 0x4510
movq %rax, %r15
movq 0x180(%rsp), %rdi
movq %rbx, %rsi
callq 0x4510
movq %rax, %r13
movq 0x208(%rsp), %rdi
movq %rbx, %rsi
callq 0x4510
movl 0x10(%rsp), %ecx
subl (%rsp), %ecx
movq %rax, %rbx
shll $0x3, %ecx
addl 0x18(%rsp), %ecx
leaq 0x10ffd3(%rip), %rsi    # 0x153cc5
movq %r15, 0x148(%rsp)
movq %r15, %rdi
movq 0xd0(%rsp), %r15
movq %r15, %rdx
xorl %eax, %eax
callq 0x45f0
movl 0x10(%rsp), %eax
subl (%rsp), %eax
addl 0x18(%rsp), %ebp
leal (%rbp,%rax,8), %ecx
movq %r13, %r12
movq %r13, %rdi
leaq 0x10ff9a(%rip), %r13    # 0x153cc5
movq %r13, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x45f0
movl 0x10(%rsp), %eax
subl (%rsp), %eax
movq 0x140(%rsp), %rcx
addl 0x18(%rsp), %ecx
leal (%rcx,%rax,8), %ecx
movq %rbx, 0x28(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x45f0
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
je 0x43e5d
movl $0x1, %r13d
xorl %r15d, %r15d
leaq 0x1101a0(%rip), %rbx    # 0x153f2d
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x444a7
movq %r15, %rbp
shlq $0x6, %rbp
movsd (%rax,%rbp), %xmm0
movsd 0x8(%rax,%rbp), %xmm1
movsd 0x10(%rax,%rbp), %xmm2
movq 0x148(%rsp), %rdi
movq %rbx, %rsi
movb $0x3, %al
callq 0x45f0
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x444a7
movsd (%rax,%rbp), %xmm0
movsd 0x8(%rax,%rbp), %xmm1
movsd 0x10(%rax,%rbp), %xmm2
movq %r12, %rdi
movq %rbx, %rsi
movb $0x3, %al
callq 0x45f0
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x444a7
movsd (%rax,%rbp), %xmm0
movsd 0x8(%rax,%rbp), %xmm1
movsd 0x10(%rax,%rbp), %xmm2
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
movb $0x3, %al
callq 0x45f0
movl %r13d, %r15d
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %r13d
cmpq %r15, %rax
ja 0x43d8d
movq 0x10(%rsp), %rax
movl 0x18(%rsp), %ecx
subq (%rsp), %rax
shlq $0x3, %rax
addq %rcx, %rax
movq 0x200(%rsp), %r15
movq 0x148(%rsp), %r13
je 0x440a2
xorps %xmm0, %xmm0
cvtsi2sdl 0xcc(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc8(%rsp), %xmm0
movsd %xmm0, 0x158(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc4(%rsp), %xmm0
movsd %xmm0, 0x150(%rsp)
movl $0x1, %ebp
xorl %ebx, %ebx
movq %rsp, %rdi
movq %rbx, %rsi
callq 0xedb6
testq %rdx, (%rax)
je 0x43fa5
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %rbx, %rdx
jbe 0x4457b
movq %rbx, %rcx
shlq $0x6, %rcx
movsd (%rax,%rcx), %xmm0
movsd 0x8(%rax,%rcx), %xmm1
movsd 0x10(%rax,%rcx), %xmm2
leaq 0x248(%rsp), %rdi
movq %r15, %rsi
callq 0x531ea
movsd 0x248(%rsp), %xmm0
addsd 0x30(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movsd 0x250(%rsp), %xmm1
addsd 0x158(%rsp), %xmm1
cvtsd2ss %xmm1, %xmm1
movsd 0x258(%rsp), %xmm2
addsd 0x150(%rsp), %xmm2
cvtsd2ss %xmm2, %xmm2
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
cvtss2sd %xmm2, %xmm2
leaq 0x230(%rsp), %rdi
movq %r15, %rsi
callq 0x53092
movsd 0x230(%rsp), %xmm0
movsd 0x238(%rsp), %xmm1
movsd 0x240(%rsp), %xmm2
movq %r12, %rdi
leaq 0x10ff8f(%rip), %rsi    # 0x153f2d
movb $0x3, %al
callq 0x45f0
leaq 0xd8(%rsp), %rdi
movq %rbx, %rsi
callq 0xedb6
testq %rdx, (%rax)
je 0x44084
movq 0x48(%r14), %rax
movq 0x50(%r14), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %rbx, %rdx
jbe 0x4456a
shlq $0x6, %rbx
movsd (%rax,%rbx), %xmm0
movsd 0x8(%rax,%rbx), %xmm1
movsd 0x10(%rax,%rbx), %xmm2
leaq 0x248(%rsp), %rdi
movq %r15, %rsi
callq 0x531ea
movsd 0x248(%rsp), %xmm0
addsd 0x30(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movsd 0x250(%rsp), %xmm1
addsd 0x158(%rsp), %xmm1
cvtsd2ss %xmm1, %xmm1
movsd 0x258(%rsp), %xmm2
addsd 0x150(%rsp), %xmm2
cvtsd2ss %xmm2, %xmm2
cvtss2sd %xmm0, %xmm0
cvtss2sd %xmm1, %xmm1
cvtss2sd %xmm2, %xmm2
leaq 0x230(%rsp), %rdi
movq %r15, %rsi
callq 0x53092
movsd 0x230(%rsp), %xmm0
movsd 0x238(%rsp), %xmm1
movsd 0x240(%rsp), %xmm2
movq 0x28(%rsp), %rdi
leaq 0x10feb0(%rip), %rsi    # 0x153f2d
movb $0x3, %al
callq 0x45f0
movl %ebp, %ebx
movq 0x10(%rsp), %rax
subq (%rsp), %rax
movl 0x18(%rsp), %ecx
leaq (%rcx,%rax,8), %rax
incl %ebp
cmpq %rbx, %rax
ja 0x43eca
movq 0x168(%rsp), %rdx
subq 0x160(%rsp), %rdx
shrq $0x2, %rdx
leal (%rdx,%rdx,2), %ecx
leaq 0x10fc5e(%rip), %rsi    # 0x153d1e
movq %r13, %rdi
xorl %eax, %eax
callq 0x45f0
movq 0x160(%rsp), %rax
cmpq %rax, 0x168(%rsp)
je 0x4413d
movl $0x1, %ebp
leaq 0x10fc43(%rip), %rbx    # 0x153d2b
xorl %esi, %esi
movq 0x1e0(%rsp), %rcx
movq 0x1e8(%rsp), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x4450d
movl (%rax,%rsi,4), %edx
movl (%rcx,%rsi,4), %ecx
movq %r13, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x45f0
movl %ebp, %esi
movq 0x160(%rsp), %rax
movq 0x168(%rsp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
incl %ebp
cmpq %rsi, %rcx
ja 0x440ea
movq 0x128(%rsp), %rdx
subq 0x120(%rsp), %rdx
shrq $0x2, %rdx
leal (%rdx,%rdx,2), %ecx
leaq 0x10fbc3(%rip), %rsi    # 0x153d1e
movq %r12, %rdi
xorl %eax, %eax
callq 0x45f0
movq 0x120(%rsp), %rax
cmpq %rax, 0x128(%rsp)
je 0x441d8
movl $0x1, %ebp
leaq 0x10fba8(%rip), %rbx    # 0x153d2b
xorl %esi, %esi
movq 0x1c0(%rsp), %rcx
movq 0x1c8(%rsp), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x4451b
movl (%rax,%rsi,4), %edx
movl (%rcx,%rsi,4), %ecx
movq %r12, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x45f0
movl %ebp, %esi
movq 0x120(%rsp), %rax
movq 0x128(%rsp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
incl %ebp
cmpq %rsi, %rcx
ja 0x44185
movq 0x108(%rsp), %rdx
subq 0x100(%rsp), %rdx
shrq $0x2, %rdx
leal (%rdx,%rdx,2), %ecx
leaq 0x10fb28(%rip), %rsi    # 0x153d1e
movq 0x28(%rsp), %rdi
xorl %eax, %eax
callq 0x45f0
movq 0x100(%rsp), %rax
cmpq %rax, 0x108(%rsp)
je 0x44277
movl $0x1, %ebp
leaq 0x10fb0b(%rip), %rbx    # 0x153d2b
xorl %esi, %esi
movq 0x1a0(%rsp), %rcx
movq 0x1a8(%rsp), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x44529
movl (%rax,%rsi,4), %edx
movl (%rcx,%rsi,4), %ecx
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x45f0
movl %ebp, %esi
movq 0x100(%rsp), %rax
movq 0x108(%rsp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
incl %ebp
cmpq %rsi, %rcx
ja 0x44222
movq %r13, %rdi
callq 0x4450
movq %r12, %rdi
callq 0x4450
movq 0x28(%rsp), %rdi
callq 0x4450
movq 0xb8(%rsp), %rdi
callq 0x4570
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x442bb
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
leaq 0x88(%rsp), %rbx
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
leaq 0xa8(%rsp), %r12
je 0x442f2
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x4430f
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x4432c
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x44349
movq 0x1f0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x44366
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0x4438b
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x443b0
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x98(%rsp), %rdi
cmpq %r12, %rdi
je 0x443cd
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x260(%rsp), %rdi
callq 0x494b0
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x4441f
movq 0xf8(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
xorl %eax, %eax
movq %rax, 0xd8(%rsp)
movl %eax, 0xe0(%rsp)
movq %rax, 0xe8(%rsp)
movl %eax, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x4444d
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
xorl %eax, %eax
movq %rax, (%rsp)
movl %eax, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x44464
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x4447b
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x78(%rsp), %rdi
cmpq %rbx, %rdi
je 0x44495
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4470
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x10b1f7(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b1e6(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b1d5(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b1c4(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b1b3(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b1a2(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b191(%rip), %rdi    # 0x14f6a5
xorl %eax, %eax
callq 0x4630
leaq 0x10b183(%rip), %rdi    # 0x14f6a5
xorl %eax, %eax
callq 0x4630
leaq 0x10b175(%rip), %rdi    # 0x14f6a5
xorl %eax, %eax
callq 0x4630
leaq 0x10b167(%rip), %rdi    # 0x14f6a5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b156(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b145(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b134(%rip), %rdi    # 0x14f6a5
movq %rbx, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b123(%rip), %rdi    # 0x14f6a5
movq %rbx, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x10b112(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
jmp 0x44714
jmp 0x44714
movq %rax, %rbx
jmp 0x44607
movq %rax, %rbx
jmp 0x4464a
jmp 0x4474d
jmp 0x4474d
jmp 0x44744
movq %rbx, %r14
movq %rax, %rbx
jmp 0x44932
movq %rax, %rbx
jmp 0x44949
movq %rax, %rbx
jmp 0x44963
jmp 0x44769
movq %rax, %rbx
leaq 0x170(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x44607
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x88(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
leaq 0xa8(%rsp), %r13
jmp 0x44859
movq %rax, %rbx
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4464a
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x88(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
leaq 0xa8(%rsp), %r13
jmp 0x4487e
movq %rax, %rbx
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x44750
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x44750
movq %rbx, %r14
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x44932
movq 0x10(%rsp), %rsi
jmp 0x4492a
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x44949
movq 0x10(%rsp), %rsi
jmp 0x44941
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x44963
movq 0x10(%rsp), %rsi
jmp 0x4495b
jmp 0x4474d
jmp 0x4474d
jmp 0x4474d
jmp 0x4474d
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x4474d
jmp 0x4474d
jmp 0x4474d
jmp 0x4474d
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x4474d
jmp 0x44714
movq %rax, %rbx
leaq 0x88(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
leaq 0xa8(%rsp), %r13
jmp 0x44834
jmp 0x4474d
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
jmp 0x44769
movq %rax, %rbx
jmp 0x44758
jmp 0x44769
jmp 0x44769
movq %rax, %rbx
leaq 0x88(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
jmp 0x4489b
jmp 0x44769
movq %rax, %rbx
leaq 0x88(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0x48(%rsp), %r15
leaq 0xa8(%rsp), %r13
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x447a3
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x447c0
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x447dd
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x447fa
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x44817
movq 0x1f0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x44834
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0x44859
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x4487e
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x4489b
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x260(%rsp), %rdi
callq 0x494b0
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x448ed
movq 0xf8(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
xorl %eax, %eax
movq %rax, 0xd8(%rsp)
movl %eax, 0xe0(%rsp)
movq %rax, 0xe8(%rsp)
movl %eax, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x4491b
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
xorl %eax, %eax
movq %rax, (%rsp)
movl %eax, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x44932
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x44949
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x78(%rsp), %rdi
cmpq %r12, %rdi
je 0x44963
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4470
movq %rbx, %rdi
callq 0x4780