// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4a8, %rsp            # imm = 0x4A8
xorps %xmm0, %xmm0
movq %rsp, %rbx
movaps %xmm0, (%rbx)
movq $0x0, 0x10(%rbx)
leaq 0x24(%rsp), %r14
movl $0x0, (%r14)
xorl %eax, %eax
movq 0x8(%rsp), %rsi
cmpq 0x10(%rsp), %rsi
je 0x293e
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rsp)
jmp 0x2949
movq %rbx, %rdi
movq %r14, %rdx
callq 0x438c
movl 0x24(%rsp), %eax
incl %eax
movl %eax, 0x24(%rsp)
cmpl $0x4c4b40, %eax         # imm = 0x4C4B40
jb 0x2925
movq 0x6677(%rip), %rbx      # 0x8fd8
leaq 0x369c(%rip), %rsi      # 0x6004
movl $0xba, %edx
movq %rbx, %rdi
callq 0x2170
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2140
movsbl %al, %esi
movq 0x6645(%rip), %rdi      # 0x8fd8
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq 0x6631(%rip), %rdi      # 0x8fd8
leaq 0x3711(%rip), %rsi      # 0x60bf
movl $0xd, %edx
callq 0x2170
leaq 0x488(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x33f(%rip), %r14      # 0x2690
movq %r14, (%rdi)
leaq 0x2f2d(%rip), %rbx      # 0x5906
movq %rbx, 0x18(%rdi)
leaq 0x2f2e(%rip), %r12      # 0x5912
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x498(%rsp), %rax
testq %rax, %rax
je 0x2a17
leaq 0x488(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x468(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x672(%rip), %r15      # 0x23bc
movq %r15, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x478(%rsp), %rax
testq %rax, %rax
je 0x2a68
leaq 0x468(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x448(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x603(%rip), %r13      # 0x247c
movq %r13, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x458(%rsp), %rax
testq %rax, %rax
je 0x2ab9
leaq 0x448(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x428(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x764(%rip), %rbp      # 0x236c
movq %rbp, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x438(%rsp), %rax
testq %rax, %rax
je 0x2b0a
leaq 0x428(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x408(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x61d(%rip), %rax      # 0x2504
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x418(%rsp), %rax
testq %rax, %rax
je 0x2b5b
leaq 0x408(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x3e8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x5dd(%rip), %rax      # 0x2595
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x3f8(%rsp), %rax
testq %rax, %rax
je 0x2bac
leaq 0x3e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x3c8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x59f(%rip), %rax      # 0x2624
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x3d8(%rsp), %rax
testq %rax, %rax
je 0x2bfd
leaq 0x3c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x3a8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x50d(%rip), %rax      # 0x2707
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x3b8(%rsp), %rax
testq %rax, %rax
je 0x2c4e
leaq 0x3a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x388(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x4cf(%rip), %rax      # 0x2796
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movl $0x1, %ecx
callq 0x2828
movq 0x398(%rsp), %rax
testq %rax, %rax
je 0x2ca2
leaq 0x388(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x632f(%rip), %rdi      # 0x8fd8
leaq 0x341d(%rip), %rsi      # 0x60cd
movl $0xe, %edx
callq 0x2170
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
cmpq %rdx, %rsi
setne %cl
movq %rdx, %rax
addq $-0x4, %rax
cmpq %rsi, %rax
seta %dil
andb %cl, %dil
cmpb $0x1, %dil
jne 0x2d03
movq %rsi, %rcx
addq $0x4, %rcx
movl -0x4(%rcx), %edi
movl (%rax), %r8d
movl %r8d, -0x4(%rcx)
movl %edi, (%rax)
addq $-0x4, %rax
leaq 0x4(%rcx), %rdi
cmpq %rax, %rcx
movq %rdi, %rcx
jb 0x2ce7
leaq 0x368(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %r14, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
xorl %ecx, %ecx
callq 0x2828
movq 0x378(%rsp), %rax
testq %rax, %rax
je 0x2d44
leaq 0x368(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x348(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %r15, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x358(%rsp), %rax
testq %rax, %rax
je 0x2d8e
leaq 0x348(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x328(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %r13, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x338(%rsp), %rax
testq %rax, %rax
je 0x2dd8
leaq 0x328(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x308(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %rbp, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x318(%rsp), %rax
testq %rax, %rax
je 0x2e22
leaq 0x308(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2e8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x935(%rip), %rax      # 0x2504
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x2f8(%rsp), %rax
testq %rax, %rax
je 0x2e73
leaq 0x2e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2c8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x8f5(%rip), %rax      # 0x2595
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x2d8(%rsp), %rax
testq %rax, %rax
je 0x2ec4
leaq 0x2c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2a8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x8b7(%rip), %rax      # 0x2624
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x2b8(%rsp), %rax
testq %rax, %rax
je 0x2f15
leaq 0x2a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x288(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x825(%rip), %rax      # 0x2707
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x298(%rsp), %rax
testq %rax, %rax
je 0x2f66
leaq 0x288(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x268(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x7e7(%rip), %rax      # 0x2796
movq %rax, (%rdi)
movq %rbx, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movl $0x1, %ecx
callq 0x2828
movq 0x278(%rsp), %rax
testq %rax, %rax
je 0x2fba
leaq 0x268(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x6017(%rip), %rdi      # 0x8fd8
leaq 0x3114(%rip), %rsi      # 0x60dc
movl $0x13, %edx
callq 0x2170
xorl %ebx, %ebx
movq (%rsp), %rbp
movq %rbp, %r14
addq $0x7d0, %rbp            # imm = 0x7D0
movq 0x8(%rsp), %r13
cmpq %r13, %rbp
cmovbq %rbp, %r13
cmpq %r13, %r14
je 0x3046
leaq 0x4(%r14), %rax
cmpq %r13, %rax
je 0x3046
movl $0x4, %r15d
callq 0x2060
cltq
movq %r15, %rcx
sarq $0x2, %rcx
incq %rcx
cqto
idivq %rcx
leaq (,%rdx,4), %rax
cmpq %rax, %r15
je 0x3035
leaq (%r14,%r15), %rax
leaq (%r14,%rdx,4), %rcx
movl (%rax), %edx
movl (%rcx), %esi
movl %esi, (%rax)
movl %edx, (%rcx)
leaq (%r14,%r15), %rax
addq $0x4, %rax
addq $0x4, %r15
cmpq %r13, %rax
jne 0x3002
incl %ebx
cmpl $0x2710, %ebx           # imm = 0x2710
jne 0x2fd8
leaq 0x248(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x9d7(%rip), %rbp      # 0x2690
movq %rbp, (%rdi)
leaq 0x2895(%rip), %r13      # 0x5906
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x258(%rsp), %rax
testq %rax, %rax
leaq -0xcdf(%rip), %r15      # 0x23bc
je 0x30af
leaq 0x248(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x228(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %r15, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x238(%rsp), %rax
testq %rax, %rax
je 0x30f9
leaq 0x228(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x208(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xc94(%rip), %rax      # 0x247c
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x218(%rsp), %rax
testq %rax, %rax
je 0x314a
leaq 0x208(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1e8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xdf5(%rip), %rax      # 0x236c
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x1f8(%rsp), %rax
testq %rax, %rax
je 0x319b
leaq 0x1e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1c8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xcae(%rip), %rax      # 0x2504
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x1d8(%rsp), %rax
testq %rax, %rax
je 0x31ec
leaq 0x1c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1a8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xc6e(%rip), %rax      # 0x2595
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x1b8(%rsp), %rax
testq %rax, %rax
je 0x323d
leaq 0x1a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x188(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xc30(%rip), %rax      # 0x2624
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x198(%rsp), %rax
testq %rax, %rax
je 0x328e
leaq 0x188(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x168(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xb9e(%rip), %rax      # 0x2707
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x178(%rsp), %rax
testq %rax, %rax
je 0x32df
leaq 0x168(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x148(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xb60(%rip), %rax      # 0x2796
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movl $0x1, %ecx
callq 0x2828
movq 0x158(%rsp), %rax
testq %rax, %rax
je 0x3333
leaq 0x148(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x5c9e(%rip), %rdi      # 0x8fd8
leaq 0x2daf(%rip), %rsi      # 0x60f0
movl $0x10, %edx
callq 0x2170
movq (%rsp), %rbx
movq 0x8(%rsp), %r14
cmpq %r14, %rbx
je 0x33bc
leaq 0x4(%rbx), %rax
cmpq %r14, %rax
je 0x33bc
movl $0x4, %r15d
callq 0x2060
cltq
movq %r15, %rcx
sarq $0x2, %rcx
incq %rcx
cqto
idivq %rcx
leaq (,%rdx,4), %rax
cmpq %rax, %r15
je 0x339b
leaq (%rbx,%r15), %rax
leaq (%rbx,%rdx,4), %rcx
movl (%rax), %edx
movl (%rcx), %esi
movl %esi, (%rax)
movl %edx, (%rcx)
leaq (%rbx,%r15), %rax
addq $0x4, %rax
addq $0x4, %r15
cmpq %r14, %rax
jne 0x3368
movq (%rsp), %rbx
movq 0x8(%rsp), %r14
leaq -0x1000(%rip), %r15     # 0x23bc
leaq 0x128(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %rbp, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq %rbx, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x138(%rsp), %rax
testq %rax, %rax
leaq -0x108a(%rip), %rbx     # 0x236c
je 0x340a
leaq 0x128(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x108(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %r15, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x118(%rsp), %rax
testq %rax, %rax
je 0x3454
leaq 0x108(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xe8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xfef(%rip), %rax      # 0x247c
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0xf8(%rsp), %rax
testq %rax, %rax
je 0x34a5
leaq 0xe8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xc8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
movq %rbx, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0xd8(%rsp), %rax
testq %rax, %rax
je 0x34ef
leaq 0xc8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xa8(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0x1002(%rip), %rax     # 0x2504
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0xb8(%rsp), %rax
testq %rax, %rax
je 0x3540
leaq 0xa8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x88(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xfc2(%rip), %rax      # 0x2595
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x98(%rsp), %rax
testq %rax, %rax
je 0x3591
leaq 0x88(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x68(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xf81(%rip), %rax      # 0x2624
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x78(%rsp), %rax
testq %rax, %rax
je 0x35d9
leaq 0x68(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x48(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xee6(%rip), %rax      # 0x2707
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2828
movq 0x58(%rsp), %rax
testq %rax, %rax
je 0x3621
leaq 0x48(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x28(%rsp), %rdi
movq $0x0, 0x8(%rdi)
leaq -0xe9f(%rip), %rax      # 0x2796
movq %rax, (%rdi)
movq %r13, 0x18(%rdi)
movq %r12, 0x10(%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movl $0x1, %ecx
callq 0x2828
movq 0x38(%rsp), %rax
testq %rax, %rax
je 0x366c
leaq 0x28(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x367a
callq 0x2120
xorl %eax, %eax
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
jmp 0x3dcf
movq %rax, %rbx
movq 0x38(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x28(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x58(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x48(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x78(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x68(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x98(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x88(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0xb8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0xa8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0xd8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0xc8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0xf8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0xe8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x118(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x108(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x138(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x128(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
jmp 0x3dd9
movq %rax, %rbx
movq 0x158(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x148(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x178(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x168(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x198(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x188(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x1b8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x1a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x1d8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x1c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x1f8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x1e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x218(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x208(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x238(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x228(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x258(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x248(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x278(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x268(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x298(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x288(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x2b8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x2a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x2d8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x2c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x2f8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x2e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x318(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x308(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x338(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x328(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x358(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x348(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x378(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x368(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x398(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x388(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x3b8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x3a8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x3d8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x3c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x3f8(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x3e8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x418(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x408(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x438(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x428(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x458(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x448(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x478(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x468(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
jmp 0x3dcf
movq %rax, %rbx
movq 0x498(%rsp), %rax
testq %rax, %rax
je 0x3ddc
leaq 0x488(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x3ddc
movq %rax, %rdi
callq 0x40c1
jmp 0x3dd9
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x3dea
callq 0x2120
movq %rbx, %rdi
callq 0x21e0