// File: RipcordSoftware[P]lazyflatset/test/lazyflatset/main.cpp
// Function: main
int main() {
    std::vector<DataType> data;
    const unsigned max = 5 * 1000 * 1000;
    for (unsigned i = 0; i < max; ++i) {
        data.push_back(i);
    }
    
    std::cout << R"("", "listTailInsert", "vectorTailInsert", "vectorTailPush", "vectorHeadInsert", "setInsert", "unorderedSetInsert", "priorityQueuePush", "lazyFlatSetInsert", "lazyFlatSetInsert[new_item]")" << std::endl;
    
    std::cout << R"("Ascending", )";
    
    test(listTailInsert, data.begin(), data.end());
    test(vectorTailInsert, data.begin(), data.end());
    test(vectorTailPush, data.begin(), data.end());
    test(vectorHeadInsert, data.begin(), data.end());
    //test(vectorHeadPush, data.begin(), data.end());
    test(setInsert, data.begin(), data.end());
    test(unorderedSetInsert, data.begin(), data.end());
    test(priorityQueuePush, data.begin(), data.end());
    test(lazyFlatSetInsert, data.begin(), data.end());
    test(lazyFlatSetInsertNewItem, data.begin(), data.end(), true);
    
    std::cout << R"("Descending", )";
    
    std::reverse(data.begin(), data.end());
    
    test(listTailInsert, data.begin(), data.end());
    test(vectorTailInsert, data.begin(), data.end());
    test(vectorTailPush, data.begin(), data.end());
    test(vectorHeadInsert, data.begin(), data.end());
    //test(vectorHeadPush, data.begin(), data.end());
    test(setInsert, data.begin(), data.end());
    test(unorderedSetInsert, data.begin(), data.end());
    test(priorityQueuePush, data.begin(), data.end());
    test(lazyFlatSetInsert, data.begin(), data.end());
    test(lazyFlatSetInsertNewItem, data.begin(), data.end(), true);
    
    std::cout << R"("Partial shuffle", )";
    
    const unsigned blocks = 10000;
    const unsigned blockSize = max / blocks;
    auto iter = data.begin();
    for (unsigned i = 0; i < blocks; ++i) {
        auto iterEnd = iter + blockSize;
        std::random_shuffle(iter, iterEnd < data.end() ? iterEnd : data.end());
        iter += blockSize;
    }        
    
    test(listTailInsert, data.begin(), data.end());
    test(vectorTailInsert, data.begin(), data.end());
    test(vectorTailPush, data.begin(), data.end());
    test(vectorHeadInsert, data.begin(), data.end());
    //test(vectorHeadPush, data.begin(), data.end());
    test(setInsert, data.begin(), data.end());
    test(unorderedSetInsert, data.begin(), data.end());
    test(priorityQueuePush, data.begin(), data.end());
    test(lazyFlatSetInsert, data.begin(), data.end());
    test(lazyFlatSetInsertNewItem, data.begin(), data.end(), true);
    
    std::cout << R"("Full shuffle", )";
    
    std::random_shuffle(data.begin(), data.end());

    test(listTailInsert, data.begin(), data.end());
    test(vectorTailInsert, data.begin(), data.end());
    test(vectorTailPush, data.begin(), data.end());
    test(vectorHeadInsert, data.begin(), data.end());
    //test(vectorHeadPush, data.begin(), data.end());
    test(setInsert, data.begin(), data.end());
    test(unorderedSetInsert, data.begin(), data.end());
    test(priorityQueuePush, data.begin(), data.end());
    test(lazyFlatSetInsert, data.begin(), data.end());
    test(lazyFlatSetInsertNewItem, data.begin(), data.end(), true);
    
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9b0, %rsp            # imm = 0x9B0
movl $0x0, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3fc0
movl $0x4c4b40, -0x24(%rbp)  # imm = 0x4C4B40
movl $0x0, -0x28(%rbp)
cmpl $0x4c4b40, -0x28(%rbp)  # imm = 0x4C4B40
jae 0x2a2f
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4410
jmp 0x2a11
jmp 0x2a13
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x29f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x3fa7
movq 0x135a2(%rip), %rdi     # 0x15fd8
leaq 0xc5eb(%rip), %rsi      # 0xf028
callq 0x2120
movq %rax, -0x758(%rbp)
jmp 0x2a4b
movq -0x758(%rbp), %rdi
movq 0x1356f(%rip), %rsi     # 0x15fc8
callq 0x2150
jmp 0x2a60
movq 0x13571(%rip), %rdi     # 0x15fd8
leaq 0xc675(%rip), %rsi      # 0xf0e3
callq 0x2120
jmp 0x2a75
leaq -0x34c(%rip), %rsi      # 0x2730
leaq -0x58(%rbp), %rdi
movq %rdi, -0x760(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x4090
movq -0x768(%rbp), %rdi
movq %rax, -0x60(%rbp)
callq 0x4160
movq -0x760(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2ac8
leaq -0x58(%rbp), %rdi
callq 0x4bc0
leaq -0x708(%rip), %rsi      # 0x23d0
leaq -0x88(%rbp), %rdi
movq %rdi, -0x770(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x4090
movq -0x778(%rbp), %rdi
movq %rax, -0x90(%rbp)
callq 0x4160
movq -0x770(%rbp), %rdi
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rsi
movq -0x98(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2b33
leaq -0x88(%rbp), %rdi
callq 0x4bc0
leaq -0x616(%rip), %rsi      # 0x2530
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0x4090
movq -0x788(%rbp), %rdi
movq %rax, -0xc0(%rbp)
callq 0x4160
movq -0x780(%rbp), %rdi
movq %rax, -0xc8(%rbp)
movq -0xc0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2ba1
leaq -0xb8(%rbp), %rdi
callq 0x4bc0
leaq -0x884(%rip), %rsi      # 0x2330
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x790(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0x4090
movq -0x798(%rbp), %rdi
movq %rax, -0xf0(%rbp)
callq 0x4160
movq -0x790(%rbp), %rdi
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xf8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2c0f
leaq -0xe8(%rbp), %rdi
callq 0x4bc0
leaq -0x662(%rip), %rsi      # 0x25c0
leaq -0x118(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x4090
movq -0x7a8(%rbp), %rdi
movq %rax, -0x120(%rbp)
callq 0x4160
movq -0x7a0(%rbp), %rdi
movq %rax, -0x128(%rbp)
movq -0x120(%rbp), %rsi
movq -0x128(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2c7d
leaq -0x118(%rbp), %rdi
callq 0x4bc0
leaq -0x660(%rip), %rsi      # 0x2630
leaq -0x148(%rbp), %rdi
movq %rdi, -0x7b0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x4090
movq -0x7b8(%rbp), %rdi
movq %rax, -0x150(%rbp)
callq 0x4160
movq -0x7b0(%rbp), %rdi
movq %rax, -0x158(%rbp)
movq -0x150(%rbp), %rsi
movq -0x158(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2ceb
leaq -0x148(%rbp), %rdi
callq 0x4bc0
leaq -0x65e(%rip), %rsi      # 0x26a0
leaq -0x178(%rbp), %rdi
movq %rdi, -0x7c0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x4090
movq -0x7c8(%rbp), %rdi
movq %rax, -0x180(%rbp)
callq 0x4160
movq -0x7c0(%rbp), %rdi
movq %rax, -0x188(%rbp)
movq -0x180(%rbp), %rsi
movq -0x188(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2d59
leaq -0x178(%rbp), %rdi
callq 0x4bc0
leaq -0x59c(%rip), %rsi      # 0x27d0
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x7d0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x4090
movq -0x7d8(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
callq 0x4160
movq -0x7d0(%rbp), %rdi
movq %rax, -0x1b8(%rbp)
movq -0x1b0(%rbp), %rsi
movq -0x1b8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2dc7
leaq -0x1a8(%rbp), %rdi
callq 0x4bc0
leaq -0x56a(%rip), %rsi      # 0x2870
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7e8(%rbp)
callq 0x4090
movq -0x7e8(%rbp), %rdi
movq %rax, -0x1e0(%rbp)
callq 0x4160
movq -0x7e0(%rbp), %rdi
movq %rax, -0x1e8(%rbp)
movq -0x1e0(%rbp), %rsi
movq -0x1e8(%rbp), %rdx
movl $0x1, %ecx
callq 0x2910
jmp 0x2e38
leaq -0x1d8(%rbp), %rdi
callq 0x4bc0
movq 0x1318d(%rip), %rdi     # 0x15fd8
leaq 0xc29f(%rip), %rsi      # 0xf0f1
callq 0x2120
jmp 0x2e59
leaq -0x20(%rbp), %rdi
movq %rdi, -0x7f0(%rbp)
callq 0x4090
movq -0x7f0(%rbp), %rdi
movq %rax, -0x1f0(%rbp)
callq 0x4160
movq %rax, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
callq 0x4be0
jmp 0x2e98
leaq -0x76f(%rip), %rsi      # 0x2730
leaq -0x218(%rbp), %rdi
movq %rdi, -0x7f8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x4090
movq -0x800(%rbp), %rdi
movq %rax, -0x220(%rbp)
callq 0x4160
movq -0x7f8(%rbp), %rdi
movq %rax, -0x228(%rbp)
movq -0x220(%rbp), %rsi
movq -0x228(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2efa
leaq -0x218(%rbp), %rdi
callq 0x4bc0
leaq -0xb3d(%rip), %rsi      # 0x23d0
leaq -0x248(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x810(%rbp)
callq 0x4090
movq -0x810(%rbp), %rdi
movq %rax, -0x250(%rbp)
callq 0x4160
movq -0x808(%rbp), %rdi
movq %rax, -0x258(%rbp)
movq -0x250(%rbp), %rsi
movq -0x258(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2f68
leaq -0x248(%rbp), %rdi
callq 0x4bc0
leaq -0xa4b(%rip), %rsi      # 0x2530
leaq -0x278(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x820(%rbp)
callq 0x4090
movq -0x820(%rbp), %rdi
movq %rax, -0x280(%rbp)
callq 0x4160
movq -0x818(%rbp), %rdi
movq %rax, -0x288(%rbp)
movq -0x280(%rbp), %rsi
movq -0x288(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x2fd6
leaq -0x278(%rbp), %rdi
callq 0x4bc0
leaq -0xcb9(%rip), %rsi      # 0x2330
leaq -0x2a8(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x830(%rbp)
callq 0x4090
movq -0x830(%rbp), %rdi
movq %rax, -0x2b0(%rbp)
callq 0x4160
movq -0x828(%rbp), %rdi
movq %rax, -0x2b8(%rbp)
movq -0x2b0(%rbp), %rsi
movq -0x2b8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3044
leaq -0x2a8(%rbp), %rdi
callq 0x4bc0
leaq -0xa97(%rip), %rsi      # 0x25c0
leaq -0x2d8(%rbp), %rdi
movq %rdi, -0x838(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x840(%rbp)
callq 0x4090
movq -0x840(%rbp), %rdi
movq %rax, -0x2e0(%rbp)
callq 0x4160
movq -0x838(%rbp), %rdi
movq %rax, -0x2e8(%rbp)
movq -0x2e0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x30b2
leaq -0x2d8(%rbp), %rdi
callq 0x4bc0
leaq -0xa95(%rip), %rsi      # 0x2630
leaq -0x308(%rbp), %rdi
movq %rdi, -0x848(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x850(%rbp)
callq 0x4090
movq -0x850(%rbp), %rdi
movq %rax, -0x310(%rbp)
callq 0x4160
movq -0x848(%rbp), %rdi
movq %rax, -0x318(%rbp)
movq -0x310(%rbp), %rsi
movq -0x318(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3120
leaq -0x308(%rbp), %rdi
callq 0x4bc0
leaq -0xa93(%rip), %rsi      # 0x26a0
leaq -0x338(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x860(%rbp)
callq 0x4090
movq -0x860(%rbp), %rdi
movq %rax, -0x340(%rbp)
callq 0x4160
movq -0x858(%rbp), %rdi
movq %rax, -0x348(%rbp)
movq -0x340(%rbp), %rsi
movq -0x348(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x318e
leaq -0x338(%rbp), %rdi
callq 0x4bc0
leaq -0x9d1(%rip), %rsi      # 0x27d0
leaq -0x368(%rbp), %rdi
movq %rdi, -0x868(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x870(%rbp)
callq 0x4090
movq -0x870(%rbp), %rdi
movq %rax, -0x370(%rbp)
callq 0x4160
movq -0x868(%rbp), %rdi
movq %rax, -0x378(%rbp)
movq -0x370(%rbp), %rsi
movq -0x378(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x31fc
leaq -0x368(%rbp), %rdi
callq 0x4bc0
leaq -0x99f(%rip), %rsi      # 0x2870
leaq -0x398(%rbp), %rdi
movq %rdi, -0x878(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x880(%rbp)
callq 0x4090
movq -0x880(%rbp), %rdi
movq %rax, -0x3a0(%rbp)
callq 0x4160
movq -0x878(%rbp), %rdi
movq %rax, -0x3a8(%rbp)
movq -0x3a0(%rbp), %rsi
movq -0x3a8(%rbp), %rdx
movl $0x1, %ecx
callq 0x2910
jmp 0x326d
leaq -0x398(%rbp), %rdi
callq 0x4bc0
movq 0x12d58(%rip), %rdi     # 0x15fd8
leaq 0xbe79(%rip), %rsi      # 0xf100
callq 0x2120
jmp 0x328e
movl $0x2710, -0x3ac(%rbp)   # imm = 0x2710
movl $0x1f4, -0x3b0(%rbp)    # imm = 0x1F4
leaq -0x20(%rbp), %rdi
callq 0x4090
movq %rax, -0x3b8(%rbp)
movl $0x0, -0x3bc(%rbp)
cmpl $0x2710, -0x3bc(%rbp)   # imm = 0x2710
jae 0x357c
leaq -0x3b8(%rbp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x4c20
movq %rax, -0x3c8(%rbp)
movq -0x3b8(%rbp), %rax
movq %rax, -0x3d0(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x4160
movq %rax, -0x3e0(%rbp)
leaq -0x3c8(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x4d30
testb $0x1, %al
jne 0x331b
jmp 0x332b
movq -0x3c8(%rbp), %rax
movq %rax, -0x3d8(%rbp)
jmp 0x333b
leaq -0x20(%rbp), %rdi
callq 0x4160
movq %rax, -0x3d8(%rbp)
movq -0x3d0(%rbp), %rdi
movq -0x3d8(%rbp), %rsi
callq 0x4c60
jmp 0x3350
leaq -0x3b8(%rbp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x4d70
movl -0x3bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3bc(%rbp)
jmp 0x32bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
leaq -0xe53(%rip), %rsi      # 0x2730
leaq -0x400(%rbp), %rdi
movq %rdi, -0x888(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x890(%rbp)
callq 0x4090
movq -0x890(%rbp), %rdi
movq %rax, -0x408(%rbp)
callq 0x4160
movq -0x888(%rbp), %rdi
movq %rax, -0x410(%rbp)
movq -0x408(%rbp), %rsi
movq -0x410(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x35de
leaq -0x400(%rbp), %rdi
callq 0x4bc0
leaq -0x1221(%rip), %rsi     # 0x23d0
leaq -0x430(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8a0(%rbp)
callq 0x4090
movq -0x8a0(%rbp), %rdi
movq %rax, -0x438(%rbp)
callq 0x4160
movq -0x898(%rbp), %rdi
movq %rax, -0x440(%rbp)
movq -0x438(%rbp), %rsi
movq -0x440(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x364c
leaq -0x430(%rbp), %rdi
callq 0x4bc0
leaq -0x112f(%rip), %rsi     # 0x2530
leaq -0x460(%rbp), %rdi
movq %rdi, -0x8a8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8b0(%rbp)
callq 0x4090
movq -0x8b0(%rbp), %rdi
movq %rax, -0x468(%rbp)
callq 0x4160
movq -0x8a8(%rbp), %rdi
movq %rax, -0x470(%rbp)
movq -0x468(%rbp), %rsi
movq -0x470(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x36ba
leaq -0x460(%rbp), %rdi
callq 0x4bc0
leaq -0x139d(%rip), %rsi     # 0x2330
leaq -0x490(%rbp), %rdi
movq %rdi, -0x8b8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8c0(%rbp)
callq 0x4090
movq -0x8c0(%rbp), %rdi
movq %rax, -0x498(%rbp)
callq 0x4160
movq -0x8b8(%rbp), %rdi
movq %rax, -0x4a0(%rbp)
movq -0x498(%rbp), %rsi
movq -0x4a0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3728
leaq -0x490(%rbp), %rdi
callq 0x4bc0
leaq -0x117b(%rip), %rsi     # 0x25c0
leaq -0x4c0(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8d0(%rbp)
callq 0x4090
movq -0x8d0(%rbp), %rdi
movq %rax, -0x4c8(%rbp)
callq 0x4160
movq -0x8c8(%rbp), %rdi
movq %rax, -0x4d0(%rbp)
movq -0x4c8(%rbp), %rsi
movq -0x4d0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3796
leaq -0x4c0(%rbp), %rdi
callq 0x4bc0
leaq -0x1179(%rip), %rsi     # 0x2630
leaq -0x4f0(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
callq 0x4090
movq -0x8e0(%rbp), %rdi
movq %rax, -0x4f8(%rbp)
callq 0x4160
movq -0x8d8(%rbp), %rdi
movq %rax, -0x500(%rbp)
movq -0x4f8(%rbp), %rsi
movq -0x500(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3804
leaq -0x4f0(%rbp), %rdi
callq 0x4bc0
leaq -0x1177(%rip), %rsi     # 0x26a0
leaq -0x520(%rbp), %rdi
movq %rdi, -0x8e8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x4090
movq -0x8f0(%rbp), %rdi
movq %rax, -0x528(%rbp)
callq 0x4160
movq -0x8e8(%rbp), %rdi
movq %rax, -0x530(%rbp)
movq -0x528(%rbp), %rsi
movq -0x530(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3872
leaq -0x520(%rbp), %rdi
callq 0x4bc0
leaq -0x10b5(%rip), %rsi     # 0x27d0
leaq -0x550(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x4090
movq -0x900(%rbp), %rdi
movq %rax, -0x558(%rbp)
callq 0x4160
movq -0x8f8(%rbp), %rdi
movq %rax, -0x560(%rbp)
movq -0x558(%rbp), %rsi
movq -0x560(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x38e0
leaq -0x550(%rbp), %rdi
callq 0x4bc0
leaq -0x1083(%rip), %rsi     # 0x2870
leaq -0x580(%rbp), %rdi
movq %rdi, -0x908(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0x4090
movq -0x910(%rbp), %rdi
movq %rax, -0x588(%rbp)
callq 0x4160
movq -0x908(%rbp), %rdi
movq %rax, -0x590(%rbp)
movq -0x588(%rbp), %rsi
movq -0x590(%rbp), %rdx
movl $0x1, %ecx
callq 0x2910
jmp 0x3951
leaq -0x580(%rbp), %rdi
callq 0x4bc0
movq 0x12674(%rip), %rdi     # 0x15fd8
leaq 0xb7a9(%rip), %rsi      # 0xf114
callq 0x2120
jmp 0x3972
leaq -0x20(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x4090
movq -0x918(%rbp), %rdi
movq %rax, -0x598(%rbp)
callq 0x4160
movq %rax, -0x5a0(%rbp)
movq -0x598(%rbp), %rdi
movq -0x5a0(%rbp), %rsi
callq 0x4c60
jmp 0x39b1
leaq -0x1288(%rip), %rsi     # 0x2730
leaq -0x5c0(%rbp), %rdi
movq %rdi, -0x920(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x928(%rbp)
callq 0x4090
movq -0x928(%rbp), %rdi
movq %rax, -0x5c8(%rbp)
callq 0x4160
movq -0x920(%rbp), %rdi
movq %rax, -0x5d0(%rbp)
movq -0x5c8(%rbp), %rsi
movq -0x5d0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3a13
leaq -0x5c0(%rbp), %rdi
callq 0x4bc0
leaq -0x1656(%rip), %rsi     # 0x23d0
leaq -0x5f0(%rbp), %rdi
movq %rdi, -0x930(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x938(%rbp)
callq 0x4090
movq -0x938(%rbp), %rdi
movq %rax, -0x5f8(%rbp)
callq 0x4160
movq -0x930(%rbp), %rdi
movq %rax, -0x600(%rbp)
movq -0x5f8(%rbp), %rsi
movq -0x600(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3a81
leaq -0x5f0(%rbp), %rdi
callq 0x4bc0
leaq -0x1564(%rip), %rsi     # 0x2530
leaq -0x620(%rbp), %rdi
movq %rdi, -0x940(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x948(%rbp)
callq 0x4090
movq -0x948(%rbp), %rdi
movq %rax, -0x628(%rbp)
callq 0x4160
movq -0x940(%rbp), %rdi
movq %rax, -0x630(%rbp)
movq -0x628(%rbp), %rsi
movq -0x630(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3aef
leaq -0x620(%rbp), %rdi
callq 0x4bc0
leaq -0x17d2(%rip), %rsi     # 0x2330
leaq -0x650(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x4090
movq -0x958(%rbp), %rdi
movq %rax, -0x658(%rbp)
callq 0x4160
movq -0x950(%rbp), %rdi
movq %rax, -0x660(%rbp)
movq -0x658(%rbp), %rsi
movq -0x660(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3b5d
leaq -0x650(%rbp), %rdi
callq 0x4bc0
leaq -0x15b0(%rip), %rsi     # 0x25c0
leaq -0x680(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0x4090
movq -0x968(%rbp), %rdi
movq %rax, -0x688(%rbp)
callq 0x4160
movq -0x960(%rbp), %rdi
movq %rax, -0x690(%rbp)
movq -0x688(%rbp), %rsi
movq -0x690(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3bcb
leaq -0x680(%rbp), %rdi
callq 0x4bc0
leaq -0x15ae(%rip), %rsi     # 0x2630
leaq -0x6b0(%rbp), %rdi
movq %rdi, -0x970(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x978(%rbp)
callq 0x4090
movq -0x978(%rbp), %rdi
movq %rax, -0x6b8(%rbp)
callq 0x4160
movq -0x970(%rbp), %rdi
movq %rax, -0x6c0(%rbp)
movq -0x6b8(%rbp), %rsi
movq -0x6c0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3c39
leaq -0x6b0(%rbp), %rdi
callq 0x4bc0
leaq -0x15ac(%rip), %rsi     # 0x26a0
leaq -0x6e0(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x988(%rbp)
callq 0x4090
movq -0x988(%rbp), %rdi
movq %rax, -0x6e8(%rbp)
callq 0x4160
movq -0x980(%rbp), %rdi
movq %rax, -0x6f0(%rbp)
movq -0x6e8(%rbp), %rsi
movq -0x6f0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3ca7
leaq -0x6e0(%rbp), %rdi
callq 0x4bc0
leaq -0x14ea(%rip), %rsi     # 0x27d0
leaq -0x710(%rbp), %rdi
movq %rdi, -0x990(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x998(%rbp)
callq 0x4090
movq -0x998(%rbp), %rdi
movq %rax, -0x718(%rbp)
callq 0x4160
movq -0x990(%rbp), %rdi
movq %rax, -0x720(%rbp)
movq -0x718(%rbp), %rsi
movq -0x720(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2910
jmp 0x3d15
leaq -0x710(%rbp), %rdi
callq 0x4bc0
leaq -0x14b8(%rip), %rsi     # 0x2870
leaq -0x740(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
callq 0x4b30
leaq -0x20(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x4090
movq -0x9a8(%rbp), %rdi
movq %rax, -0x748(%rbp)
callq 0x4160
movq -0x9a0(%rbp), %rdi
movq %rax, -0x750(%rbp)
movq -0x748(%rbp), %rsi
movq -0x750(%rbp), %rdx
movl $0x1, %ecx
callq 0x2910
jmp 0x3d86
leaq -0x740(%rbp), %rdi
callq 0x4bc0
movl $0x0, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x4100
movl -0x4(%rbp), %eax
addq $0x9b0, %rsp            # imm = 0x9B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x490(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x680(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x6b0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x6e0(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x4bc0
jmp 0x3fa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x740(%rbp), %rdi
callq 0x4bc0
leaq -0x20(%rbp), %rdi
callq 0x4100
movq -0x30(%rbp), %rdi
callq 0x21c0
nopl (%rax)