// File: f18m[P]boost-intrusive-pool/include/boost_intrusive_pool.hpp
// Function: memorypool::boost_intrusive_pool<DummyClass>::impl::enlarge(unsigned long)
bool enlarge(size_t arena_size)
        {
#if BOOST_INTRUSIVE_POOL_DEBUG_THREAD_ACCESS
            assert(m_allowed_thread == 0 || m_allowed_thread == pthread_self());
#endif
            // If the current arena is full, create a new one.
            boost_intrusive_pool_arena<Item>* new_arena = new boost_intrusive_pool_arena<Item>(arena_size, this);
            if (!new_arena)
                return false; // malloc failed... memory finished... very likely this is a game over

            // Link the new arena to the last one.
            if (m_last_arena)
                m_last_arena->set_next_arena(new_arena);
            if (m_first_arena == nullptr)
                m_first_arena = new_arena; // apparently we are initializing the memory pool for the very first time

            // Seek pointer to last arena
            m_last_arena = new_arena;

            // Update the free_list with the storage of the just created arena.
            if (m_first_free_item == nullptr)
                m_first_free_item = m_last_arena->get_first_item();

            m_free_count += arena_size;
            m_total_count += arena_size;

            return true;
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x40(%rbp)
movb $0x1, %al
cmpq $0x0, 0x80(%rcx)
movb %al, -0x36(%rbp)
je 0x59bb
movq -0x40(%rbp), %rax
movq 0x80(%rax), %rax
movq %rax, -0x48(%rbp)
callq 0x20e0
movq %rax, %rcx
movq -0x48(%rbp), %rax
cmpq %rcx, %rax
sete %al
movb %al, -0x36(%rbp)
movb -0x36(%rbp), %al
testb $0x1, %al
jne 0x59c4
jmp 0x59c6
jmp 0x59e5
leaq 0x4313(%rip), %rdi      # 0x9ce0
leaq 0x3d06(%rip), %rsi      # 0x96da
movl $0x288, %edx            # imm = 0x288
leaq 0x433c(%rip), %rcx      # 0x9d1c
callq 0x20a0
movl $0x18, %edi
callq 0x22f0
movq -0x40(%rbp), %rsi
movq %rax, -0x58(%rbp)
movb $0x1, -0x35(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x28(%rbp), %rdi
movl $0x1, %edx
callq 0x43b0
jmp 0x5a13
movq -0x50(%rbp), %rsi
movq -0x58(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0x6510
jmp 0x5a26
movb $0x0, -0x35(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x4300
movq -0x58(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x5a84
movb $0x0, -0x1(%rbp)
jmp 0x5b02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x5a6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x4300
testb $0x1, -0x35(%rbp)
jne 0x5a76
jmp 0x5a7f
movq -0x58(%rbp), %rdi
callq 0x2370
jmp 0x5b0d
movq -0x40(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x5aa0
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x6800
movq -0x40(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x5ab7
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0x48(%rax)
cmpq $0x0, 0x50(%rax)
jne 0x5ae2
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x68a0
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
addq 0x60(%rax), %rcx
movq %rcx, 0x60(%rax)
movq -0x18(%rbp), %rcx
addq 0x70(%rax), %rcx
movq %rcx, 0x70(%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
callq 0x2190
nopw %cs:(%rax,%rax)