// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::simplify_unary_negation_branch(exprtk::details::expression_node<double>*&)
bool simplify_unary_negation_branch(expression_node_ptr& node)
      {
         {
            typedef details::unary_branch_node<T,details::neg_op<T> > ubn_t;
            ubn_t* n = dynamic_cast<ubn_t*>(node);

            if (n)
            {
               expression_node_ptr un_r = n->branch(0);
               n->release();
               free_node(node_allocator_, node);
               node = un_r;

               return true;
            }
         }

         {
            typedef details::unary_variable_node<T,details::neg_op<T> > uvn_t;

            uvn_t* n = dynamic_cast<uvn_t*>(node);

            if (n)
            {
               const T& v = n->v();
               expression_node_ptr return_node = error_node();

               if (
                    (0 != (return_node = symtab_store_.get_variable(v))) ||
                    (0 != (return_node = sem_         .get_variable(v)))
                  )
               {
                  free_node(node_allocator_, node);
                  node = return_node;

                  return true;
               }
               else
               {
                  set_error(make_error(
                     parser_error::e_syntax,
                     current_token(),
                     "ERR020 - Failed to find variable node in symbol table",
                     exprtk_error_location));

                  free_node(node_allocator_, node);

                  return false;
               }
            }
         }

         return false;
      }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq (%rsi), %rax
testq %rax, %rax
je 0x1fd899
movq %rsi, %rbx
movq %rdi, %r14
movq (%rax), %rcx
leaq 0x288bd0(%rip), %rdx    # 0x486458
cmpq %rdx, %rcx
je 0x1fd89d
leaq 0x2841ac(%rip), %rdx    # 0x481a40
cmpq %rdx, %rcx
je 0x1fd8a7
xorl %eax, %eax
jmp 0x1fd8ed
movq 0x20(%rax), %r15
movb $0x0, 0x28(%rax)
jmp 0x1fd8d6
movq 0x20(%rax), %r12
leaq 0x298(%r14), %rdi
movq %r12, %rsi
callq 0x2b868a
testq %rax, %rax
jne 0x1fd8d3
leaq 0x530(%r14), %rdi
movq %r12, %rsi
callq 0x2b86e6
testq %rax, %rax
je 0x1fd8fc
movq %rax, %r15
addq $0x290, %r14            # imm = 0x290
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1ad9c8
movq %r15, (%rbx)
movb $0x1, %al
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0xe044f(%rip), %rsi     # 0x2ddd52
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x127016
leaq 0x10(%rsp), %rdi
movl $0x63ff, %esi           # imm = 0x63FF
callq 0x1f7a3c
leaq 0xdc2d3(%rip), %rsi     # 0x2d9bfb
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1b4349
leaq 0x70(%r14), %rdx
leaq 0x70(%rsp), %rdi
pushq $0x1
popq %rsi
leaq 0x50(%rsp), %rcx
leaq 0x30(%rsp), %r8
callq 0x1f7341
leaq 0x308(%r14), %rdi
leaq 0x70(%rsp), %rsi
callq 0x1f76ce
leaq 0x70(%rsp), %rdi
callq 0x1f5c4c
leaq 0x30(%rsp), %rdi
callq 0x118648
leaq 0x10(%rsp), %rdi
callq 0x118648
leaq 0x50(%rsp), %rdi
callq 0x118648
addq $0x290, %r14            # imm = 0x290
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1ad9c8
jmp 0x1fd899
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x1f5c4c
jmp 0x1fd9b4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x118648
jmp 0x1fd9c3
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x118648
jmp 0x1fd9d2
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x118648
movq %rbx, %rdi
callq 0x118360