// File: /workspace/github_cpp_makefile_star2_O3/Luthaf[P]zeopp/networkstorage.cc
// Function: parse_node(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>*, int, ATOM_NETWORK*, int*)
void parse_node(vector<string> *token, int first_index, ATOM_NETWORK *cell, int *atom_index) {
  bool verbose = false;
  VERTEX v(convertToDouble(token->at(first_index+2)), convertToDouble(token->at(first_index+3)), convertToDouble(token->at(first_index+4)));
  if(verbose) printf("parsed node labelled %d at %.3f %.3f %.3f\n", convertToInt(token->at(first_index+0)), v.abc.x, v.abc.y, v.abc.z);
  v.expected_edges = convertToInt(token->at(first_index+1)); //this many edges are expected, but note that with this file format, the edges only come once all nodes are read and, in all likelihood, are not given exhaustively
  cell->vertices.push_back(v);
  cell->vertex_symmetry_operators.push_back(0); //the vertices read from file are the basic ones, before any symmetry operator (or you could say after operator 0, which does nothing)
  cell->vertex_basic_indices.push_back((*atom_index));
  (*atom_index)++;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdx, %r14
movl %esi, %r12d
movq %rdi, %r15
leal 0x2(%r12), %eax
movslq %eax, %rsi
movq (%rdi), %rdi
movq 0x8(%r15), %rdx
subq %rdi, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0x61e51
movq %rcx, %rbx
shlq $0x5, %rsi
addq %rsi, %rdi
callq 0x4a5c7
movsd %xmm0, 0x10(%rsp)
leal 0x3(%r12), %eax
movslq %eax, %rsi
movq (%r15), %rdi
movq 0x8(%r15), %rdx
subq %rdi, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0x61e51
shlq $0x5, %rsi
addq %rsi, %rdi
callq 0x4a5c7
movsd %xmm0, 0x8(%rsp)
leal 0x4(%r12), %eax
movslq %eax, %rsi
movq (%r15), %rdi
movq 0x8(%r15), %rdx
subq %rdi, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0x61e51
shlq $0x5, %rsi
addq %rsi, %rdi
callq 0x4a5c7
movaps %xmm0, %xmm2
leaq 0x18(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
callq 0x9d5e8
incl %r12d
movslq %r12d, %rsi
movq (%r15), %rdi
movq 0x8(%r15), %rdx
subq %rdi, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0x61e5f
shlq $0x5, %rsi
addq %rsi, %rdi
callq 0x4a68a
leaq 0x18(%rsp), %rsi
movl %eax, 0x18(%rsi)
leaq 0x3c0(%r14), %rdi
callq 0x67910
movl $0x0, 0x4(%rsp)
movq 0x428(%r14), %rsi
cmpq 0x430(%r14), %rsi
je 0x61daf
movl $0x0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x428(%r14)
jmp 0x61dc0
leaq 0x420(%r14), %rdi
leaq 0x4(%rsp), %rdx
callq 0x14198
movq 0x410(%r14), %rsi
cmpq 0x418(%r14), %rsi
je 0x61de1
movl (%rbx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x410(%r14)
jmp 0x61df5
addq $0x408, %r14            # imm = 0x408
movq %r14, %rdi
movq %rbx, %rdx
callq 0xf864
movl (%rbx), %eax
incl %eax
movl %eax, (%rbx)
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61e14
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x61e2b
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x61e42
movq 0x48(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0xeb89d(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
leaq 0xeb88f(%rip), %rdi     # 0x14d6f5
xorl %eax, %eax
callq 0x4630
jmp 0x61e6f
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x670a4
movq %rbx, %rdi
callq 0x4780