// File: /workspace/github_cpp_makefile_star2_O3/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 %rbx
subq $0x10, %rsp
movq $0x0, (%rsp)
movl $0xfffffbe8, %eax       # imm = 0xFFFFFBE8
addl (%rsi), %eax
cmpl $0x33, %eax
ja 0x3281af
leaq 0x65a5c(%rip), %rcx     # 0x38d964
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rdi), %rdi
callq 0x3282ce
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329cfa
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329950
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32962c
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329b68
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329520
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3295a6
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3290f0
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32949a
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328b2e
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3299d6
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328a22
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329414
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329bee
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328890
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329c74
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3284e6
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3297be
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328916
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328784
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328fe4
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328f5e
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3283da
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328aa8
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328460
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328678
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328354
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329308
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328bb4
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329844
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328d46
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32856c
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328dcc
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32899c
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3285f2
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328c3a
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32880a
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3286fe
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329282
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32938e
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329a5c
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328e52
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329738
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328cc0
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3298ca
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x328ed8
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329176
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3291fc
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x3296b2
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x32906a
jmp 0x3281ca
xorl %eax, %eax
jmp 0x32823a
movq 0x8(%rdi), %rdi
callq 0x329ae2
jmp 0x3281ca
movq 0x8(%rdi), %rdi
callq 0x329d80
movq %rax, %rbx
movq %rax, (%rsp)
movq (%rax), %rax
movq %rbx, %rdi
callq *0x18(%rax)
movsd %xmm0, 0x8(%rsp)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x28(%rax)
cmpl $0x11, %eax
je 0x328204
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x28(%rax)
cmpl $0x12, %eax
je 0x328204
movq %rsp, %rdi
callq 0x1ea63e
movl $0x28, %edi
callq 0x11e0f0
movb $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
leaq 0x1afa97(%rip), %rcx    # 0x4d7cb8
movq %rcx, (%rax)
leaq 0x1afad5(%rip), %rcx    # 0x4d7d00
movq %rcx, 0x8(%rax)
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x20(%rax)
addq $0x10, %rsp
popq %rbx
retq