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

    struct {
        unsigned int initial_size;
    } testArray[] = {
        { 1 }, // force newline
        { 10 }, // force newline
        { 100000 }, // 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 */, 0 /* enlarge step */);
        std::vector<HDummyInt> helper_container;

        BOOST_REQUIRE(f.is_bounded());

        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();
        }

        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:
        //         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].initial_size);
        BOOST_REQUIRE_EQUAL(f.capacity(), testArray[testIdx].initial_size);
        BOOST_REQUIRE(!f.empty());
        BOOST_REQUIRE_EQUAL(f.enlarge_steps_done(), 1); // just the initial one

        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
subq $0x820, %rsp            # imm = 0x820
movq 0xed986(%rip), %rax     # 0x11f9e8
movq %rax, -0x650(%rbp)
leaq 0x92871(%rip), %rsi     # 0xc48e1
leaq -0x30(%rbp), %rdi
movq %rdi, -0x658(%rbp)
movl $0x14, %edx
callq 0x4cbe0
movq -0x658(%rbp), %rsi
leaq -0x20(%rbp), %rdi
movq %rdi, -0x648(%rbp)
movl $0xcd, %edx
callq 0x50ea0
movq -0x650(%rbp), %rdi
movq -0x648(%rbp), %rsi
callq 0x1d4c0
movq %rax, %rsi
leaq -0x1(%rbp), %rdi
movl $0x2, %edx
callq 0x1d630
callq 0x50f60
movq %rax, -0x640(%rbp)
jmp 0x320d3
movq -0x640(%rbp), %rsi
leaq 0x92985(%rip), %rdx     # 0xc4a66
leaq -0x50(%rbp), %rdi
callq 0x5e590
jmp 0x320ec
leaq -0x1(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1d670
jmp 0x320fb
leaq -0x50(%rbp), %rdi
callq 0x5e5d0
leaq -0x1(%rbp), %rdi
callq 0x28760
movq 0x900f0(%rip), %rax     # 0xc2204
movq %rax, -0x68(%rbp)
movl 0x900ee(%rip), %eax     # 0xc220c
movl %eax, -0x60(%rbp)
movl $0x0, -0x6c(%rbp)
movslq -0x6c(%rbp), %rax
cmpq $0x3, %rax
jae 0x3353e
movq 0xed8ab(%rip), %rax     # 0x11f9e8
movq %rax, -0x670(%rbp)
leaq 0x92796(%rip), %rsi     # 0xc48e1
leaq -0x98(%rbp), %rdi
movq %rdi, -0x678(%rbp)
movl $0x14, %edx
callq 0x4cbe0
movq -0x678(%rbp), %rsi
leaq -0x88(%rbp), %rdi
movq %rdi, -0x668(%rbp)
movl $0xd8, %edx
callq 0x50ea0
movq -0x670(%rbp), %rdi
movq -0x668(%rbp), %rsi
callq 0x1d4c0
movq %rax, %rsi
leaq -0x6d(%rbp), %rdi
movl $0x2, %edx
callq 0x1d630
callq 0x50f60
movq %rax, -0x660(%rbp)
jmp 0x321b4
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x680(%rbp)
callq 0x10ac0
movq -0x680(%rbp), %rdx
leaq 0x92765(%rip), %rsi     # 0xc493a
leaq -0xf8(%rbp), %rdi
callq 0x108c0
jmp 0x321e3
movl -0x6c(%rbp), %esi
leaq -0x120(%rbp), %rdi
callq 0x5d450
jmp 0x321f4
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x4ca60
jmp 0x32210
movq -0x660(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x5d410
jmp 0x3222c
leaq -0x6d(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1d670
jmp 0x3223e
leaq -0xb8(%rbp), %rdi
callq 0x5d570
leaq -0xd8(%rbp), %rdi
callq 0x10c38
leaq -0x120(%rbp), %rdi
callq 0x10c38
leaq -0xf8(%rbp), %rdi
callq 0x10c38
leaq -0xf9(%rbp), %rdi
callq 0x106b0
leaq -0x6d(%rbp), %rdi
callq 0x28760
movslq -0x6c(%rbp), %rax
movl -0x68(%rbp,%rax,4), %eax
movq %rax, -0x6a0(%rbp)
xorl %eax, %eax
movl %eax, -0x68c(%rbp)
movl %eax, %esi
movq %rsi, -0x698(%rbp)
leaq -0x150(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x5d590
movq -0x6a0(%rbp), %rsi
movq -0x698(%rbp), %rcx
movl -0x68c(%rbp), %r8d
movq -0x688(%rbp), %r9
leaq -0x130(%rbp), %rdi
movq %rcx, %rdx
callq 0x5d5d0
jmp 0x322e3
leaq -0x150(%rbp), %rdi
callq 0x5d6c0
leaq -0x168(%rbp), %rdi
callq 0x5e5f0
movq 0xed6e6(%rip), %rax     # 0x11f9e8
movq %rax, -0x6a8(%rbp)
leaq 0x925d1(%rip), %rsi     # 0xc48e1
leaq -0x178(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32323
leaq -0x188(%rbp), %rdi
callq 0x4ecc0
jmp 0x32331
movq -0x6a8(%rbp), %rdi
leaq -0x178(%rbp), %rsi
movl $0xdd, %edx
leaq -0x188(%rbp), %rcx
callq 0x294a0
jmp 0x32352
leaq -0x130(%rbp), %rdi
callq 0x5d6e0
movb %al, -0x6a9(%rbp)
jmp 0x32366
movb -0x6a9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x1a0(%rbp), %rdi
callq 0x56ea0
jmp 0x32380
callq 0x50f60
movq %rax, -0x6b8(%rbp)
jmp 0x3238e
leaq 0x925bc(%rip), %rsi     # 0xc4951
leaq -0x1d0(%rbp), %rdi
movl $0xe, %edx
callq 0x4cbe0
jmp 0x323a8
movq -0x6b8(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x5d730
jmp 0x323c4
leaq 0x92516(%rip), %rsi     # 0xc48e1
leaq -0x1e0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x323de
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
movl $0xdd, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x32415
leaq -0x1c0(%rbp), %rdi
callq 0x5d770
leaq -0x1a0(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x6b9(%rbp)
jmp 0x3243a
movb -0x6b9(%rbp), %al
testb $0x1, %al
jne 0x322fb
jmp 0x3244a
movl $0x0, -0x1e4(%rbp)
movl -0x1e4(%rbp), %eax
movslq -0x6c(%rbp), %rcx
cmpl -0x68(%rbp,%rcx,4), %eax
jae 0x32659
movl $0x3, -0x1f4(%rbp)
leaq -0x1f0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x1f4(%rbp), %rdx
callq 0x5e610
jmp 0x3248e
leaq -0x1f0(%rbp), %rdi
callq 0x5d910
testb $0x1, %al
jne 0x324a0
jmp 0x324a5
jmp 0x325f9
leaq 0x92618(%rip), %rdi     # 0xc4ac4
leaq 0x9242e(%rip), %rsi     # 0xc48e1
movl $0xe1, %edx
leaq 0x925e9(%rip), %rcx     # 0xc4aa8
callq 0x103d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x324e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5e5d0
leaq -0x1(%rbp), %rdi
callq 0x28760
jmp 0x33547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x32586
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3257a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3256e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x32562
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x32556
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x5d570
leaq -0xd8(%rbp), %rdi
callq 0x10c38
leaq -0x120(%rbp), %rdi
callq 0x10c38
leaq -0xf8(%rbp), %rdi
callq 0x10c38
leaq -0xf9(%rbp), %rdi
callq 0x106b0
leaq -0x6d(%rbp), %rdi
callq 0x28760
jmp 0x33547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x5d6c0
jmp 0x33547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x33524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x325e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x5d770
leaq -0x1a0(%rbp), %rdi
callq 0x56fc0
jmp 0x33524
leaq -0x168(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x5e720
jmp 0x3260e
leaq -0x130(%rbp), %rdi
callq 0x5d7a0
jmp 0x3261c
leaq -0x1f0(%rbp), %rdi
callq 0x5dc30
movl -0x1e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e4(%rbp)
jmp 0x32454
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x5dc30
jmp 0x33524
jmp 0x3265b
movq 0xed386(%rip), %rax     # 0x11f9e8
movq %rax, -0x6c8(%rbp)
leaq 0x92271(%rip), %rsi     # 0xc48e1
leaq -0x208(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32683
leaq -0x218(%rbp), %rdi
callq 0x4ecc0
jmp 0x32691
movq -0x6c8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
movl $0xe7, %edx
leaq -0x218(%rbp), %rcx
callq 0x294a0
jmp 0x326b2
callq 0x50f60
movq %rax, -0x6d0(%rbp)
jmp 0x326c0
movq -0x6d0(%rbp), %rsi
leaq 0x9187f(%rip), %rdx     # 0xc3f4d
leaq -0x240(%rbp), %rdi
callq 0x5dee0
jmp 0x326dc
leaq 0x921fe(%rip), %rsi     # 0xc48e1
leaq -0x250(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x326f6
leaq -0x130(%rbp), %rdi
callq 0x5df20
movq %rax, -0x6d8(%rbp)
jmp 0x3270b
movq -0x6d8(%rbp), %rax
movq %rax, -0x258(%rbp)
movl $0x0, -0x25c(%rbp)
leaq 0x970b8(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x25c(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x92312(%rip), %rcx     # 0xc4a55
movq %rcx, (%rax)
leaq -0x240(%rbp), %rdi
leaq -0x250(%rbp), %rsi
movl $0xe7, %edx
movl $0x2, %r8d
leaq -0x258(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x32770
leaq -0x240(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x6d9(%rbp)
jmp 0x32789
movb -0x6d9(%rbp), %al
testb $0x1, %al
jne 0x3265b
jmp 0x32799
movl $0x4, -0x26c(%rbp)
leaq -0x268(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x26c(%rbp), %rdx
callq 0x5e610
jmp 0x327bf
jmp 0x327c1
movq 0xed220(%rip), %rax     # 0x11f9e8
movq %rax, -0x6e8(%rbp)
leaq 0x9210b(%rip), %rsi     # 0xc48e1
leaq -0x280(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x327e9
leaq -0x290(%rbp), %rdi
callq 0x4ecc0
jmp 0x327f7
movq -0x6e8(%rbp), %rdi
leaq -0x280(%rbp), %rsi
movl $0xeb, %edx
leaq -0x290(%rbp), %rcx
callq 0x294a0
jmp 0x32818
leaq -0x268(%rbp), %rdi
callq 0x5e790
movzbl %al, %esi
leaq -0x2a8(%rbp), %rdi
callq 0x56ea0
jmp 0x32835
callq 0x50f60
movq %rax, -0x6f0(%rbp)
jmp 0x32843
leaq 0x92279(%rip), %rsi     # 0xc4ac3
leaq -0x2d8(%rbp), %rdi
movl $0x6, %edx
callq 0x4cbe0
jmp 0x3285d
movq -0x6f0(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
leaq -0x2d8(%rbp), %rdx
callq 0x5d730
jmp 0x32879
leaq 0x92061(%rip), %rsi     # 0xc48e1
leaq -0x2e8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32893
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x2a8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
leaq -0x2e8(%rbp), %rdx
movl $0xeb, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x328ca
leaq -0x2c8(%rbp), %rdi
callq 0x5d770
leaq -0x2a8(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x6f1(%rbp)
jmp 0x328ef
movb -0x6f1(%rbp), %al
testb $0x1, %al
jne 0x327c1
jmp 0x328ff
jmp 0x32901
movq 0xed0e0(%rip), %rax     # 0x11f9e8
movq %rax, -0x700(%rbp)
leaq 0x91fcb(%rip), %rsi     # 0xc48e1
leaq -0x2f8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32929
leaq -0x308(%rbp), %rdi
callq 0x4ecc0
jmp 0x32937
movq -0x700(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
movl $0xef, %edx
leaq -0x308(%rbp), %rcx
callq 0x294a0
jmp 0x32958
callq 0x50f60
movq %rax, -0x708(%rbp)
jmp 0x32966
movq -0x708(%rbp), %rsi
leaq 0x915d9(%rip), %rdx     # 0xc3f4d
leaq -0x330(%rbp), %rdi
callq 0x5dee0
jmp 0x32982
leaq 0x91f58(%rip), %rsi     # 0xc48e1
leaq -0x340(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3299c
leaq -0x130(%rbp), %rdi
callq 0x5df20
movq %rax, -0x710(%rbp)
jmp 0x329b1
leaq -0x130(%rbp), %rdi
callq 0x5df70
movq %rax, -0x718(%rbp)
jmp 0x329c6
movq -0x718(%rbp), %rcx
movq -0x710(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x348(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x720(%rbp)
jmp 0x329f3
movq -0x720(%rbp), %rax
movq %rax, -0x350(%rbp)
leaq 0x91fbe(%rip), %rcx     # 0xc49c6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x350(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x91f82(%rip), %rcx     # 0xc49a3
movq %rcx, (%rax)
leaq -0x330(%rbp), %rdi
leaq -0x340(%rbp), %rsi
movl $0xef, %edx
movl $0x2, %r8d
leaq -0x348(%rbp), %r9
movl %r8d, %ecx
callq 0x5dcc0
jmp 0x32a4e
leaq -0x330(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x721(%rbp)
jmp 0x32a67
movb -0x721(%rbp), %al
testb $0x1, %al
jne 0x32901
jmp 0x32a77
jmp 0x32a79
movq 0xecf68(%rip), %rax     # 0x11f9e8
movq %rax, -0x730(%rbp)
leaq 0x91e53(%rip), %rsi     # 0xc48e1
leaq -0x360(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32aa1
leaq -0x370(%rbp), %rdi
callq 0x4ecc0
jmp 0x32aaf
movq -0x730(%rbp), %rdi
leaq -0x360(%rbp), %rsi
movl $0xf0, %edx
leaq -0x370(%rbp), %rcx
callq 0x294a0
jmp 0x32ad0
callq 0x50f60
movq %rax, -0x738(%rbp)
jmp 0x32ade
movq -0x738(%rbp), %rsi
leaq 0x91461(%rip), %rdx     # 0xc3f4d
leaq -0x398(%rbp), %rdi
callq 0x5dee0
jmp 0x32afa
leaq 0x91de0(%rip), %rsi     # 0xc48e1
leaq -0x3a8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32b14
leaq -0x130(%rbp), %rdi
callq 0x5df70
movq %rax, -0x740(%rbp)
jmp 0x32b29
movq -0x740(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movslq -0x6c(%rbp), %rax
leaq -0x68(%rbp,%rax,4), %rcx
leaq 0x91f83(%rip), %rdx     # 0xc4aca
movq %rsp, %rax
movq %rdx, 0x10(%rax)
movq %rcx, 0x8(%rax)
leaq 0x91e5d(%rip), %rcx     # 0xc49b6
movq %rcx, (%rax)
leaq -0x398(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
movl $0xf0, %edx
movl $0x2, %r8d
leaq -0x3b0(%rbp), %r9
movl %r8d, %ecx
callq 0x5e7b0
jmp 0x32b86
leaq -0x398(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x741(%rbp)
jmp 0x32b9f
movb -0x741(%rbp), %al
testb $0x1, %al
jne 0x32a79
jmp 0x32baf
jmp 0x32bb1
movq 0xece30(%rip), %rax     # 0x11f9e8
movq %rax, -0x750(%rbp)
leaq 0x91d1b(%rip), %rsi     # 0xc48e1
leaq -0x3c0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32bd9
leaq -0x3d0(%rbp), %rdi
callq 0x4ecc0
jmp 0x32be7
movq -0x750(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
movl $0xf1, %edx
leaq -0x3d0(%rbp), %rcx
callq 0x294a0
jmp 0x32c08
callq 0x50f60
movq %rax, -0x758(%rbp)
jmp 0x32c16
movq -0x758(%rbp), %rsi
leaq 0x91329(%rip), %rdx     # 0xc3f4d
leaq -0x3f8(%rbp), %rdi
callq 0x5dee0
jmp 0x32c32
leaq 0x91ca8(%rip), %rsi     # 0xc48e1
leaq -0x408(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32c4c
leaq -0x130(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x760(%rbp)
jmp 0x32c61
movq -0x760(%rbp), %rax
movq %rax, -0x410(%rbp)
movslq -0x6c(%rbp), %rax
leaq -0x68(%rbp,%rax,4), %rcx
leaq 0x91e4b(%rip), %rdx     # 0xc4aca
movq %rsp, %rax
movq %rdx, 0x10(%rax)
movq %rcx, 0x8(%rax)
leaq 0x91d35(%rip), %rcx     # 0xc49c6
movq %rcx, (%rax)
leaq -0x3f8(%rbp), %rdi
leaq -0x408(%rbp), %rsi
movl $0xf1, %edx
movl $0x2, %r8d
leaq -0x410(%rbp), %r9
movl %r8d, %ecx
callq 0x5e7b0
jmp 0x32cbe
leaq -0x3f8(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x761(%rbp)
jmp 0x32cd7
movb -0x761(%rbp), %al
testb $0x1, %al
jne 0x32bb1
jmp 0x32ce7
jmp 0x32ce9
movq 0xeccf8(%rip), %rax     # 0x11f9e8
movq %rax, -0x770(%rbp)
leaq 0x91be3(%rip), %rsi     # 0xc48e1
leaq -0x420(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32d11
leaq -0x430(%rbp), %rdi
callq 0x4ecc0
jmp 0x32d1f
movq -0x770(%rbp), %rdi
leaq -0x420(%rbp), %rsi
movl $0xf2, %edx
leaq -0x430(%rbp), %rcx
callq 0x294a0
jmp 0x32d40
leaq -0x130(%rbp), %rdi
callq 0x5e030
movb %al, -0x771(%rbp)
jmp 0x32d54
movb -0x771(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x448(%rbp), %rdi
callq 0x56ea0
jmp 0x32d70
callq 0x50f60
movq %rax, -0x780(%rbp)
jmp 0x32d7e
leaq 0x91c95(%rip), %rsi     # 0xc4a1a
leaq -0x478(%rbp), %rdi
movl $0xa, %edx
callq 0x4cbe0
jmp 0x32d98
movq -0x780(%rbp), %rsi
leaq -0x468(%rbp), %rdi
leaq -0x478(%rbp), %rdx
callq 0x5d730
jmp 0x32db4
leaq 0x91b26(%rip), %rsi     # 0xc48e1
leaq -0x488(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32dce
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x448(%rbp), %rdi
leaq -0x468(%rbp), %rsi
leaq -0x488(%rbp), %rdx
movl $0xf2, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x32e05
leaq -0x468(%rbp), %rdi
callq 0x5d770
leaq -0x448(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x781(%rbp)
jmp 0x32e2a
movb -0x781(%rbp), %al
testb $0x1, %al
jne 0x32ce9
jmp 0x32e3a
jmp 0x32e3c
movq 0xecba5(%rip), %rax     # 0x11f9e8
movq %rax, -0x790(%rbp)
leaq 0x91a90(%rip), %rsi     # 0xc48e1
leaq -0x498(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32e64
leaq -0x4a8(%rbp), %rdi
callq 0x4ecc0
jmp 0x32e72
movq -0x790(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl $0xf3, %edx
leaq -0x4a8(%rbp), %rcx
callq 0x294a0
jmp 0x32e93
callq 0x50f60
movq %rax, -0x798(%rbp)
jmp 0x32ea1
movq -0x798(%rbp), %rsi
leaq 0x9109e(%rip), %rdx     # 0xc3f4d
leaq -0x4d0(%rbp), %rdi
callq 0x5dee0
jmp 0x32ebd
leaq 0x91a1d(%rip), %rsi     # 0xc48e1
leaq -0x4e0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32ed7
leaq -0x130(%rbp), %rdi
callq 0x5e080
movq %rax, -0x7a0(%rbp)
jmp 0x32eec
movq -0x7a0(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movl $0x1, -0x4ec(%rbp)
leaq 0x91cc7(%rip), %rcx     # 0xc4bd2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x4ec(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x91bc6(%rip), %rcx     # 0xc4aea
movq %rcx, (%rax)
leaq -0x4d0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
movl $0xf3, %edx
movl $0x2, %r8d
leaq -0x4e8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x32f51
leaq -0x4d0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x7a1(%rbp)
jmp 0x32f6a
movb -0x7a1(%rbp), %al
testb $0x1, %al
jne 0x32e3c
jmp 0x32f7a
leaq -0x168(%rbp), %rdi
callq 0x5e9d0
leaq -0x130(%rbp), %rdi
callq 0x5e0f0
jmp 0x32f94
leaq -0x130(%rbp), %rdi
callq 0x5d7a0
jmp 0x32fa2
jmp 0x32fa4
movq 0xeca3d(%rip), %rax     # 0x11f9e8
movq %rax, -0x7b0(%rbp)
leaq 0x91928(%rip), %rsi     # 0xc48e1
leaq -0x500(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x32fcc
leaq -0x510(%rbp), %rdi
callq 0x4ecc0
jmp 0x32fda
movq -0x7b0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
movl $0xfa, %edx
leaq -0x510(%rbp), %rcx
callq 0x294a0
jmp 0x32ffb
callq 0x50f60
movq %rax, -0x7b8(%rbp)
jmp 0x33009
movq -0x7b8(%rbp), %rsi
leaq 0x90f36(%rip), %rdx     # 0xc3f4d
leaq -0x538(%rbp), %rdi
callq 0x5dee0
jmp 0x33025
leaq 0x918b5(%rip), %rsi     # 0xc48e1
leaq -0x548(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3303f
leaq -0x130(%rbp), %rdi
callq 0x5df70
movq %rax, -0x7c0(%rbp)
jmp 0x33054
movq -0x7c0(%rbp), %rax
movq %rax, -0x550(%rbp)
movl $0x0, -0x554(%rbp)
leaq 0x9676f(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x554(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x9192a(%rip), %rcx     # 0xc49b6
movq %rcx, (%rax)
leaq -0x538(%rbp), %rdi
leaq -0x548(%rbp), %rsi
movl $0xfa, %edx
movl $0x2, %r8d
leaq -0x550(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x330b9
leaq -0x538(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x7c1(%rbp)
jmp 0x330d2
movb -0x7c1(%rbp), %al
testb $0x1, %al
jne 0x32fa4
jmp 0x330e2
jmp 0x330e4
movq 0xec8fd(%rip), %rax     # 0x11f9e8
movq %rax, -0x7d0(%rbp)
leaq 0x917e8(%rip), %rsi     # 0xc48e1
leaq -0x568(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3310c
leaq -0x578(%rbp), %rdi
callq 0x4ecc0
jmp 0x3311a
movq -0x7d0(%rbp), %rdi
leaq -0x568(%rbp), %rsi
movl $0xfb, %edx
leaq -0x578(%rbp), %rcx
callq 0x294a0
jmp 0x3313b
callq 0x50f60
movq %rax, -0x7d8(%rbp)
jmp 0x33149
movq -0x7d8(%rbp), %rsi
leaq 0x90df6(%rip), %rdx     # 0xc3f4d
leaq -0x5a0(%rbp), %rdi
callq 0x5dee0
jmp 0x33165
leaq 0x91775(%rip), %rsi     # 0xc48e1
leaq -0x5b0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3317f
leaq -0x130(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x7e0(%rbp)
jmp 0x33194
movq -0x7e0(%rbp), %rax
movq %rax, -0x5b8(%rbp)
movl $0x0, -0x5bc(%rbp)
leaq 0x9662f(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x5bc(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x917fa(%rip), %rcx     # 0xc49c6
movq %rcx, (%rax)
leaq -0x5a0(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
movl $0xfb, %edx
movl $0x2, %r8d
leaq -0x5b8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x331f9
leaq -0x5a0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x7e1(%rbp)
jmp 0x33212
movb -0x7e1(%rbp), %al
testb $0x1, %al
jne 0x330e4
jmp 0x33222
jmp 0x33224
movq 0xec7bd(%rip), %rax     # 0x11f9e8
movq %rax, -0x7f0(%rbp)
leaq 0x916a8(%rip), %rsi     # 0xc48e1
leaq -0x5d0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3324c
leaq -0x5e0(%rbp), %rdi
callq 0x4ecc0
jmp 0x3325a
movq -0x7f0(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
movl $0xfc, %edx
leaq -0x5e0(%rbp), %rcx
callq 0x294a0
jmp 0x3327b
leaq -0x130(%rbp), %rdi
callq 0x5e030
movb %al, -0x7f1(%rbp)
jmp 0x3328f
movb -0x7f1(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x5f8(%rbp), %rdi
callq 0x56ea0
jmp 0x332a9
callq 0x50f60
movq %rax, -0x800(%rbp)
jmp 0x332b7
leaq 0x9175d(%rip), %rsi     # 0xc4a1b
leaq -0x628(%rbp), %rdi
movl $0x9, %edx
callq 0x4cbe0
jmp 0x332d1
movq -0x800(%rbp), %rsi
leaq -0x618(%rbp), %rdi
leaq -0x628(%rbp), %rdx
callq 0x5d730
jmp 0x332ed
leaq 0x915ed(%rip), %rsi     # 0xc48e1
leaq -0x638(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x33307
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
leaq -0x638(%rbp), %rdx
movl $0xfc, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x3333e
leaq -0x618(%rbp), %rdi
callq 0x5d770
leaq -0x5f8(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x801(%rbp)
jmp 0x33363
movb -0x801(%rbp), %al
testb $0x1, %al
jne 0x33224
jmp 0x33373
leaq -0x268(%rbp), %rdi
callq 0x5dc30
leaq -0x168(%rbp), %rdi
callq 0x5e9f0
leaq -0x130(%rbp), %rdi
callq 0x5e520
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x32128
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x5e010
jmp 0x33524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x333f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x5d770
leaq -0x2a8(%rbp), %rdi
callq 0x56fc0
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x33487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x5d770
leaq -0x448(%rbp), %rdi
callq 0x56fc0
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0x5e010
jmp 0x33518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3350c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x5d770
leaq -0x5f8(%rbp), %rdi
callq 0x56fc0
leaq -0x268(%rbp), %rdi
callq 0x5dc30
leaq -0x168(%rbp), %rdi
callq 0x5e9f0
leaq -0x130(%rbp), %rdi
callq 0x5e520
jmp 0x33547
addq $0x820, %rsp            # imm = 0x820
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0x10aa0