// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::expression_node<double>* exprtk::parser<double>::expression_generator<double>::varnode_optimise_varargfunc<std::allocator<exprtk::details::expression_node<double>*>, std::vector>(exprtk::details::operator_type const&, std::vector<exprtk::details::expression_node<double>*, std::allocator<exprtk::details::expression_node<double>*>>&)
inline expression_node_ptr varnode_optimise_varargfunc(const details::operator_type& operation,
                                                                Sequence<expression_node_ptr,Allocator>& arg_list)
         {
            switch (operation)
            {
               #define case_stmt(op0, op1)                                                  \
               case op0 : return node_allocator_->                                          \
                             allocate<details::vararg_varnode<Type,op1<Type> > >(arg_list); \

               case_stmt(details::e_sum   , details::vararg_add_op  )
               case_stmt(details::e_prod  , details::vararg_mul_op  )
               case_stmt(details::e_avg   , details::vararg_avg_op  )
               case_stmt(details::e_min   , details::vararg_min_op  )
               case_stmt(details::e_max   , details::vararg_max_op  )
               case_stmt(details::e_mand  , details::vararg_mand_op )
               case_stmt(details::e_mor   , details::vararg_mor_op  )
               case_stmt(details::e_multi , details::vararg_multi_op)
               #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, 0x8(%rsp)
movq 0x20(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x14(%rsp)
subl $0x9, %eax
je 0x39f86e
jmp 0x39f7b3
movl 0x14(%rsp), %eax
subl $0xa, %eax
je 0x39f888
jmp 0x39f7c2
movl 0x14(%rsp), %eax
subl $0xb, %eax
je 0x39f851
jmp 0x39f7d1
movl 0x14(%rsp), %eax
subl $0xc, %eax
je 0x39f817
jmp 0x39f7dc
movl 0x14(%rsp), %eax
subl $0xd, %eax
je 0x39f834
jmp 0x39f7e7
movl 0x14(%rsp), %eax
subl $0x1c, %eax
je 0x39f8a2
jmp 0x39f7f6
movl 0x14(%rsp), %eax
subl $0x1d, %eax
je 0x39f8bc
jmp 0x39f805
movl 0x14(%rsp), %eax
subl $0x5a, %eax
je 0x39f8d6
jmp 0x39f8f0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2390
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2410
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2490
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2510
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2590
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2610
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2690
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x3a2710
movq %rax, 0x30(%rsp)
jmp 0x39f8fa
callq 0x2821f0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
nop