// File: 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 $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rsp)
callq 0x2821f0
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rax
movl (%rax), %eax
addl $0xfffffbe8, %eax       # imm = 0xFFFFFBE8
movl %eax, %ecx
movq %rcx, 0x10(%rsp)
subl $0x33, %eax
ja 0x4fe724
movq 0x10(%rsp), %rax
leaq 0xa2125(%rip), %rcx     # 0x5a0164
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff190
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff200
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff270
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff2e0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff350
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff3c0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff430
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff4a0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff510
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff580
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff5f0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff660
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff6d0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff740
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff7b0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff820
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff890
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff900
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff970
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ff9e0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffa50
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffac0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffb30
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffba0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffc10
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffc80
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffcf0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffd60
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffdd0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffe40
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4ffeb0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4fff20
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x4fff90
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500000
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500070
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5000e0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500150
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5001c0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500230
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5002a0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500310
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500380
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5003f0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500460
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5004d0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500540
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5005b0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500620
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500690
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500700
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x500770
movq %rax, 0x20(%rsp)
jmp 0x4fe730
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x5007e0
movq %rax, 0x20(%rsp)
jmp 0x4fe730
callq 0x2821f0
movq %rax, 0x40(%rsp)
jmp 0x4fe76c
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x8(%rsp), %rax
movsd %xmm0, 0x18(%rsp)
movq 0x8(%rax), %rdi
leaq 0x20(%rsp), %rsi
callq 0x284bd0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x18(%rsp), %rsi
callq 0x285670
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)