// File: /workspace/github_cpp_makefile_star2_O3/f18m[P]boost-intrusive-pool/include/boost_intrusive_pool.hpp
// Function: memorypool::boost_intrusive_pool_arena<DummyClass>::boost_intrusive_pool_arena(unsigned long, boost::intrusive_ptr<memorypool::boost_intrusive_pool_iface>)
boost_intrusive_pool_arena(size_t arena_size, boost::intrusive_ptr<boost_intrusive_pool_iface> p)
    {
        assert(arena_size > 0 && p);
        m_storage_size = arena_size;
        m_storage = new Item[arena_size];
        if (m_storage) {
            for (size_t i = 1; i < arena_size; i++) {
                m_storage[i - 1]._refcounted_item_set_next(&m_storage[i]);
                m_storage[i - 1]._refcounted_item_set_pool(p);
            }
            m_storage[arena_size - 1]._refcounted_item_set_next(nullptr);
            m_storage[arena_size - 1]._refcounted_item_set_pool(p);
        }
        // else: malloc failed!

        m_next_arena = nullptr;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
testq %rsi, %rsi
je 0x4603
movq %rdx, %r14
cmpq $0x0, (%rdx)
je 0x4603
movq %rsi, %r15
movq %rdi, %rbx
movl $0x420, %ecx            # imm = 0x420
movq %rsi, %rax
mulq %rcx
seto %cl
orq $0x8, %rax
movq %rsi, 0x8(%rdi)
movq $-0x1, %rdi
testb %cl, %cl
cmoveq %rax, %rdi
callq 0x2030
movq %r15, (%rax)
movq %rax, -0x40(%rbp)
leaq 0x8(%rax), %r13
movq %r15, -0x48(%rbp)
imulq $-0x420, %r15, %r12     # imm = 0xFBE0
xorl %r15d, %r15d
movq %r13, -0x50(%rbp)
movq %r13, %rdi
xorl %esi, %esi
callq 0x3272
addq $-0x420, %r15           # imm = 0xFBE0
addq $0x420, %r13            # imm = 0x420
cmpq %r15, %r12
jne 0x450c
movq -0x50(%rbp), %rcx
movq %rcx, 0x10(%rbx)
movq -0x48(%rbp), %rax
cmpq $0x1, %rax
je 0x45a3
leaq -0x1(%rax), %r13
movl $0x420, %r15d           # imm = 0x420
leaq -0x38(%rbp), %r12
movq 0x10(%rbx), %rax
leaq (%rax,%r15), %rcx
movq %rcx, -0x410(%rax,%r15)
movq (%r14), %rcx
movq %rcx, -0x38(%rbp)
testq %rcx, %rcx
je 0x4568
incl 0x8(%rcx)
leaq (%rax,%r15), %rdi
addq $-0x408, %rdi           # imm = 0xFBF8
movq %r12, %rsi
callq 0x4466
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x458f
decl 0x8(%rdi)
jne 0x458f
movq (%rdi), %rax
callq *0x8(%rax)
addq $0x420, %r15            # imm = 0x420
decq %r13
jne 0x4549
movq 0x10(%rbx), %rcx
movq -0x48(%rbp), %rax
imulq $0x420, %rax, %rax      # imm = 0x420
leaq (%rcx,%rax), %rdi
movq $0x0, -0x410(%rcx,%rax)
movq (%r14), %rax
movq %rax, -0x30(%rbp)
testq %rax, %rax
je 0x45c9
incl 0x8(%rax)
addq $-0x408, %rdi           # imm = 0xFBF8
leaq -0x30(%rbp), %rsi
callq 0x4466
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x45ed
decl 0x8(%rdi)
jne 0x45ed
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rbx)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2738(%rip), %rdi      # 0x6d42
leaq 0x2092(%rip), %rsi      # 0x66a3
leaq 0x273e(%rip), %rcx      # 0x6d56
movl $0xfb, %edx
callq 0x2080
movq %rax, %rbx
movq -0x30(%rbp), %rdi
jmp 0x4632
movq %rax, %rbx
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4675
decl 0x8(%rdi)
jne 0x4675
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x4675
movq %rax, %rbx
testq %r15, %r15
je 0x466c
negq %r15
movq -0x40(%rbp), %r14
addq $-0x418, %r14           # imm = 0xFBE8
leaq (%r14,%r15), %rdi
callq 0x39da
addq $-0x420, %r15           # imm = 0xFBE0
jne 0x465a
movq -0x40(%rbp), %rdi
callq 0x2150
movq %rbx, %rdi
callq 0x21a0
nop