// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::node_collection_destructor<exprtk::details::expression_node<double>>::collect_nodes(exprtk::details::expression_node<double>*&, std::vector<exprtk::details::expression_node<double>**, std::allocator<exprtk::details::expression_node<double>**>>&)
static void collect_nodes(node_ptr_t& root, noderef_list_t& node_delete_list)
         {
            std::deque<node_ptr_t> node_list;
            node_list.push_back(root);
            node_delete_list.push_back(&root);

            noderef_list_t child_node_delete_list;
            child_node_delete_list.reserve(1000);

            while (!node_list.empty())
            {
               node_list.front()->collect_nodes(child_node_delete_list);

               if (!child_node_delete_list.empty())
               {
                  for (std::size_t i = 0; i < child_node_delete_list.size(); ++i)
                  {
                     node_pp_t& node = child_node_delete_list[i];

                     if (0 == (*node))
                     {
                        exprtk_debug(("ncd::collect_nodes() - null node encountered.\n"));
                     }

                     node_list.push_back(*node);
                  }

                  node_delete_list.insert(
                     node_delete_list.end(),
                     child_node_delete_list.begin(), child_node_delete_list.end());

                  child_node_delete_list.clear();
               }

               node_list.pop_front();
            }

            std::reverse(node_delete_list.begin(), node_delete_list.end());
         }

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0x100(%rsp)
movq %rsi, 0xf8(%rsp)
leaq 0xa8(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x23d360
movq 0x28(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0x23d370
jmp 0x23cc2d
movq 0xf8(%rsp), %rdi
movq 0x100(%rsp), %rax
movq %rax, 0x90(%rsp)
leaq 0x90(%rsp), %rsi
callq 0x23d3d0
jmp 0x23cc54
leaq 0x78(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x23cad0
movq 0x20(%rsp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x23cae0
jmp 0x23cc74
jmp 0x23cc76
leaq 0xa8(%rsp), %rdi
callq 0x23d400
xorb $-0x1, %al
testb $0x1, %al
jne 0x23cc8e
jmp 0x23ce08
leaq 0xa8(%rsp), %rdi
callq 0x23d420
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq 0x78(%rsp), %rsi
callq *%rax
jmp 0x23ccae
leaq 0x78(%rsp), %rdi
callq 0x23d450
testb $0x1, %al
jne 0x23cdf6
movq $0x0, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x23ce80
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x23cd7b
movq 0x70(%rsp), %rsi
leaq 0x78(%rsp), %rdi
callq 0x23cea0
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq (%rax), %rcx
xorl %eax, %eax
cmpq (%rcx), %rax
jne 0x23cd4f
jmp 0x23cd4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0x23ce5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x23cec0
jmp 0x23ce5c
movq 0x68(%rsp), %rax
movq (%rax), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x23d370
jmp 0x23cd66
jmp 0x23cd68
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x23ccc9
movq 0xf8(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x23d560
movq %rax, 0x58(%rsp)
leaq 0x60(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x23d590
leaq 0x78(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x23d5d0
movq (%rsp), %rdi
movq %rax, 0x50(%rsp)
callq 0x23d560
movq 0x8(%rsp), %rdi
movq %rax, 0x48(%rsp)
movq 0x60(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x48(%rsp), %rcx
callq 0x23d4a0
movq %rax, 0x10(%rsp)
jmp 0x23cde2
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x23d600
leaq 0xa8(%rsp), %rdi
callq 0x23d620
jmp 0x23cc76
movq 0xf8(%rsp), %rdi
callq 0x23d5d0
movq %rax, 0x38(%rsp)
movq 0xf8(%rsp), %rdi
callq 0x23d560
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x23d690
jmp 0x23ce3d
leaq 0x78(%rsp), %rdi
callq 0x23cec0
leaq 0xa8(%rsp), %rdi
callq 0x23d6d0
addq $0x108, %rsp            # imm = 0x108
retq
leaq 0xa8(%rsp), %rdi
callq 0x23d6d0
movq 0xa0(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)