// File: /workspace/github_cpp_makefile_star2_O3/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq (%rsi), %r15
testq %r15, %r15
je 0x258b59
movq %rsi, %r14
movq (%r15), %rax
leaq 0x2b4930(%rip), %rcx    # 0x50d478
cmpq %rcx, %rax
je 0x258b5d
leaq 0x2aff0c(%rip), %rcx    # 0x508a60
cmpq %rcx, %rax
je 0x258b85
xorl %eax, %eax
jmp 0x258b73
movq 0x20(%r15), %rbx
movb $0x0, 0x28(%r15)
movq %r14, %rdi
callq 0x1ea63e
movq %rbx, (%r14)
movb $0x1, %al
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, 0x10(%rsp)
movq 0x20(%r15), %r12
movq 0x298(%rdi), %rax
movq %rdi, 0x8(%rsp)
movq 0x2a0(%rdi), %rbp
movq %rax, 0x78(%rsp)
subq %rax, %rbp
je 0x258bfe
sarq $0x3, %rbp
cmpq $0x1, %rbp
adcq $0x0, %rbp
xorl %r13d, %r13d
movq 0x78(%rsp), %rax
movq (%rax,%r13,8), %rax
testq %rax, %rax
je 0x258bf6
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x258bf6
movq 0x18(%r14), %rax
addq $0x8, %r14
cmpq %rax, %r14
je 0x258bf6
movq 0x48(%rax), %rbx
cmpq %r12, 0x28(%rbx)
je 0x258dca
movq %rax, %rdi
callq 0x11e4c0
jmp 0x258bd9
incq %r13
cmpq %rbp, %r13
jne 0x258bba
movq 0x8(%rsp), %rcx
movq 0x538(%rcx), %rbx
cmpq %rbx, 0x540(%rcx)
je 0x258c7a
movl $0x58, %r15d
xorl %r13d, %r13d
movabsq $0x6db6db6db6db6db7, %rbp # imm = 0x6DB6DB6DB6DB6DB7
cmpb $0x1, -0xc(%rbx,%r15)
jne 0x258c55
movq (%rbx,%r15), %rdi
testq %rdi, %rdi
je 0x258c55
movq (%rdi), %rax
callq *0x28(%rax)
movq 0x8(%rsp), %rcx
cmpl $0x11, %eax
jne 0x258c55
movq (%rbx,%r15), %rbx
cmpq %r12, 0x28(%rbx)
je 0x259000
incq %r13
movq 0x538(%rcx), %rbx
movq 0x540(%rcx), %rax
subq %rbx, %rax
sarq $0x4, %rax
imulq %rbp, %rax
addq $0x70, %r15
cmpq %rax, %r13
jb 0x258c26
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x38(%rsp), %r15
movq $0x35, (%r15)
xorl %ebx, %ebx
leaq 0x58(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x11e360
movq %rax, (%r12)
movq (%r15), %rcx
movq %rcx, 0x10(%r12)
movups 0x13f992(%rip), %xmm0   # 0x398648
movups %xmm0, (%rax)
movups 0x13f998(%rip), %xmm0   # 0x398658
movups %xmm0, 0x10(%rax)
movups 0x13f99d(%rip), %xmm0   # 0x398668
movups %xmm0, 0x20(%rax)
movabsq $0x656c626174206c6f, %rdx # imm = 0x656C626174206C6F
movq %rdx, 0x2d(%rax)
movq %rcx, 0x8(%r12)
movb %bl, (%rax,%rcx)
leaq 0x28(%rsp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb %bl, (%r14)
leaq 0x18(%rsp), %rdi
movl $0x39, %esi
callq 0x11e5d0
leaq 0x18(%rsp), %rdi
movl $0x39, %esi
callq 0x11e5d0
leaq 0x18(%rsp), %rdi
movl $0x35, %esi
callq 0x11e5d0
leaq 0x18(%rsp), %rdi
movl $0x35, %esi
callq 0x11e5d0
leaq 0x18(%rsp), %rdi
movl $0x32, %esi
callq 0x11e5d0
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rcx
testq %rcx, %rcx
setne %dl
addq %rax, %rcx
decq %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x258d88
incq %rax
movb -0x1(%rax), %dl
movb (%rcx), %sil
movb %sil, -0x1(%rax)
movb %dl, (%rcx)
decq %rcx
leaq 0x1(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x258d6d
leaq 0x13b7bc(%rip), %rcx    # 0x39454b
leaq 0x18(%rsp), %rdi
movl $0xb, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x11e110
leaq 0x48(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x258e0a
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x258e10
movq 0x10(%rsp), %r14
testq %r15, %r15
je 0x258b6e
movq (%r15), %rax
movq %r15, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x258b6e
movq (%r14), %rdi
testq %rdi, %rdi
je 0x258b66
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
jne 0x258b66
jmp 0x258b6e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movb %cl, 0x10(%rax)
leaq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq %rcx, -0x8(%rbp)
movb %cl, (%rbp)
movq $-0x1, 0x10(%rbp)
leaq 0xc8(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rcx, -0x8(%r13)
movb %cl, (%r13)
leaq 0xe8(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rcx, -0x8(%r15)
movb %cl, (%r15)
leaq 0x108(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rcx, -0x8(%r12)
movb %cl, (%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r12)
movl $0x1, -0x58(%r12)
movq 0x8(%rsp), %rcx
movl 0x70(%rcx), %eax
movl %eax, -0x68(%r15)
leaq 0x78(%rcx), %rsi
callq 0x11e5a0
leaq 0xb8(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x98(%rax), %rax
movq %rax, -0x10(%rdi)
leaq 0x58(%rsp), %rsi
callq 0x11e5a0
leaq 0xd8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x11e5a0
movq 0x8(%rsp), %rdi
addq $0x308, %rdi            # imm = 0x308
leaq 0x80(%rsp), %rsi
callq 0x24d3b4
movq 0xf8(%rsp), %rdi
cmpq %r12, %rdi
je 0x258f16
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0xd8(%rsp), %rdi
cmpq %r15, %rdi
movq 0x10(%rsp), %rbx
je 0x258f38
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0x258f55
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x88(%rsp), %rdi
cmpq %rbp, %rdi
leaq 0x68(%rsp), %r15
je 0x258f77
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x258f93
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x18(%rsp), %rdi
cmpq %r14, %rdi
je 0x258faa
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x258fc1
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x258b59
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x258b59
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x258ff3
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x258b59
movq %rbx, %rdi
callq 0x1ea63e
jmp 0x258b59
movq 0x10(%rsp), %r14
movq (%r14), %r15
jmp 0x258dcf
jmp 0x259011
jmp 0x25903f
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x249100
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x259042
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x11e0c0
jmp 0x259042
movq %rax, %rbx
movq 0x18(%rsp), %rdi
cmpq %r14, %rdi
je 0x259059
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x259075
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x11e0c0
movq %rbx, %rdi
callq 0x11e330
nop