// File: /workspace/github_cpp_makefile_star2_O2/f18m[P]boost-intrusive-pool/tests/unit_tests.cpp
// Function: infinite_memory_pool()
void infinite_memory_pool()
{
    BOOST_TEST_MESSAGE("Starting boost_intrusive_pool<> tests when memory pool is unbounded");

    struct {
        unsigned int initial_size;
        unsigned int enlarge_step;
        unsigned int num_elements;
    } testArray[] = {
        { 10, 1, (int)1e6 }, // force newline
        { 1, 100, (int)5e4 }, // force newline
        { 100000, 1, 123456 }, // force newline
    };

    for (int testIdx = 0; testIdx < sizeof(testArray) / sizeof(testArray[0]); testIdx++) {
        BOOST_TEST_MESSAGE(std::string("Starting test entry #") + std::to_string(testIdx));

        boost_intrusive_pool<DummyInt> f(
            testArray[testIdx].initial_size /* initial size */, testArray[testIdx].enlarge_step /* enlarge step */);

        BOOST_REQUIRE(!f.is_bounded());
        f.check();

        size_t num_freed = 0, max_active = 0;
        std::map<int, HDummyInt> helper_container;
        for (unsigned int j = 0; j < testArray[testIdx].num_elements; j++) {
            HDummyInt myInt = f.allocate_through_init(j);
            assert(myInt);

            f.check();

            *myInt = j;
            helper_container[j] = myInt;

            // returns to the factory a few items in pseudo-random order
            if ((j % 7) == 0 || (j % 53) == 0 || (j % 12345) == 0) {
                size_t value_to_release = j / 10;

                auto it = helper_container.find(value_to_release);
                if (it != helper_container.end()) {
                    // erasing the smart pointer from the std::map will trigger its return to the memory pool:
                    helper_container.erase(value_to_release);
                    num_freed++;
                }
            }

            max_active = std::max(max_active, helper_container.size());
        }

        f.check();

        BOOST_REQUIRE(!f.is_memory_exhausted());
        BOOST_REQUIRE(num_freed > 0);

        // This should hold always:
        //         m_free_count+m_inuse_count == m_total_count
        BOOST_REQUIRE_EQUAL(f.unused_count() + f.inuse_count(), f.capacity());

        BOOST_REQUIRE_EQUAL(f.inuse_count(), testArray[testIdx].num_elements - num_freed);
        BOOST_REQUIRE(f.capacity() >= max_active);
        BOOST_REQUIRE(!f.empty());

        if (testArray[testIdx].enlarge_step > 1)
            BOOST_REQUIRE(f.unused_count() > 0);

        if (testArray[testIdx].initial_size < testArray[testIdx].num_elements - num_freed)
            BOOST_REQUIRE(f.enlarge_steps_done() > 0);

        // IMPORTANT: this will crash as all pointers inside the map are INVALIDATED before
        //            the map clear() is called:
        /*
                f.clear();
                helper_container.clear(); // all pointers it contains have been invalidated!
        */

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

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

        f.check();

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3a8, %rsp            # imm = 0x3A8
movq 0x5b22a(%rip), %rdi     # 0x7f830
leaq 0x2e220(%rip), %r15     # 0x5282d
leaq -0x58(%rbp), %r14
movq %r15, (%r14)
leaq 0x2e226(%rip), %r13     # 0x52841
movq %r13, 0x8(%r14)
movq $0x73, 0x10(%r14)
movq %r14, %rsi
callq 0x15faa
callq 0x1bc99
movl $0x2, 0x5d222(%rip)     # 0x81860
leaq -0x78(%rbp), %rbx
movb $0x1, (%rbx)
leaq -0xd8(%rbp), %rsi
movb $0x0, 0x8(%rsi)
leaq 0x5a281(%rip), %rax     # 0x7e8d8
addq $0x10, %rax
movq %rax, (%rsi)
leaq 0x5b37b(%rip), %rax     # 0x7f9e0
movq %rax, 0x10(%rsi)
leaq 0x2e1d2(%rip), %rax     # 0x52842
movq %rax, 0x18(%rsi)
movq %rbx, %rdi
callq 0x160d8
movq %rbx, %rdi
callq 0x1bc7a
leaq 0x5a28d(%rip), %rax     # 0x7e918
addq $0x10, %rax
movq %rax, -0x110(%rbp)
leaq 0x5a373(%rip), %rax     # 0x7ea10
addq $0x10, %rax
movq %rax, -0x98(%rbp)
leaq 0x5a3a1(%rip), %rax     # 0x7ea50
addq $0x10, %rax
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
cmpq $0x3, %rax
je 0x25522
movq %rax, -0xe0(%rbp)
movq 0x5b15c(%rip), %rdi     # 0x7f830
movq %r15, -0x90(%rbp)
movq %r13, -0x88(%rbp)
movq $0x80, -0x80(%rbp)
leaq -0x90(%rbp), %rsi
callq 0x15faa
callq 0x1bc99
movl $0x2, 0x5d15b(%rip)     # 0x81860
movb $0x1, -0x29(%rbp)
leaq -0x78(%rbp), %rdi
leaq 0x2e172(%rip), %rsi     # 0x52886
leaq -0x99(%rbp), %rdx
callq 0xf200
leaq -0x108(%rbp), %rbx
movq %rbx, %rdi
movq -0xe0(%rbp), %rsi
callq 0x322c6
movq %r14, %rdi
leaq -0x78(%rbp), %rsi
movq %rbx, %rdx
callq 0x2bff4
movb $0x0, -0xd0(%rbp)
movq -0x110(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x5b27f(%rip), %rax     # 0x7f9e0
movq %rax, -0xc8(%rbp)
movq %r14, -0xc0(%rbp)
leaq -0x29(%rbp), %r12
movq %r12, %rdi
leaq -0xd8(%rbp), %rsi
callq 0x160d8
movq %r14, %rdi
callq 0xf9d8
movq %rbx, %rdi
callq 0xf9d8
leaq -0x78(%rbp), %rdi
callq 0xf9d8
movq %r12, %rdi
callq 0x1bc7a
imulq $0xc, -0xe0(%rbp), %r12
leaq 0x2b94e(%rip), %rax     # 0x50100
movl (%r12,%rax), %esi
movl 0x4(%r12,%rax), %edx
xorps %xmm0, %xmm0
movaps %xmm0, -0x3b0(%rbp)
movaps %xmm0, -0x3a0(%rbp)
movq %rbx, %rdi
movq %rsi, -0x118(%rbp)
movq %rdx, -0x120(%rbp)
xorl %ecx, %ecx
xorl %r8d, %r8d
leaq -0x3b0(%rbp), %rbx
movq %rbx, %r9
callq 0x32326
movq %rbx, %rdi
callq 0x332be
movq %r15, -0x390(%rbp)
movq %r13, -0x388(%rbp)
leaq 0x3640a(%rip), %rax     # 0x5ac18
movq %rax, -0x380(%rbp)
movq %rax, -0x378(%rbp)
movl $0x85, %edx
leaq -0x390(%rbp), %rsi
leaq -0x380(%rbp), %rcx
callq 0x1c49e
leaq -0x108(%rbp), %rdi
callq 0x323ba
xorb $0x1, %al
movb %al, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2e046(%rip), %rax     # 0x5289c
movq %rax, -0x78(%rbp)
leaq 0x2e04a(%rip), %rax     # 0x528ab
movq %rax, -0x70(%rbp)
movb $0x0, -0xd0(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xd8(%rbp)
leaq 0x5b15f(%rip), %rax     # 0x7f9e0
movq %rax, -0xc8(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq %r15, -0x370(%rbp)
movq %r13, -0x368(%rbp)
andq $0x0, (%rsp)
movl $0x85, %ecx
movq %r14, %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x370(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x48(%rbp), %rdi
callq 0x35d22
leaq -0x108(%rbp), %rdi
callq 0x323dc
leaq 0x2b81a(%rip), %rax     # 0x50100
addq %rax, %r12
andl $0x0, -0xd0(%rbp)
andq $0x0, -0xc8(%rbp)
leaq -0xd0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq %rax, -0xb8(%rbp)
andq $0x0, -0xb0(%rbp)
movl 0x8(%r12), %ebx
xorl %r12d, %r12d
xorl %eax, %eax
movq $0x0, -0xe8(%rbp)
leaq -0x78(%rbp), %r14
leaq -0x108(%rbp), %r13
movl %eax, -0x90(%rbp)
cmpl %ebx, %eax
jae 0x24a7e
movq %r14, %rdi
movq %r13, %rsi
leaq -0x90(%rbp), %rdx
callq 0x323fa
cmpq $0x0, -0x78(%rbp)
je 0x25534
movq %r13, %rdi
callq 0x323dc
movl -0x90(%rbp), %esi
leaq -0x58(%rbp), %r14
movq %r14, %rdi
callq 0x32488
movq %r15, %r13
leaq -0x78(%rbp), %r15
movq %r15, %rdi
callq 0x324b0
movl -0x38(%rbp), %ecx
movl %ecx, 0x20(%rax)
movq %r14, %rdi
callq 0x324dc
movl -0x90(%rbp), %eax
movl %eax, -0x58(%rbp)
leaq -0xd8(%rbp), %rdi
movq %r14, %rsi
movq %r15, %r14
callq 0x324f8
movq %rax, %rdi
movq %r14, %rsi
callq 0x3254a
movl -0x90(%rbp), %ecx
movl %ecx, %eax
xorl %edx, %edx
pushq $0x7
popq %rsi
divl %esi
movl %edx, %esi
movl %ecx, %eax
xorl %edx, %edx
pushq $0x35
popq %rdi
divl %edi
movl %edx, %edi
movl %ecx, %eax
xorl %edx, %edx
movl $0x3039, %r8d           # imm = 0x3039
divl %r8d
testl %edx, %edx
je 0x249f7
testl %esi, %esi
je 0x249f7
testl %edi, %edi
je 0x249f7
movq %r13, %r15
jmp 0x24a54
movl %ecx, %eax
xorl %edx, %edx
pushq $0xa
popq %rcx
divl %ecx
movl %eax, %r15d
movl %eax, -0x58(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4de10
leaq -0xd0(%rbp), %rcx
cmpq %rcx, %rax
je 0x24a4d
movl %r15d, -0x58(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4de44
leaq -0x108(%rbp), %r13
incq -0xe8(%rbp)
leaq 0x2dde2(%rip), %r15     # 0x5282d
jmp 0x24a5b
leaq 0x2ddd9(%rip), %r15     # 0x5282d
leaq -0x108(%rbp), %r13
movq -0xb0(%rbp), %rax
cmpq %rax, %r12
cmovbeq %rax, %r12
movq %r14, %rdi
callq 0x32584
movl -0x90(%rbp), %eax
incl %eax
jmp 0x24935
movq %r13, %rdi
callq 0x323dc
movq %r15, -0x360(%rbp)
leaq 0x2ddad(%rip), %rax     # 0x52841
movq %rax, -0x358(%rbp)
leaq 0x36176(%rip), %rax     # 0x5ac18
movq %rax, -0x350(%rbp)
movq %rax, -0x348(%rbp)
movl $0xa4, %edx
leaq -0x360(%rbp), %rsi
leaq -0x350(%rbp), %rcx
callq 0x1c49e
movq %r13, %rdi
callq 0x325a0
xorb $0x1, %al
movb %al, -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2dde2(%rip), %rax     # 0x528c8
movq %rax, -0x90(%rbp)
leaq 0x2ddec(%rip), %rax     # 0x528e0
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5aecf(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x340(%rbp)
leaq 0x2dd13(%rip), %r14     # 0x52841
movq %r14, -0x338(%rbp)
andq $0x0, (%rsp)
movl $0xa4, %ecx
leaq -0x78(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x340(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
movq %r15, -0x330(%rbp)
movq %r14, -0x328(%rbp)
leaq 0x3609e(%rip), %rax     # 0x5ac18
movq %rax, -0x320(%rbp)
movq %rax, -0x318(%rbp)
movl $0xa5, %edx
leaq -0x330(%rbp), %rsi
leaq -0x320(%rbp), %rcx
callq 0x1c49e
leaq -0x78(%rbp), %rdi
cmpq $0x0, -0xe8(%rbp)
setne -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2dd20(%rip), %rax     # 0x528e1
movq %rax, -0x90(%rbp)
leaq 0x2dd1f(%rip), %rax     # 0x528ee
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5adf4(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x310(%rbp)
leaq 0x2dc38(%rip), %r14     # 0x52841
movq %r14, -0x308(%rbp)
andq $0x0, (%rsp)
movl $0xa5, %ecx
leaq -0x58(%rbp), %rsi
leaq -0x310(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
movq %r15, -0x300(%rbp)
movq %r14, -0x2f8(%rbp)
leaq 0x35fc7(%rip), %rax     # 0x5ac18
movq %rax, -0x2f0(%rbp)
movq %rax, -0x2e8(%rbp)
movl $0xa9, %edx
leaq -0x300(%rbp), %rsi
leaq -0x2f0(%rbp), %rcx
callq 0x1c49e
leaq -0x78(%rbp), %r14
movb $0x0, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5ad4f(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq 0x2d1fd(%rip), %rax     # 0x51e99
movq %rax, -0x40(%rbp)
movq %r15, -0x2e0(%rbp)
leaq 0x2db93(%rip), %rax     # 0x52841
movq %rax, -0x2d8(%rbp)
movq %r13, %rdi
callq 0x326b0
movq %rax, %r15
movq %r13, %rdi
callq 0x326ce
addq %r15, %rax
movq %rax, -0x78(%rbp)
movq %r13, %rdi
callq 0x326ec
movq %rax, -0x90(%rbp)
leaq 0x2dc2d(%rip), %rax     # 0x52912
movq %rax, 0x10(%rsp)
leaq -0x90(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2dbf2(%rip), %rax     # 0x528ef
movq %rax, (%rsp)
movl $0xa9, %edx
leaq -0x58(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
pushq $0x2
popq %rcx
movl %ecx, %r8d
movq %r14, %r9
callq 0x325c2
leaq 0x2db07(%rip), %r15     # 0x5282d
movq %r15, -0x2d0(%rbp)
leaq 0x2db0d(%rip), %rax     # 0x52841
movq %rax, -0x2c8(%rbp)
leaq 0x35ed6(%rip), %rax     # 0x5ac18
movq %rax, -0x2c0(%rbp)
movq %rax, -0x2b8(%rbp)
movl $0xab, %edx
leaq -0x2d0(%rbp), %rsi
leaq -0x2c0(%rbp), %rcx
callq 0x1c49e
movb $0x0, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5ac62(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq 0x2d110(%rip), %rax     # 0x51e99
movq %rax, -0x40(%rbp)
movq %r15, -0x2b0(%rbp)
leaq 0x2daa6(%rip), %rax     # 0x52841
movq %rax, -0x2a8(%rbp)
movq %r13, %rdi
callq 0x326ce
movq %rax, -0x78(%rbp)
movq %rbx, %rax
subq -0xe8(%rbp), %rax
movq %rax, %rbx
movq %rax, -0x90(%rbp)
leaq 0x2db56(%rip), %rax     # 0x5291f
movq %rax, 0x10(%rsp)
leaq -0x90(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2db21(%rip), %rax     # 0x52902
movq %rax, (%rsp)
movl $0xab, %edx
leaq -0x58(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
pushq $0x2
popq %rcx
movl %ecx, %r8d
movq %r14, %r9
callq 0x325c2
movq %r15, -0x2a0(%rbp)
leaq 0x2da30(%rip), %rax     # 0x52841
movq %rax, -0x298(%rbp)
leaq 0x35df9(%rip), %rax     # 0x5ac18
movq %rax, -0x290(%rbp)
movq %rax, -0x288(%rbp)
movl $0xac, %edx
leaq -0x2a0(%rbp), %rsi
leaq -0x290(%rbp), %rcx
callq 0x1c49e
movq %r13, %rdi
callq 0x326ec
cmpq %r12, %rax
setae -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2dae6(%rip), %rax     # 0x5294b
movq %rax, -0x90(%rbp)
leaq 0x2daf2(%rip), %rax     # 0x52965
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5ab50(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x280(%rbp)
leaq 0x2d994(%rip), %r14     # 0x52841
movq %r14, -0x278(%rbp)
andq $0x0, (%rsp)
movl $0xac, %ecx
leaq -0x78(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x280(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
movq %r15, -0x270(%rbp)
movq %r14, -0x268(%rbp)
leaq 0x35d1f(%rip), %rax     # 0x5ac18
movq %rax, -0x260(%rbp)
movq %rax, -0x258(%rbp)
movl $0xad, %edx
leaq -0x270(%rbp), %rsi
leaq -0x260(%rbp), %rcx
callq 0x1c49e
leaq -0x78(%rbp), %r14
movq %r13, %rdi
callq 0x3270a
xorb $0x1, %al
movb %al, -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2da25(%rip), %rax     # 0x52966
movq %rax, -0x90(%rbp)
leaq 0x2da21(%rip), %rax     # 0x52970
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5aa74(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x250(%rbp)
leaq 0x2d8b8(%rip), %rax     # 0x52841
movq %rax, -0x248(%rbp)
andq $0x0, (%rsp)
movl $0xad, %ecx
movq %r14, %rdi
leaq -0x58(%rbp), %rsi
leaq -0x250(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
cmpl $0x2, -0x120(%rbp)
jb 0x250ac
movq %r15, -0x240(%rbp)
leaq 0x2d867(%rip), %rax     # 0x52841
movq %rax, -0x238(%rbp)
leaq 0x35c30(%rip), %rax     # 0x5ac18
movq %rax, -0x230(%rbp)
movq %rax, -0x228(%rbp)
movl $0xb0, %edx
leaq -0x240(%rbp), %rsi
leaq -0x230(%rbp), %rcx
callq 0x1c49e
movq %r13, %rdi
callq 0x326b0
testq %rax, %rax
setne -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2d943(%rip), %rax     # 0x52971
movq %rax, -0x90(%rbp)
leaq 0x2d949(%rip), %rax     # 0x52985
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a987(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x220(%rbp)
leaq 0x2d7cb(%rip), %rax     # 0x52841
movq %rax, -0x218(%rbp)
andq $0x0, (%rsp)
movl $0xb0, %ecx
movq %r14, %rdi
leaq -0x58(%rbp), %rsi
leaq -0x220(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
cmpq -0x118(%rbp), %rbx
jbe 0x25199
movq %r15, -0x210(%rbp)
leaq 0x2d77a(%rip), %rax     # 0x52841
movq %rax, -0x208(%rbp)
leaq 0x35b43(%rip), %rax     # 0x5ac18
movq %rax, -0x200(%rbp)
movq %rax, -0x1f8(%rbp)
movl $0xb3, %edx
leaq -0x210(%rbp), %rsi
leaq -0x200(%rbp), %rcx
callq 0x1c49e
movq %r13, %rdi
callq 0x3272e
testq %rax, %rax
setne -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2d86b(%rip), %rax     # 0x52986
movq %rax, -0x90(%rbp)
leaq 0x2d877(%rip), %rax     # 0x529a0
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a89a(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x1f0(%rbp)
leaq 0x2d6de(%rip), %rax     # 0x52841
movq %rax, -0x1e8(%rbp)
andq $0x0, (%rsp)
movl $0xb3, %ecx
movq %r14, %rdi
leaq -0x58(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
leaq -0xd8(%rbp), %rdi
callq 0x4df82
movq %r13, %rdi
callq 0x3274e
movq %r13, %rdi
callq 0x3274e
movq %r13, %rdi
callq 0x323dc
movq %r15, -0x1e0(%rbp)
leaq 0x2d676(%rip), %rax     # 0x52841
movq %rax, -0x1d8(%rbp)
leaq 0x35a3f(%rip), %rax     # 0x5ac18
movq %rax, -0x1d0(%rbp)
movq %rax, -0x1c8(%rbp)
movl $0xc4, %edx
leaq -0x1e0(%rbp), %rsi
leaq -0x1d0(%rbp), %rcx
callq 0x1c49e
movb $0x0, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a7cb(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq 0x2cc79(%rip), %rax     # 0x51e99
movq %rax, -0x40(%rbp)
movq %r15, -0x1c0(%rbp)
leaq 0x2d60f(%rip), %r14     # 0x52841
movq %r14, -0x1b8(%rbp)
movq %r13, %rdi
callq 0x326ce
movq %rax, -0x78(%rbp)
andl $0x0, -0x90(%rbp)
leaq 0x324ac(%rip), %rax     # 0x576ff
movq %rax, 0x10(%rsp)
leaq -0x90(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2d697(%rip), %rax     # 0x52902
movq %rax, (%rsp)
movl $0xc4, %edx
leaq -0x58(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
pushq $0x2
popq %rcx
movl %ecx, %r8d
leaq -0x78(%rbp), %r9
callq 0x3286b
movq %r15, -0x1b0(%rbp)
movq %r14, -0x1a8(%rbp)
leaq 0x35975(%rip), %rax     # 0x5ac18
movq %rax, -0x1a0(%rbp)
movq %rax, -0x198(%rbp)
movl $0xc5, %edx
leaq -0x1b0(%rbp), %rsi
leaq -0x1a0(%rbp), %rcx
callq 0x1c49e
movb $0x0, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a701(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq 0x2cbaf(%rip), %rax     # 0x51e99
movq %rax, -0x40(%rbp)
movq %r15, -0x190(%rbp)
leaq 0x2d545(%rip), %r14     # 0x52841
movq %r14, -0x188(%rbp)
movq %r13, %rdi
callq 0x326ec
movq %rax, -0x78(%rbp)
andl $0x0, -0x90(%rbp)
leaq 0x323e2(%rip), %rax     # 0x576ff
movq %rax, 0x10(%rsp)
leaq -0x90(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2d5dd(%rip), %rax     # 0x52912
movq %rax, (%rsp)
movl $0xc5, %edx
leaq -0x58(%rbp), %rdi
leaq -0x190(%rbp), %rsi
pushq $0x2
popq %rcx
movl %ecx, %r8d
leaq -0x78(%rbp), %r9
callq 0x3286b
movq %r15, -0x180(%rbp)
movq %r14, -0x178(%rbp)
leaq 0x358ab(%rip), %rax     # 0x5ac18
movq %rax, -0x170(%rbp)
movq %rax, -0x168(%rbp)
movl $0xc6, %edx
leaq -0x180(%rbp), %rsi
leaq -0x170(%rbp), %rcx
callq 0x1c49e
movq %r13, %rdi
callq 0x3270a
movb %al, -0x78(%rbp)
leaq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x2d5b8(%rip), %rax     # 0x52967
movq %rax, -0x90(%rbp)
leaq 0x2d5b3(%rip), %rax     # 0x52970
movq %rax, -0x88(%rbp)
movb $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a606(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0x40(%rbp)
movq %r15, -0x160(%rbp)
leaq 0x2d44a(%rip), %r14     # 0x52841
movq %r14, -0x158(%rbp)
andq $0x0, (%rsp)
movl $0xc6, %ecx
leaq -0x78(%rbp), %rdi
leaq -0x58(%rbp), %rsi
leaq -0x160(%rbp), %rdx
pushq $0x2
popq %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x18e5c
leaq -0x68(%rbp), %rdi
callq 0x35d22
movq %r15, -0x150(%rbp)
movq %r14, -0x148(%rbp)
leaq 0x357d5(%rip), %rax     # 0x5ac18
movq %rax, -0x140(%rbp)
movq %rax, -0x138(%rbp)
movl $0xc7, %edx
leaq -0x150(%rbp), %rsi
leaq -0x140(%rbp), %rcx
callq 0x1c49e
movb $0x0, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x5a561(%rip), %rax     # 0x7f9e0
movq %rax, -0x48(%rbp)
leaq 0x2ca0f(%rip), %rax     # 0x51e99
movq %rax, -0x40(%rbp)
movq %r15, -0x130(%rbp)
movq %r13, %rdi
leaq 0x2d3a2(%rip), %r13     # 0x52841
movq %r13, -0x128(%rbp)
callq 0x326b0
movq %rax, -0x78(%rbp)
andl $0x0, -0x90(%rbp)
leaq 0x32242(%rip), %rax     # 0x576ff
movq %rax, 0x10(%rsp)
leaq -0x90(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2d4cc(%rip), %rax     # 0x529a1
movq %rax, (%rsp)
movl $0xc7, %edx
leaq -0x58(%rbp), %r14
movq %r14, %rdi
leaq -0x130(%rbp), %rsi
pushq $0x2
popq %rcx
movl %ecx, %r8d
leaq -0x78(%rbp), %r9
callq 0x3286b
leaq -0xd8(%rbp), %rdi
callq 0x440e6
leaq -0x108(%rbp), %rdi
callq 0x32962
movq -0xe0(%rbp), %rax
incq %rax
jmp 0x246bc
addq $0x3a8, %rsp            # imm = 0x3A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2d4d5(%rip), %rdi     # 0x52a10
leaq 0x2d2eb(%rip), %rsi     # 0x5282d
leaq 0x2d363(%rip), %rcx     # 0x528ac
movl $0x8c, %edx
callq 0xf340
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
jmp 0x25600
jmp 0x255a9
jmp 0x255a9
jmp 0x25627
jmp 0x25627
jmp 0x25627
jmp 0x25627
jmp 0x25627
jmp 0x25627
jmp 0x255a9
jmp 0x25627
jmp 0x25627
jmp 0x255a9
jmp 0x25627
jmp 0x255a9
jmp 0x25627
jmp 0x25627
jmp 0x255a9
jmp 0x25627
jmp 0x25627
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x35d22
jmp 0x2563c
jmp 0x25627
jmp 0x2561c
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x35d22
jmp 0x25648
movq %rax, %rbx
jmp 0x255fc
movq %rax, %rbx
jmp 0x255f3
movq %rax, %rbx
jmp 0x255e7
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0xf9d8
leaq -0x108(%rbp), %rdi
callq 0xf9d8
leaq -0x78(%rbp), %rdi
callq 0xf9d8
leaq -0x29(%rbp), %rdi
callq 0x1bc7a
jmp 0x25654
movq %rax, %rbx
leaq -0x3b0(%rbp), %rdi
callq 0x332be
jmp 0x25654
jmp 0x25627
jmp 0x25627
movq %rax, %rbx
jmp 0x25648
jmp 0x25630
jmp 0x25627
jmp 0x25630
movq %rax, %rbx
jmp 0x2563c
jmp 0x25630
jmp 0x25630
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x32584
leaq -0xd8(%rbp), %rdi
callq 0x440e6
leaq -0x108(%rbp), %rdi
callq 0x32962
movq %rbx, %rdi
callq 0xf8a0