// File: 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 %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movb $0x0, -0x21(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rsi
callq 0xaf450
movq %rax, %rdi
callq 0x8a8a0
movsd %xmm0, -0xb0(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x3, %eax
movslq %eax, %rsi
callq 0xaf450
movq %rax, %rdi
callq 0x8a8a0
movsd %xmm0, -0xb8(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %eax
addl $0x4, %eax
movslq %eax, %rsi
callq 0xaf450
movq %rax, %rdi
callq 0x8a8a0
movsd -0xb8(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0xb0(%rbp), %xmm0
leaq -0x98(%rbp), %rdi
callq 0x110910
testb $0x1, -0x21(%rbp)
je 0xa840e
movq -0x8(%rbp), %rdi
movslq -0xc(%rbp), %rsi
callq 0xaf450
movq %rax, -0xc0(%rbp)
jmp 0xa83a7
movq -0xc0(%rbp), %rdi
callq 0x8a9b0
movl %eax, -0xc4(%rbp)
jmp 0xa83bb
movl -0xc4(%rbp), %esi
movsd -0x98(%rbp), %xmm0
movsd -0x90(%rbp), %xmm1
movsd -0x88(%rbp), %xmm2
leaq 0x151607(%rip), %rdi    # 0x1f99e7
movb $0x3, %al
callq 0x5070
jmp 0xa83e9
jmp 0xa840e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x12650
jmp 0xa84b7
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0xaf450
movq %rax, -0xd0(%rbp)
jmp 0xa8428
movq -0xd0(%rbp), %rdi
callq 0x8a9b0
movl %eax, -0xd4(%rbp)
jmp 0xa843c
movl -0xd4(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x18(%rbp), %rdi
addq $0x3c0, %rdi            # imm = 0x3C0
leaq -0x98(%rbp), %rsi
callq 0xafc90
jmp 0xa845e
movq -0x18(%rbp), %rdi
addq $0x420, %rdi            # imm = 0x420
movl $0x0, -0xa8(%rbp)
leaq -0xa8(%rbp), %rsi
callq 0xffc0
jmp 0xa8481
movq -0x18(%rbp), %rdi
addq $0x408, %rdi            # imm = 0x408
movq -0x20(%rbp), %rsi
callq 0xd1b0
jmp 0xa8497
movq -0x20(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq -0x98(%rbp), %rdi
callq 0x12650
addq $0xe0, %rsp
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0x58f0
nopw %cs:(%rax,%rax)