// File: /workspace/github_cpp_makefile_star2_O1/f18m[P]boost-intrusive-pool/tests/unit_tests.cpp
// Function: max_size_memory_pool()
void max_size_memory_pool()
{
    BOOST_TEST_MESSAGE("Starting boost_intrusive_pool<> tests when memory pool has max size");

    struct {
        unsigned int initial_size;
        unsigned int enlarge_step;
        unsigned int max_size;
    } testArray[] = {
        { 1, 1, 10 }, // force newline
        { 10, 2, 21 }, // force newline
        { 100000, 1, 100010 }, // force newline
        { 128, 4096, 5000 }, // 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 */, testArray[testIdx].max_size /* max size */);
        std::vector<HDummyInt> helper_container;

        BOOST_REQUIRE(f.is_limited());
        BOOST_REQUIRE_EQUAL(f.max_size(), testArray[testIdx].max_size);

        for (unsigned int j = 0; j < testArray[testIdx].initial_size; j++) {
            HDummyInt myInt = f.allocate_through_init(3);
            assert(myInt);
            helper_container.push_back(myInt);

            f.check();
        }

        // When initial_size items are allocated, the memory pool will try to pre-allocate enlarge_step items.
        // At that point, unused_count will be equal to enlarge_step.
        // But if initial_size + enlarge_step exceeds max_size, the enlarge_step will be the remaining to max_size.
        size_t enlarge_step = testArray[testIdx].enlarge_step;
        if (testArray[testIdx].initial_size + testArray[testIdx].enlarge_step > testArray[testIdx].max_size)
            enlarge_step = testArray[testIdx].max_size - testArray[testIdx].initial_size;
        BOOST_REQUIRE_EQUAL(f.unused_count(), enlarge_step);

        for (unsigned int j = testArray[testIdx].initial_size; j < testArray[testIdx].max_size; j++) {
            HDummyInt myInt = f.allocate_through_init(3);
            assert(myInt);
            helper_container.push_back(myInt);

            f.check();
        }

        BOOST_REQUIRE_EQUAL(f.unused_count(), 0);

        // now if we allocate more we should fail gracefully:
        HDummyInt myInt = f.allocate_through_init(4);
        BOOST_REQUIRE(!myInt);

        // This should hold always:
        BOOST_REQUIRE_EQUAL(f.unused_count() + f.inuse_count(), f.capacity());
        BOOST_REQUIRE_EQUAL(f.inuse_count(), testArray[testIdx].max_size);
        BOOST_REQUIRE_EQUAL(f.capacity(), testArray[testIdx].max_size);
        BOOST_REQUIRE(!f.empty());
        BOOST_REQUIRE(f.enlarge_steps_done() > 0);

        helper_container.clear();
        f.clear();

        f.check();

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movq 0x5769a(%rip), %rdi     # 0x82808
leaq 0x306be(%rip), %r15     # 0x5b833
leaq -0x98(%rbp), %rbx
movq %r15, (%rbx)
leaq 0x306c1(%rip), %r12     # 0x5b847
movq %r12, 0x8(%rbx)
movq $0x102, 0x10(%rbx)      # imm = 0x102
movq %rbx, %rsi
callq 0x183e0
callq 0x1f367
movl $0x2, 0x59697(%rip)     # 0x84840
movb $0x1, -0x48(%rbp)
leaq -0x1a0(%rbp), %rsi
movb $0x0, 0x8(%rsi)
leaq 0x566a9(%rip), %rax     # 0x81868
addq $0x10, %rax
movq %rax, (%rsi)
leaq 0x577eb(%rip), %rax     # 0x829b8
movq %rax, 0x10(%rsi)
leaq 0x3087b(%rip), %rax     # 0x5ba53
movq %rax, 0x18(%rsi)
movq 0x57625(%rip), %rdi     # 0x82808
callq 0x1f1a8
leaq -0x48(%rbp), %rdi
callq 0x1f348
movaps 0x2df58(%rip), %xmm0    # 0x59150
movaps %xmm0, -0x180(%rbp)
movaps 0x2df3a(%rip), %xmm0    # 0x59140
movaps %xmm0, -0x190(%rbp)
movaps 0x2df1c(%rip), %xmm0    # 0x59130
movaps %xmm0, -0x1a0(%rbp)
leaq 0x56686(%rip), %rax     # 0x818a8
addq $0x10, %rax
movq %rax, -0x150(%rbp)
leaq 0x5676c(%rip), %rax     # 0x819a0
addq $0x10, %rax
movq %rax, -0x100(%rbp)
leaq 0x5679a(%rip), %rax     # 0x819e0
addq $0x10, %rax
movq %rax, -0xe8(%rbp)
leaq 0x567c8(%rip), %rax     # 0x81a20
addq $0x10, %rax
movq %rax, -0xe0(%rbp)
leaq 0x56876(%rip), %rax     # 0x81ae0
addq $0x10, %rax
movq %rax, -0x148(%rbp)
leaq 0x567e4(%rip), %rax     # 0x81a60
addq $0x10, %rax
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %r14
movq $0x0, -0x140(%rbp)
movq 0x57568(%rip), %rdi     # 0x82808
movq %r15, -0x130(%rbp)
movq %r12, -0x128(%rbp)
movq $0x110, -0x120(%rbp) # imm = 0x110
movq %r14, %rsi
callq 0x183e0
callq 0x1f367
movl $0x2, 0x59570(%rip)     # 0x84840
movb $0x1, -0xc8(%rbp)
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
leaq 0x305a2(%rip), %rsi     # 0x5b88c
leaq 0x305b0(%rip), %rdx     # 0x5b8a1
callq 0x4d2b2
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movl $0x1, %esi
leaq -0xb8(%rbp), %rdi
movl $0x2d, %edx
callq 0xf580
leaq -0x38(%rbp), %r12
movq -0x140(%rbp), %r14
movq -0xb8(%rbp), %rdi
movl $0x1, %esi
movl %r14d, %edx
callq 0x4c866
movq -0x68(%rbp), %rcx
movl $0xf, %esi
leaq -0x58(%rbp), %rax
cmpq %rax, %rcx
je 0x2b34f
movq -0x58(%rbp), %rsi
movq -0x60(%rbp), %r8
movq -0xb0(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x2b384
movl $0xf, %esi
leaq -0xa8(%rbp), %rdi
cmpq %rdi, -0xb8(%rbp)
je 0x2b37f
movq -0xa8(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x2b396
movq -0xb8(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0xf170
jmp 0x2b3a6
leaq -0xb8(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0xf540
movq %r12, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x2b3c3
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x2b3cb
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
xorl %eax, %eax
movb %al, (%rcx)
movb %al, -0x90(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x575b5(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x48(%rbp), %rax
movq %rax, -0x80(%rbp)
movq 0x573ef(%rip), %rdi     # 0x82808
movq %rbx, %rsi
callq 0x1f1a8
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x2b42f
callq 0xf480
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x2b447
callq 0xf480
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x2b459
callq 0xf480
leaq -0xc8(%rbp), %rdi
callq 0x1f348
leaq (%r14,%r14,2), %r12
movl -0x1a0(%rbp,%r12,4), %esi
movl -0x19c(%rbp,%r12,4), %edx
movl -0x198(%rbp,%r12,4), %ecx
xorps %xmm0, %xmm0
movaps %xmm0, -0x160(%rbp)
movaps %xmm0, -0x170(%rbp)
leaq -0xd8(%rbp), %rdi
xorl %r8d, %r8d
leaq -0x170(%rbp), %r9
callq 0x39bfe
movq -0x160(%rbp), %rax
testq %rax, %rax
je 0x2b4c5
leaq -0x170(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
xorps %xmm0, %xmm0
movaps %xmm0, -0x130(%rbp)
movq $0x0, -0x120(%rbp)
callq 0x1f367
movq 0x59382(%rip), %rdx     # 0x84868
leaq 0x59373(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x384c2(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x59343(%rip)     # 0x84848
leaq 0x3033b(%rip), %rax     # 0x5b847
movq %rax, 0x5933d(%rip)     # 0x84850
movq $0x116, 0x5933a(%rip) # imm = 0x116
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2b53e
cmpq $0x0, 0x30(%rax)
sete %cl
cmpq $0x0, 0x38(%rax)
setne %al
orb %cl, %al
jmp 0x2b540
xorl %eax, %eax
movb %al, -0x48(%rbp)
xorps %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
movups %xmm0, 0x8(%rdi)
leaq 0x30542(%rip), %rax     # 0x5ba97
movq %rax, -0x68(%rbp)
leaq 0x30545(%rip), %rax     # 0x5baa5
movq %rax, -0x60(%rbp)
movb $0x0, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x57438(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq %r15, -0x1f0(%rbp)
leaq 0x302aa(%rip), %rax     # 0x5b847
movq %rax, -0x1e8(%rbp)
subq $0x8, %rsp
movl $0x116, %ecx            # imm = 0x116
movq %rbx, %rsi
leaq -0x1f0(%rbp), %rdx
movl $0x2, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
pushq $0x0
callq 0x1b92f
addq $0x10, %rsp
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x59286(%rip), %rdx     # 0x84868
leaq 0x59277(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x383c6(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x59247(%rip)     # 0x84848
leaq 0x3023f(%rip), %rax     # 0x5b847
movq %rax, 0x59241(%rip)     # 0x84850
movq $0x117, 0x5923e(%rip) # imm = 0x117
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x57388(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2f876(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2b661
leaq 0x38(%rax), %rcx
cmpq $0x0, 0x30(%rax)
leaq 0x70(%rax), %rax
cmoveq %rax, %rcx
movq (%rcx), %rax
jmp 0x2b663
xorl %eax, %eax
leaq -0x198(,%r12,4), %r13
addq %rbp, %r13
movl (%r13), %ecx
cmpq %rcx, %rax
movq %rax, -0x110(%rbp)
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
leaq 0x301a8(%rip), %rax     # 0x5b847
movq %rax, -0xc0(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x572e7(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
movq %r13, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x148(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x117, %ecx            # imm = 0x117
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x3037f(%rip), %r10     # 0x5bab3
pushq %r10
pushq %rbx
leaq 0x30368(%rip), %r10     # 0x5baa6
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0x1a0(,%r12,4), %r12
addq %rbp, %r12
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
movl (%r12), %eax
testl %eax, %eax
je 0x2b7c9
xorl %r15d, %r15d
movl $0x3, -0x48(%rbp)
movq %rbx, %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x3a002
cmpq $0x0, -0x98(%rbp)
je 0x2c666
leaq -0x130(%rbp), %rdi
movq %rbx, %rsi
callq 0x3a0aa
movq -0xd0(%rbp), %rdi
testq %rdi, %rdi
je 0x2b7b5
callq 0x5600c
movq %rbx, %rdi
callq 0x39dfe
incl %r15d
movl (%r12), %eax
cmpl %eax, %r15d
jb 0x2b76d
movl 0x4(%r12), %ecx
movq %rcx, -0x110(%rbp)
leal (%rcx,%rax), %edx
movl 0x8(%r12), %ecx
cmpl %ecx, %edx
jbe 0x2b7ea
subl %eax, %ecx
movq %rcx, -0x110(%rbp)
callq 0x1f367
leaq 0x3003d(%rip), %r15     # 0x5b833
movq 0x5906b(%rip), %rdx     # 0x84868
leaq 0x5905c(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x381ab(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x5902c(%rip)     # 0x84848
leaq 0x30024(%rip), %rax     # 0x5b847
movq %rax, 0x59026(%rip)     # 0x84850
movq $0x127, 0x59023(%rip) # imm = 0x127
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x5716d(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2f65b(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2b86c
movq 0x60(%rax), %rax
jmp 0x2b86e
xorl %eax, %eax
movq %rax, -0xf8(%rbp)
cmpq -0x110(%rbp), %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
leaq 0x2ffa8(%rip), %rax     # 0x5b847
movq %rax, -0xc0(%rbp)
leaq -0xf8(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x0, %edx
movb %dl, -0x90(%rbp)
movq -0xe0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
leaq 0x570e7(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rsi
movq %rsi, -0x80(%rbp)
leaq -0x110(%rbp), %rsi
movq %rsi, -0x70(%rbp)
movb %dl, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x127, %ecx            # imm = 0x127
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x301b7(%rip), %r10     # 0x5baeb
pushq %r10
pushq %rbx
leaq 0x30069(%rip), %r10     # 0x5b9a7
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
movl (%r12), %r15d
cmpl 0x8(%r12), %r15d
jae 0x2b9bb
movl $0x3, -0x48(%rbp)
movq %rbx, %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x3a002
cmpq $0x0, -0x98(%rbp)
je 0x2c685
leaq -0x130(%rbp), %rdi
movq %rbx, %rsi
callq 0x3a0aa
movq -0xd0(%rbp), %rdi
testq %rdi, %rdi
je 0x2b9aa
callq 0x5600c
movq %rbx, %rdi
callq 0x39dfe
incl %r15d
cmpl (%r13), %r15d
jb 0x2b962
callq 0x1f367
leaq 0x2fe6c(%rip), %r15     # 0x5b833
movq 0x58e9a(%rip), %rdx     # 0x84868
leaq 0x58e8b(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37fda(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58e5b(%rip)     # 0x84848
leaq 0x2fe53(%rip), %r12     # 0x5b847
movq %r12, 0x58e55(%rip)     # 0x84850
movq $0x131, 0x58e52(%rip) # imm = 0x131
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x56f9c(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2f48a(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2ba3d
movq 0x60(%rax), %rax
jmp 0x2ba3f
xorl %eax, %eax
movq %rax, -0xf8(%rbp)
movl $0x0, -0xf0(%rbp)
testq %rax, %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
leaq -0xf8(%rbp), %r14
movq %r14, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x56f17(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
leaq -0xf0(%rbp), %rdx
movq %rdx, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x138(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x131, %ecx            # imm = 0x131
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x34a66(%rip), %r10     # 0x60571
pushq %r10
pushq %rbx
leaq 0x2fe92(%rip), %r10     # 0x5b9a7
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
movl $0x4, -0x98(%rbp)
movq %r14, %rdi
leaq -0xd8(%rbp), %rsi
movq %rbx, %rdx
callq 0x3a002
callq 0x1f367
leaq -0xf0(%rbp), %r14
movq 0x58d0b(%rip), %rdx     # 0x84868
leaq 0x58cfc(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37e4b(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58ccc(%rip)     # 0x84848
movq %r12, 0x58ccd(%rip)     # 0x84850
movq $0x135, 0x58cca(%rip) # imm = 0x135
cmpq $0x0, -0xf8(%rbp)
sete -0x48(%rbp)
xorps %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
movups %xmm0, 0x8(%rdi)
leaq 0x2fe69(%rip), %rax     # 0x5ba15
movq %rax, -0x68(%rbp)
leaq 0x2fe64(%rip), %rax     # 0x5ba1b
movq %rax, -0x60(%rbp)
movb $0x0, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x56de1(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq %r15, -0x1e0(%rbp)
movq %r12, -0x1d8(%rbp)
subq $0x8, %rsp
movl $0x135, %ecx            # imm = 0x135
movq %rbx, %rsi
leaq -0x1e0(%rbp), %rdx
movl $0x2, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
pushq $0x0
callq 0x1b92f
addq $0x10, %rsp
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x58c36(%rip), %rdx     # 0x84868
leaq 0x58c27(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37d76(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58bf7(%rip)     # 0x84848
movq %r12, 0x58bf8(%rip)     # 0x84850
movq $0x138, 0x58bf5(%rip) # imm = 0x138
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x56d3f(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2f22d(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2bc9a
movq 0x60(%rax), %rdx
jmp 0x2bc9c
xorl %edx, %edx
testq %rax, %rax
je 0x2bca7
movq 0x68(%rax), %rcx
jmp 0x2bca9
xorl %ecx, %ecx
addq %rdx, %rcx
movq %rcx, -0xf0(%rbp)
testq %rax, %rax
je 0x2bcbe
movq 0x70(%rax), %rax
jmp 0x2bcc0
xorl %eax, %eax
movq %rax, -0x108(%rbp)
cmpq %rax, %rcx
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
movq %r14, -0x78(%rbp)
movl $0x0, %edx
movb %dl, -0x90(%rbp)
movq -0xe0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
leaq 0x56ca7(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rsi
movq %rsi, -0x80(%rbp)
leaq -0x108(%rbp), %rsi
movq %rsi, -0x70(%rbp)
movb %dl, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x138, %ecx            # imm = 0x138
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x2fba4(%rip), %r10     # 0x5b918
pushq %r10
pushq %rbx
leaq 0x2fb77(%rip), %r10     # 0x5b8f5
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x58ac5(%rip), %rdx     # 0x84868
leaq 0x58ab6(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37c05(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58a86(%rip)     # 0x84848
movq %r12, 0x58a87(%rip)     # 0x84850
movq $0x139, 0x58a84(%rip) # imm = 0x139
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x56bce(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2f0bc(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2be0b
movq 0x68(%rax), %rax
jmp 0x2be0d
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
movl (%r13), %ecx
cmpq %rcx, %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
movq %r14, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x56b56(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
movq %r13, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x148(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x139, %ecx            # imm = 0x139
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x2fbee(%rip), %r10     # 0x5bab3
pushq %r10
pushq %rbx
leaq 0x2fa39(%rip), %r10     # 0x5b908
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x58974(%rip), %rdx     # 0x84868
leaq 0x58965(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37ab4(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58935(%rip)     # 0x84848
movq %r12, 0x58936(%rip)     # 0x84850
movq $0x13a, 0x58933(%rip) # imm = 0x13A
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x56a7d(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2ef6b(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2bf5c
movq 0x70(%rax), %rax
jmp 0x2bf5e
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
movl (%r13), %ecx
cmpq %rcx, %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
movq %r14, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x56a05(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
movq %r13, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x148(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x13a, %ecx            # imm = 0x13A
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x2fa9d(%rip), %r10     # 0x5bab3
pushq %r10
pushq %rbx
leaq 0x2f8f8(%rip), %r10     # 0x5b918
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x58823(%rip), %rdx     # 0x84868
leaq 0x58814(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37963(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x587e4(%rip)     # 0x84848
movq %r12, 0x587e5(%rip)     # 0x84850
movq $0x13b, 0x587e2(%rip) # imm = 0x13B
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2c08f
movq 0x60(%rax), %rcx
cmpq 0x70(%rax), %rcx
setne %al
jmp 0x2c091
xorl %eax, %eax
movb %al, -0x48(%rbp)
xorps %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
movups %xmm0, 0x8(%rdi)
leaq 0x2f8c6(%rip), %rax     # 0x5b96c
movq %rax, -0x68(%rbp)
leaq 0x2f8c5(%rip), %rax     # 0x5b976
movq %rax, -0x60(%rbp)
movb $0x0, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x568e7(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq %r15, -0x1d0(%rbp)
movq %r12, -0x1c8(%rbp)
subq $0x8, %rsp
movl $0x13b, %ecx            # imm = 0x13B
movq %rbx, %rsi
leaq -0x1d0(%rbp), %rdx
movl $0x2, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
pushq $0x0
callq 0x1b92f
addq $0x10, %rsp
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x5873c(%rip), %rdx     # 0x84868
leaq 0x5872d(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x3787c(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x586fd(%rip)     # 0x84848
movq %r12, 0x586fe(%rip)     # 0x84850
movq $0x13c, 0x586fb(%rip) # imm = 0x13C
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2c185
addq $0x40, %rax
movl $0x1, %ecx
movq (%rax), %rax
decq %rcx
testq %rax, %rax
jne 0x2c172
testq %rcx, %rcx
setne %al
jmp 0x2c187
xorl %eax, %eax
movb %al, -0x48(%rbp)
xorps %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
movups %xmm0, 0x8(%rdi)
leaq 0x2f7f0(%rip), %rax     # 0x5b98c
movq %rax, -0x68(%rbp)
leaq 0x2f7ff(%rip), %rax     # 0x5b9a6
movq %rax, -0x60(%rbp)
movb $0x0, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x567f1(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq %r15, -0x1c0(%rbp)
movq %r12, -0x1b8(%rbp)
subq $0x8, %rsp
movl $0x13c, %ecx            # imm = 0x13C
movq %rbx, %rsi
leaq -0x1c0(%rbp), %rdx
movl $0x2, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
pushq $0x0
callq 0x1b92f
addq $0x10, %rsp
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
movq -0x130(%rbp), %r15
movq -0x128(%rbp), %r12
cmpq %r15, %r12
je 0x2c244
movq %r15, %r13
movq %r13, %rdi
callq 0x39dfe
addq $0x8, %r13
cmpq %r12, %r13
jne 0x2c22c
movq %r15, -0x128(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x39e4a
leaq 0x2f5dc(%rip), %r15     # 0x5b833
leaq 0x2f5e9(%rip), %r12     # 0x5b847
movq -0xd0(%rbp), %rdi
testq %rdi, %rdi
je 0x2c26f
callq 0x5600c
callq 0x1f367
movq 0x585ed(%rip), %rdx     # 0x84868
leaq 0x585de(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x3772d(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x585ae(%rip)     # 0x84848
movq %r12, 0x585af(%rip)     # 0x84850
movq $0x143, 0x585ac(%rip) # imm = 0x143
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x566f6(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2ebe4(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2c2e3
movq 0x68(%rax), %rax
jmp 0x2c2e5
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
movl $0x0, -0x108(%rbp)
testq %rax, %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
movq %r14, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x56678(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
leaq -0x108(%rbp), %rdx
movq %rdx, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x138(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x143, %ecx            # imm = 0x143
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x341c7(%rip), %r10     # 0x60571
pushq %r10
pushq %rbx
leaq 0x2f554(%rip), %r10     # 0x5b908
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x5848f(%rip), %rdx     # 0x84868
leaq 0x58480(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x375cf(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x58450(%rip)     # 0x84848
movq %r12, 0x58451(%rip)     # 0x84850
movq $0x144, 0x5844e(%rip) # imm = 0x144
movb $0x0, -0x60(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x56598(%rip), %rax     # 0x829b8
movq %rax, -0x58(%rbp)
leaq 0x2ea86(%rip), %rax     # 0x5aeb1
movq %rax, -0x50(%rbp)
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2c441
movq 0x70(%rax), %rax
jmp 0x2c443
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
movl $0x0, -0x108(%rbp)
testq %rax, %rax
sete -0xb8(%rbp)
leaq -0xa8(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%rax)
movq %r15, -0xc8(%rbp)
movq %r12, -0xc0(%rbp)
movq %r14, -0x78(%rbp)
movl $0x0, %ecx
movb %cl, -0x90(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x5651a(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x78(%rbp), %rdx
movq %rdx, -0x80(%rbp)
leaq -0x108(%rbp), %rdx
movq %rdx, -0x70(%rbp)
movb %cl, -0x40(%rbp)
movq -0x138(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
subq $0x8, %rsp
movl $0x144, %ecx            # imm = 0x144
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %r8d
movl $0x2, %r9d
xorl %eax, %eax
leaq -0x48(%rbp), %r10
pushq %r10
leaq 0x34069(%rip), %r10     # 0x60571
pushq %r10
pushq %rbx
leaq 0x2f406(%rip), %r10     # 0x5b918
pushq %r10
pushq $0x2
callq 0x1b92f
addq $0x30, %rsp
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
callq 0x1f367
movq 0x58331(%rip), %rdx     # 0x84868
leaq 0x58322(%rip), %rdi     # 0x84860
xorl %esi, %esi
leaq 0x37471(%rip), %rcx     # 0x639b8
xorl %r8d, %r8d
callq 0xf760
movq %r15, 0x582f2(%rip)     # 0x84848
movq %r12, 0x582f3(%rip)     # 0x84850
movq $0x145, 0x582f0(%rip) # imm = 0x145
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x2c581
movq 0x60(%rax), %rcx
cmpq 0x70(%rax), %rcx
sete %al
jmp 0x2c583
movb $0x1, %al
movb %al, -0x48(%rbp)
xorps %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
movups %xmm0, 0x8(%rdi)
leaq 0x2f3d5(%rip), %rax     # 0x5b96d
movq %rax, -0x68(%rbp)
leaq 0x2f3d3(%rip), %rax     # 0x5b976
movq %rax, -0x60(%rbp)
movb $0x0, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x563f5(%rip), %rax     # 0x829b8
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x80(%rbp)
movq %r15, -0x1b0(%rbp)
movq %r12, -0x1a8(%rbp)
subq $0x8, %rsp
movl $0x145, %ecx            # imm = 0x145
movq %rbx, %rsi
leaq -0x1b0(%rbp), %rdx
movl $0x2, %r8d
xorl %r9d, %r9d
xorl %eax, %eax
pushq $0x0
callq 0x1b92f
addq $0x10, %rsp
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
leaq -0xf8(%rbp), %rdi
callq 0x39dfe
leaq -0x130(%rbp), %r14
movq %r14, %rdi
callq 0x3a0e6
leaq -0xd8(%rbp), %rdi
callq 0x39fb4
movq -0x140(%rbp), %rcx
incq %rcx
movq %rcx, -0x140(%rbp)
cmpq $0x4, %rcx
jne 0x2b299
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2f3a9(%rip), %rdi     # 0x5ba16
leaq 0x2f1bf(%rip), %rsi     # 0x5b833
leaq 0x2f454(%rip), %rcx     # 0x5bacf
movl $0x11b, %edx            # imm = 0x11B
callq 0xf2f0
leaq 0x2f38a(%rip), %rdi     # 0x5ba16
leaq 0x2f1a0(%rip), %rsi     # 0x5b833
leaq 0x2f435(%rip), %rcx     # 0x5bacf
movl $0x12b, %edx            # imm = 0x12B
callq 0xf2f0
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
jmp 0x2c74d
jmp 0x2c776
jmp 0x2c6c8
jmp 0x2c6e9
jmp 0x2c79e
jmp 0x2c6c8
jmp 0x2c6d3
jmp 0x2c6d3
jmp 0x2c6d3
jmp 0x2c6c8
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
jmp 0x2c6dd
jmp 0x2c6d3
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
callq 0x3dd4c
jmp 0x2c795
jmp 0x2c6e9
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
jmp 0x2c785
movq %rax, %rbx
jmp 0x2c746
movq %rax, %rbx
jmp 0x2c734
movq %rax, %rbx
jmp 0x2c71c
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x2c71c
callq 0xf480
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x2c734
callq 0xf480
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x2c746
callq 0xf480
leaq -0xc8(%rbp), %rdi
callq 0x1f348
jmp 0x2c7cc
movq %rax, %rbx
movq -0x160(%rbp), %rax
testq %rax, %rax
je 0x2c7cc
leaq -0x170(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x2c7cc
movq %rax, %rdi
callq 0x3347e
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x3dd4c
jmp 0x2c7b4
jmp 0x2c79e
jmp 0x2c79e
jmp 0x2c79e
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
jmp 0x2c7af
movq %rax, %rbx
jmp 0x2c7b4
jmp 0x2c7a5
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
callq 0x39dfe
leaq -0x130(%rbp), %rdi
callq 0x3a0e6
leaq -0xd8(%rbp), %rdi
callq 0x39fb4
movq %rbx, %rdi
callq 0xf880