// File: f18m[P]boost-intrusive-pool/include/boost_intrusive_pool.hpp
// Function: memorypool::boost_intrusive_pool<DummyClass>::init(unsigned long, unsigned long, unsigned long, memorypool::recycle_method_e, std::function<void (DummyClass&)>)
bool init(size_t init_size = BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE,
        size_t enlarge_size = BOOST_INTRUSIVE_POOL_INCREASE_STEP, size_t max_size = BOOST_INTRUSIVE_POOL_NO_MAX_SIZE,
        recycle_method_e recycle_method = RECYCLE_METHOD_NONE, recycle_function recycle_fn = nullptr)
    {
        assert(m_pool == nullptr); // cannot initialize twice the memory pool
        assert(init_size > 0);
        assert((max_size == BOOST_INTRUSIVE_POOL_NO_MAX_SIZE) || (max_size >= init_size && enlarge_size > 0));

        m_pool = boost::intrusive_ptr<impl>(new impl(enlarge_size, max_size, recycle_method, recycle_fn));

        // do initial malloc
        return m_pool->enlarge(init_size);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %r9, -0x78(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x70(%rbp)
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5740
testb $0x1, %al
jne 0x5462
jmp 0x5464
jmp 0x5483
leaq 0x450c(%rip), %rdi      # 0x9977
leaq 0x4268(%rip), %rsi      # 0x96da
movl $0x176, %edx            # imm = 0x176
leaq 0x450b(%rip), %rcx      # 0x9989
callq 0x20a0
cmpq $0x0, -0x10(%rbp)
jbe 0x548c
jmp 0x54ab
leaq 0x457e(%rip), %rdi      # 0x9a11
leaq 0x4240(%rip), %rsi      # 0x96da
movl $0x177, %edx            # imm = 0x177
leaq 0x44e3(%rip), %rcx      # 0x9989
callq 0x20a0
movb $0x1, %al
cmpq $0x0, -0x20(%rbp)
movb %al, -0x79(%rbp)
je 0x54d7
movq -0x20(%rbp), %rcx
xorl %eax, %eax
cmpq -0x10(%rbp), %rcx
movb %al, -0x7a(%rbp)
jb 0x54d1
cmpq $0x0, -0x18(%rbp)
seta %al
movb %al, -0x7a(%rbp)
movb -0x7a(%rbp), %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x54e0
jmp 0x54e2
jmp 0x5501
leaq 0x4536(%rip), %rdi      # 0x9a1f
leaq 0x41ea(%rip), %rsi      # 0x96da
movl $0x178, %edx            # imm = 0x178
leaq 0x448d(%rip), %rcx      # 0x9989
callq 0x20a0
movl $0x88, %edi
callq 0x22f0
movq -0x78(%rbp), %rsi
movq %rax, -0x98(%rbp)
movb $0x1, -0x65(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x88(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x80(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x5610
jmp 0x5541
movl -0x80(%rbp), %ecx
movq -0x88(%rbp), %rdx
movq -0x90(%rbp), %rsi
movq -0x98(%rbp), %rdi
leaq -0x58(%rbp), %r8
callq 0x5770
jmp 0x5564
movq -0x98(%rbp), %rsi
movb $0x0, -0x65(%rbp)
leaq -0x38(%rbp), %rdi
movl $0x1, %edx
callq 0x5860
jmp 0x557f
movq -0x70(%rbp), %rdi
addq $0x8, %rdi
leaq -0x38(%rbp), %rsi
callq 0x58d0
leaq -0x38(%rbp), %rdi
callq 0x56c0
leaq -0x58(%rbp), %rdi
callq 0x37a0
movq -0x70(%rbp), %rdi
addq $0x8, %rdi
callq 0x5920
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x5970
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x55e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x37a0
testb $0x1, -0x65(%rbp)
jne 0x55f1
jmp 0x55fd
movq -0x98(%rbp), %rdi
callq 0x2370
jmp 0x55ff
movq -0x60(%rbp), %rdi
callq 0x2190
nopl (%rax,%rax)