// File: 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
movq %rsp, %rbp
subq $0xb20, %rsp            # imm = 0xB20
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x540(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x5900
movq -0x540(%rbp), %rsi
movq -0x538(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x47530
jmp 0x7c3d9
leaq 0x17a7fd(%rip), %rsi    # 0x1f6bdd
leaq -0x70(%rbp), %rdi
callq 0x5990
movq %rax, -0x548(%rbp)
jmp 0x7c3f2
movq -0x548(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x5220
jmp 0x7c404
leaq -0x70(%rbp), %rdi
callq 0x5300
leaq -0x71(%rbp), %rdi
callq 0x55d0
movq -0x8(%rbp), %rax
movq %rax, -0x558(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x5900
movq -0x558(%rbp), %rsi
movq -0x550(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x47530
jmp 0x7c450
leaq 0x17a790(%rip), %rsi    # 0x1f6be7
leaq -0xc8(%rbp), %rdi
callq 0x5990
movq %rax, -0x560(%rbp)
jmp 0x7c46c
movq -0x560(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x5220
jmp 0x7c481
leaq -0xc8(%rbp), %rdi
callq 0x5300
leaq -0xc9(%rbp), %rdi
callq 0x55d0
movq -0x8(%rbp), %rax
movq %rax, -0x570(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x5900
movq -0x570(%rbp), %rsi
movq -0x568(%rbp), %rdx
leaq -0x110(%rbp), %rdi
callq 0x47530
jmp 0x7c4d3
leaq 0x17a722(%rip), %rsi    # 0x1f6bfc
leaq -0x110(%rbp), %rdi
callq 0x5990
movq %rax, -0x578(%rbp)
jmp 0x7c4ef
movq -0x578(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x5220
jmp 0x7c504
leaq -0x110(%rbp), %rdi
callq 0x5300
leaq -0x111(%rbp), %rdi
callq 0x55d0
leaq -0x140(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0xf670
leaq -0x168(%rbp), %rdi
callq 0xf670
leaq -0x180(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x84dd0
movq -0x588(%rbp), %rsi
movq -0x580(%rbp), %rdx
movq -0x28(%rbp), %rdi
movsd -0x10(%rbp), %xmm0
callq 0xc9cc0
jmp 0x7c56c
movl $0x0, -0x184(%rbp)
movl $0x0, -0x188(%rbp)
movl -0x188(%rbp), %eax
movq %rax, -0x590(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x590(%rbp), %rax
cmpq %rcx, %rax
jae 0x7c6f5
movl -0x188(%rbp), %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x5a0(%rbp)
movq %rax, -0x598(%rbp)
jmp 0x7c5d0
movq -0x5a0(%rbp), %rax
movq -0x598(%rbp), %rcx
movq %rcx, -0x198(%rbp)
movq %rax, -0x190(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7c6df
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x7c6df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7c643
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x5300
leaq -0x71(%rbp), %rdi
callq 0x55d0
jmp 0x7e956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7c67d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x5300
leaq -0xc9(%rbp), %rdi
callq 0x55d0
jmp 0x7e94d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7c6ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x5300
leaq -0x111(%rbp), %rdi
callq 0x55d0
jmp 0x7e941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7e911
jmp 0x7c6e1
movl -0x188(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x188(%rbp)
jmp 0x7c580
movl $0x0, -0x19c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rsi
leaq -0x168(%rbp), %rdi
xorl %edx, %edx
callq 0xfea0
jmp 0x7c71e
movl $0x0, -0x1a0(%rbp)
movl -0x1a0(%rbp), %eax
movq %rax, -0x5a8(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
jae 0x7c86b
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1a0(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x5b0(%rbp)
jmp 0x7c772
movq -0x5b0(%rbp), %rax
movsd 0x18(%rax), %xmm0
xorl %eax, %eax
ucomisd -0x10(%rbp), %xmm0
movb %al, -0x5b1(%rbp)
jbe 0x7c7ea
movl -0x1a0(%rbp), %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x5c8(%rbp)
movq %rax, -0x5c0(%rbp)
jmp 0x7c7b1
movq -0x5c8(%rbp), %rax
movq -0x5c0(%rbp), %rcx
movq %rcx, -0x1b0(%rbp)
movq %rax, -0x1a8(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x5b1(%rbp)
movb -0x5b1(%rbp), %al
testb $0x1, %al
jne 0x7c7f6
jmp 0x7c855
movl -0x19c(%rbp), %eax
incl %eax
movl %eax, -0x19c(%rbp)
movl -0x1a0(%rbp), %eax
movl %eax, %esi
leaq -0x168(%rbp), %rdi
callq 0x29990
movq %rdx, -0x5d8(%rbp)
movq %rax, -0x5d0(%rbp)
jmp 0x7c828
movq -0x5d8(%rbp), %rax
movq -0x5d0(%rbp), %rcx
movq %rcx, -0x1c0(%rbp)
movq %rax, -0x1b8(%rbp)
leaq -0x1c0(%rbp), %rdi
movl $0x1, %esi
callq 0x10040
jmp 0x7c857
movl -0x1a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a0(%rbp)
jmp 0x7c728
leaq -0x50(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x17a396(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x5e0(%rbp)
jmp 0x7c88c
movq -0x5e0(%rbp), %rax
movq %rax, -0x1c8(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x17a364(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x5e8(%rbp)
jmp 0x7c8be
movq -0x5e8(%rbp), %rax
movq %rax, -0x1d0(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x17a332(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x5f0(%rbp)
jmp 0x7c8f0
movq -0x5f0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq -0x1c8(%rbp), %rax
movq %rax, -0x5f8(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq -0x5f8(%rbp), %rdi
movl %eax, %edx
movq -0x8(%rbp), %rcx
movsd -0x10(%rbp), %xmm0
leaq 0x17a2e5(%rip), %rsi    # 0x1f6c16
movb $0x1, %al
callq 0x5750
movq -0x1d0(%rbp), %rdi
movl -0x184(%rbp), %edx
movq -0x8(%rbp), %rcx
movsd -0x10(%rbp), %xmm0
leaq 0x17a2f3(%rip), %rsi    # 0x1f6c48
movb $0x1, %al
callq 0x5750
movq -0x1d8(%rbp), %rdi
movl -0x19c(%rbp), %edx
movq -0x8(%rbp), %rcx
movsd -0x10(%rbp), %xmm0
leaq 0x17a30c(%rip), %rsi    # 0x1f6c85
movb $0x1, %al
callq 0x5750
movl $0x0, -0x1dc(%rbp)
movl -0x1dc(%rbp), %eax
movq %rax, -0x600(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x600(%rbp), %rax
cmpq %rcx, %rax
jae 0x7cf1a
movq -0x1c8(%rbp), %rax
movq %rax, -0x610(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x608(%rbp)
jmp 0x7c9e2
movq -0x608(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x620(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x618(%rbp)
jmp 0x7ca13
movq -0x618(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x630(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x628(%rbp)
jmp 0x7ca45
movq -0x628(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x640(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x638(%rbp)
jmp 0x7ca77
movsd -0x640(%rbp), %xmm2
movsd -0x630(%rbp), %xmm1
movsd -0x620(%rbp), %xmm0
movq -0x610(%rbp), %rdi
movq -0x638(%rbp), %rax
movsd 0x18(%rax), %xmm3
leaq 0x17a21d(%rip), %rsi    # 0x1f6cc6
movb $0x4, %al
callq 0x5750
movl -0x1dc(%rbp), %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x650(%rbp)
movq %rax, -0x648(%rbp)
jmp 0x7cad4
movq -0x650(%rbp), %rax
movq -0x648(%rbp), %rcx
movq %rcx, -0x1f0(%rbp)
movq %rax, -0x1e8(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7ccee
movq -0x30(%rbp), %rax
movq %rax, -0x660(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x658(%rbp)
jmp 0x7cb33
movq -0x658(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x670(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x668(%rbp)
jmp 0x7cb64
movq -0x668(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x680(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x678(%rbp)
jmp 0x7cb96
movsd -0x680(%rbp), %xmm1
movsd -0x670(%rbp), %xmm0
movq -0x660(%rbp), %rsi
movq -0x678(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq -0x208(%rbp), %rdi
callq 0x97360
jmp 0x7cbc7
movsd -0x208(%rbp), %xmm0
cvtsi2sdl -0x14(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20c(%rbp)
movsd -0x200(%rbp), %xmm0
cvtsi2sdl -0x18(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x210(%rbp)
movsd -0x1f8(%rbp), %xmm0
cvtsi2sdl -0x1c(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x214(%rbp)
movq -0x30(%rbp), %rsi
movss -0x20c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x210(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x214(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x230(%rbp), %rdi
callq 0x97170
jmp 0x7cc54
movq -0x1d0(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movsd -0x230(%rbp), %xmm0
movsd %xmm0, -0x6a0(%rbp)
movsd -0x228(%rbp), %xmm0
movsd %xmm0, -0x698(%rbp)
movsd -0x220(%rbp), %xmm0
movsd %xmm0, -0x690(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x688(%rbp)
jmp 0x7ccb0
movsd -0x690(%rbp), %xmm2
movsd -0x698(%rbp), %xmm1
movsd -0x6a0(%rbp), %xmm0
movq -0x6a8(%rbp), %rdi
movq -0x688(%rbp), %rax
movsd 0x18(%rax), %xmm3
leaq 0x179ffc(%rip), %rsi    # 0x1f6cde
movb $0x4, %al
callq 0x5750
jmp 0x7cf04
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x6b0(%rbp)
jmp 0x7cd0c
movq -0x6b0(%rbp), %rax
movsd 0x18(%rax), %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0x7cf02
movq -0x30(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x6b8(%rbp)
jmp 0x7cd4c
movq -0x6b8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x6d0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x6c8(%rbp)
jmp 0x7cd7d
movq -0x6c8(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x6e0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x6d8(%rbp)
jmp 0x7cdaf
movsd -0x6e0(%rbp), %xmm1
movsd -0x6d0(%rbp), %xmm0
movq -0x6c0(%rbp), %rsi
movq -0x6d8(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq -0x248(%rbp), %rdi
callq 0x97360
jmp 0x7cde0
movsd -0x248(%rbp), %xmm0
cvtsi2sdl -0x14(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x24c(%rbp)
movsd -0x240(%rbp), %xmm0
cvtsi2sdl -0x18(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x250(%rbp)
movsd -0x238(%rbp), %xmm0
cvtsi2sdl -0x1c(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x254(%rbp)
movq -0x30(%rbp), %rsi
movss -0x24c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x250(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x254(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x270(%rbp), %rdi
callq 0x97170
jmp 0x7ce6d
movq -0x1d8(%rbp), %rax
movq %rax, -0x708(%rbp)
movsd -0x270(%rbp), %xmm0
movsd %xmm0, -0x700(%rbp)
movsd -0x268(%rbp), %xmm0
movsd %xmm0, -0x6f8(%rbp)
movsd -0x260(%rbp), %xmm0
movsd %xmm0, -0x6f0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x1dc(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x6e8(%rbp)
jmp 0x7cec9
movsd -0x6f0(%rbp), %xmm2
movsd -0x6f8(%rbp), %xmm1
movsd -0x700(%rbp), %xmm0
movq -0x708(%rbp), %rdi
movq -0x6e8(%rbp), %rax
movsd 0x18(%rax), %xmm3
leaq 0x179dfb(%rip), %rsi    # 0x1f6cf6
movb $0x4, %al
callq 0x5750
jmp 0x7cf04
jmp 0x7cf06
movl -0x1dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1dc(%rbp)
jmp 0x7c98a
movq -0x1c8(%rbp), %rdi
callq 0x5550
jmp 0x7cf28
movq -0x1d0(%rbp), %rdi
callq 0x5550
jmp 0x7cf36
movq -0x1d8(%rbp), %rdi
callq 0x5550
jmp 0x7cf44
movq -0x8(%rbp), %rax
movq %rax, -0x718(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x710(%rbp)
callq 0x5900
movq -0x718(%rbp), %rsi
movq -0x710(%rbp), %rdx
leaq -0x2b0(%rbp), %rdi
callq 0x47530
jmp 0x7cf7e
leaq 0x179d89(%rip), %rsi    # 0x1f6d0e
leaq -0x2b0(%rbp), %rdi
callq 0x5990
movq %rax, -0x720(%rbp)
jmp 0x7cf9a
movq -0x720(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x5220
jmp 0x7cfaf
leaq -0x2b0(%rbp), %rdi
callq 0x5300
leaq -0x2b1(%rbp), %rdi
callq 0x55d0
movq -0x8(%rbp), %rax
movq %rax, -0x730(%rbp)
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x5900
movq -0x730(%rbp), %rsi
movq -0x728(%rbp), %rdx
leaq -0x2f8(%rbp), %rdi
callq 0x47530
jmp 0x7d001
leaq 0x179d10(%rip), %rsi    # 0x1f6d18
leaq -0x2f8(%rbp), %rdi
callq 0x5990
movq %rax, -0x738(%rbp)
jmp 0x7d01d
movq -0x738(%rbp), %rsi
leaq -0x2d8(%rbp), %rdi
callq 0x5220
jmp 0x7d032
leaq -0x2f8(%rbp), %rdi
callq 0x5300
leaq -0x2f9(%rbp), %rdi
callq 0x55d0
movq -0x8(%rbp), %rax
movq %rax, -0x748(%rbp)
leaq -0x341(%rbp), %rdi
movq %rdi, -0x740(%rbp)
callq 0x5900
movq -0x748(%rbp), %rsi
movq -0x740(%rbp), %rdx
leaq -0x340(%rbp), %rdi
callq 0x47530
jmp 0x7d084
leaq 0x179ca2(%rip), %rsi    # 0x1f6d2d
leaq -0x340(%rbp), %rdi
callq 0x5990
movq %rax, -0x750(%rbp)
jmp 0x7d0a0
movq -0x750(%rbp), %rsi
leaq -0x320(%rbp), %rdi
callq 0x5220
jmp 0x7d0b5
leaq -0x340(%rbp), %rdi
callq 0x5300
leaq -0x341(%rbp), %rdi
callq 0x55d0
leaq -0x140(%rbp), %rdi
callq 0x27d50
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x5030
movq %rax, -0x758(%rbp)
jmp 0x7d0fd
movq -0x758(%rbp), %rax
movq %rax, -0x350(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x27d50
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x5030
movq %rax, -0x760(%rbp)
jmp 0x7d13b
movq -0x760(%rbp), %rax
movq %rax, -0x358(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movl %eax, -0x35c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x27d50
movl %eax, -0x360(%rbp)
movl $0x0, -0x364(%rbp)
movl -0x364(%rbp), %eax
movq %rax, -0x768(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x768(%rbp), %rax
cmpq %rcx, %rax
jae 0x7d3ad
movl -0x364(%rbp), %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x778(%rbp)
movq %rax, -0x770(%rbp)
jmp 0x7d1c7
movq -0x778(%rbp), %rax
movq -0x770(%rbp), %rcx
movq %rcx, -0x378(%rbp)
movq %rax, -0x370(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7d2f2
movl -0x35c(%rbp), %edx
movq -0x350(%rbp), %rax
movl -0x364(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movl -0x35c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x35c(%rbp)
jmp 0x7d306
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7d253
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x5300
leaq -0x2b1(%rbp), %rdi
callq 0x55d0
jmp 0x7e911
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7d290
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x5300
leaq -0x2f9(%rbp), %rdi
callq 0x55d0
jmp 0x7e905
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7d2cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x5300
leaq -0x341(%rbp), %rdi
callq 0x55d0
jmp 0x7e8f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x7e8ed
movq -0x350(%rbp), %rax
movl -0x364(%rbp), %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movl -0x364(%rbp), %eax
movl %eax, %esi
leaq -0x168(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x788(%rbp)
movq %rax, -0x780(%rbp)
jmp 0x7d32a
movq -0x788(%rbp), %rax
movq -0x780(%rbp), %rcx
movq %rcx, -0x388(%rbp)
movq %rax, -0x380(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7d383
movl -0x360(%rbp), %edx
movq -0x358(%rbp), %rax
movl -0x364(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movl -0x360(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x360(%rbp)
jmp 0x7d397
movq -0x358(%rbp), %rax
movl -0x364(%rbp), %ecx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
jmp 0x7d399
movl -0x364(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x364(%rbp)
jmp 0x7d177
leaq -0x3a0(%rbp), %rdi
callq 0xd0d0
leaq -0x3b8(%rbp), %rdi
callq 0xd0d0
leaq -0x3d0(%rbp), %rdi
callq 0xd0d0
leaq -0x3e8(%rbp), %rdi
callq 0xd0d0
leaq -0x400(%rbp), %rdi
callq 0xd0d0
leaq -0x418(%rbp), %rdi
callq 0xd0d0
movl $0x0, -0x41c(%rbp)
movl -0x41c(%rbp), %eax
movq %rax, -0x790(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
callq 0xf290
movq %rax, %rcx
movq -0x790(%rbp), %rax
cmpq %rcx, %rax
jae 0x7dcd9
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x798(%rbp)
jmp 0x7d44a
movq -0x798(%rbp), %rax
movslq (%rax), %rsi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x7a8(%rbp)
movq %rax, -0x7a0(%rbp)
jmp 0x7d470
movq -0x7a8(%rbp), %rax
movq -0x7a0(%rbp), %rcx
movq %rcx, -0x430(%rbp)
movq %rax, -0x428(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x7a9(%rbp)
jle 0x7d565
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7b8(%rbp)
jmp 0x7d4cc
movq -0x7b8(%rbp), %rax
movslq 0x4(%rax), %rsi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x7c8(%rbp)
movq %rax, -0x7c0(%rbp)
jmp 0x7d4f3
movq -0x7c8(%rbp), %rax
movq -0x7c0(%rbp), %rcx
movq %rcx, -0x440(%rbp)
movq %rax, -0x438(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x7a9(%rbp)
jle 0x7d565
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7d0(%rbp)
jmp 0x7d54b
movq -0x7d0(%rbp), %rax
movsd 0x8(%rax), %xmm0
ucomisd -0x10(%rbp), %xmm0
seta %al
movb %al, -0x7a9(%rbp)
movb -0x7a9(%rbp), %al
testb $0x1, %al
jne 0x7d574
jmp 0x7d81d
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7d8(%rbp)
jmp 0x7d592
movq -0x7d8(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x7d701
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7e0(%rbp)
jmp 0x7d5c1
movq -0x7e0(%rbp), %rax
cmpl $0x0, 0x14(%rax)
jne 0x7d701
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7e8(%rbp)
jmp 0x7d5f0
movq -0x7e8(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x7d701
movq -0x350(%rbp), %rax
movq %rax, -0x7f8(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x7f0(%rbp)
jmp 0x7d62d
movq -0x7f8(%rbp), %rax
movq -0x7f0(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x3e8(%rbp), %rdi
callq 0xd1b0
jmp 0x7d650
movq -0x350(%rbp), %rax
movq %rax, -0x808(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x800(%rbp)
jmp 0x7d67c
movq -0x808(%rbp), %rax
movq -0x800(%rbp), %rcx
movslq 0x4(%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x3d0(%rbp), %rdi
callq 0xd1b0
jmp 0x7d6a0
jmp 0x7d81b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x418(%rbp), %rdi
callq 0xec80
leaq -0x400(%rbp), %rdi
callq 0xec80
leaq -0x3e8(%rbp), %rdi
callq 0xec80
leaq -0x3d0(%rbp), %rdi
callq 0xec80
leaq -0x3b8(%rbp), %rdi
callq 0xec80
leaq -0x3a0(%rbp), %rdi
callq 0xec80
jmp 0x7e8ed
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x810(%rbp)
jmp 0x7d71f
movq -0x810(%rbp), %rax
movl 0x10(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0x7d819
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x818(%rbp)
jmp 0x7d750
movq -0x818(%rbp), %rax
movl 0x14(%rax), %eax
cmpl -0x18(%rbp), %eax
jne 0x7d819
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x820(%rbp)
jmp 0x7d781
movq -0x820(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x7d819
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x828(%rbp)
jmp 0x7d7b2
movq -0x828(%rbp), %rsi
leaq -0x3e8(%rbp), %rdi
callq 0xd1b0
jmp 0x7d7c7
movq -0x350(%rbp), %rax
movq %rax, -0x838(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x830(%rbp)
jmp 0x7d7f3
movq -0x838(%rbp), %rax
movq -0x830(%rbp), %rcx
movslq 0x4(%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x3d0(%rbp), %rdi
callq 0xd1b0
jmp 0x7d817
jmp 0x7d819
jmp 0x7d81b
jmp 0x7d81d
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x840(%rbp)
jmp 0x7d83b
movq -0x840(%rbp), %rax
movslq (%rax), %rsi
leaq -0x168(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x850(%rbp)
movq %rax, -0x848(%rbp)
jmp 0x7d861
movq -0x850(%rbp), %rax
movq -0x848(%rbp), %rcx
movq %rcx, -0x450(%rbp)
movq %rax, -0x448(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x851(%rbp)
jle 0x7d956
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x860(%rbp)
jmp 0x7d8bd
movq -0x860(%rbp), %rax
movslq 0x4(%rax), %rsi
leaq -0x168(%rbp), %rdi
callq 0xfff0
movq %rdx, -0x870(%rbp)
movq %rax, -0x868(%rbp)
jmp 0x7d8e4
movq -0x870(%rbp), %rax
movq -0x868(%rbp), %rcx
movq %rcx, -0x460(%rbp)
movq %rax, -0x458(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x851(%rbp)
jle 0x7d956
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x878(%rbp)
jmp 0x7d93c
movq -0x878(%rbp), %rax
movsd 0x8(%rax), %xmm0
ucomisd -0x10(%rbp), %xmm0
seta %al
movb %al, -0x851(%rbp)
movb -0x851(%rbp), %al
testb $0x1, %al
jne 0x7d965
jmp 0x7dbce
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x880(%rbp)
jmp 0x7d983
movq -0x880(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x7da96
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x888(%rbp)
jmp 0x7d9b2
movq -0x888(%rbp), %rax
cmpl $0x0, 0x14(%rax)
jne 0x7da96
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x890(%rbp)
jmp 0x7d9e1
movq -0x890(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x7da96
movq -0x358(%rbp), %rax
movq %rax, -0x8a0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x898(%rbp)
jmp 0x7da1e
movq -0x8a0(%rbp), %rax
movq -0x898(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x418(%rbp), %rdi
callq 0xd1b0
jmp 0x7da41
movq -0x358(%rbp), %rax
movq %rax, -0x8b0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8a8(%rbp)
jmp 0x7da6d
movq -0x8b0(%rbp), %rax
movq -0x8a8(%rbp), %rcx
movslq 0x4(%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x400(%rbp), %rdi
callq 0xd1b0
jmp 0x7da91
jmp 0x7dbcc
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8b8(%rbp)
jmp 0x7dab4
movq -0x8b8(%rbp), %rax
movl 0x10(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0x7dbca
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8c0(%rbp)
jmp 0x7dae5
movq -0x8c0(%rbp), %rax
movl 0x14(%rax), %eax
cmpl -0x18(%rbp), %eax
jne 0x7dbca
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8c8(%rbp)
jmp 0x7db16
movq -0x8c8(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x7dbca
movq -0x358(%rbp), %rax
movq %rax, -0x8d8(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8d0(%rbp)
jmp 0x7db55
movq -0x8d8(%rbp), %rax
movq -0x8d0(%rbp), %rcx
movslq (%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x418(%rbp), %rdi
callq 0xd1b0
jmp 0x7db78
movq -0x358(%rbp), %rax
movq %rax, -0x8e8(%rbp)
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8e0(%rbp)
jmp 0x7dba4
movq -0x8e8(%rbp), %rax
movq -0x8e0(%rbp), %rcx
movslq 0x4(%rcx), %rcx
leaq (%rax,%rcx,4), %rsi
leaq -0x400(%rbp), %rdi
callq 0xd1b0
jmp 0x7dbc8
jmp 0x7dbca
jmp 0x7dbcc
jmp 0x7dbce
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8f0(%rbp)
jmp 0x7dbec
movq -0x8f0(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x7dcc3
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x8f8(%rbp)
jmp 0x7dc1b
movq -0x8f8(%rbp), %rax
cmpl $0x0, 0x14(%rax)
jne 0x7dcc3
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x900(%rbp)
jmp 0x7dc4a
movq -0x900(%rbp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x7dcc3
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x908(%rbp)
jmp 0x7dc75
movq -0x908(%rbp), %rsi
leaq -0x3b8(%rbp), %rdi
callq 0xd1b0
jmp 0x7dc8a
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movl -0x41c(%rbp), %eax
movl %eax, %esi
callq 0xf2c0
movq %rax, -0x910(%rbp)
jmp 0x7dca8
movq -0x910(%rbp), %rsi
addq $0x4, %rsi
leaq -0x3a0(%rbp), %rdi
callq 0xd1b0
jmp 0x7dcc1
jmp 0x7dcc3
jmp 0x7dcc5
movl -0x41c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x41c(%rbp)
jmp 0x7d3ff
leaq -0x290(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x178f25(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x918(%rbp)
jmp 0x7dcfd
movq -0x918(%rbp), %rax
movq %rax, -0x468(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x178ef3(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x920(%rbp)
jmp 0x7dd2f
movq -0x920(%rbp), %rax
movq %rax, -0x470(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x5200
movq %rax, %rdi
leaq 0x178ec1(%rip), %rsi    # 0x1f6c14
callq 0x5650
movq %rax, -0x928(%rbp)
jmp 0x7dd61
movq -0x928(%rbp), %rax
movq %rax, -0x478(%rbp)
movq -0x468(%rbp), %rax
movq %rax, -0x958(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x950(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq -0x958(%rbp), %rdi
movq -0x950(%rbp), %rdx
movl %eax, %ecx
leaq 0x178f9a(%rip), %rsi    # 0x1f6d45
movb $0x0, %al
callq 0x5750
movq -0x470(%rbp), %rax
movq %rax, -0x948(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x940(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq -0x948(%rbp), %rdi
movq -0x940(%rbp), %rdx
movl %eax, %ecx
addl -0x184(%rbp), %ecx
leaq 0x178f51(%rip), %rsi    # 0x1f6d45
movb $0x0, %al
callq 0x5750
movq -0x478(%rbp), %rax
movq %rax, -0x938(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x930(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq -0x938(%rbp), %rdi
movq -0x930(%rbp), %rdx
movl %eax, %ecx
addl -0x19c(%rbp), %ecx
leaq 0x178f08(%rip), %rsi    # 0x1f6d45
movb $0x0, %al
callq 0x5750
movl $0x0, -0x47c(%rbp)
movl -0x47c(%rbp), %eax
movq %rax, -0x960(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x960(%rbp), %rax
cmpq %rcx, %rax
jae 0x7e0ce
movq -0x468(%rbp), %rax
movq %rax, -0x970(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x968(%rbp)
jmp 0x7dea6
movq -0x968(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x980(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x978(%rbp)
jmp 0x7ded7
movq -0x978(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x990(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x988(%rbp)
jmp 0x7df09
movsd -0x990(%rbp), %xmm1
movsd -0x980(%rbp), %xmm0
movq -0x970(%rbp), %rdi
movq -0x988(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq 0x17c51a(%rip), %rsi    # 0x1fa44d
movb $0x3, %al
callq 0x5750
movq -0x470(%rbp), %rax
movq %rax, -0x9a0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x998(%rbp)
jmp 0x7df66
movq -0x998(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x9b0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x9a8(%rbp)
jmp 0x7df97
movq -0x9a8(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x9c0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x9b8(%rbp)
jmp 0x7dfc9
movsd -0x9c0(%rbp), %xmm1
movsd -0x9b0(%rbp), %xmm0
movq -0x9a0(%rbp), %rdi
movq -0x9b8(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq 0x17c45a(%rip), %rsi    # 0x1fa44d
movb $0x3, %al
callq 0x5750
movq -0x478(%rbp), %rax
movq %rax, -0x9d0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x9c8(%rbp)
jmp 0x7e026
movq -0x9c8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x9e0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x9d8(%rbp)
jmp 0x7e057
movq -0x9d8(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x9f0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x47c(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0x9e8(%rbp)
jmp 0x7e089
movsd -0x9f0(%rbp), %xmm1
movsd -0x9e0(%rbp), %xmm0
movq -0x9d0(%rbp), %rdi
movq -0x9e8(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq 0x17c39a(%rip), %rsi    # 0x1fa44d
movb $0x3, %al
callq 0x5750
movl -0x47c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x47c(%rbp)
jmp 0x7de4e
movl $0x0, -0x480(%rbp)
movl -0x480(%rbp), %eax
movq %rax, -0x9f8(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x27d50
movq %rax, %rcx
movq -0x9f8(%rbp), %rax
cmpq %rcx, %rax
jae 0x7e4bc
movl -0x480(%rbp), %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
callq 0xfff0
movq %rdx, -0xa08(%rbp)
movq %rax, -0xa00(%rbp)
jmp 0x7e128
movq -0xa08(%rbp), %rax
movq -0xa00(%rbp), %rcx
movq %rcx, -0x490(%rbp)
movq %rax, -0x488(%rbp)
leaq -0x490(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7e2d5
movq -0x30(%rbp), %rax
movq %rax, -0xa18(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa10(%rbp)
jmp 0x7e187
movq -0xa10(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xa28(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa20(%rbp)
jmp 0x7e1b8
movq -0xa20(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0xa38(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa30(%rbp)
jmp 0x7e1ea
movsd -0xa38(%rbp), %xmm1
movsd -0xa28(%rbp), %xmm0
movq -0xa18(%rbp), %rsi
movq -0xa30(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq -0x4a8(%rbp), %rdi
callq 0x97360
jmp 0x7e21b
movsd -0x4a8(%rbp), %xmm0
cvtsi2sdl -0x14(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4ac(%rbp)
movsd -0x4a0(%rbp), %xmm0
cvtsi2sdl -0x18(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4b0(%rbp)
movsd -0x498(%rbp), %xmm0
cvtsi2sdl -0x1c(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4b4(%rbp)
movq -0x30(%rbp), %rsi
movss -0x4ac(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x4b0(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x4b4(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x4d0(%rbp), %rdi
callq 0x97170
jmp 0x7e2a8
movq -0x470(%rbp), %rdi
movsd -0x4d0(%rbp), %xmm0
movsd -0x4c8(%rbp), %xmm1
movsd -0x4c0(%rbp), %xmm2
leaq 0x17c17f(%rip), %rsi    # 0x1fa44d
movb $0x3, %al
callq 0x5750
movl -0x480(%rbp), %eax
movl %eax, %esi
leaq -0x168(%rbp), %rdi
callq 0xfff0
movq %rdx, -0xa48(%rbp)
movq %rax, -0xa40(%rbp)
jmp 0x7e2f9
movq -0xa48(%rbp), %rax
movq -0xa40(%rbp), %rcx
movq %rcx, -0x4e0(%rbp)
movq %rax, -0x4d8(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x101a0
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x7e4a6
movq -0x30(%rbp), %rax
movq %rax, -0xa58(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa50(%rbp)
jmp 0x7e358
movq -0xa50(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xa68(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa60(%rbp)
jmp 0x7e389
movq -0xa60(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0xa78(%rbp)
movq -0x28(%rbp), %rdi
addq $0x48, %rdi
movl -0x480(%rbp), %eax
movl %eax, %esi
callq 0xf390
movq %rax, -0xa70(%rbp)
jmp 0x7e3bb
movsd -0xa78(%rbp), %xmm1
movsd -0xa68(%rbp), %xmm0
movq -0xa58(%rbp), %rsi
movq -0xa70(%rbp), %rax
movsd 0x10(%rax), %xmm2
leaq -0x4f8(%rbp), %rdi
callq 0x97360
jmp 0x7e3ec
movsd -0x4f8(%rbp), %xmm0
cvtsi2sdl -0x14(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4fc(%rbp)
movsd -0x4f0(%rbp), %xmm0
cvtsi2sdl -0x18(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x500(%rbp)
movsd -0x4e8(%rbp), %xmm0
cvtsi2sdl -0x1c(%rbp), %xmm1
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x504(%rbp)
movq -0x30(%rbp), %rsi
movss -0x4fc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x500(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x504(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq -0x520(%rbp), %rdi
callq 0x97170
jmp 0x7e479
movq -0x478(%rbp), %rdi
movsd -0x520(%rbp), %xmm0
movsd -0x518(%rbp), %xmm1
movsd -0x510(%rbp), %xmm2
leaq 0x17bfae(%rip), %rsi    # 0x1fa44d
movb $0x3, %al
callq 0x5750
jmp 0x7e4a8
movl -0x480(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x480(%rbp)
jmp 0x7e0d8
movq -0x468(%rbp), %rax
movq %rax, -0xa88(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x10090
movl %eax, -0xa7c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x10090
movq -0xa88(%rbp), %rdi
movl -0xa7c(%rbp), %edx
imull $0x3, %eax, %ecx
leaq 0x17889f(%rip), %rsi    # 0x1f6d9e
movb $0x0, %al
callq 0x5750
movl $0x0, -0x524(%rbp)
movl -0x524(%rbp), %eax
movq %rax, -0xa90(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x10090
movq %rax, %rcx
movq -0xa90(%rbp), %rax
cmpq %rcx, %rax
jae 0x7e5cb
movq -0x468(%rbp), %rax
movq %rax, -0xaa0(%rbp)
movl -0x524(%rbp), %eax
movl %eax, %esi
leaq -0x3a0(%rbp), %rdi
callq 0x101d0
movq %rax, -0xa98(%rbp)
jmp 0x7e567
movq -0xa98(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xaac(%rbp)
movl -0x524(%rbp), %eax
movl %eax, %esi
leaq -0x3b8(%rbp), %rdi
callq 0x101d0
movq %rax, -0xaa8(%rbp)
jmp 0x7e593
movl -0xaac(%rbp), %edx
movq -0xaa0(%rbp), %rdi
movq -0xaa8(%rbp), %rax
movl (%rax), %ecx
leaq 0x1787fb(%rip), %rsi    # 0x1f6dab
movb $0x0, %al
callq 0x5750
movl -0x524(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x524(%rbp)
jmp 0x7e510
movq -0x470(%rbp), %rax
movq %rax, -0xab8(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x10090
movl %eax, -0xab0(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x10090
movq -0xab8(%rbp), %rdi
movl -0xab0(%rbp), %edx
imull $0x3, %eax, %ecx
leaq 0x178790(%rip), %rsi    # 0x1f6d9e
movb $0x0, %al
callq 0x5750
movl $0x0, -0x528(%rbp)
movl -0x528(%rbp), %eax
movq %rax, -0xac0(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x10090
movq %rax, %rcx
movq -0xac0(%rbp), %rax
cmpq %rcx, %rax
jae 0x7e6da
movq -0x470(%rbp), %rax
movq %rax, -0xad0(%rbp)
movl -0x528(%rbp), %eax
movl %eax, %esi
leaq -0x3d0(%rbp), %rdi
callq 0x101d0
movq %rax, -0xac8(%rbp)
jmp 0x7e676
movq -0xac8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xadc(%rbp)
movl -0x528(%rbp), %eax
movl %eax, %esi
leaq -0x3e8(%rbp), %rdi
callq 0x101d0
movq %rax, -0xad8(%rbp)
jmp 0x7e6a2
movl -0xadc(%rbp), %edx
movq -0xad0(%rbp), %rdi
movq -0xad8(%rbp), %rax
movl (%rax), %ecx
leaq 0x1786ec(%rip), %rsi    # 0x1f6dab
movb $0x0, %al
callq 0x5750
movl -0x528(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x528(%rbp)
jmp 0x7e61f
movq -0x478(%rbp), %rax
movq %rax, -0xae8(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x10090
movl %eax, -0xae0(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x10090
movq -0xae8(%rbp), %rdi
movl -0xae0(%rbp), %edx
imull $0x3, %eax, %ecx
leaq 0x178681(%rip), %rsi    # 0x1f6d9e
movb $0x0, %al
callq 0x5750
movl $0x0, -0x52c(%rbp)
movl -0x52c(%rbp), %eax
movq %rax, -0xaf0(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x10090
movq %rax, %rcx
movq -0xaf0(%rbp), %rax
cmpq %rcx, %rax
jae 0x7e7e9
movq -0x478(%rbp), %rax
movq %rax, -0xb00(%rbp)
movl -0x52c(%rbp), %eax
movl %eax, %esi
leaq -0x400(%rbp), %rdi
callq 0x101d0
movq %rax, -0xaf8(%rbp)
jmp 0x7e785
movq -0xaf8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xb0c(%rbp)
movl -0x52c(%rbp), %eax
movl %eax, %esi
leaq -0x418(%rbp), %rdi
callq 0x101d0
movq %rax, -0xb08(%rbp)
jmp 0x7e7b1
movl -0xb0c(%rbp), %edx
movq -0xb00(%rbp), %rdi
movq -0xb08(%rbp), %rax
movl (%rax), %ecx
leaq 0x1785dd(%rip), %rsi    # 0x1f6dab
movb $0x0, %al
callq 0x5750
movl -0x52c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x52c(%rbp)
jmp 0x7e72e
movq -0x468(%rbp), %rdi
callq 0x5550
jmp 0x7e7f7
movq -0x470(%rbp), %rdi
callq 0x5550
jmp 0x7e805
movq -0x478(%rbp), %rdi
callq 0x5550
jmp 0x7e813
movq -0x350(%rbp), %rax
movq %rax, -0xb18(%rbp)
cmpq $0x0, %rax
je 0x7e833
movq -0xb18(%rbp), %rdi
callq 0x56c0
leaq -0x418(%rbp), %rdi
callq 0xec80
leaq -0x400(%rbp), %rdi
callq 0xec80
leaq -0x3e8(%rbp), %rdi
callq 0xec80
leaq -0x3d0(%rbp), %rdi
callq 0xec80
leaq -0x3b8(%rbp), %rdi
callq 0xec80
leaq -0x3a0(%rbp), %rdi
callq 0xec80
leaq -0x320(%rbp), %rdi
callq 0x5300
leaq -0x2d8(%rbp), %rdi
callq 0x5300
leaq -0x290(%rbp), %rdi
callq 0x5300
leaq -0x180(%rbp), %rdi
callq 0x84ee0
leaq -0x168(%rbp), %rdi
callq 0xf9b0
leaq -0x140(%rbp), %rdi
callq 0xf9b0
leaq -0xf0(%rbp), %rdi
callq 0x5300
leaq -0xa8(%rbp), %rdi
callq 0x5300
leaq -0x50(%rbp), %rdi
callq 0x5300
addq $0xb20, %rsp            # imm = 0xB20
popq %rbp
retq
leaq -0x320(%rbp), %rdi
callq 0x5300
leaq -0x2d8(%rbp), %rdi
callq 0x5300
leaq -0x290(%rbp), %rdi
callq 0x5300
leaq -0x180(%rbp), %rdi
callq 0x84ee0
leaq -0x168(%rbp), %rdi
callq 0xf9b0
leaq -0x140(%rbp), %rdi
callq 0xf9b0
leaq -0xf0(%rbp), %rdi
callq 0x5300
leaq -0xa8(%rbp), %rdi
callq 0x5300
leaq -0x50(%rbp), %rdi
callq 0x5300
movq -0x80(%rbp), %rdi
callq 0x58f0
nop