// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::varnode_optimise_sf4(exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [4])
inline expression_node_ptr varnode_optimise_sf4(const details::operator_type& operation, expression_node_ptr (&branch)[4])
         {
            typedef details::variable_node<Type>* variable_ptr;

            const Type& v0 = static_cast<variable_ptr>(branch[0])->ref();
            const Type& v1 = static_cast<variable_ptr>(branch[1])->ref();
            const Type& v2 = static_cast<variable_ptr>(branch[2])->ref();
            const Type& v3 = static_cast<variable_ptr>(branch[3])->ref();

            switch (operation)
            {
               #define case_stmt(op)                                                                 \
               case details::e_sf##op : return node_allocator_->                                     \
                             allocate_rrrr<details::sf4_var_node<Type,details::sf##op##_op<Type> > > \
                                (v0, v1, v2, v3);                                                    \

               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();
            }
         }

// Assembly:
movl $0xfffffbe8, %r9d       # imm = 0xFFFFFBE8
addl (%rsi), %r9d
cmpl $0x33, %r9d
ja 0x295328
movq %rdx, %rax
movq (%rdx), %rcx
movq 0x8(%rdx), %rdx
movq 0x28(%rcx), %rsi
movq 0x28(%rdx), %rdx
movq 0x10(%rax), %rcx
movq 0x28(%rcx), %rcx
movq 0x18(%rax), %rax
movq 0x28(%rax), %r8
leaq 0x3deb8(%rip), %rax     # 0x2d3014
movslq (%rax,%r9,4), %r9
addq %rax, %r9
jmpq *%r9
movq 0x8(%rdi), %rdi
jmp 0x295af6
movq 0x8(%rdi), %rdi
jmp 0x296bc2
movq 0x8(%rdi), %rdi
jmp 0x296968
movq 0x8(%rdi), %rdi
jmp 0x296764
movq 0x8(%rdi), %rdi
jmp 0x296ac0
movq 0x8(%rdi), %rdi
jmp 0x2966b8
movq 0x8(%rdi), %rdi
jmp 0x29670e
movq 0x8(%rdi), %rdi
jmp 0x296408
movq 0x8(%rdi), %rdi
jmp 0x296662
movq 0x8(%rdi), %rdi
jmp 0x296056
movq 0x8(%rdi), %rdi
jmp 0x2969be
movq 0x8(%rdi), %rdi
jmp 0x295faa
movq 0x8(%rdi), %rdi
jmp 0x29660c
movq 0x8(%rdi), %rdi
jmp 0x296b16
movq 0x8(%rdi), %rdi
jmp 0x295ea8
movq 0x8(%rdi), %rdi
jmp 0x296b6c
movq 0x8(%rdi), %rdi
jmp 0x295c4e
movq 0x8(%rdi), %rdi
jmp 0x296866
movq 0x8(%rdi), %rdi
jmp 0x295efe
movq 0x8(%rdi), %rdi
jmp 0x295dfc
movq 0x8(%rdi), %rdi
jmp 0x29635c
movq 0x8(%rdi), %rdi
jmp 0x296306
movq 0x8(%rdi), %rdi
jmp 0x295ba2
movq 0x8(%rdi), %rdi
jmp 0x296000
movq 0x8(%rdi), %rdi
jmp 0x295bf8
movq 0x8(%rdi), %rdi
jmp 0x295d50
movq 0x8(%rdi), %rdi
jmp 0x295b4c
movq 0x8(%rdi), %rdi
jmp 0x296560
movq 0x8(%rdi), %rdi
jmp 0x2960ac
movq 0x8(%rdi), %rdi
jmp 0x2968bc
movq 0x8(%rdi), %rdi
jmp 0x2961ae
movq 0x8(%rdi), %rdi
jmp 0x295ca4
movq 0x8(%rdi), %rdi
jmp 0x296204
movq 0x8(%rdi), %rdi
jmp 0x295f54
movq 0x8(%rdi), %rdi
jmp 0x295cfa
movq 0x8(%rdi), %rdi
jmp 0x296102
movq 0x8(%rdi), %rdi
jmp 0x295e52
movq 0x8(%rdi), %rdi
jmp 0x295da6
movq 0x8(%rdi), %rdi
jmp 0x29650a
movq 0x8(%rdi), %rdi
jmp 0x2965b6
movq 0x8(%rdi), %rdi
jmp 0x296a14
movq 0x8(%rdi), %rdi
jmp 0x29625a
movq 0x8(%rdi), %rdi
jmp 0x296810
movq 0x8(%rdi), %rdi
jmp 0x296158
movq 0x8(%rdi), %rdi
jmp 0x296912
movq 0x8(%rdi), %rdi
jmp 0x2962b0
movq 0x8(%rdi), %rdi
jmp 0x29645e
movq 0x8(%rdi), %rdi
jmp 0x2964b4
movq 0x8(%rdi), %rdi
jmp 0x2967ba
movq 0x8(%rdi), %rdi
jmp 0x2963b2
xorl %eax, %eax
retq
movq 0x8(%rdi), %rdi
jmp 0x296a6a
movq 0x8(%rdi), %rdi
jmp 0x296c18
nop