// File: f18m[P]boost-intrusive-pool/tests/unit_tests.cpp
// Function: overwrite_pool_items_with_other_pool_items()
void overwrite_pool_items_with_other_pool_items()
{
    boost_intrusive_pool<DummyInt> pool(64, 16, 0, memorypool::RECYCLE_METHOD_DESTROY_FUNCTION);

    pool.check();

    {
        std::map<int, HDummyInt> helper_container;
        for (unsigned int j = 0; j < 1000; j++) {
            HDummyInt myInt = pool.allocate_through_init(j);
            assert(myInt);

            pool.check();

            // put the item inside a MAP container
            helper_container[j] = myInt;
        }

        pool.check();

        BOOST_REQUIRE(!pool.is_memory_exhausted());
        BOOST_REQUIRE_EQUAL(pool.inuse_count(), 1000);

        // now allocate an other block of items and check refcounting happens correctly so that
        // if we overwrite a filled map entry, the previous pointer is erased correctly
        for (unsigned int j = 0; j < 500; j++) {
            HDummyInt myInt = pool.allocate_through_init(j);
            assert(myInt);

            pool.check();

            // put the item inside a MAP container
            helper_container[j] = myInt;
        }

        pool.check();

        BOOST_REQUIRE(!pool.is_memory_exhausted());
        BOOST_REQUIRE_EQUAL(
            pool.inuse_count(), 1000); // should be still 1000: we allocated 500 more but released other 500 entries!

        helper_container.clear(); // all pointers it contains will be now released
    }

    BOOST_REQUIRE_EQUAL(pool.inuse_count(), 0);

    // repeat twice for test:
    pool.clear();
    pool.clear();

    pool.check();

    BOOST_REQUIRE_EQUAL(pool.inuse_count(), 0);
    BOOST_REQUIRE_EQUAL(pool.capacity(), 0);
    BOOST_REQUIRE(pool.empty());
    BOOST_REQUIRE_EQUAL(pool.unused_count(), 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5d0, %rsp            # imm = 0x5D0
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x480(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x5d590
movq -0x480(%rbp), %rcx
movq -0x478(%rbp), %r9
leaq -0x10(%rbp), %rdi
movl $0x40, %esi
movl $0x10, %edx
movl $0x1, %r8d
callq 0x5d5d0
jmp 0x3705f
leaq -0x30(%rbp), %rdi
callq 0x5d6c0
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x37073
leaq -0x70(%rbp), %rdi
callq 0x5d7e0
movl $0x0, -0x74(%rbp)
cmpl $0x3e8, -0x74(%rbp)     # imm = 0x3E8
jae 0x3717f
leaq -0x80(%rbp), %rdi
leaq -0x10(%rbp), %rsi
leaq -0x74(%rbp), %rdx
callq 0x5d800
jmp 0x370a3
leaq -0x80(%rbp), %rdi
callq 0x5d910
testb $0x1, %al
jne 0x370b2
jmp 0x370b4
jmp 0x3710f
leaq 0x8da09(%rip), %rdi     # 0xc4ac4
leaq 0x8d81f(%rip), %rsi     # 0xc48e1
movl $0x1cc, %edx            # imm = 0x1CC
leaq 0x8db41(%rip), %rcx     # 0xc4c0f
callq 0x103d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x5d6c0
jmp 0x37f70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x37ebc
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x3711a
movl -0x74(%rbp), %eax
movl %eax, -0x84(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x84(%rbp), %rsi
callq 0x5da20
movq %rax, -0x488(%rbp)
jmp 0x3713c
movq -0x488(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x5db00
jmp 0x3714e
leaq -0x80(%rbp), %rdi
callq 0x5dc30
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x37083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x5dc30
jmp 0x37ebc
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x3718a
jmp 0x3718c
movq 0xe8855(%rip), %rax     # 0x11f9e8
movq %rax, -0x490(%rbp)
leaq 0x8d740(%rip), %rsi     # 0xc48e1
leaq -0x98(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x371b4
leaq -0xa8(%rbp), %rdi
callq 0x4ecc0
jmp 0x371c2
movq -0x490(%rbp), %rdi
leaq -0x98(%rbp), %rsi
movl $0x1d6, %edx            # imm = 0x1D6
leaq -0xa8(%rbp), %rcx
callq 0x294a0
jmp 0x371e3
leaq -0x10(%rbp), %rdi
callq 0x5dc70
movb %al, -0x491(%rbp)
jmp 0x371f4
movb -0x491(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xc0(%rbp), %rdi
callq 0x56ea0
jmp 0x37210
callq 0x50f60
movq %rax, -0x4a0(%rbp)
jmp 0x3721e
leaq 0x8da1c(%rip), %rsi     # 0xc4c41
leaq -0xf0(%rbp), %rdi
movl $0x1b, %edx
callq 0x4cbe0
jmp 0x37238
movq -0x4a0(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
leaq -0xf0(%rbp), %rdx
callq 0x5d730
jmp 0x37254
leaq 0x8d686(%rip), %rsi     # 0xc48e1
leaq -0x100(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3726e
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
leaq -0x100(%rbp), %rdx
movl $0x1d6, %ecx            # imm = 0x1D6
movl $0x2, %r8d
callq 0x22f50
jmp 0x372a5
leaq -0xe0(%rbp), %rdi
callq 0x5d770
leaq -0xc0(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x4a1(%rbp)
jmp 0x372ca
movb -0x4a1(%rbp), %al
testb $0x1, %al
jne 0x3718c
jmp 0x372da
jmp 0x372dc
movq 0xe8705(%rip), %rax     # 0x11f9e8
movq %rax, -0x4b0(%rbp)
leaq 0x8d5f0(%rip), %rsi     # 0xc48e1
leaq -0x110(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37304
leaq -0x120(%rbp), %rdi
callq 0x4ecc0
jmp 0x37312
movq -0x4b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
movl $0x1d7, %edx            # imm = 0x1D7
leaq -0x120(%rbp), %rcx
callq 0x294a0
jmp 0x37333
callq 0x50f60
movq %rax, -0x4b8(%rbp)
jmp 0x37341
movq -0x4b8(%rbp), %rsi
leaq 0x8cbfe(%rip), %rdx     # 0xc3f4d
leaq -0x148(%rbp), %rdi
callq 0x5dee0
jmp 0x3735d
leaq 0x8d57d(%rip), %rsi     # 0xc48e1
leaq -0x158(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37377
leaq -0x10(%rbp), %rdi
callq 0x5df70
movq %rax, -0x4c0(%rbp)
jmp 0x37389
movq -0x4c0(%rbp), %rax
movq %rax, -0x160(%rbp)
movl $0x3e8, -0x164(%rbp)    # imm = 0x3E8
leaq 0x8d8c8(%rip), %rcx     # 0xc4c70
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x164(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8d89c(%rip), %rcx     # 0xc4c5d
movq %rcx, (%rax)
leaq -0x148(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0x1d7, %edx            # imm = 0x1D7
movl $0x2, %r8d
leaq -0x160(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x373ee
leaq -0x148(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x4c1(%rbp)
jmp 0x37407
movb -0x4c1(%rbp), %al
testb $0x1, %al
jne 0x372dc
jmp 0x37417
movl $0x0, -0x168(%rbp)
cmpl $0x1f4, -0x168(%rbp)    # imm = 0x1F4
jae 0x37553
leaq -0x170(%rbp), %rdi
leaq -0x10(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x5d800
jmp 0x3744a
leaq -0x170(%rbp), %rdi
callq 0x5d910
testb $0x1, %al
jne 0x3745c
jmp 0x3745e
jmp 0x374d1
leaq 0x8d65f(%rip), %rdi     # 0xc4ac4
leaq 0x8d475(%rip), %rsi     # 0xc48e1
movl $0x1dd, %edx            # imm = 0x1DD
leaq 0x8d797(%rip), %rcx     # 0xc4c0f
callq 0x103d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x374a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x5d770
leaq -0xc0(%rbp), %rdi
callq 0x56fc0
jmp 0x37ebc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x5e010
jmp 0x37ebc
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x374dc
movl -0x168(%rbp), %eax
movl %eax, -0x174(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x174(%rbp), %rsi
callq 0x5da20
movq %rax, -0x4d0(%rbp)
jmp 0x37501
movq -0x4d0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x5db00
jmp 0x37516
leaq -0x170(%rbp), %rdi
callq 0x5dc30
movl -0x168(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x168(%rbp)
jmp 0x37421
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x5dc30
jmp 0x37ebc
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x3755e
jmp 0x37560
movq 0xe8481(%rip), %rax     # 0x11f9e8
movq %rax, -0x4d8(%rbp)
leaq 0x8d36c(%rip), %rsi     # 0xc48e1
leaq -0x188(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37588
leaq -0x198(%rbp), %rdi
callq 0x4ecc0
jmp 0x37596
movq -0x4d8(%rbp), %rdi
leaq -0x188(%rbp), %rsi
movl $0x1e7, %edx            # imm = 0x1E7
leaq -0x198(%rbp), %rcx
callq 0x294a0
jmp 0x375b7
leaq -0x10(%rbp), %rdi
callq 0x5dc70
movb %al, -0x4d9(%rbp)
jmp 0x375c8
movb -0x4d9(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x1b0(%rbp), %rdi
callq 0x56ea0
jmp 0x375e4
callq 0x50f60
movq %rax, -0x4e8(%rbp)
jmp 0x375f2
leaq 0x8d648(%rip), %rsi     # 0xc4c41
leaq -0x1e0(%rbp), %rdi
movl $0x1b, %edx
callq 0x4cbe0
jmp 0x3760c
movq -0x4e8(%rbp), %rsi
leaq -0x1d0(%rbp), %rdi
leaq -0x1e0(%rbp), %rdx
callq 0x5d730
jmp 0x37628
leaq 0x8d2b2(%rip), %rsi     # 0xc48e1
leaq -0x1f0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37642
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
movl $0x1e7, %ecx            # imm = 0x1E7
movl $0x2, %r8d
callq 0x22f50
jmp 0x37679
leaq -0x1d0(%rbp), %rdi
callq 0x5d770
leaq -0x1b0(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x4e9(%rbp)
jmp 0x3769e
movb -0x4e9(%rbp), %al
testb $0x1, %al
jne 0x37560
jmp 0x376ae
jmp 0x376b0
movq 0xe8331(%rip), %rax     # 0x11f9e8
movq %rax, -0x4f8(%rbp)
leaq 0x8d21c(%rip), %rsi     # 0xc48e1
leaq -0x200(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x376d8
leaq -0x210(%rbp), %rdi
callq 0x4ecc0
jmp 0x376e6
movq -0x4f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movl $0x1e9, %edx            # imm = 0x1E9
leaq -0x210(%rbp), %rcx
callq 0x294a0
jmp 0x37707
callq 0x50f60
movq %rax, -0x500(%rbp)
jmp 0x37715
movq -0x500(%rbp), %rsi
leaq 0x8c82a(%rip), %rdx     # 0xc3f4d
leaq -0x238(%rbp), %rdi
callq 0x5dee0
jmp 0x37731
leaq 0x8d1a9(%rip), %rsi     # 0xc48e1
leaq -0x248(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3774b
leaq -0x10(%rbp), %rdi
callq 0x5df70
movq %rax, -0x508(%rbp)
jmp 0x3775d
movq -0x508(%rbp), %rax
movq %rax, -0x250(%rbp)
movl $0x3e8, -0x254(%rbp)    # imm = 0x3E8
leaq 0x8d4f4(%rip), %rcx     # 0xc4c70
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x254(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8d4c8(%rip), %rcx     # 0xc4c5d
movq %rcx, (%rax)
leaq -0x238(%rbp), %rdi
leaq -0x248(%rbp), %rsi
movl $0x1e9, %edx            # imm = 0x1E9
movl $0x2, %r8d
leaq -0x250(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x377c2
leaq -0x238(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x509(%rbp)
jmp 0x377db
movb -0x509(%rbp), %al
testb $0x1, %al
jne 0x376b0
jmp 0x377eb
leaq -0x70(%rbp), %rdi
callq 0x5e0d0
leaq -0x70(%rbp), %rdi
callq 0x5e500
movq 0xe81e4(%rip), %rax     # 0x11f9e8
movq %rax, -0x518(%rbp)
leaq 0x8d0cf(%rip), %rsi     # 0xc48e1
leaq -0x268(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37825
leaq -0x278(%rbp), %rdi
callq 0x4ecc0
jmp 0x37833
movq -0x518(%rbp), %rdi
leaq -0x268(%rbp), %rsi
movl $0x1ee, %edx            # imm = 0x1EE
leaq -0x278(%rbp), %rcx
callq 0x294a0
jmp 0x37854
callq 0x50f60
movq %rax, -0x520(%rbp)
jmp 0x37862
movq -0x520(%rbp), %rsi
leaq 0x8c6dd(%rip), %rdx     # 0xc3f4d
leaq -0x2a0(%rbp), %rdi
callq 0x5dee0
jmp 0x3787e
leaq 0x8d05c(%rip), %rsi     # 0xc48e1
leaq -0x2b0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37898
leaq -0x10(%rbp), %rdi
callq 0x5df70
movq %rax, -0x528(%rbp)
jmp 0x378aa
movq -0x528(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movl $0x0, -0x2bc(%rbp)
leaq 0x91f19(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x2bc(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8d37b(%rip), %rcx     # 0xc4c5d
movq %rcx, (%rax)
leaq -0x2a0(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
movl $0x1ee, %edx            # imm = 0x1EE
movl $0x2, %r8d
leaq -0x2b8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x3790f
leaq -0x2a0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x529(%rbp)
jmp 0x37928
movb -0x529(%rbp), %al
testb $0x1, %al
jne 0x377fd
jmp 0x37938
leaq -0x10(%rbp), %rdi
callq 0x5e0f0
jmp 0x37943
leaq -0x10(%rbp), %rdi
callq 0x5e0f0
jmp 0x3794e
leaq -0x10(%rbp), %rdi
callq 0x5d7a0
jmp 0x37959
jmp 0x3795b
movq 0xe8086(%rip), %rax     # 0x11f9e8
movq %rax, -0x538(%rbp)
leaq 0x8cf71(%rip), %rsi     # 0xc48e1
leaq -0x2d0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37983
leaq -0x2e0(%rbp), %rdi
callq 0x4ecc0
jmp 0x37991
movq -0x538(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
movl $0x1f6, %edx            # imm = 0x1F6
leaq -0x2e0(%rbp), %rcx
callq 0x294a0
jmp 0x379b2
callq 0x50f60
movq %rax, -0x540(%rbp)
jmp 0x379c0
movq -0x540(%rbp), %rsi
leaq 0x8c57f(%rip), %rdx     # 0xc3f4d
leaq -0x308(%rbp), %rdi
callq 0x5dee0
jmp 0x379dc
leaq 0x8cefe(%rip), %rsi     # 0xc48e1
leaq -0x318(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x379f6
leaq -0x10(%rbp), %rdi
callq 0x5df70
movq %rax, -0x548(%rbp)
jmp 0x37a08
movq -0x548(%rbp), %rax
movq %rax, -0x320(%rbp)
movl $0x0, -0x324(%rbp)
leaq 0x91dbb(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x324(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8d21d(%rip), %rcx     # 0xc4c5d
movq %rcx, (%rax)
leaq -0x308(%rbp), %rdi
leaq -0x318(%rbp), %rsi
movl $0x1f6, %edx            # imm = 0x1F6
movl $0x2, %r8d
leaq -0x320(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x37a6d
leaq -0x308(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x549(%rbp)
jmp 0x37a86
movb -0x549(%rbp), %al
testb $0x1, %al
jne 0x3795b
jmp 0x37a96
jmp 0x37a98
movq 0xe7f49(%rip), %rax     # 0x11f9e8
movq %rax, -0x558(%rbp)
leaq 0x8ce34(%rip), %rsi     # 0xc48e1
leaq -0x338(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37ac0
leaq -0x348(%rbp), %rdi
callq 0x4ecc0
jmp 0x37ace
movq -0x558(%rbp), %rdi
leaq -0x338(%rbp), %rsi
movl $0x1f7, %edx            # imm = 0x1F7
leaq -0x348(%rbp), %rcx
callq 0x294a0
jmp 0x37aef
callq 0x50f60
movq %rax, -0x560(%rbp)
jmp 0x37afd
movq -0x560(%rbp), %rsi
leaq 0x8c442(%rip), %rdx     # 0xc3f4d
leaq -0x370(%rbp), %rdi
callq 0x5dee0
jmp 0x37b19
leaq 0x8cdc1(%rip), %rsi     # 0xc48e1
leaq -0x380(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37b33
leaq -0x10(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x568(%rbp)
jmp 0x37b45
movq -0x568(%rbp), %rax
movq %rax, -0x388(%rbp)
movl $0x0, -0x38c(%rbp)
leaq 0x91c7e(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x38c(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8d0f8(%rip), %rcx     # 0xc4c75
movq %rcx, (%rax)
leaq -0x370(%rbp), %rdi
leaq -0x380(%rbp), %rsi
movl $0x1f7, %edx            # imm = 0x1F7
movl $0x2, %r8d
leaq -0x388(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x37baa
leaq -0x370(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x569(%rbp)
jmp 0x37bc3
movb -0x569(%rbp), %al
testb $0x1, %al
jne 0x37a98
jmp 0x37bd3
jmp 0x37bd5
movq 0xe7e0c(%rip), %rax     # 0x11f9e8
movq %rax, -0x578(%rbp)
leaq 0x8ccf7(%rip), %rsi     # 0xc48e1
leaq -0x3a0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37bfd
leaq -0x3b0(%rbp), %rdi
callq 0x4ecc0
jmp 0x37c0b
movq -0x578(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movl $0x1f8, %edx            # imm = 0x1F8
leaq -0x3b0(%rbp), %rcx
callq 0x294a0
jmp 0x37c2c
leaq -0x10(%rbp), %rdi
callq 0x5e030
movb %al, -0x579(%rbp)
jmp 0x37c3d
movb -0x579(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x3c8(%rbp), %rdi
callq 0x56ea0
jmp 0x37c57
callq 0x50f60
movq %rax, -0x588(%rbp)
jmp 0x37c65
leaq 0x8d019(%rip), %rsi     # 0xc4c85
leaq -0x3f8(%rbp), %rdi
movl $0xc, %edx
callq 0x4cbe0
jmp 0x37c7f
movq -0x588(%rbp), %rsi
leaq -0x3e8(%rbp), %rdi
leaq -0x3f8(%rbp), %rdx
callq 0x5d730
jmp 0x37c9b
leaq 0x8cc3f(%rip), %rsi     # 0xc48e1
leaq -0x408(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37cb5
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x3c8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
leaq -0x408(%rbp), %rdx
movl $0x1f8, %ecx            # imm = 0x1F8
movl $0x2, %r8d
callq 0x22f50
jmp 0x37cec
leaq -0x3e8(%rbp), %rdi
callq 0x5d770
leaq -0x3c8(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x589(%rbp)
jmp 0x37d11
movb -0x589(%rbp), %al
testb $0x1, %al
jne 0x37bd5
jmp 0x37d21
jmp 0x37d23
movq 0xe7cbe(%rip), %rax     # 0x11f9e8
movq %rax, -0x598(%rbp)
leaq 0x8cba9(%rip), %rsi     # 0xc48e1
leaq -0x418(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37d4b
leaq -0x428(%rbp), %rdi
callq 0x4ecc0
jmp 0x37d59
movq -0x598(%rbp), %rdi
leaq -0x418(%rbp), %rsi
movl $0x1f9, %edx            # imm = 0x1F9
leaq -0x428(%rbp), %rcx
callq 0x294a0
jmp 0x37d7a
callq 0x50f60
movq %rax, -0x5a0(%rbp)
jmp 0x37d88
movq -0x5a0(%rbp), %rsi
leaq 0x8c1b7(%rip), %rdx     # 0xc3f4d
leaq -0x450(%rbp), %rdi
callq 0x5dee0
jmp 0x37da4
leaq 0x8cb36(%rip), %rsi     # 0xc48e1
leaq -0x460(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x37dbe
leaq -0x10(%rbp), %rdi
callq 0x5df20
movq %rax, -0x5a8(%rbp)
jmp 0x37dd0
movq -0x5a8(%rbp), %rax
movq %rax, -0x468(%rbp)
movl $0x0, -0x46c(%rbp)
leaq 0x919f3(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x46c(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x8cdaa(%rip), %rcx     # 0xc4bb2
movq %rcx, (%rax)
leaq -0x450(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0x1f9, %edx            # imm = 0x1F9
movl $0x2, %r8d
leaq -0x468(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x37e35
leaq -0x450(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x5a9(%rbp)
jmp 0x37e4e
movb -0x5a9(%rbp), %al
testb $0x1, %al
jne 0x37d23
jmp 0x37e5e
leaq -0x10(%rbp), %rdi
callq 0x5e520
addq $0x5d0, %rsp            # imm = 0x5D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x37e96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x5d770
leaq -0x1b0(%rbp), %rdi
callq 0x56fc0
jmp 0x37ebc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x5e010
leaq -0x70(%rbp), %rdi
callq 0x5e500
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x5e010
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x5e010
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x5e010
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x37f41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x5d770
leaq -0x3c8(%rbp), %rdi
callq 0x56fc0
jmp 0x37f67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x5e010
leaq -0x10(%rbp), %rdi
callq 0x5e520
movq -0x38(%rbp), %rdi
callq 0x10aa0
nopl (%rax)