// File: 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
subq $0xa30, %rsp            # imm = 0xA30
movq 0xef476(%rip), %rax     # 0x11f9e8
movq %rax, -0x7f8(%rbp)
leaq 0x94361(%rip), %rsi     # 0xc48e1
leaq -0x30(%rbp), %rdi
movq %rdi, -0x800(%rbp)
movl $0x14, %edx
callq 0x4cbe0
movq -0x800(%rbp), %rsi
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7f0(%rbp)
movl $0x73, %edx
callq 0x50ea0
movq -0x7f8(%rbp), %rdi
movq -0x7f0(%rbp), %rsi
callq 0x1d4c0
movq %rax, %rsi
leaq -0x1(%rbp), %rdi
movl $0x2, %edx
callq 0x1d630
callq 0x50f60
movq %rax, -0x7e8(%rbp)
jmp 0x305e3
movq -0x7e8(%rbp), %rsi
leaq 0x94305(%rip), %rdx     # 0xc48f6
leaq -0x50(%rbp), %rdi
callq 0x5d3b0
jmp 0x305fc
leaq -0x1(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1d670
jmp 0x3060b
leaq -0x50(%rbp), %rdi
callq 0x5d3f0
leaq -0x1(%rbp), %rdi
callq 0x28760
leaq -0x80(%rbp), %rdi
leaq 0x91bb8(%rip), %rsi     # 0xc21e0
movl $0x24, %edx
callq 0x104f0
movl $0x0, -0x84(%rbp)
movslq -0x84(%rbp), %rax
cmpq $0x3, %rax
jae 0x3203c
movq 0xef394(%rip), %rax     # 0x11f9e8
movq %rax, -0x818(%rbp)
leaq 0x9427f(%rip), %rsi     # 0xc48e1
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x820(%rbp)
movl $0x14, %edx
callq 0x4cbe0
movq -0x820(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x810(%rbp)
movl $0x80, %edx
callq 0x50ea0
movq -0x818(%rbp), %rdi
movq -0x810(%rbp), %rsi
callq 0x1d4c0
movq %rax, %rsi
leaq -0x85(%rbp), %rdi
movl $0x2, %edx
callq 0x1d630
callq 0x50f60
movq %rax, -0x808(%rbp)
jmp 0x306ce
leaq -0x111(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x10ac0
movq -0x828(%rbp), %rdx
leaq 0x9424b(%rip), %rsi     # 0xc493a
leaq -0x110(%rbp), %rdi
callq 0x108c0
jmp 0x306fd
movl -0x84(%rbp), %esi
leaq -0x138(%rbp), %rdi
callq 0x5d450
jmp 0x30711
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0x4ca60
jmp 0x3072d
movq -0x808(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rdx
callq 0x5d410
jmp 0x30749
leaq -0x85(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x1d670
jmp 0x3075e
leaq -0xd0(%rbp), %rdi
callq 0x5d570
leaq -0xf0(%rbp), %rdi
callq 0x10c38
leaq -0x138(%rbp), %rdi
callq 0x10c38
leaq -0x110(%rbp), %rdi
callq 0x10c38
leaq -0x111(%rbp), %rdi
callq 0x106b0
leaq -0x85(%rbp), %rdi
callq 0x28760
movslq -0x84(%rbp), %rax
leaq (%rax,%rax,2), %rax
movl -0x80(%rbp,%rax,4), %ecx
movl -0x7c(%rbp,%rax,4), %eax
movq %rcx, -0x850(%rbp)
movq %rax, -0x848(%rbp)
xorl %eax, %eax
movl %eax, -0x834(%rbp)
movl %eax, %esi
movq %rsi, -0x840(%rbp)
leaq -0x168(%rbp), %rdi
movq %rdi, -0x830(%rbp)
callq 0x5d590
movq -0x850(%rbp), %rsi
movq -0x848(%rbp), %rdx
movq -0x840(%rbp), %rcx
movl -0x834(%rbp), %r8d
movq -0x830(%rbp), %r9
leaq -0x148(%rbp), %rdi
callq 0x5d5d0
jmp 0x3081c
leaq -0x168(%rbp), %rdi
callq 0x5d6c0
movq 0xef1b9(%rip), %rax     # 0x11f9e8
movq %rax, -0x858(%rbp)
leaq 0x940a4(%rip), %rsi     # 0xc48e1
leaq -0x178(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x30850
leaq -0x188(%rbp), %rdi
callq 0x4ecc0
jmp 0x3085e
movq -0x858(%rbp), %rdi
leaq -0x178(%rbp), %rsi
movl $0x85, %edx
leaq -0x188(%rbp), %rcx
callq 0x294a0
jmp 0x3087f
leaq -0x148(%rbp), %rdi
callq 0x5d6e0
movb %al, -0x859(%rbp)
jmp 0x30893
movb -0x859(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x1a0(%rbp), %rdi
callq 0x56ea0
jmp 0x308af
callq 0x50f60
movq %rax, -0x868(%rbp)
jmp 0x308bd
leaq 0x9408c(%rip), %rsi     # 0xc4950
leaq -0x1d0(%rbp), %rdi
movl $0xf, %edx
callq 0x4cbe0
jmp 0x308d7
movq -0x868(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x5d730
jmp 0x308f3
leaq 0x93fe7(%rip), %rsi     # 0xc48e1
leaq -0x1e0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3090d
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 $0x85, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x30944
leaq -0x1c0(%rbp), %rdi
callq 0x5d770
leaq -0x1a0(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x869(%rbp)
jmp 0x30969
movb -0x869(%rbp), %al
testb $0x1, %al
jne 0x30828
jmp 0x30979
leaq -0x148(%rbp), %rdi
callq 0x5d7a0
jmp 0x30987
movq $0x0, -0x1e8(%rbp)
movq $0x0, -0x1f0(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x5d7e0
movl $0x0, -0x224(%rbp)
movl -0x224(%rbp), %eax
movslq -0x84(%rbp), %rdx
leaq -0x80(%rbp), %rcx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jae 0x30d83
leaq -0x230(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x224(%rbp), %rdx
callq 0x5d800
jmp 0x309f0
leaq -0x230(%rbp), %rdi
callq 0x5d910
testb $0x1, %al
jne 0x30a02
jmp 0x30a07
jmp 0x30b6f
leaq 0x940b6(%rip), %rdi     # 0xc4ac4
leaq 0x93ecc(%rip), %rsi     # 0xc48e1
movl $0x8c, %edx
leaq 0x93f3f(%rip), %rcx     # 0xc4960
callq 0x103d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x5d3f0
leaq -0x1(%rbp), %rdi
callq 0x28760
jmp 0x32045
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30ae8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30adc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30ad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30ac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30ab8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5d570
leaq -0xf0(%rbp), %rdi
callq 0x10c38
leaq -0x138(%rbp), %rdi
callq 0x10c38
leaq -0x110(%rbp), %rdi
callq 0x10c38
leaq -0x111(%rbp), %rdi
callq 0x106b0
leaq -0x85(%rbp), %rdi
callq 0x28760
jmp 0x32045
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x5d6c0
jmp 0x32045
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3202e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30b4d
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 0x3202e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x32022
leaq -0x148(%rbp), %rdi
callq 0x5d7a0
jmp 0x30b7d
movl -0x224(%rbp), %esi
leaq -0x258(%rbp), %rdi
callq 0x5d930
jmp 0x30b91
leaq -0x230(%rbp), %rdi
callq 0x5d970
movq %rax, %rdi
leaq -0x258(%rbp), %rsi
callq 0x5d9c0
jmp 0x30bae
leaq -0x258(%rbp), %rdi
callq 0x5da00
movl -0x224(%rbp), %eax
movl %eax, -0x25c(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x25c(%rbp), %rsi
callq 0x5da20
movq %rax, -0x878(%rbp)
jmp 0x30be2
movq -0x878(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x5db00
jmp 0x30bf7
movl -0x224(%rbp), %eax
movl $0x7, %ecx
xorl %edx, %edx
divl %ecx
cmpl $0x0, %edx
je 0x30c37
movl -0x224(%rbp), %eax
movl $0x35, %ecx
xorl %edx, %edx
divl %ecx
cmpl $0x0, %edx
je 0x30c37
movl -0x224(%rbp), %eax
movl $0x3039, %ecx           # imm = 0x3039
xorl %edx, %edx
divl %ecx
cmpl $0x0, %edx
jne 0x30d12
movl -0x224(%rbp), %eax
movl $0xcccccccd, %ecx       # imm = 0xCCCCCCCD
imulq %rcx, %rax
shrq $0x23, %rax
movq %rax, -0x268(%rbp)
movl -0x268(%rbp), %eax
movl %eax, -0x274(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x274(%rbp), %rsi
callq 0x5db50
movq %rax, -0x880(%rbp)
jmp 0x30c79
movq -0x880(%rbp), %rax
movq %rax, -0x270(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x5dbb0
movq %rax, -0x280(%rbp)
leaq -0x270(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x5db80
testb $0x1, %al
jne 0x30cb3
jmp 0x30d10
movl -0x268(%rbp), %eax
movl %eax, -0x284(%rbp)
leaq -0x220(%rbp), %rdi
leaq -0x284(%rbp), %rsi
callq 0x5dbe0
jmp 0x30cd4
movq -0x1e8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e8(%rbp)
jmp 0x30d10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x30d72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x5da00
jmp 0x30d72
jmp 0x30d12
leaq -0x220(%rbp), %rdi
callq 0x5dc10
movq %rax, -0x290(%rbp)
leaq -0x1f0(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x588b0
movq %rax, -0x888(%rbp)
jmp 0x30d41
movq -0x888(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x5dc30
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x309b3
leaq -0x230(%rbp), %rdi
callq 0x5dc30
jmp 0x32022
leaq -0x148(%rbp), %rdi
callq 0x5d7a0
jmp 0x30d91
jmp 0x30d93
movq 0xeec4e(%rip), %rax     # 0x11f9e8
movq %rax, -0x890(%rbp)
leaq 0x93b39(%rip), %rsi     # 0xc48e1
leaq -0x2a0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x30dbb
leaq -0x2b0(%rbp), %rdi
callq 0x4ecc0
jmp 0x30dc9
movq -0x890(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
movl $0xa4, %edx
leaq -0x2b0(%rbp), %rcx
callq 0x294a0
jmp 0x30dea
leaq -0x148(%rbp), %rdi
callq 0x5dc70
movb %al, -0x891(%rbp)
jmp 0x30dfe
movb -0x891(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x2c8(%rbp), %rdi
callq 0x56ea0
jmp 0x30e1a
callq 0x50f60
movq %rax, -0x8a0(%rbp)
jmp 0x30e28
leaq 0x93b4d(%rip), %rsi     # 0xc497c
leaq -0x2f8(%rbp), %rdi
movl $0x18, %edx
callq 0x4cbe0
jmp 0x30e42
movq -0x8a0(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
leaq -0x2f8(%rbp), %rdx
callq 0x5d730
jmp 0x30e5e
leaq 0x93a7c(%rip), %rsi     # 0xc48e1
leaq -0x308(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x30e78
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x2c8(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
leaq -0x308(%rbp), %rdx
movl $0xa4, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x30eaf
leaq -0x2e8(%rbp), %rdi
callq 0x5d770
leaq -0x2c8(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x8a1(%rbp)
jmp 0x30ed4
movb -0x8a1(%rbp), %al
testb $0x1, %al
jne 0x30d93
jmp 0x30ee4
jmp 0x30ee6
movq 0xeeafb(%rip), %rax     # 0x11f9e8
movq %rax, -0x8b0(%rbp)
leaq 0x939e6(%rip), %rsi     # 0xc48e1
leaq -0x318(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x30f0e
leaq -0x328(%rbp), %rdi
callq 0x4ecc0
jmp 0x30f1c
movq -0x8b0(%rbp), %rdi
leaq -0x318(%rbp), %rsi
movl $0xa5, %edx
leaq -0x328(%rbp), %rcx
callq 0x294a0
jmp 0x30f3d
movq -0x1e8(%rbp), %rax
testq %rax, %rax
setne %al
movzbl %al, %esi
leaq -0x340(%rbp), %rdi
callq 0x56ea0
jmp 0x30f5b
callq 0x50f60
movq %rax, -0x8b8(%rbp)
jmp 0x30f69
leaq 0x93a25(%rip), %rsi     # 0xc4995
leaq -0x370(%rbp), %rdi
movl $0xd, %edx
callq 0x4cbe0
jmp 0x30f83
movq -0x8b8(%rbp), %rsi
leaq -0x360(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x5d730
jmp 0x30f9f
leaq 0x9393b(%rip), %rsi     # 0xc48e1
leaq -0x380(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x30fb9
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rsi
leaq -0x380(%rbp), %rdx
movl $0xa5, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x30ff0
leaq -0x360(%rbp), %rdi
callq 0x5d770
leaq -0x340(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x8b9(%rbp)
jmp 0x31015
movb -0x8b9(%rbp), %al
testb $0x1, %al
jne 0x30ee6
jmp 0x31025
jmp 0x31027
movq 0xee9ba(%rip), %rax     # 0x11f9e8
movq %rax, -0x8c8(%rbp)
leaq 0x938a5(%rip), %rsi     # 0xc48e1
leaq -0x390(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3104f
leaq -0x3a0(%rbp), %rdi
callq 0x4ecc0
jmp 0x3105d
movq -0x8c8(%rbp), %rdi
leaq -0x390(%rbp), %rsi
movl $0xa9, %edx
leaq -0x3a0(%rbp), %rcx
callq 0x294a0
jmp 0x3107e
callq 0x50f60
movq %rax, -0x8d0(%rbp)
jmp 0x3108c
movq -0x8d0(%rbp), %rsi
leaq 0x92eb3(%rip), %rdx     # 0xc3f4d
leaq -0x3c8(%rbp), %rdi
callq 0x5dee0
jmp 0x310a8
leaq 0x93832(%rip), %rsi     # 0xc48e1
leaq -0x3d8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x310c2
leaq -0x148(%rbp), %rdi
callq 0x5df20
movq %rax, -0x8d8(%rbp)
jmp 0x310d7
leaq -0x148(%rbp), %rdi
callq 0x5df70
movq %rax, -0x8e0(%rbp)
jmp 0x310ec
movq -0x8e0(%rbp), %rcx
movq -0x8d8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x3e0(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x8e8(%rbp)
jmp 0x31119
movq -0x8e8(%rbp), %rax
movq %rax, -0x3e8(%rbp)
leaq 0x93898(%rip), %rcx     # 0xc49c6
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x3e8(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x9385c(%rip), %rcx     # 0xc49a3
movq %rcx, (%rax)
leaq -0x3c8(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
movl $0xa9, %edx
movl $0x2, %r8d
leaq -0x3e0(%rbp), %r9
movl %r8d, %ecx
callq 0x5dcc0
jmp 0x31174
leaq -0x3c8(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x8e9(%rbp)
jmp 0x3118d
movb -0x8e9(%rbp), %al
testb $0x1, %al
jne 0x31027
jmp 0x3119d
jmp 0x3119f
movq 0xee842(%rip), %rax     # 0x11f9e8
movq %rax, -0x8f8(%rbp)
leaq 0x9372d(%rip), %rsi     # 0xc48e1
leaq -0x3f8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x311c7
leaq -0x408(%rbp), %rdi
callq 0x4ecc0
jmp 0x311d5
movq -0x8f8(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
movl $0xab, %edx
leaq -0x408(%rbp), %rcx
callq 0x294a0
jmp 0x311f6
callq 0x50f60
movq %rax, -0x900(%rbp)
jmp 0x31204
movq -0x900(%rbp), %rsi
leaq 0x92d3b(%rip), %rdx     # 0xc3f4d
leaq -0x430(%rbp), %rdi
callq 0x5dee0
jmp 0x31220
leaq 0x936ba(%rip), %rsi     # 0xc48e1
leaq -0x440(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3123a
leaq -0x148(%rbp), %rdi
callq 0x5df70
movq %rax, -0x908(%rbp)
jmp 0x3124f
movq -0x908(%rbp), %rax
movq %rax, -0x448(%rbp)
movslq -0x84(%rbp), %rax
leaq (%rax,%rax,2), %rax
movl -0x78(%rbp,%rax,4), %eax
movq -0x1e8(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x450(%rbp)
leaq 0x9374f(%rip), %rcx     # 0xc49d3
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x450(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x93719(%rip), %rcx     # 0xc49b6
movq %rcx, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x440(%rbp), %rsi
movl $0xab, %edx
movl $0x2, %r8d
leaq -0x448(%rbp), %r9
movl %r8d, %ecx
callq 0x5dcc0
jmp 0x312ca
leaq -0x430(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x909(%rbp)
jmp 0x312e3
movb -0x909(%rbp), %al
testb $0x1, %al
jne 0x3119f
jmp 0x312f3
jmp 0x312f5
movq 0xee6ec(%rip), %rax     # 0x11f9e8
movq %rax, -0x918(%rbp)
leaq 0x935d7(%rip), %rsi     # 0xc48e1
leaq -0x460(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3131d
leaq -0x470(%rbp), %rdi
callq 0x4ecc0
jmp 0x3132b
movq -0x918(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0xac, %edx
leaq -0x470(%rbp), %rcx
callq 0x294a0
jmp 0x3134c
leaq -0x148(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x920(%rbp)
jmp 0x31361
movq -0x920(%rbp), %rax
movq -0x1f0(%rbp), %rcx
subq %rcx, %rax
setae %al
movzbl %al, %esi
leaq -0x488(%rbp), %rdi
callq 0x56ea0
jmp 0x31386
callq 0x50f60
movq %rax, -0x928(%rbp)
jmp 0x31394
leaq 0x93664(%rip), %rsi     # 0xc49ff
leaq -0x4b8(%rbp), %rdi
movl $0x1a, %edx
callq 0x4cbe0
jmp 0x313ae
movq -0x928(%rbp), %rsi
leaq -0x4a8(%rbp), %rdi
leaq -0x4b8(%rbp), %rdx
callq 0x5d730
jmp 0x313ca
leaq 0x93510(%rip), %rsi     # 0xc48e1
leaq -0x4c8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x313e4
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x4c8(%rbp), %rdx
movl $0xac, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x3141b
leaq -0x4a8(%rbp), %rdi
callq 0x5d770
leaq -0x488(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x929(%rbp)
jmp 0x31440
movb -0x929(%rbp), %al
testb $0x1, %al
jne 0x312f5
jmp 0x31450
jmp 0x31452
movq 0xee58f(%rip), %rax     # 0x11f9e8
movq %rax, -0x938(%rbp)
leaq 0x9347a(%rip), %rsi     # 0xc48e1
leaq -0x4d8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3147a
leaq -0x4e8(%rbp), %rdi
callq 0x4ecc0
jmp 0x31488
movq -0x938(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
movl $0xad, %edx
leaq -0x4e8(%rbp), %rcx
callq 0x294a0
jmp 0x314a9
leaq -0x148(%rbp), %rdi
callq 0x5e030
movb %al, -0x939(%rbp)
jmp 0x314bd
movb -0x939(%rbp), %al
notb %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x500(%rbp), %rdi
callq 0x56ea0
jmp 0x314d9
callq 0x50f60
movq %rax, -0x948(%rbp)
jmp 0x314e7
leaq 0x9352c(%rip), %rsi     # 0xc4a1a
leaq -0x530(%rbp), %rdi
movl $0xa, %edx
callq 0x4cbe0
jmp 0x31501
movq -0x948(%rbp), %rsi
leaq -0x520(%rbp), %rdi
leaq -0x530(%rbp), %rdx
callq 0x5d730
jmp 0x3151d
leaq 0x933bd(%rip), %rsi     # 0xc48e1
leaq -0x540(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31537
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
leaq -0x540(%rbp), %rdx
movl $0xad, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x3156e
leaq -0x520(%rbp), %rdi
callq 0x5d770
leaq -0x500(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x949(%rbp)
jmp 0x31593
movb -0x949(%rbp), %al
testb $0x1, %al
jne 0x31452
jmp 0x315a3
movslq -0x84(%rbp), %rcx
leaq -0x80(%rbp), %rax
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
cmpl $0x1, 0x4(%rax)
jbe 0x31867
jmp 0x315c1
movq 0xee420(%rip), %rax     # 0x11f9e8
movq %rax, -0x958(%rbp)
leaq 0x9330b(%rip), %rsi     # 0xc48e1
leaq -0x550(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x315e9
leaq -0x560(%rbp), %rdi
callq 0x4ecc0
jmp 0x315f7
movq -0x958(%rbp), %rdi
leaq -0x550(%rbp), %rsi
movl $0xb0, %edx
leaq -0x560(%rbp), %rcx
callq 0x294a0
jmp 0x31618
leaq -0x148(%rbp), %rdi
callq 0x5df20
movq %rax, -0x960(%rbp)
jmp 0x3162d
movq -0x960(%rbp), %rax
testq %rax, %rax
setne %al
movzbl %al, %esi
leaq -0x578(%rbp), %rdi
callq 0x56ea0
jmp 0x3164b
callq 0x50f60
movq %rax, -0x968(%rbp)
jmp 0x31659
leaq 0x933c5(%rip), %rsi     # 0xc4a25
leaq -0x5a8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31673
movq -0x968(%rbp), %rsi
leaq -0x598(%rbp), %rdi
leaq -0x5a8(%rbp), %rdx
callq 0x5d730
jmp 0x3168f
leaq 0x9324b(%rip), %rsi     # 0xc48e1
leaq -0x5b8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x316a9
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x578(%rbp), %rdi
leaq -0x598(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
movl $0xb0, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x316e0
leaq -0x598(%rbp), %rdi
callq 0x5d770
leaq -0x578(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x969(%rbp)
jmp 0x31705
movb -0x969(%rbp), %al
testb $0x1, %al
jne 0x315c1
jmp 0x31715
jmp 0x31867
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x31740
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x5d770
leaq -0x2c8(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x31777
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x5d770
leaq -0x340(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x5e010
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x5e010
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x317e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x5d770
leaq -0x488(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3181f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x5d770
leaq -0x500(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x31856
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x5d770
leaq -0x578(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movslq -0x84(%rbp), %rcx
leaq -0x80(%rbp), %rax
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
movslq -0x84(%rbp), %rdx
leaq -0x80(%rbp), %rcx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movl 0x8(%rcx), %ecx
subq -0x1e8(%rbp), %rcx
cmpq %rcx, %rax
jae 0x31a2f
jmp 0x318a2
movq 0xee13f(%rip), %rax     # 0x11f9e8
movq %rax, -0x978(%rbp)
leaq 0x9302a(%rip), %rsi     # 0xc48e1
leaq -0x5c8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x318ca
leaq -0x5d8(%rbp), %rdi
callq 0x4ecc0
jmp 0x318d8
movq -0x978(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
movl $0xb3, %edx
leaq -0x5d8(%rbp), %rcx
callq 0x294a0
jmp 0x318f9
leaq -0x148(%rbp), %rdi
callq 0x5e080
movq %rax, -0x980(%rbp)
jmp 0x3190e
movq -0x980(%rbp), %rax
testq %rax, %rax
setne %al
movzbl %al, %esi
leaq -0x5f0(%rbp), %rdi
callq 0x56ea0
jmp 0x3192c
callq 0x50f60
movq %rax, -0x988(%rbp)
jmp 0x3193a
leaq 0x930f9(%rip), %rsi     # 0xc4a3a
leaq -0x620(%rbp), %rdi
movl $0x1a, %edx
callq 0x4cbe0
jmp 0x31954
movq -0x988(%rbp), %rsi
leaq -0x610(%rbp), %rdi
leaq -0x620(%rbp), %rdx
callq 0x5d730
jmp 0x31970
leaq 0x92f6a(%rip), %rsi     # 0xc48e1
leaq -0x630(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x3198a
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x5f0(%rbp), %rdi
leaq -0x610(%rbp), %rsi
leaq -0x630(%rbp), %rdx
movl $0xb3, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x319c1
leaq -0x610(%rbp), %rdi
callq 0x5d770
leaq -0x5f0(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x989(%rbp)
jmp 0x319e6
movb -0x989(%rbp), %al
testb $0x1, %al
jne 0x318a2
jmp 0x319f6
jmp 0x31a2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x31a1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x5d770
leaq -0x5f0(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
leaq -0x220(%rbp), %rdi
callq 0x5e0d0
leaq -0x148(%rbp), %rdi
callq 0x5e0f0
jmp 0x31a49
leaq -0x148(%rbp), %rdi
callq 0x5e0f0
jmp 0x31a57
leaq -0x148(%rbp), %rdi
callq 0x5d7a0
jmp 0x31a65
jmp 0x31a67
movq 0xedf7a(%rip), %rax     # 0x11f9e8
movq %rax, -0x998(%rbp)
leaq 0x92e65(%rip), %rsi     # 0xc48e1
leaq -0x640(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31a8f
leaq -0x650(%rbp), %rdi
callq 0x4ecc0
jmp 0x31a9d
movq -0x998(%rbp), %rdi
leaq -0x640(%rbp), %rsi
movl $0xc4, %edx
leaq -0x650(%rbp), %rcx
callq 0x294a0
jmp 0x31abe
callq 0x50f60
movq %rax, -0x9a0(%rbp)
jmp 0x31acc
movq -0x9a0(%rbp), %rsi
leaq 0x92473(%rip), %rdx     # 0xc3f4d
leaq -0x678(%rbp), %rdi
callq 0x5dee0
jmp 0x31ae8
leaq 0x92df2(%rip), %rsi     # 0xc48e1
leaq -0x688(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31b02
leaq -0x148(%rbp), %rdi
callq 0x5df70
movq %rax, -0x9a8(%rbp)
jmp 0x31b17
movq -0x9a8(%rbp), %rax
movq %rax, -0x690(%rbp)
movl $0x0, -0x694(%rbp)
leaq 0x97cac(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x694(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x92e67(%rip), %rcx     # 0xc49b6
movq %rcx, (%rax)
leaq -0x678(%rbp), %rdi
leaq -0x688(%rbp), %rsi
movl $0xc4, %edx
movl $0x2, %r8d
leaq -0x690(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x31b7c
leaq -0x678(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x9a9(%rbp)
jmp 0x31b95
movb -0x9a9(%rbp), %al
testb $0x1, %al
jne 0x31a67
jmp 0x31ba5
jmp 0x31ba7
movq 0xede3a(%rip), %rax     # 0x11f9e8
movq %rax, -0x9b8(%rbp)
leaq 0x92d25(%rip), %rsi     # 0xc48e1
leaq -0x6a8(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31bcf
leaq -0x6b8(%rbp), %rdi
callq 0x4ecc0
jmp 0x31bdd
movq -0x9b8(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
movl $0xc5, %edx
leaq -0x6b8(%rbp), %rcx
callq 0x294a0
jmp 0x31bfe
callq 0x50f60
movq %rax, -0x9c0(%rbp)
jmp 0x31c0c
movq -0x9c0(%rbp), %rsi
leaq 0x92333(%rip), %rdx     # 0xc3f4d
leaq -0x6e0(%rbp), %rdi
callq 0x5dee0
jmp 0x31c28
leaq 0x92cb2(%rip), %rsi     # 0xc48e1
leaq -0x6f0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31c42
leaq -0x148(%rbp), %rdi
callq 0x5dfc0
movq %rax, -0x9c8(%rbp)
jmp 0x31c57
movq -0x9c8(%rbp), %rax
movq %rax, -0x6f8(%rbp)
movl $0x0, -0x6fc(%rbp)
leaq 0x97b6c(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x6fc(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x92d37(%rip), %rcx     # 0xc49c6
movq %rcx, (%rax)
leaq -0x6e0(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
movl $0xc5, %edx
movl $0x2, %r8d
leaq -0x6f8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x31cbc
leaq -0x6e0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0x9c9(%rbp)
jmp 0x31cd5
movb -0x9c9(%rbp), %al
testb $0x1, %al
jne 0x31ba7
jmp 0x31ce5
jmp 0x31ce7
movq 0xedcfa(%rip), %rax     # 0x11f9e8
movq %rax, -0x9d8(%rbp)
leaq 0x92be5(%rip), %rsi     # 0xc48e1
leaq -0x710(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31d0f
leaq -0x720(%rbp), %rdi
callq 0x4ecc0
jmp 0x31d1d
movq -0x9d8(%rbp), %rdi
leaq -0x710(%rbp), %rsi
movl $0xc6, %edx
leaq -0x720(%rbp), %rcx
callq 0x294a0
jmp 0x31d3e
leaq -0x148(%rbp), %rdi
callq 0x5e030
movb %al, -0x9d9(%rbp)
jmp 0x31d52
movb -0x9d9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x738(%rbp), %rdi
callq 0x56ea0
jmp 0x31d6c
callq 0x50f60
movq %rax, -0x9e8(%rbp)
jmp 0x31d7a
leaq 0x92c9a(%rip), %rsi     # 0xc4a1b
leaq -0x768(%rbp), %rdi
movl $0x9, %edx
callq 0x4cbe0
jmp 0x31d94
movq -0x9e8(%rbp), %rsi
leaq -0x758(%rbp), %rdi
leaq -0x768(%rbp), %rdx
callq 0x5d730
jmp 0x31db0
leaq 0x92b2a(%rip), %rsi     # 0xc48e1
leaq -0x778(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31dca
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x738(%rbp), %rdi
leaq -0x758(%rbp), %rsi
leaq -0x778(%rbp), %rdx
movl $0xc6, %ecx
movl $0x2, %r8d
callq 0x22f50
jmp 0x31e01
leaq -0x758(%rbp), %rdi
callq 0x5d770
leaq -0x738(%rbp), %rdi
callq 0x56fc0
callq 0x5d790
movb %al, -0x9e9(%rbp)
jmp 0x31e26
movb -0x9e9(%rbp), %al
testb $0x1, %al
jne 0x31ce7
jmp 0x31e36
jmp 0x31e38
movq 0xedba9(%rip), %rax     # 0x11f9e8
movq %rax, -0x9f8(%rbp)
leaq 0x92a94(%rip), %rsi     # 0xc48e1
leaq -0x788(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31e60
leaq -0x798(%rbp), %rdi
callq 0x4ecc0
jmp 0x31e6e
movq -0x9f8(%rbp), %rdi
leaq -0x788(%rbp), %rsi
movl $0xc7, %edx
leaq -0x798(%rbp), %rcx
callq 0x294a0
jmp 0x31e8f
callq 0x50f60
movq %rax, -0xa00(%rbp)
jmp 0x31e9d
movq -0xa00(%rbp), %rsi
leaq 0x920a2(%rip), %rdx     # 0xc3f4d
leaq -0x7c0(%rbp), %rdi
callq 0x5dee0
jmp 0x31eb9
leaq 0x92a21(%rip), %rsi     # 0xc48e1
leaq -0x7d0(%rbp), %rdi
movl $0x14, %edx
callq 0x4cbe0
jmp 0x31ed3
leaq -0x148(%rbp), %rdi
callq 0x5df20
movq %rax, -0xa08(%rbp)
jmp 0x31ee8
movq -0xa08(%rbp), %rax
movq %rax, -0x7d8(%rbp)
movl $0x0, -0x7dc(%rbp)
leaq 0x978db(%rip), %rcx     # 0xc97e2
movq %rsp, %rax
movq %rcx, 0x10(%rax)
leaq -0x7dc(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x92b35(%rip), %rcx     # 0xc4a55
movq %rcx, (%rax)
leaq -0x7c0(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
movl $0xc7, %edx
movl $0x2, %r8d
leaq -0x7d8(%rbp), %r9
movl %r8d, %ecx
callq 0x5e2e0
jmp 0x31f4d
leaq -0x7c0(%rbp), %rdi
callq 0x5e010
callq 0x5d790
movb %al, -0xa09(%rbp)
jmp 0x31f66
movb -0xa09(%rbp), %al
testb $0x1, %al
jne 0x31e38
jmp 0x31f76
leaq -0x220(%rbp), %rdi
callq 0x5e500
leaq -0x148(%rbp), %rdi
callq 0x5e520
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x3063c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x5e010
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x6e0(%rbp), %rdi
callq 0x5e010
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x31ffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x5d770
leaq -0x738(%rbp), %rdi
callq 0x56fc0
jmp 0x32022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x5e010
leaq -0x220(%rbp), %rdi
callq 0x5e500
leaq -0x148(%rbp), %rdi
callq 0x5e520
jmp 0x32045
addq $0xa30, %rsp            # imm = 0xA30
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0x10aa0
nop