// File: 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:
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rdi, 0x198(%rsp)
movq %rsi, 0x190(%rsp)
movq 0x198(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x190(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, %rax
je 0x383f7d
movq 0x38(%rsp), %rdi
leaq 0x3e627a(%rip), %rsi    # 0x76a1e0
leaq 0x41e103(%rip), %rdx    # 0x7a2070
xorl %eax, %eax
movl %eax, %ecx
callq 0x11b6d0
movq %rax, 0x28(%rsp)
jmp 0x383f86
xorl %eax, %eax
movq %rax, 0x28(%rsp)
jmp 0x383f86
movq 0x28(%rsp), %rax
movq %rax, 0x188(%rsp)
cmpq $0x0, 0x188(%rsp)
je 0x38400d
movq 0x188(%rsp), %rdi
movq $0x0, 0x178(%rsp)
leaq 0x178(%rsp), %rsi
callq 0x3d9600
movq %rax, 0x180(%rsp)
movq 0x188(%rsp), %rdi
callq 0x556ac0
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x190(%rsp), %rsi
callq 0x284bd0
movq 0x180(%rsp), %rcx
movq 0x190(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x1a7(%rsp)
jmp 0x3842d0
movq 0x190(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x384046
movq 0x20(%rsp), %rdi
leaq 0x3e61b1(%rip), %rsi    # 0x76a1e0
leaq 0x41957a(%rip), %rdx    # 0x79d5b0
xorl %eax, %eax
movl %eax, %ecx
callq 0x11b6d0
movq %rax, 0x18(%rsp)
jmp 0x38404f
xorl %eax, %eax
movq %rax, 0x18(%rsp)
jmp 0x38404f
movq 0x18(%rsp), %rax
movq %rax, 0x170(%rsp)
cmpq $0x0, 0x170(%rsp)
je 0x3842c8
movq 0x170(%rsp), %rdi
callq 0x3b4090
movq %rax, 0x168(%rsp)
callq 0x2821f0
movq 0x30(%rsp), %rdi
movq %rax, 0x160(%rsp)
addq $0x298, %rdi            # imm = 0x298
movq 0x168(%rsp), %rsi
callq 0x556ad0
movq %rax, %rcx
movq %rcx, 0x160(%rsp)
xorl %eax, %eax
cmpq %rcx, %rax
jne 0x3840e3
movq 0x30(%rsp), %rdi
addq $0x530, %rdi            # imm = 0x530
movq 0x168(%rsp), %rsi
callq 0x556b80
movq %rax, %rcx
movq %rcx, 0x160(%rsp)
xorl %eax, %eax
cmpq %rcx, %rax
je 0x38411c
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x190(%rsp), %rsi
callq 0x284bd0
movq 0x160(%rsp), %rcx
movq 0x190(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x1a7(%rsp)
jmp 0x3842d0
movq 0x30(%rsp), %rdi
callq 0x373e90
movq %rax, 0x8(%rsp)
leaq 0x97(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x11b6f0
movq 0x10(%rsp), %rdx
leaq 0x226f48(%rip), %rsi    # 0x5ab091
leaq 0x98(%rsp), %rdi
callq 0x134520
jmp 0x384158
leaq 0x40(%rsp), %rdi
movl $0x63ff, %esi           # imm = 0x63FF
callq 0x371f20
jmp 0x384169
leaq 0x222da3(%rip), %rsi    # 0x5a6f13
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x29dd70
jmp 0x384181
movq 0x8(%rsp), %rdx
leaq 0xb8(%rsp), %rdi
movl $0x1, %esi
leaq 0x98(%rsp), %rcx
leaq 0x60(%rsp), %r8
callq 0x3741e0
jmp 0x3841a7
movq 0x30(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x371e40
jmp 0x3841bb
leaq 0xb8(%rsp), %rdi
callq 0x371330
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x40(%rsp), %rdi
callq 0x11b838
leaq 0x98(%rsp), %rdi
callq 0x11b838
leaq 0x97(%rsp), %rdi
callq 0x11b820
movq 0x30(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
movq 0x190(%rsp), %rsi
callq 0x284bd0
movb $0x0, 0x1a7(%rsp)
jmp 0x3842d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x3842b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x3842ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x3842a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x384298
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x371330
leaq 0x60(%rsp), %rdi
callq 0x11b838
leaq 0x40(%rsp), %rdi
callq 0x11b838
leaq 0x98(%rsp), %rdi
callq 0x11b838
leaq 0x97(%rsp), %rdi
callq 0x11b820
jmp 0x3842e1
movb $0x0, 0x1a7(%rsp)
movb 0x1a7(%rsp), %al
andb $0x1, %al
addq $0x1a8, %rsp            # imm = 0x1A8
retq
movq 0x88(%rsp), %rdi
callq 0x11b4e0
nop