// File: /workspace/github_cpp_makefile_star2_O3/Luthaf[P]zeopp/net.cc
// Function: recursive_find_loops(int, int, int, int, XYZ, std::vector<CONNECTION, std::allocator<CONNECTION>>*, std::vector<MOLECULE, std::allocator<MOLECULE>>*, std::vector<bool, std::allocator<bool>>*, std::vector<int, std::allocator<int>>*, std::vector<int, std::allocator<int>>*, std::vector<int, std::allocator<int>>*, std::vector<XYZ, std::allocator<XYZ>>*, std::vector<bool, std::allocator<bool>>*, std::vector<int, std::allocator<int>>*, std::vector<int, std::allocator<int>>*, std::vector<int, std::allocator<int>>*, std::vector<XYZ, std::allocator<XYZ>>*, std::vector<int, std::allocator<int>>*, std::vector<XYZ, std::allocator<XYZ>>*, int)
bool recursive_find_loops(int this_v, int a, int b, int c, XYZ xyz, vector<CONNECTION> *two_way_connections, vector<MOLECULE> *assembled_molecules, vector<bool> *edge_traversed, vector<int> *vertex_visit_a, vector<int> *vertex_visit_b, vector<int> *vertex_visit_c, vector<XYZ> *vertex_visit_xyz, vector<bool> *vertex_visited, vector<int> *loops_a, vector<int> *loops_b, vector<int> *loops_c, vector<XYZ> *loops_xyz, vector<int> *unit_cell_vector_IDs, vector<XYZ> *unit_cell_vectors, int dimensionality) {
  bool verbose = false;
  //visit this vertex
  if(vertex_visited->at(this_v)) {
    //previously visited this vertex - have we made a loop?
    int old_a = vertex_visit_a->at(this_v);
    int old_b = vertex_visit_b->at(this_v);
    int old_c = vertex_visit_c->at(this_v);
    XYZ old_xyz = vertex_visit_xyz->at(this_v);
    int period_a = a-old_a;
    int period_b = b-old_b;
    int period_c = c-old_c;
    XYZ period_xyz = xyz-old_xyz;
    if(period_a!=0 || period_b!=0 || period_c!=0) { //it's a loop!
if(verbose) printf("DEBUG: a loop was found with periodicity (%d %d %d) and shift %.3f %.3f %.3f\n", period_a, period_b, period_c, period_xyz.x, period_xyz.y, period_xyz.z);
      bool found_all_uc_vectors = false;
      //is this new loop unique?
      if(loop_is_unique(period_a, period_b, period_c, loops_a, loops_b, loops_c)) {
if(verbose) printf("DEBUG: new loop is unique, testing for unit cell vector assignment ... \n");
        //does this new loop allow us to define a unit cell vector?
        found_all_uc_vectors = try_unit_cell_vector_assign(period_a, period_b, period_c, period_xyz, loops_a, loops_b, loops_c, loops_xyz, unit_cell_vector_IDs, unit_cell_vectors, dimensionality);
        //push loop
if(verbose) printf("DEBUG: ... pushing the new loop\n");
        loops_a->push_back(period_a);
        loops_b->push_back(period_b);
        loops_c->push_back(period_c);
        loops_xyz->push_back(period_xyz);
      } else {
if(verbose) printf("DEBUG: new loop is a duplicate\n");
      }
      return found_all_uc_vectors; //quit the recursive method here - we have a loop, time to try and find some other loops
    } else {
      //else do nothing - it's not a loop, so just proceed with journey from this vertex
    }
  } else {
    //haven't previously visited this vertex; visit it
    vertex_visited->at(this_v) = true;
    vertex_visit_a->at(this_v) = a;
    vertex_visit_b->at(this_v) = b;
    vertex_visit_c->at(this_v) = c;
    vertex_visit_xyz->at(this_v) = xyz;
  }
  //at this point, we have either completed a loop, or visited a vertex that did not complete a loop; only if a loop was found do we quit out - else proceed to recursively traverse other connections
  bool found_all_uc_vectors = false; //if we find them all during this run, terminate early
  int num_c = two_way_connections->size();
  for(int i=0; i<num_c && !found_all_uc_vectors; i++) {
    if(!edge_traversed->at(i)) {
      //only traverse new edges
      CONNECTION con = two_way_connections->at(i);
      if(con.v1==this_v) {
        //traverse this edge
        edge_traversed->at(i) = true;
        //don't visit the vertex - that will happen in next call
        int new_a = a+con.a;
        int new_b = b+con.b;
        int new_c = c+con.c;
        int a_edge_index = con.e1;
        int b_edge_index = con.e2;
        int a_vertex_index = con.v1;
        int b_vertex_index = con.v2;
        MOLECULE a_mol = assembled_molecules->at(a_vertex_index);
        int a_site_index = a_mol.permutation.at(a_edge_index);
        int a_atom_index = a_mol.sites.at(a_site_index);
        XYZ a_site = a_mol.atoms_xyz.at(a_atom_index);
        MOLECULE b_mol = assembled_molecules->at(b_vertex_index);
        int b_site_index = b_mol.permutation.at(b_edge_index);
        int b_atom_index = b_mol.sites.at(b_site_index);
        XYZ b_site = b_mol.atoms_xyz.at(b_atom_index);
        XYZ shift = b_site-a_site;
        XYZ new_xyz = xyz-shift;
        found_all_uc_vectors = recursive_find_loops(con.v2, new_a, new_b, new_c, new_xyz, two_way_connections, assembled_molecules, edge_traversed, vertex_visit_a, vertex_visit_b, vertex_visit_c, vertex_visit_xyz, vertex_visited, loops_a, loops_b, loops_c, loops_xyz, unit_cell_vector_IDs, unit_cell_vectors, dimensionality);
      } else if(con.v2==this_v) {
        //traverse this edge, pointing the other way
        edge_traversed->at(i) = true;
        //don't visit the vertex - that will happen in next call
        int new_a = a-con.a;
        int new_b = b-con.b;
        int new_c = c-con.c;
        int a_edge_index = con.e1;
        int b_edge_index = con.e2;
        int a_vertex_index = con.v1;
        int b_vertex_index = con.v2;
        MOLECULE a_mol = assembled_molecules->at(a_vertex_index);
        int a_site_index = a_mol.permutation.at(a_edge_index);
        int a_atom_index = a_mol.sites.at(a_site_index);
        XYZ a_site = a_mol.atoms_xyz.at(a_atom_index);
        MOLECULE b_mol = assembled_molecules->at(b_vertex_index);
        int b_site_index = b_mol.permutation.at(b_edge_index);
        int b_atom_index = b_mol.sites.at(b_site_index);
        XYZ b_site = b_mol.atoms_xyz.at(b_atom_index);
        XYZ shift = b_site-a_site;
        XYZ new_xyz = xyz+shift;
        found_all_uc_vectors = recursive_find_loops(con.v1, new_a, new_b, new_c, new_xyz, two_way_connections, assembled_molecules, edge_traversed, vertex_visit_a, vertex_visit_b, vertex_visit_c, vertex_visit_xyz, vertex_visited, loops_a, loops_b, loops_c, loops_xyz, unit_cell_vector_IDs, unit_cell_vectors, dimensionality);
      }
    }
  }
  return found_all_uc_vectors;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x288, %rsp            # imm = 0x288
movq %r9, 0x90(%rsp)
movq %r8, 0xa0(%rsp)
movl %ecx, 0x80(%rsp)
movl %edx, 0x88(%rsp)
movl %esi, 0x84(%rsp)
movl %edi, 0xb4(%rsp)
movq 0x300(%rsp), %r14
movq 0x2e0(%rsp), %r15
movslq %edi, %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0xee36
testq %rdx, (%rax)
movq %rbx, 0xb8(%rsp)
je 0x9eab9
movq (%r15), %rax
movq 0x8(%r15), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movq 0x2e8(%rsp), %rdx
movq (%rdx), %rcx
movq 0x8(%rdx), %rdx
subq %rcx, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movq 0x2f0(%rsp), %rdx
movq (%rdx), %rsi
movq 0x8(%rdx), %rdx
subq %rsi, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movq 0x2f8(%rsp), %rdx
movq (%rdx), %rdi
movq 0x8(%rdx), %rdx
subq %rdi, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %r8 # imm = 0xAAAAAAAAAAAAAAAB
imulq %r8, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movl (%rax,%rbx,4), %r13d
movl (%rcx,%rbx,4), %r14d
movl (%rsi,%rbx,4), %r12d
leaq (%rbx,%rbx,2), %rax
movq 0x10(%rdi,%rax,8), %rcx
leaq 0x1c0(%rsp), %rdx
movq %rcx, 0x10(%rdx)
movups (%rdi,%rax,8), %xmm0
movaps %xmm0, (%rdx)
movl 0x84(%rsp), %eax
subl %r13d, %eax
movl %eax, 0x8c(%rsp)
movl %eax, 0xe0(%rsp)
movl 0x88(%rsp), %r15d
movl %r15d, %ebp
subl %r14d, %ebp
movl %ebp, 0xc0(%rsp)
movl 0x80(%rsp), %ebx
subl %r12d, %ebx
movl %ebx, 0x270(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x8461e
xorl 0x84(%rsp), %r13d
xorl %r15d, %r14d
orl %r13d, %r14d
xorl 0x80(%rsp), %r12d
orl %r14d, %r12d
je 0x9eb83
movl 0x8c(%rsp), %r15d
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq 0x308(%rsp), %rcx
movq 0x310(%rsp), %r14
movq %r14, %r8
movq 0x318(%rsp), %r13
movq %r13, %r9
callq 0x9f5d3
testb %al, %al
movq 0x320(%rsp), %r12
je 0x9f3b3
movq 0x128(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x118(%rsp), %xmm0
movups %xmm0, (%rsp)
movl 0x338(%rsp), %eax
movl %eax, 0x30(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %r12, 0x18(%rsp)
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq 0x308(%rsp), %r12
movq %r12, %rcx
movq %r14, %r8
movq %r13, %r9
callq 0x9f96b
movl %eax, %r14d
movq 0x8(%r12), %rsi
cmpq 0x10(%r12), %rsi
je 0x9f3cb
movl %r15d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%r12)
jmp 0x9f3db
movq %r14, %rdi
movq %rbx, %rsi
callq 0xee36
orq %rdx, (%rax)
movq (%r15), %rax
movq 0x8(%r15), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movl 0x84(%rsp), %ecx
movl %ecx, (%rax,%rbx,4)
movq 0x2e8(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movl 0x88(%rsp), %ecx
movl %ecx, (%rax,%rbx,4)
movq 0x2f0(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
movl 0x80(%rsp), %ecx
movl %ecx, (%rax,%rbx,4)
movq 0x2f8(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %rbx, %rdx
jbe 0x9f483
leaq (%rbx,%rbx,2), %rcx
leaq 0x2c0(%rsp), %rsi
movq 0x10(%rsi), %rdx
movq %rdx, 0x10(%rax,%rcx,8)
movups (%rsi), %xmm0
movups %xmm0, (%rax,%rcx,8)
movq 0xa0(%rsp), %rax
movq 0x8(%rax), %r15
subq (%rax), %r15
sarq $0x2, %r15
movabsq $0x6db6db6db6db6db7, %rax # imm = 0x6DB6DB6DB6DB6DB7
imulq %rax, %r15
testl %r15d, %r15d
jle 0x9f3b3
movq 0x2d8(%rsp), %rbp
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
movl $0x18, %ebx
xorl %r13d, %r13d
movq %r15, 0xa8(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0xee36
testq %rdx, (%rax)
je 0x9ebe4
xorl %r14d, %r14d
jmp 0x9f39c
movq 0xa0(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
movabsq $0x6db6db6db6db6db7, %rcx # imm = 0x6DB6DB6DB6DB6DB7
imulq %rcx, %rdx
cmpq %r13, %rdx
jbe 0x9f474
movslq -0x18(%rax,%rbx), %rdx
movslq -0x14(%rax,%rbx), %rsi
movslq -0x10(%rax,%rbx), %r15
movslq -0xc(%rax,%rbx), %r12
movl -0x8(%rax,%rbx), %ecx
movl %ecx, 0x98(%rsp)
movl -0x4(%rax,%rbx), %ecx
movl %ecx, 0x9c(%rsp)
movl (%rax,%rbx), %eax
movl %eax, 0x8c(%rsp)
movl 0xb4(%rsp), %eax
cmpl %eax, %edx
jne 0x9ef5a
movq %rsi, %r14
movq %rbp, %rdi
movq %r13, %rsi
callq 0xee36
orq %rdx, (%rax)
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rax, %rdx
movq 0xb8(%rsp), %rax
cmpq %rax, %rdx
jbe 0x9f4bf
imulq $0xa8, %rax, %rax
addq %rax, %rsi
leaq 0x1c0(%rsp), %rdi
callq 0x67616
movq 0x238(%rsp), %rax
movq 0x240(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r15, %rdx
jbe 0x9f4cb
movslq (%rax,%r15,4), %rsi
movq 0x208(%rsp), %rax
movq 0x210(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x9f4dc
movslq (%rax,%rsi,4), %rsi
movq 0x1c0(%rsp), %rax
movq 0x1c8(%rsp), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %rsi, %rdx
jbe 0x9f4ea
leaq (%rsi,%rsi,2), %rcx
movq 0x10(%rax,%rcx,8), %rdx
movq %rdx, 0xf0(%rsp)
movups (%rax,%rcx,8), %xmm0
movaps %xmm0, 0xe0(%rsp)
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rax, %rdx
cmpq %r14, %rdx
jbe 0x9f4f8
imulq $0xa8, %r14, %rax
addq %rax, %rsi
leaq 0x118(%rsp), %rdi
callq 0x67616
movq 0x190(%rsp), %rax
movq 0x198(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r12, %rdx
jbe 0x9f492
movslq (%rax,%r12,4), %rsi
movq 0x160(%rsp), %rax
movq 0x168(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x9f4a3
movslq (%rax,%rsi,4), %rsi
movq 0x118(%rsp), %rax
movq 0x120(%rsp), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %rsi, %rdx
movq 0xa8(%rsp), %r15
jbe 0x9f4b1
leaq (%rsi,%rsi,2), %rcx
movq 0x10(%rax,%rcx,8), %rdx
movq %rdx, 0xd0(%rsp)
movups (%rax,%rcx,8), %xmm0
movaps %xmm0, 0xc0(%rsp)
leaq 0x270(%rsp), %r12
movq %r12, %rdi
leaq 0xc0(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x8461e
leaq 0x100(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
movq %r12, %rdx
callq 0x8461e
movl 0x98(%rsp), %esi
addl 0x84(%rsp), %esi
movl 0x9c(%rsp), %edx
addl 0x88(%rsp), %edx
movl 0x8c(%rsp), %ecx
addl 0x80(%rsp), %ecx
movq 0x110(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x100(%rsp), %xmm0
movups %xmm0, (%rsp)
movl 0x338(%rsp), %eax
movl %eax, 0x78(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x320(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x318(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x310(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x308(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x300(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x2f8(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x2f0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x2e0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %rbp, 0x18(%rsp)
movl %r14d, %edi
movq 0xa0(%rsp), %r8
movq 0x90(%rsp), %r9
callq 0x9e86b
jmp 0x9f270
cmpl %eax, %esi
jne 0x9f391
movq %rdx, %r14
movq %rbp, %rdi
movq %r13, %rsi
callq 0xee36
orq %rdx, (%rax)
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rax, %rdx
cmpq %r14, %rdx
jbe 0x9f525
movq %r14, 0xf8(%rsp)
imulq $0xa8, %r14, %rax
addq %rax, %rsi
leaq 0x1c0(%rsp), %rdi
callq 0x67616
movq 0x238(%rsp), %rax
movq 0x240(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r15, %rdx
movq 0xb8(%rsp), %r8
jbe 0x9f536
movslq (%rax,%r15,4), %rsi
movq 0x208(%rsp), %rax
movq 0x210(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x9f547
movslq (%rax,%rsi,4), %rsi
movq 0x1c0(%rsp), %rax
movq 0x1c8(%rsp), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %rsi, %rdx
jbe 0x9f555
leaq (%rsi,%rsi,2), %rcx
movq 0x10(%rax,%rcx,8), %rdx
movq %rdx, 0xf0(%rsp)
movups (%rax,%rcx,8), %xmm0
movaps %xmm0, 0xe0(%rsp)
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
movabsq $-0x30c30c30c30c30c3, %rax # imm = 0xCF3CF3CF3CF3CF3D
imulq %rax, %rdx
cmpq %r8, %rdx
jbe 0x9f563
imulq $0xa8, %r8, %rax
addq %rax, %rsi
leaq 0x118(%rsp), %rdi
callq 0x67616
movq 0x190(%rsp), %rax
movq 0x198(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %r12, %rdx
jbe 0x9f574
movslq (%rax,%r12,4), %rsi
movq 0x160(%rsp), %rax
movq 0x168(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rsi, %rdx
jbe 0x9f509
movslq (%rax,%rsi,4), %rsi
movq 0x118(%rsp), %rax
movq 0x120(%rsp), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq %rsi, %rdx
movq 0xa8(%rsp), %r15
jbe 0x9f517
leaq (%rsi,%rsi,2), %rcx
movq 0x10(%rax,%rcx,8), %rdx
movq %rdx, 0xd0(%rsp)
movups (%rax,%rcx,8), %xmm0
movaps %xmm0, 0xc0(%rsp)
leaq 0x270(%rsp), %r14
movq %r14, %rdi
leaq 0xc0(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x8461e
leaq 0x100(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
movq %r14, %rdx
callq 0x84642
movl 0x84(%rsp), %esi
subl 0x98(%rsp), %esi
movl 0x88(%rsp), %edx
subl 0x9c(%rsp), %edx
movl 0x80(%rsp), %ecx
subl 0x8c(%rsp), %ecx
movq 0x110(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x100(%rsp), %xmm0
movups %xmm0, (%rsp)
movl 0x338(%rsp), %eax
movl %eax, 0x78(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x320(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x318(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x310(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x308(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x300(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x2f8(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x2f0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x2e0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq %rbp, 0x18(%rsp)
movq 0xf8(%rsp), %rdi
movq 0xa0(%rsp), %r8
movq 0x90(%rsp), %r9
callq 0x9e86b
movl %eax, %r14d
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x9f290
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x9f2ad
movq 0x188(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0x9f2ca
movq 0x170(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x148(%rsp), %rdi
callq 0x2f4c2
leaq 0x130(%rsp), %rdi
callq 0x2f4c2
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0x9f301
movq 0x128(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x238(%rsp), %rdi
testq %rdi, %rdi
je 0x9f31e
movq 0x248(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x9f33b
movq 0x230(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x208(%rsp), %rdi
testq %rdi, %rdi
je 0x9f358
movq 0x218(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x1f0(%rsp), %rdi
callq 0x2f4c2
leaq 0x1d8(%rsp), %rdi
callq 0x2f4c2
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x9f39c
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
jmp 0x9f39c
xorl %r14d, %r14d
movq 0xa8(%rsp), %r15
incq %r13
cmpq %r15, %r13
jae 0x9f3b6
addq $0x1c, %rbx
testb %r14b, %r14b
je 0x9ebcc
jmp 0x9f3b6
xorl %r14d, %r14d
movl %r14d, %eax
addq $0x288, %rsp            # imm = 0x288
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe0(%rsp), %rdx
movq %r12, %rdi
callq 0xf864
movq 0x310(%rsp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
movq 0x320(%rsp), %r15
je 0x9f401
movl %ebp, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rdi)
jmp 0x9f40e
leaq 0xc0(%rsp), %rdx
callq 0xf864
movq 0x8(%r13), %rsi
cmpq 0x10(%r13), %rsi
je 0x9f424
movl %ebx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%r13)
jmp 0x9f434
leaq 0x270(%rsp), %rdx
movq %r13, %rdi
callq 0xf864
movq 0x8(%r15), %rsi
cmpq 0x10(%r15), %rsi
je 0x9f45f
movq 0x128(%rsp), %rax
movq %rax, 0x10(%rsi)
movups 0x118(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x18, 0x8(%r15)
jmp 0x9f3b6
leaq 0x118(%rsp), %rdx
movq %r15, %rdi
callq 0x69b82
jmp 0x9f3b6
leaq 0xae27a(%rip), %rdi     # 0x14d6f5
movq %r13, %rsi
jmp 0x9f52f
leaq 0xae26b(%rip), %rdi     # 0x14d6f5
movq %rbx, %rsi
jmp 0x9f52f
leaq 0xae25c(%rip), %rdi     # 0x14d6f5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae24b(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae23d(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae22f(%rip), %rdi     # 0x14d6f5
movq %rax, %rsi
jmp 0x9f52f
leaq 0xae223(%rip), %rdi     # 0x14d6f5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae212(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae204(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae1f6(%rip), %rdi     # 0x14d6f5
movq %r14, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae1e5(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae1d7(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae1c9(%rip), %rdi     # 0x14d6f5
movq %r14, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae1b8(%rip), %rdi     # 0x14d6f5
movq %r15, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae1a7(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae199(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xae18b(%rip), %rdi     # 0x14d6f5
movq %r8, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0xae17a(%rip), %rdi     # 0x14d6f5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
jmp 0x9f5ae
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5ae
jmp 0x9f5ae
jmp 0x9f5ae
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5a9
jmp 0x9f5ae
jmp 0x9f5ae
jmp 0x9f5ae
jmp 0x9f5ae
jmp 0x9f5ae
movq %rax, %rbx
jmp 0x9f5be
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x6771a
leaq 0x1c0(%rsp), %rdi
callq 0x6771a
movq %rbx, %rdi
callq 0x4780