// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::swap_genstrings_node<double>::value() const
inline T value() const exprtk_override
         {
            branch(0)->value();
            branch(1)->value();

            std::size_t str0_r0 = 0;
            std::size_t str0_r1 = 0;

            std::size_t str1_r0 = 0;
            std::size_t str1_r1 = 0;

            const range_t& range0 = (*str0_range_ptr_);
            const range_t& range1 = (*str1_range_ptr_);

            if (
                  range0(str0_r0, str0_r1, str0_base_ptr_->size()) &&
                  range1(str1_r0, str1_r1, str1_base_ptr_->size())
               )
            {
               const std::size_t size0    = range0.cache_size();
               const std::size_t size1    = range1.cache_size();
               const std::size_t max_size = std::min(size0,size1);

               char_ptr s0 = const_cast<char_ptr>(str0_base_ptr_->base() + str0_r0);
               char_ptr s1 = const_cast<char_ptr>(str1_base_ptr_->base() + str1_r0);

               loop_unroll::details lud(max_size);
               char_cptr upper_bound = s0 + lud.upper_bound;

               while (s0 < upper_bound)
               {
                  #define exprtk_loop(N)   \
                  std::swap(s0[N], s1[N]); \

                  exprtk_loop( 0) exprtk_loop( 1)
                  exprtk_loop( 2) exprtk_loop( 3)
                  #ifndef exprtk_disable_superscalar_unroll
                  exprtk_loop( 4) exprtk_loop( 5)
                  exprtk_loop( 6) exprtk_loop( 7)
                  exprtk_loop( 8) exprtk_loop( 9)
                  exprtk_loop(10) exprtk_loop(11)
                  exprtk_loop(12) exprtk_loop(13)
                  exprtk_loop(14) exprtk_loop(15)
                  #endif

                  s0 += lud.batch_size;
                  s1 += lud.batch_size;
               }

               int i = 0;

               switch (lud.remainder)
               {
                  #define case_stmt(N)                       \
                  case N : { std::swap(s0[i], s1[i]); ++i; } \
                  exprtk_fallthrough                         \

                  #ifndef exprtk_disable_superscalar_unroll
                  case_stmt(15) case_stmt(14)
                  case_stmt(13) case_stmt(12)
                  case_stmt(11) case_stmt(10)
                  case_stmt( 9) case_stmt( 8)
                  case_stmt( 7) case_stmt( 6)
                  case_stmt( 5) case_stmt( 4)
                  #endif
                  case_stmt( 3) case_stmt( 2)
                  case_stmt( 1)
                  default: break;
               }

               #undef exprtk_loop
               #undef case_stmt
            }

            return std::numeric_limits<T>::quiet_NaN();
         }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rdi, %r14
movq 0x28(%rdi), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x38(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
xorl %eax, %eax
leaq 0x10(%rsp), %r12
movq %rax, (%r12)
leaq 0x28(%rsp), %r13
movq %rax, (%r13)
movq %rax, (%rsp)
movq %rax, 0x8(%rsp)
movq 0x58(%r14), %r15
movq 0x60(%r14), %rbx
movq 0x48(%r14), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
leaq 0x20(%rsp), %rcx
movq %rax, (%rcx)
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x2a4b56
testb %al, %al
je 0x2a6717
movq 0x50(%r14), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
leaq 0x18(%rsp), %rcx
movq %rax, (%rcx)
movq %rsp, %rsi
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x2a4b56
testb %al, %al
je 0x2a6717
movq 0x48(%r15), %rax
subq 0x40(%r15), %rax
movq 0x48(%rbx), %r15
subq 0x40(%rbx), %r15
cmpq %rax, %r15
cmovaeq %rax, %r15
movq 0x48(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %rbx
addq 0x10(%rsp), %rbx
movq 0x50(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
addq (%rsp), %rax
xorl %ecx, %ecx
movl %r15d, %edx
andl $0xf, %edx
sete %cl
shll $0x4, %ecx
addl %r15d, %ecx
addl $-0x10, %ecx
movslq %ecx, %rcx
testq %rcx, %rcx
jle 0x2a65e4
addq %rbx, %rcx
movb (%rbx), %sil
movb (%rax), %dil
movb %dil, (%rbx)
movb %sil, (%rax)
movb 0x1(%rbx), %sil
movb 0x1(%rax), %dil
movb %dil, 0x1(%rbx)
movb %sil, 0x1(%rax)
movb 0x2(%rbx), %sil
movb 0x2(%rax), %dil
movb %dil, 0x2(%rbx)
movb %sil, 0x2(%rax)
movb 0x3(%rbx), %sil
movb 0x3(%rax), %dil
movb %dil, 0x3(%rbx)
movb %sil, 0x3(%rax)
movb 0x4(%rbx), %sil
movb 0x4(%rax), %dil
movb %dil, 0x4(%rbx)
movb %sil, 0x4(%rax)
movb 0x5(%rbx), %sil
movb 0x5(%rax), %dil
movb %dil, 0x5(%rbx)
movb %sil, 0x5(%rax)
movb 0x6(%rbx), %sil
movb 0x6(%rax), %dil
movb %dil, 0x6(%rbx)
movb %sil, 0x6(%rax)
movb 0x7(%rbx), %sil
movb 0x7(%rax), %dil
movb %dil, 0x7(%rbx)
movb %sil, 0x7(%rax)
movb 0x8(%rbx), %sil
movb 0x8(%rax), %dil
movb %dil, 0x8(%rbx)
movb %sil, 0x8(%rax)
movb 0x9(%rbx), %sil
movb 0x9(%rax), %dil
movb %dil, 0x9(%rbx)
movb %sil, 0x9(%rax)
movb 0xa(%rbx), %sil
movb 0xa(%rax), %dil
movb %dil, 0xa(%rbx)
movb %sil, 0xa(%rax)
movb 0xb(%rbx), %sil
movb 0xb(%rax), %dil
movb %dil, 0xb(%rbx)
movb %sil, 0xb(%rax)
movb 0xc(%rbx), %sil
movb 0xc(%rax), %dil
movb %dil, 0xc(%rbx)
movb %sil, 0xc(%rax)
movb 0xd(%rbx), %sil
movb 0xd(%rax), %dil
movb %dil, 0xd(%rbx)
movb %sil, 0xd(%rax)
movb 0xe(%rbx), %sil
movb 0xe(%rax), %dil
movb %dil, 0xe(%rbx)
movb %sil, 0xe(%rax)
movb 0xf(%rbx), %sil
movb 0xf(%rax), %dil
movb %dil, 0xf(%rbx)
movb %sil, 0xf(%rax)
addq $0x10, %rbx
addq $0x10, %rax
cmpq %rcx, %rbx
jb 0x2a64d7
xorl %ecx, %ecx
movl %edx, %edx
leaq 0xe55e1(%rip), %rsi     # 0x38bbd0
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movb (%rbx), %cl
movb (%rax), %dl
movb %dl, (%rbx)
movb %cl, (%rax)
movl $0x1, %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movl %ecx, %edx
movb (%rbx,%rdx), %sil
movb (%rax,%rdx), %dil
movb %dil, (%rbx,%rdx)
movb %sil, (%rax,%rdx)
incl %ecx
movb (%rbx,%rcx), %dl
movb (%rax,%rcx), %sil
movb %sil, (%rbx,%rcx)
movb %dl, (%rax,%rcx)
movsd 0xe2ae9(%rip), %xmm0    # 0x389208
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop