// File: /workspace/github_cpp_makefile_star2_O2/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)
leaq 0x10(%rsp), %r12
andq $0x0, (%r12)
leaq 0x28(%rsp), %r13
andq $0x0, (%r13)
andq $0x0, (%rsp)
andq $0x0, 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 0x22cc40
testb %al, %al
je 0x22e6ff
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 0x22cc40
testb %al, %al
je 0x22e6ff
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
movq %r15, %rsi
andq $0xf, %rsi
sete %cl
shll $0x4, %ecx
addl %r15d, %ecx
addl $-0x10, %ecx
movslq %ecx, %rdx
addq %rbx, %rdx
xorl %ecx, %ecx
leaq (%rbx,%rcx), %rdi
cmpq %rdx, %rdi
jae 0x22e569
movb (%rbx,%rcx), %dil
movb (%rax,%rcx), %r8b
movb %r8b, (%rbx,%rcx)
movb %dil, (%rax,%rcx)
movb 0x1(%rbx,%rcx), %dil
movb 0x1(%rax,%rcx), %r8b
movb %r8b, 0x1(%rbx,%rcx)
movb %dil, 0x1(%rax,%rcx)
movb 0x2(%rbx,%rcx), %dil
movb 0x2(%rax,%rcx), %r8b
movb %r8b, 0x2(%rbx,%rcx)
movb %dil, 0x2(%rax,%rcx)
movb 0x3(%rbx,%rcx), %dil
movb 0x3(%rax,%rcx), %r8b
movb %r8b, 0x3(%rbx,%rcx)
movb %dil, 0x3(%rax,%rcx)
movb 0x4(%rbx,%rcx), %dil
movb 0x4(%rax,%rcx), %r8b
movb %r8b, 0x4(%rbx,%rcx)
movb %dil, 0x4(%rax,%rcx)
movb 0x5(%rbx,%rcx), %dil
movb 0x5(%rax,%rcx), %r8b
movb %r8b, 0x5(%rbx,%rcx)
movb %dil, 0x5(%rax,%rcx)
movb 0x6(%rbx,%rcx), %dil
movb 0x6(%rax,%rcx), %r8b
movb %r8b, 0x6(%rbx,%rcx)
movb %dil, 0x6(%rax,%rcx)
movb 0x7(%rbx,%rcx), %dil
movb 0x7(%rax,%rcx), %r8b
movb %r8b, 0x7(%rbx,%rcx)
movb %dil, 0x7(%rax,%rcx)
movb 0x8(%rbx,%rcx), %dil
movb 0x8(%rax,%rcx), %r8b
movb %r8b, 0x8(%rbx,%rcx)
movb %dil, 0x8(%rax,%rcx)
movb 0x9(%rbx,%rcx), %dil
movb 0x9(%rax,%rcx), %r8b
movb %r8b, 0x9(%rbx,%rcx)
movb %dil, 0x9(%rax,%rcx)
movb 0xa(%rbx,%rcx), %dil
movb 0xa(%rax,%rcx), %r8b
movb %r8b, 0xa(%rbx,%rcx)
movb %dil, 0xa(%rax,%rcx)
movb 0xb(%rbx,%rcx), %dil
movb 0xb(%rax,%rcx), %r8b
movb %r8b, 0xb(%rbx,%rcx)
movb %dil, 0xb(%rax,%rcx)
movb 0xc(%rbx,%rcx), %dil
movb 0xc(%rax,%rcx), %r8b
movb %r8b, 0xc(%rbx,%rcx)
movb %dil, 0xc(%rax,%rcx)
movb 0xd(%rbx,%rcx), %dil
movb 0xd(%rax,%rcx), %r8b
movb %r8b, 0xd(%rbx,%rcx)
movb %dil, 0xd(%rax,%rcx)
movb 0xe(%rbx,%rcx), %dil
movb 0xe(%rax,%rcx), %r8b
movb %r8b, 0xe(%rbx,%rcx)
movb %dil, 0xe(%rax,%rcx)
movb 0xf(%rbx,%rcx), %dil
movb 0xf(%rax,%rcx), %r8b
movb %r8b, 0xf(%rbx,%rcx)
movb %dil, 0xf(%rax,%rcx)
addq $0x10, %rcx
jmp 0x22e417
xorl %edx, %edx
leaq 0xa2b5e(%rip), %rdi     # 0x2d10d0
movslq (%rdi,%rsi,4), %rsi
addq %rdi, %rsi
jmpq *%rsi
movb (%rbx,%rcx), %dl
movb (%rax,%rcx), %sil
movb %sil, (%rbx,%rcx)
movb %dl, (%rax,%rcx)
pushq $0x1
popq %rdx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
movl %edx, %esi
leaq (%rbx,%rsi), %rdi
addq %rax, %rsi
movb (%rcx,%rdi), %r8b
movb (%rcx,%rsi), %r9b
movb %r9b, (%rcx,%rdi)
movb %r8b, (%rcx,%rsi)
incl %edx
addq %rdx, %rbx
addq %rdx, %rax
movb (%rcx,%rbx), %dl
movb (%rcx,%rax), %sil
movb %sil, (%rcx,%rbx)
movb %dl, (%rcx,%rax)
movsd 0x9fbb9(%rip), %xmm0    # 0x2ce2c0
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop