// File: /workspace/github_cpp_makefile_star2_O1/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:
subq $0x18, %rsp
movq $0x0, 0x8(%rsp)
movl $0xfffffbe8, %eax       # imm = 0xFFFFFBE8
addl (%rsi), %eax
cmpl $0x33, %eax
ja 0x34dee1
leaq 0x68cd2(%rip), %rcx     # 0x3b690c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rdi), %rdi
callq 0x34e010
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34fa3c
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f692
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f36e
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f8aa
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f262
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f2e8
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ee32
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f1dc
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e870
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f718
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e764
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f156
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f930
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e5d2
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f9b6
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e228
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f500
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e658
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e4c6
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ed26
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34eca0
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e11c
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e7ea
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e1a2
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e3ba
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e096
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f04a
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e8f6
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f586
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ea88
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e2ae
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34eb0e
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e6de
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e334
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e97c
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e54c
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34e440
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34efc4
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f0d0
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f79e
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34eb94
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f47a
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ea02
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f60c
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ec1a
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34eeb8
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34ef3e
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34f3f4
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34edac
jmp 0x34defc
xorl %eax, %eax
jmp 0x34df7c
movq 0x8(%rdi), %rdi
callq 0x34f824
jmp 0x34defc
movq 0x8(%rdi), %rdi
callq 0x34fac2
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, 0x10(%rsp)
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x34df46
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x34df46
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x34df3c
movq (%rdi), %rax
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x34df46
leaq 0x8(%rsp), %rdi
callq 0x1f1690
movl $0x28, %edi
callq 0x1200f0
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x1c3325(%rip), %rcx    # 0x511288
movq %rcx, (%rax)
leaq 0x1c3363(%rip), %rcx    # 0x5112d0
movq %rcx, 0x8(%rax)
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x20(%rax)
addq $0x18, %rsp
retq
nop