// File: /workspace/github_cpp_makefile_star2_O3/demon386[P]git-store/./boost/function/function_base.hpp
// Function: boost::detail::function::functor_manager<boost::program_options::detail::prefix_name_mapper>::manager(boost::detail::function::function_buffer const&, boost::detail::function::function_buffer&, boost::detail::function::functor_manager_operation_type, mpl_::bool_<false>)
static inline void
        manager(const function_buffer& in_buffer, function_buffer& out_buffer, 
                functor_manager_operation_type op, mpl::false_)
        {
          if (op == clone_functor_tag) {
            // Clone the functor
            // GCC 2.95.3 gets the CV qualifiers wrong here, so we
            // can't do the static_cast that we should do.
            // jewillco: Changing this to static_cast because GCC 2.95.3 is
            // obsolete.
            const functor_type* f =
              static_cast<const functor_type*>(in_buffer.obj_ptr);
            functor_type* new_f = new functor_type(*f);
            out_buffer.obj_ptr = new_f;
          } else if (op == move_functor_tag) {
            out_buffer.obj_ptr = in_buffer.obj_ptr;
            in_buffer.obj_ptr = 0;
          } else if (op == destroy_functor_tag) {
            /* Cast from the void pointer to the functor pointer type */
            functor_type* f =
              static_cast<functor_type*>(out_buffer.obj_ptr);
            delete f;
            out_buffer.obj_ptr = 0;
          } else if (op == check_functor_type_tag) {
            const detail::sp_typeinfo& check_type
              = *out_buffer.type.type;
            if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, BOOST_SP_TYPEID(Functor)))
              out_buffer.obj_ptr = in_buffer.obj_ptr;
            else
              out_buffer.obj_ptr = 0;
          } else /* op == get_functor_type_tag */ {
            out_buffer.type.type = &BOOST_SP_TYPEID(Functor);
            out_buffer.type.const_qualified = false;
            out_buffer.type.volatile_qualified = false;
          }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
cmpl $0x3, %edx
ja 0x1c466
movq %rdi, %r14
movl %edx, %eax
leaq 0x17992(%rip), %rcx     # 0x33d60
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%r14), %r15
movl $0x20, %edi
callq 0xb460
movq %rax, %r14
addq $0x10, %rax
movq %rax, (%r14)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xf98c
movq %r14, (%rbx)
jmp 0x1c47d
movq (%rbx), %r14
testq %r14, %r14
je 0x1c41e
movq (%r14), %rdi
leaq 0x10(%r14), %rax
cmpq %rax, %rdi
je 0x1c41e
callq 0xb430
movq %r14, %rdi
callq 0xb430
movq $0x0, (%rbx)
jmp 0x1c47d
movq (%rbx), %rax
movq 0x8(%rax), %rax
xorl %edi, %edi
cmpb $0x2a, (%rax)
sete %dil
addq %rax, %rdi
leaq 0x17d80(%rip), %rsi     # 0x341c9
callq 0xb600
testl %eax, %eax
jne 0x1c478
movq (%r14), %rax
jmp 0x1c47a
movq (%r14), %rax
movq %rax, (%rbx)
movq $0x0, (%r14)
jmp 0x1c47d
leaq 0x2dff3(%rip), %rax     # 0x4a460
movq %rax, (%rbx)
movw $0x0, 0x8(%rbx)
jmp 0x1c47d
xorl %eax, %eax
movq %rax, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %r14, %rdi
callq 0xb430
movq %rbx, %rdi
callq 0xb7f0
nop