// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::const_optimise_sf4(exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [4])
inline expression_node_ptr const_optimise_sf4(const details::operator_type& operation, expression_node_ptr (&branch)[4])
         {
            expression_node_ptr temp_node = error_node();

            switch (operation)
            {
               #define case_stmt(op)                                                                    \
               case details::e_sf##op : temp_node = node_allocator_->                                   \
                                         allocate<details::sf4_node<Type,details::sf##op##_op<Type> > > \
                                            (operation, branch);                                        \
                                        break;                                                          \

               case_stmt(48) case_stmt(49) case_stmt(50) case_stmt(51)
               case_stmt(52) case_stmt(53) case_stmt(54) case_stmt(55)
               case_stmt(56) case_stmt(57) case_stmt(58) case_stmt(59)
               case_stmt(60) case_stmt(61) case_stmt(62) case_stmt(63)
               case_stmt(64) case_stmt(65) case_stmt(66) case_stmt(67)
               case_stmt(68) case_stmt(69) case_stmt(70) case_stmt(71)
               case_stmt(72) case_stmt(73) case_stmt(74) case_stmt(75)
               case_stmt(76) case_stmt(77) case_stmt(78) case_stmt(79)
               case_stmt(80) case_stmt(81) case_stmt(82) case_stmt(83)
               case_stmt(84) case_stmt(85) case_stmt(86) case_stmt(87)
               case_stmt(88) case_stmt(89) case_stmt(90) case_stmt(91)
               case_stmt(92) case_stmt(93) case_stmt(94) case_stmt(95)
               case_stmt(96) case_stmt(97) case_stmt(98) case_stmt(99)
               #undef case_stmt
               default : return error_node();
            }

            assert(temp_node);

            const T v = temp_node->value();

            details::free_node(*node_allocator_,temp_node);

            return node_allocator_->allocate<literal_node_t>(v);
         }

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
andq $0x0, 0x8(%rsp)
movl $0xfffffbe8, %eax       # imm = 0xFFFFFBE8
addl (%rsi), %eax
cmpl $0x33, %eax
ja 0x295094
movq %rdi, %rbx
leaq 0x3e157(%rip), %rcx     # 0x2d2f44
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rbx), %rdi
callq 0x29533e
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295aaa
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2959a0
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2958bc
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295a38
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295870
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295896
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295740
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29584a
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29559e
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2959c6
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295552
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295824
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295a5e
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2954e0
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295a84
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2953d6
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29592e
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295506
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295494
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2956f4
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2956ce
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29538a
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295578
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2953b0
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295448
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295364
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2957d8
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2955c4
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295954
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295636
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2953fc
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29565c
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29552c
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295422
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2955ea
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2954ba
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29546e
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2957b2
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2957fe
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2959ec
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295682
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295908
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295610
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29597a
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2956a8
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295766
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29578c
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x2958e2
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x29571a
jmp 0x2950ac
xorl %eax, %eax
jmp 0x2950de
movq 0x8(%rbx), %rdi
callq 0x295a12
jmp 0x2950ac
movq 0x8(%rbx), %rdi
callq 0x295ad0
movq %rax, %rdi
movq %rax, 0x8(%rsp)
movq (%rax), %rax
callq *0x18(%rax)
leaq 0x10(%rsp), %r14
movsd %xmm0, (%r14)
movq 0x8(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1ad9c8
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x1adef4
addq $0x18, %rsp
popq %rbx
popq %r14
retq