// File: f18m[P]boost-intrusive-pool/tests/unit_tests.cpp
// Function: test_api()
void test_api()
{
    {
        uint32_t recycled = 0;
        boost_intrusive_pool<dummy_one> pool;

        BOOST_REQUIRE(pool.init());

        auto recycle_fn = [&recycled](dummy_one& object) {
            BOOST_REQUIRE(object.m_count > 0);
            object.m_count--;
            ++recycled;
        };

        pool.set_recycle_method(RECYCLE_METHOD_CUSTOM_FUNCTION, recycle_fn);

        BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE);

        {
            auto d1 = pool.allocate();
            BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 1);
        }

        BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE);

        auto d2 = pool.allocate();

        BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 1);

        auto d3 = pool.allocate();

        BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 2);

        // the dummy_one::m_count counter is off by 1 because above we called an allocate() and
        // then destroyed the "d1" pointer: that resulted in the item being recycled and dummy_one::~dummy_one
        // being called
        BOOST_REQUIRE_EQUAL(dummy_one::m_count, BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 1);

        {
            auto d4 = pool.allocate();
            BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 3);
        }

        BOOST_REQUIRE_EQUAL(pool.unused_count(), BOOST_INTRUSIVE_POOL_DEFAULT_POOL_SIZE - 2);

        // FIXME FIXME THIS DOES NOT WORK CURRENTLY SINCE ALL SMART POINTER DTORS
        // ARE STILL ALIVE AT THIS POINT
        pool.clear();
        BOOST_REQUIRE_EQUAL(pool.unused_count(), 0U);
    }

    // BOOST_REQUIRE(dummy_one::m_count, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x620, %rsp            # imm = 0x620
movl $0x0, -0x4(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x5eaf0
movq 0xeaa86(%rip), %rax     # 0x11f9e8
movq %rax, -0x4b0(%rbp)
leaq 0x8f971(%rip), %rsi     # 0xc48e1
leaq -0x28(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x34f80
leaq -0x48(%rbp), %rdi
callq 0x4ecc0
jmp 0x34f8b
movq -0x4b0(%rbp), %rdi
leaq -0x28(%rbp), %rsi
movl $0x150, %edx            # imm = 0x150
leaq -0x48(%rbp), %rcx
callq 0x294a0
jmp 0x34fa6
xorl %eax, %eax
movl %eax, -0x4c4(%rbp)
movl %eax, %esi
movq %rsi, -0x4d0(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x5ed40
movq -0x4d0(%rbp), %rcx
movl -0x4c4(%rbp), %r8d
movq -0x4c0(%rbp), %r9
leaq -0x18(%rbp), %rdi
movl $0x40, %edx
movq %rdx, %rsi
callq 0x5eb50
movb %al, -0x4b1(%rbp)
jmp 0x34ff5
movb -0x4b1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x60(%rbp), %rdi
callq 0x56ea0
jmp 0x3500c
callq 0x50f60
movq %rax, -0x4d8(%rbp)
jmp 0x3501a
leaq 0x8fb85(%rip), %rsi     # 0xc4ba6
leaq -0xb0(%rbp), %rdi
movl $0xb, %edx
callq 0x4cbe0
jmp 0x35034
movq -0x4d8(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x5d730
jmp 0x35050
leaq 0x8f88a(%rip), %rsi     # 0xc48e1
leaq -0xc0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3506a
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
movl $0x150, %ecx            # imm = 0x150
movl $0x2, %r8d
callq 0x22f50
jmp 0x3509e
leaq -0xa0(%rbp), %rdi
callq 0x5d770
leaq -0x60(%rbp), %rdi
callq 0x56fc0
leaq -0x80(%rbp), %rdi
callq 0x5ed80
callq 0x5d790
movb %al, -0x4d9(%rbp)
jmp 0x350c9
movb -0x4d9(%rbp), %al
testb $0x1, %al
jne 0x34f5b
jmp 0x350d9
leaq -0x4(%rbp), %rax
movq %rax, -0xc8(%rbp)
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
leaq -0xc8(%rbp), %rsi
callq 0x35eb0
movq -0x4e8(%rbp), %rdx
leaq -0x18(%rbp), %rdi
movl $0x2, %esi
callq 0x5eda0
jmp 0x35115
leaq -0xe8(%rbp), %rdi
callq 0x5ed80
movq 0xea8c0(%rip), %rax     # 0x11f9e8
movq %rax, -0x4f0(%rbp)
leaq 0x8f7ab(%rip), %rsi     # 0xc48e1
leaq -0xf8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35149
leaq -0x108(%rbp), %rdi
callq 0x4ecc0
jmp 0x35157
movq -0x4f0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
movl $0x15a, %edx            # imm = 0x15A
leaq -0x108(%rbp), %rcx
callq 0x294a0
jmp 0x35178
callq 0x50f60
movq %rax, -0x4f8(%rbp)
jmp 0x35186
movq -0x4f8(%rbp), %rsi
leaq 0x8edb9(%rip), %rdx     # 0xc3f4d
leaq -0x130(%rbp), %rdi
callq 0x5dee0
jmp 0x351a2
leaq 0x8f738(%rip), %rsi     # 0xc48e1
leaq -0x140(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x351bc
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x500(%rbp)
jmp 0x351ce
movq -0x500(%rbp), %rax
movq %rax, -0x148(%rbp)
movl $0x40, -0x14c(%rbp)
leaq 0x8f9d9(%rip), %rcx     # 0xc4bc6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x14c(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f9ac(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x130(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movl $0x15a, %edx            # imm = 0x15A
movl $0x2, %r8d
leaq -0x148(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x35233
leaq -0x130(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x501(%rbp)
jmp 0x3524c
movb -0x501(%rbp), %al
testb $0x1, %al
jne 0x35121
jmp 0x3525c
leaq -0x158(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x5eeb0
jmp 0x3526e
jmp 0x35270
movq 0xea771(%rip), %rax     # 0x11f9e8
movq %rax, -0x510(%rbp)
leaq 0x8f65c(%rip), %rsi     # 0xc48e1
leaq -0x168(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35298
leaq -0x178(%rbp), %rdi
callq 0x4ecc0
jmp 0x352a6
movq -0x510(%rbp), %rdi
leaq -0x168(%rbp), %rsi
movl $0x15e, %edx            # imm = 0x15E
leaq -0x178(%rbp), %rcx
callq 0x294a0
jmp 0x352c7
callq 0x50f60
movq %rax, -0x518(%rbp)
jmp 0x352d5
movq -0x518(%rbp), %rsi
leaq 0x8ec6a(%rip), %rdx     # 0xc3f4d
leaq -0x1a0(%rbp), %rdi
callq 0x5dee0
jmp 0x352f1
leaq 0x8f5e9(%rip), %rsi     # 0xc48e1
leaq -0x1b0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3530b
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x520(%rbp)
jmp 0x3531d
movq -0x520(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movl $0x3f, -0x1bc(%rbp)
leaq 0x8f88f(%rip), %rcx     # 0xc4bcb
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x1bc(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f85d(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x1a0(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
movl $0x15e, %edx            # imm = 0x15E
movl $0x2, %r8d
leaq -0x1b8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x35382
leaq -0x1a0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x521(%rbp)
jmp 0x3539b
movb -0x521(%rbp), %al
testb $0x1, %al
jne 0x35270
jmp 0x353ab
leaq -0x158(%rbp), %rdi
callq 0x5efb0
movq 0xea62a(%rip), %rax     # 0x11f9e8
movq %rax, -0x530(%rbp)
leaq 0x8f515(%rip), %rsi     # 0xc48e1
leaq -0x1d0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x353df
leaq -0x1e0(%rbp), %rdi
callq 0x4ecc0
jmp 0x353ed
movq -0x530(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
movl $0x161, %edx            # imm = 0x161
leaq -0x1e0(%rbp), %rcx
callq 0x294a0
jmp 0x3540e
callq 0x50f60
movq %rax, -0x538(%rbp)
jmp 0x3541c
movq -0x538(%rbp), %rsi
leaq 0x8eb23(%rip), %rdx     # 0xc3f4d
leaq -0x208(%rbp), %rdi
callq 0x5dee0
jmp 0x35438
leaq 0x8f4a2(%rip), %rsi     # 0xc48e1
leaq -0x218(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35452
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x540(%rbp)
jmp 0x35464
movq -0x540(%rbp), %rax
movq %rax, -0x220(%rbp)
movl $0x40, -0x224(%rbp)
leaq 0x8f743(%rip), %rcx     # 0xc4bc6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x224(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f716(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x208(%rbp), %rdi
leaq -0x218(%rbp), %rsi
movl $0x161, %edx            # imm = 0x161
movl $0x2, %r8d
leaq -0x220(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x354c9
leaq -0x208(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x541(%rbp)
jmp 0x354e2
movb -0x541(%rbp), %al
testb $0x1, %al
jne 0x353b7
jmp 0x354f2
leaq -0x230(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x5eeb0
jmp 0x35504
jmp 0x35506
movq 0xea4db(%rip), %rax     # 0x11f9e8
movq %rax, -0x550(%rbp)
leaq 0x8f3c6(%rip), %rsi     # 0xc48e1
leaq -0x240(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3552e
leaq -0x250(%rbp), %rdi
callq 0x4ecc0
jmp 0x3553c
movq -0x550(%rbp), %rdi
leaq -0x240(%rbp), %rsi
movl $0x165, %edx            # imm = 0x165
leaq -0x250(%rbp), %rcx
callq 0x294a0
jmp 0x3555d
callq 0x50f60
movq %rax, -0x558(%rbp)
jmp 0x3556b
movq -0x558(%rbp), %rsi
leaq 0x8e9d4(%rip), %rdx     # 0xc3f4d
leaq -0x278(%rbp), %rdi
callq 0x5dee0
jmp 0x35587
leaq 0x8f353(%rip), %rsi     # 0xc48e1
leaq -0x288(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x355a1
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x560(%rbp)
jmp 0x355b3
movq -0x560(%rbp), %rax
movq %rax, -0x290(%rbp)
movl $0x3f, -0x294(%rbp)
leaq 0x8f5f9(%rip), %rcx     # 0xc4bcb
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x294(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f5c7(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x278(%rbp), %rdi
leaq -0x288(%rbp), %rsi
movl $0x165, %edx            # imm = 0x165
movl $0x2, %r8d
leaq -0x290(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x35618
leaq -0x278(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x561(%rbp)
jmp 0x35631
movb -0x561(%rbp), %al
testb $0x1, %al
jne 0x35506
jmp 0x35641
leaq -0x2a0(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x5eeb0
jmp 0x35653
jmp 0x35655
movq 0xea38c(%rip), %rax     # 0x11f9e8
movq %rax, -0x570(%rbp)
leaq 0x8f277(%rip), %rsi     # 0xc48e1
leaq -0x2b0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3567d
leaq -0x2c0(%rbp), %rdi
callq 0x4ecc0
jmp 0x3568b
movq -0x570(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
movl $0x169, %edx            # imm = 0x169
leaq -0x2c0(%rbp), %rcx
callq 0x294a0
jmp 0x356ac
callq 0x50f60
movq %rax, -0x578(%rbp)
jmp 0x356ba
movq -0x578(%rbp), %rsi
leaq 0x8e885(%rip), %rdx     # 0xc3f4d
leaq -0x2e8(%rbp), %rdi
callq 0x5dee0
jmp 0x356d6
leaq 0x8f204(%rip), %rsi     # 0xc48e1
leaq -0x2f8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x356f0
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x580(%rbp)
jmp 0x35702
movq -0x580(%rbp), %rax
movq %rax, -0x300(%rbp)
movl $0x3e, -0x304(%rbp)
leaq 0x8f4b3(%rip), %rcx     # 0xc4bd4
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x304(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f478(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x2e8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
movl $0x169, %edx            # imm = 0x169
movl $0x2, %r8d
leaq -0x300(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x35767
leaq -0x2e8(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x581(%rbp)
jmp 0x35780
movb -0x581(%rbp), %al
testb $0x1, %al
jne 0x35655
jmp 0x35790
jmp 0x35792
movq 0xea24f(%rip), %rax     # 0x11f9e8
movq %rax, -0x590(%rbp)
leaq 0x8f13a(%rip), %rsi     # 0xc48e1
leaq -0x318(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x357ba
leaq -0x328(%rbp), %rdi
callq 0x4ecc0
jmp 0x357c8
movq -0x590(%rbp), %rdi
leaq -0x318(%rbp), %rsi
movl $0x16e, %edx            # imm = 0x16E
leaq -0x328(%rbp), %rcx
callq 0x294a0
jmp 0x357e9
callq 0x50f60
movq %rax, -0x598(%rbp)
jmp 0x357f7
movq -0x598(%rbp), %rsi
leaq 0x8e748(%rip), %rdx     # 0xc3f4d
leaq -0x350(%rbp), %rdi
callq 0x5dee0
jmp 0x35813
leaq 0x8f0c7(%rip), %rsi     # 0xc48e1
leaq -0x360(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3582d
movl $0x3f, -0x364(%rbp)
leaq 0x8f38d(%rip), %rcx     # 0xc4bcb
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x364(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f386(%rip), %rcx     # 0xc4bdd
movq %rcx, (%rax)
leaq 0xea6d7(%rip), %r9      # 0x11ff38
leaq -0x350(%rbp), %rdi
leaq -0x360(%rbp), %rsi
movl $0x16e, %edx            # imm = 0x16E
movl $0x2, %r8d
movl %r8d, %ecx
callq 0x5eff0
jmp 0x35884
leaq -0x350(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x599(%rbp)
jmp 0x3589d
movb -0x599(%rbp), %al
testb $0x1, %al
jne 0x35792
jmp 0x358ad
leaq -0x370(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x5eeb0
jmp 0x358bf
jmp 0x358c1
movq 0xea120(%rip), %rax     # 0x11f9e8
movq %rax, -0x5a8(%rbp)
leaq 0x8f00b(%rip), %rsi     # 0xc48e1
leaq -0x380(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x358e9
leaq -0x390(%rbp), %rdi
callq 0x4ecc0
jmp 0x358f7
movq -0x5a8(%rbp), %rdi
leaq -0x380(%rbp), %rsi
movl $0x172, %edx            # imm = 0x172
leaq -0x390(%rbp), %rcx
callq 0x294a0
jmp 0x35918
callq 0x50f60
movq %rax, -0x5b0(%rbp)
jmp 0x35926
movq -0x5b0(%rbp), %rsi
leaq 0x8e619(%rip), %rdx     # 0xc3f4d
leaq -0x3b8(%rbp), %rdi
callq 0x5dee0
jmp 0x35942
leaq 0x8ef98(%rip), %rsi     # 0xc48e1
leaq -0x3c8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3595c
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x5b8(%rbp)
jmp 0x3596e
movq -0x5b8(%rbp), %rax
movq %rax, -0x3d0(%rbp)
movl $0x3d, -0x3d4(%rbp)
leaq 0x8f263(%rip), %rcx     # 0xc4bf0
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x3d4(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f20c(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x3b8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
movl $0x172, %edx            # imm = 0x172
movl $0x2, %r8d
leaq -0x3d0(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x359d3
leaq -0x3b8(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x5b9(%rbp)
jmp 0x359ec
movb -0x5b9(%rbp), %al
testb $0x1, %al
jne 0x358c1
jmp 0x359fc
leaq -0x370(%rbp), %rdi
callq 0x5efb0
movq 0xe9fd9(%rip), %rax     # 0x11f9e8
movq %rax, -0x5c8(%rbp)
leaq 0x8eec4(%rip), %rsi     # 0xc48e1
leaq -0x3e8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35a30
leaq -0x3f8(%rbp), %rdi
callq 0x4ecc0
jmp 0x35a3e
movq -0x5c8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
movl $0x175, %edx            # imm = 0x175
leaq -0x3f8(%rbp), %rcx
callq 0x294a0
jmp 0x35a5f
callq 0x50f60
movq %rax, -0x5d0(%rbp)
jmp 0x35a6d
movq -0x5d0(%rbp), %rsi
leaq 0x8e4d2(%rip), %rdx     # 0xc3f4d
leaq -0x420(%rbp), %rdi
callq 0x5dee0
jmp 0x35a89
leaq 0x8ee51(%rip), %rsi     # 0xc48e1
leaq -0x430(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35aa3
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x5d8(%rbp)
jmp 0x35ab5
movq -0x5d8(%rbp), %rax
movq %rax, -0x438(%rbp)
movl $0x3e, -0x43c(%rbp)
leaq 0x8f100(%rip), %rcx     # 0xc4bd4
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x43c(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8f0c5(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x420(%rbp), %rdi
leaq -0x430(%rbp), %rsi
movl $0x175, %edx            # imm = 0x175
movl $0x2, %r8d
leaq -0x438(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x35b1a
leaq -0x420(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x5d9(%rbp)
jmp 0x35b33
movb -0x5d9(%rbp), %al
testb $0x1, %al
jne 0x35a08
jmp 0x35b43
leaq -0x18(%rbp), %rdi
callq 0x5f210
jmp 0x35b4e
jmp 0x35b50
movq 0xe9e91(%rip), %rax     # 0x11f9e8
movq %rax, -0x5e8(%rbp)
leaq 0x8ed7c(%rip), %rsi     # 0xc48e1
leaq -0x450(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35b78
leaq -0x460(%rbp), %rdi
callq 0x4ecc0
jmp 0x35b86
movq -0x5e8(%rbp), %rdi
leaq -0x450(%rbp), %rsi
movl $0x17a, %edx            # imm = 0x17A
leaq -0x460(%rbp), %rcx
callq 0x294a0
jmp 0x35ba7
callq 0x50f60
movq %rax, -0x5f0(%rbp)
jmp 0x35bb5
movq -0x5f0(%rbp), %rsi
leaq 0x8e38a(%rip), %rdx     # 0xc3f4d
leaq -0x488(%rbp), %rdi
callq 0x5dee0
jmp 0x35bd1
leaq 0x8ed09(%rip), %rsi     # 0xc48e1
leaq -0x498(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x35beb
leaq -0x18(%rbp), %rdi
callq 0x5ee60
movq %rax, -0x5f8(%rbp)
jmp 0x35bfd
movq -0x5f8(%rbp), %rax
movq %rax, -0x4a0(%rbp)
movl $0x0, -0x4a4(%rbp)
leaq 0x8efdd(%rip), %rcx     # 0xc4bf9
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x4a4(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8ef7d(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x488(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl $0x17a, %edx            # imm = 0x17A
movl $0x2, %r8d
leaq -0x4a0(%rbp), %r9
movl %r8d, %ecx
callq 0x5e7b0
jmp 0x35c62
leaq -0x488(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x5f9(%rbp)
jmp 0x35c7b
movb -0x5f9(%rbp), %al
testb $0x1, %al
jne 0x35b50
jmp 0x35c8b
leaq -0x2a0(%rbp), %rdi
callq 0x5efb0
leaq -0x230(%rbp), %rdi
callq 0x5efb0
leaq -0x18(%rbp), %rdi
callq 0x5f400
addq $0x620, %rsp            # imm = 0x620
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35cfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5d770
leaq -0x60(%rbp), %rdi
callq 0x56fc0
leaq -0x80(%rbp), %rdi
callq 0x5ed80
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x5ed80
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5e010
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35d71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x5e010
leaq -0x158(%rbp), %rdi
callq 0x5efb0
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x5e010
jmp 0x35e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x5e010
jmp 0x35e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x5e010
jmp 0x35e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x5e010
jmp 0x35e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x35e3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x5e010
leaq -0x370(%rbp), %rdi
callq 0x5efb0
jmp 0x35e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x5e010
jmp 0x35e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x5e010
leaq -0x2a0(%rbp), %rdi
callq 0x5efb0
leaq -0x230(%rbp), %rdi
callq 0x5efb0
leaq -0x18(%rbp), %rdi
callq 0x5f400
movq -0x30(%rbp), %rdi
callq 0x10aa0
nopw %cs:(%rax,%rax)