// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::conditional_string_node<double>::conditional_string_node(exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*, exprtk::details::expression_node<double>*)
conditional_string_node(expression_ptr condition,
                                 expression_ptr consequent,
                                 expression_ptr alternative)
         : trinary_node<T>(details::e_default, consequent, alternative, condition)
         , initialised_(false)
         , str0_base_ptr_ (0)
         , str1_base_ptr_ (0)
         , str0_range_ptr_(0)
         , str1_range_ptr_(0)
         , condition_  (condition  )
         , consequent_ (consequent )
         , alternative_(alternative)
         {
            range_.n0_c = std::make_pair<bool,std::size_t>(true,0);
            range_.n1_c = std::make_pair<bool,std::size_t>(true,0);

            range_.cache.first  = range_.n0_c.second;
            range_.cache.second = range_.n1_c.second;

            if (is_generally_string_node(trinary_node<T>::branch_[0].first))
            {
               str0_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[0].first);

               if (0 == str0_base_ptr_)
                  return;

               str0_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[0].first);

               if (0 == str0_range_ptr_)
                  return;
            }

            if (is_generally_string_node(trinary_node<T>::branch_[1].first))
            {
               str1_base_ptr_ = dynamic_cast<str_base_ptr>(trinary_node<T>::branch_[1].first);

               if (0 == str1_base_ptr_)
                  return;

               str1_range_ptr_ = dynamic_cast<irange_ptr>(trinary_node<T>::branch_[1].first);

               if (0 == str1_range_ptr_)
                  return;
            }

            initialised_ = str0_base_ptr_  &&
                           str1_base_ptr_  &&
                           str0_range_ptr_ &&
                           str1_range_ptr_ ;

            assert(valid());
         }

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0x100(%rsp)
movq %rsi, 0xf8(%rsp)
movq %rdx, 0xf0(%rsp)
movq %rcx, 0xe8(%rsp)
movq 0x100(%rsp), %rdi
movq %rdi, 0x88(%rsp)
movl $0x0, 0xe4(%rsp)
movq 0xf0(%rsp), %rdx
movq 0xe8(%rsp), %rcx
movq 0xf8(%rsp), %r8
leaq 0xe4(%rsp), %rsi
callq 0x4dd840
movq 0x88(%rsp), %rdi
addq $0x58, %rdi
callq 0x3a7580
movq 0x88(%rsp), %rdi
addq $0x60, %rdi
callq 0x3a75a0
movq 0x88(%rsp), %rdi
leaq 0x2e2540(%rip), %rax    # 0x7c5d58
movq %rax, (%rdi)
leaq 0x2e25ae(%rip), %rax    # 0x7c5dd0
movq %rax, 0x8(%rdi)
leaq 0x2e25cb(%rip), %rax    # 0x7c5df8
movq %rax, 0x58(%rdi)
leaq 0x2e25f8(%rip), %rax    # 0x7c5e30
movq %rax, 0x60(%rdi)
movb $0x0, 0x68(%rdi)
movq $0x0, 0x70(%rdi)
movq $0x0, 0x78(%rdi)
movq $0x0, 0x80(%rdi)
movq $0x0, 0x88(%rdi)
addq $0x90, %rdi
callq 0x43b670
jmp 0x4e3874
movq 0x88(%rsp), %rdi
addq $0xe0, %rdi
movq %rdi, 0x70(%rsp)
callq 0x11b2b0
movq 0x88(%rsp), %rax
movq 0xf8(%rsp), %rcx
movq %rcx, 0x100(%rax)
movq 0xf0(%rsp), %rcx
movq %rcx, 0x108(%rax)
movq 0xe8(%rsp), %rcx
movq %rcx, 0x110(%rax)
movb $0x1, 0xbf(%rsp)
movq $0x0, 0xb0(%rsp)
leaq 0xbf(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x43b7a0
movq %rdx, 0x78(%rsp)
movb %al, 0x87(%rsp)
jmp 0x4e38f9
movq 0x88(%rsp), %rdi
movq 0x78(%rsp), %rax
movb 0x87(%rsp), %cl
movb %cl, 0xc0(%rsp)
movq %rax, 0xc8(%rsp)
addq $0xb0, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x43b7d0
movb $0x1, 0x9f(%rsp)
movq $0x0, 0x90(%rsp)
leaq 0x9f(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x43b7a0
movq %rdx, 0x60(%rsp)
movb %al, 0x6f(%rsp)
jmp 0x4e3964
movq 0x88(%rsp), %rdi
movq 0x60(%rsp), %rax
movb 0x6f(%rsp), %cl
movb %cl, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
addq $0xc0, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x43b7d0
movq 0x88(%rsp), %rax
movq 0xb8(%rax), %rcx
movq %rcx, 0xd0(%rax)
movq 0xc8(%rax), %rcx
movq %rcx, 0xd8(%rax)
movq 0x28(%rax), %rdi
callq 0x3a7600
movb %al, 0x5f(%rsp)
jmp 0x4e39cb
movb 0x5f(%rsp), %al
testb $0x1, %al
jne 0x4e39d8
jmp 0x4e3ae4
movq 0x88(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x50(%rsp)
cmpq $0x0, %rax
je 0x4e3a51
movq 0x50(%rsp), %rdi
leaq 0x2867e5(%rip), %rsi    # 0x76a1e0
leaq 0x2b8a9e(%rip), %rdx    # 0x79c4a0
movq $-0x2, %rcx
callq 0x11b6d0
movq %rax, 0x48(%rsp)
jmp 0x4e3a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0x4e3c48
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
callq 0x11b838
jmp 0x4e3c48
xorl %eax, %eax
movq %rax, 0x48(%rsp)
jmp 0x4e3a5a
movq 0x88(%rsp), %rcx
movq 0x48(%rsp), %rax
movq %rax, 0x70(%rcx)
xorl %eax, %eax
cmpq 0x70(%rcx), %rax
jne 0x4e3a78
jmp 0x4e3c40
movq 0x88(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, %rax
je 0x4e3ab5
movq 0x40(%rsp), %rdi
leaq 0x286745(%rip), %rsi    # 0x76a1e0
leaq 0x2b8a0e(%rip), %rdx    # 0x79c4b0
movq $-0x2, %rcx
callq 0x11b6d0
movq %rax, 0x38(%rsp)
jmp 0x4e3abe
xorl %eax, %eax
movq %rax, 0x38(%rsp)
jmp 0x4e3abe
movq 0x88(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rax, 0x80(%rcx)
xorl %eax, %eax
cmpq 0x80(%rcx), %rax
jne 0x4e3ae2
jmp 0x4e3c40
jmp 0x4e3ae4
movq 0x88(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x3a7600
movb %al, 0x37(%rsp)
jmp 0x4e3afb
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x4e3b08
jmp 0x4e3bd5
movq 0x88(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, %rax
je 0x4e3b45
movq 0x28(%rsp), %rdi
leaq 0x2866b5(%rip), %rsi    # 0x76a1e0
leaq 0x2b896e(%rip), %rdx    # 0x79c4a0
movq $-0x2, %rcx
callq 0x11b6d0
movq %rax, 0x20(%rsp)
jmp 0x4e3b4e
xorl %eax, %eax
movq %rax, 0x20(%rsp)
jmp 0x4e3b4e
movq 0x88(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rax, 0x78(%rcx)
xorl %eax, %eax
cmpq 0x78(%rcx), %rax
jne 0x4e3b6c
jmp 0x4e3c40
movq 0x88(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x4e3ba9
movq 0x18(%rsp), %rdi
leaq 0x286651(%rip), %rsi    # 0x76a1e0
leaq 0x2b891a(%rip), %rdx    # 0x79c4b0
movq $-0x2, %rcx
callq 0x11b6d0
movq %rax, 0x10(%rsp)
jmp 0x4e3bb2
xorl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0x4e3bb2
movq 0x88(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rax, 0x88(%rcx)
xorl %eax, %eax
cmpq 0x88(%rcx), %rax
jne 0x4e3bd3
jmp 0x4e3c40
jmp 0x4e3bd5
movq 0x88(%rsp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x70(%rcx)
movb %al, 0xf(%rsp)
je 0x4e3c2e
movq 0x88(%rsp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x78(%rcx)
movb %al, 0xf(%rsp)
je 0x4e3c2e
movq 0x88(%rsp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x80(%rcx)
movb %al, 0xf(%rsp)
je 0x4e3c2e
movq 0x88(%rsp), %rax
cmpq $0x0, 0x88(%rax)
setne %al
movb %al, 0xf(%rsp)
movq 0x88(%rsp), %rax
movb 0xf(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x68(%rax)
addq $0x108, %rsp            # imm = 0x108
retq
movq 0x88(%rsp), %rdi
addq $0x60, %rdi
callq 0x3a7aa0
movq 0x88(%rsp), %rdi
addq $0x58, %rdi
callq 0x3a7a80
movq 0x88(%rsp), %rdi
callq 0x4ddb10
movq 0xd8(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)
nop