// File: f18m[P]boost-intrusive-pool/tests/unit_tests.cpp
// Function: pool_die_before_object()
void pool_die_before_object()
{
    {
        boost::intrusive_ptr<dummy_one> d1;
        boost::intrusive_ptr<dummy_one> d2;
        boost::intrusive_ptr<dummy_one> d3;

        dummy_one::m_count = 0;

        {
            boost_intrusive_pool<dummy_one> pool;

            BOOST_REQUIRE(pool.init());

            d1 = pool.allocate();
            d2 = pool.allocate();
            d3 = pool.allocate();

            BOOST_REQUIRE_EQUAL(dummy_one::m_count, BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE);
        }

        BOOST_REQUIRE_EQUAL(dummy_one::m_count, BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE);
    }

    BOOST_REQUIRE_EQUAL(dummy_one::m_count, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
leaq -0x8(%rbp), %rdi
callq 0x5f9e0
leaq -0x10(%rbp), %rdi
callq 0x5f9e0
leaq -0x18(%rbp), %rdi
callq 0x5f9e0
leaq 0xe95bb(%rip), %rax     # 0x11ff38
movl $0x0, (%rax)
leaq -0x28(%rbp), %rdi
callq 0x5eaf0
jmp 0x3698e
jmp 0x36990
movq 0xe9051(%rip), %rax     # 0x11f9e8
movq %rax, -0x210(%rbp)
leaq 0x8df3c(%rip), %rsi     # 0xc48e1
leaq -0x48(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x369b5
leaq -0x58(%rbp), %rdi
callq 0x4ecc0
jmp 0x369c0
movq -0x210(%rbp), %rdi
leaq -0x48(%rbp), %rsi
movl $0x1b3, %edx            # imm = 0x1B3
leaq -0x58(%rbp), %rcx
callq 0x294a0
jmp 0x369db
xorl %eax, %eax
movl %eax, -0x224(%rbp)
movl %eax, %esi
movq %rsi, -0x230(%rbp)
leaq -0x90(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x5ed40
movq -0x230(%rbp), %rcx
movl -0x224(%rbp), %r8d
movq -0x220(%rbp), %r9
leaq -0x28(%rbp), %rdi
movl $0x40, %edx
movq %rdx, %rsi
callq 0x5eb50
movb %al, -0x211(%rbp)
jmp 0x36a2d
movb -0x211(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x70(%rbp), %rdi
callq 0x56ea0
jmp 0x36a44
callq 0x50f60
movq %rax, -0x238(%rbp)
jmp 0x36a52
leaq 0x8e14d(%rip), %rsi     # 0xc4ba6
leaq -0xc0(%rbp), %rdi
movl $0xb, %edx
callq 0x4cbe0
jmp 0x36a6c
movq -0x238(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x5d730
jmp 0x36a88
leaq 0x8de52(%rip), %rsi     # 0xc48e1
leaq -0xd0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x36aa2
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x70(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
movl $0x1b3, %ecx            # imm = 0x1B3
movl $0x2, %r8d
callq 0x22f50
jmp 0x36ad6
leaq -0xb0(%rbp), %rdi
callq 0x5d770
leaq -0x70(%rbp), %rdi
callq 0x56fc0
leaq -0x90(%rbp), %rdi
callq 0x5ed80
callq 0x5d790
movb %al, -0x239(%rbp)
jmp 0x36b04
movb -0x239(%rbp), %al
testb $0x1, %al
jne 0x36990
jmp 0x36b14
leaq -0xd8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5eeb0
jmp 0x36b26
leaq -0x8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movq %rsi, -0x248(%rbp)
callq 0x5fa00
movq -0x248(%rbp), %rdi
callq 0x5efb0
leaq -0xe0(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5eeb0
jmp 0x36b5b
leaq -0x10(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq %rsi, -0x250(%rbp)
callq 0x5fa00
movq -0x250(%rbp), %rdi
callq 0x5efb0
leaq -0xe8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5eeb0
jmp 0x36b90
leaq -0x18(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x5fa00
leaq -0xe8(%rbp), %rdi
callq 0x5efb0
movq 0xe8e35(%rip), %rax     # 0x11f9e8
movq %rax, -0x258(%rbp)
leaq 0x8dd20(%rip), %rsi     # 0xc48e1
leaq -0xf8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x36bd4
leaq -0x108(%rbp), %rdi
callq 0x4ecc0
jmp 0x36be2
movq -0x258(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
movl $0x1b9, %edx            # imm = 0x1B9
leaq -0x108(%rbp), %rcx
callq 0x294a0
jmp 0x36c03
callq 0x50f60
movq %rax, -0x260(%rbp)
jmp 0x36c11
movq -0x260(%rbp), %rsi
leaq 0x8d32e(%rip), %rdx     # 0xc3f4d
leaq -0x130(%rbp), %rdi
callq 0x5dee0
jmp 0x36c2d
leaq 0x8dcad(%rip), %rsi     # 0xc48e1
leaq -0x140(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x36c47
movl $0x40, -0x144(%rbp)
leaq 0x8df6e(%rip), %rcx     # 0xc4bc6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x144(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8df6c(%rip), %rcx     # 0xc4bdd
movq %rcx, (%rax)
leaq 0xe92bd(%rip), %r9      # 0x11ff38
leaq -0x130(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movl $0x1b9, %edx            # imm = 0x1B9
movl $0x2, %r8d
movl %r8d, %ecx
callq 0x5eff0
jmp 0x36c9e
leaq -0x130(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x261(%rbp)
jmp 0x36cb7
movb -0x261(%rbp), %al
testb $0x1, %al
jne 0x36bac
jmp 0x36cc7
leaq -0x28(%rbp), %rdi
callq 0x5f400
movq 0xe8d11(%rip), %rax     # 0x11f9e8
movq %rax, -0x270(%rbp)
leaq 0x8dbfc(%rip), %rsi     # 0xc48e1
leaq -0x158(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x36cf8
leaq -0x168(%rbp), %rdi
callq 0x4ecc0
jmp 0x36d06
movq -0x270(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0x1bc, %edx            # imm = 0x1BC
leaq -0x168(%rbp), %rcx
callq 0x294a0
jmp 0x36d27
callq 0x50f60
movq %rax, -0x278(%rbp)
jmp 0x36d35
movq -0x278(%rbp), %rsi
leaq 0x8d20a(%rip), %rdx     # 0xc3f4d
leaq -0x190(%rbp), %rdi
callq 0x5dee0
jmp 0x36d51
leaq 0x8db89(%rip), %rsi     # 0xc48e1
leaq -0x1a0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x36d6b
movl $0x40, -0x1a4(%rbp)
leaq 0x8de4a(%rip), %rcx     # 0xc4bc6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x1a4(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8de48(%rip), %rcx     # 0xc4bdd
movq %rcx, (%rax)
leaq 0xe9199(%rip), %r9      # 0x11ff38
leaq -0x190(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
movl $0x1bc, %edx            # imm = 0x1BC
movl $0x2, %r8d
movl %r8d, %ecx
callq 0x5eff0
jmp 0x36dc2
leaq -0x190(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x279(%rbp)
jmp 0x36ddb
movb -0x279(%rbp), %al
testb $0x1, %al
jne 0x36cd0
jmp 0x36deb
leaq -0x18(%rbp), %rdi
callq 0x5efb0
leaq -0x10(%rbp), %rdi
callq 0x5efb0
leaq -0x8(%rbp), %rdi
callq 0x5efb0
movq 0xe8bdb(%rip), %rax     # 0x11f9e8
movq %rax, -0x2a8(%rbp)
leaq 0x8dac6(%rip), %rsi     # 0xc48e1
movq %rsi, -0x290(%rbp)
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
movl $0x14, %edx
movq %rdx, -0x288(%rbp)
callq 0x4cbe0
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x4ecc0
movq -0x2a8(%rbp), %rdi
movq -0x2a0(%rbp), %rsi
movq -0x298(%rbp), %rcx
movl $0x1bf, %edx            # imm = 0x1BF
callq 0x294a0
callq 0x50f60
movq %rax, %rsi
leaq 0x8d0cb(%rip), %rdx     # 0xc3f4d
leaq -0x1f0(%rbp), %rdi
callq 0x5dee0
movq -0x290(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0x200(%rbp), %rdi
callq 0x4cbe0
jmp 0x36eaa
movl $0x0, -0x204(%rbp)
leaq 0x92927(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x204(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8dd09(%rip), %rcx     # 0xc4bdd
movq %rcx, (%rax)
leaq 0xe905a(%rip), %r9      # 0x11ff38
leaq -0x1f0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movl $0x1bf, %edx            # imm = 0x1BF
movl $0x2, %r8d
movl %r8d, %ecx
callq 0x5eff0
jmp 0x36f01
leaq -0x1f0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
testb $0x1, %al
jne 0x36e06
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x36fc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x36fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x36f7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x36f76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5d770
leaq -0x70(%rbp), %rdi
callq 0x56fc0
leaq -0x90(%rbp), %rdi
callq 0x5ed80
jmp 0x36fa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5e010
leaq -0x28(%rbp), %rdi
callq 0x5f400
jmp 0x36fc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x5e010
leaq -0x18(%rbp), %rdi
callq 0x5efb0
leaq -0x10(%rbp), %rdi
callq 0x5efb0
leaq -0x8(%rbp), %rdi
callq 0x5efb0
jmp 0x36ffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x5e010
movq -0x30(%rbp), %rdi
callq 0x10aa0
nopw %cs:(%rax,%rax)