// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::parser<double>::expression_generator<double>::special_function(exprtk::details::operator_type const&, exprtk::details::expression_node<double>* (&) [4])
inline expression_node_ptr special_function(const details::operator_type& operation, expression_node_ptr (&branch)[4])
         {
            if (!all_nodes_valid(branch))
               return error_node();
            else if (is_constant_foldable(branch))
               return const_optimise_sf4(operation,branch);
            else if (all_nodes_variables(branch))
               return varnode_optimise_sf4(operation,branch);
            switch (operation)
            {
               #define case_stmt(op)                                                        \
               case details::e_sf##op : return node_allocator_->                            \
                             allocate<details::sf4_node<Type,details::sf##op##_op<Type> > > \
                                (operation, branch);                                        \

               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:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
callq 0x4de440
testb $0x1, %al
jne 0x4fd86a
callq 0x2821f0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x4de500
testb $0x1, %al
jne 0x4fd87f
jmp 0x4fd89d
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4fdff0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x18(%rsp), %rdi
callq 0x4fe780
testb $0x1, %al
jne 0x4fd8ad
jmp 0x4fd8cb
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4fe7f0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
jmp 0x4fd8cd
jmp 0x4fd8cf
movq 0x20(%rsp), %rax
movl (%rax), %eax
addl $0xfffffbe8, %eax       # imm = 0xFFFFFBE8
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x33, %eax
ja 0x4fdfdc
movq 0x8(%rsp), %rax
leaq 0xa279d(%rip), %rcx     # 0x5a0094
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff190
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff200
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff270
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff2e0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff350
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff3c0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff430
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff4a0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff510
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff580
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff5f0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff660
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff6d0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff740
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff7b0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff820
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff890
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff900
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff970
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ff9e0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffa50
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffac0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffb30
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffba0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffc10
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffc80
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffcf0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffd60
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffdd0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffe40
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4ffeb0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4fff20
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x4fff90
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500000
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500070
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5000e0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500150
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5001c0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500230
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5002a0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500310
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500380
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5003f0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500460
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5004d0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500540
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5005b0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500620
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500690
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500700
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x500770
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x5007e0
movq %rax, 0x30(%rsp)
jmp 0x4fdfe6
callq 0x2821f0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq