// File: walker-xian[P]teisye/heapperf/heapperf.cpp
// Function: application::run()
void run()
    {
        auto start_time{ high_resolution_clock::now() };

        vector<case_statistics_t> tcs(_num_of_threads);
        for (int l = 0; l < _num_of_loops; ++l)
        {
            vector<thread> threads(_num_of_threads);

            for (int i = 0; i < _num_of_threads; ++i)
            {
				int core = i % thread::hardware_concurrency();
                thread t{ &application::test,  this, std::ref(tcs[i]), core };
                threads[i] = move(t);
            }

            // wait for all threads have completed
            for (auto it = threads.begin(); it != threads.end(); ++it)
            {
                it->join();
            }
        }

        case_statistics_t final_results;
        for (auto it = tcs.begin(); it != tcs.end(); ++it)
        {
            for (int i = 0; i < _test_case_count; ++i)
                final_results[i] += (*it)[i];
        }

        auto run_duration = duration_cast<milliseconds>(high_resolution_clock::now() - start_time);

        string allocator_names[] { "malloc", "tsalloc"};
        cout << "allocator: " << allocator_names[_allocator_id] << endl;
        cout << "number of threads: " << _num_of_threads << endl;
        cout << "number of loops: " << _num_of_loops << endl;
        cout << "run duration(ms): " << run_duration.count() << endl;
        cout << "number of logic processors: " << thread::hardware_concurrency() << endl;

#if defined(_WIN32) 
#if defined(_MSC_VER)
        PROCESS_MEMORY_COUNTERS_EX pmcex = { 0 };
        GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*)&pmcex, sizeof(pmcex));
        cout << "peak working set(KB): " << pmcex.PeakWorkingSetSize / 1024 << endl;
        cout << "private usage(KB): " << pmcex.PrivateUsage / 1024 << endl;
#endif
#else
        rusage ru;
        getrusage(RUSAGE_SELF, &ru);
        cout << "maximum resident set size(KB): " << ru.ru_maxrss << endl;
#endif

        cout << left << setw(12) << "CASE"
             << right << setw(8)  << "AT"        // average allocation cost
             << right << setw(16) << "AC"
             << right << setw(16) << "DT"
             << right << setw(16) << "DC"
             << endl;

        for (int i = 0; i < _test_case_count; ++i)
        {
            cout << left << setw(12) << _test_cases[i]._name
                 << right << setw(8)  << final_results[i].average_allocation_cost()
                 << right << setw(16) << final_results[i]._num_of_allocations
                 << right << setw(16) << final_results[i].average_deallocation_cost()
                 << right << setw(16) << final_results[i]._num_of_deallocations
                 << endl;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x298(%rbp)
callq 0x5070
movq %rax, %rcx
movq -0x298(%rbp), %rax
movq %rcx, -0x10(%rbp)
movslq 0x7c(%rax), %rax
movq %rax, -0x290(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x7610
movq -0x290(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x7630
jmp 0x63b1
leaq -0x29(%rbp), %rdi
callq 0x76a0
movl $0x0, -0x40(%rbp)
movq -0x298(%rbp), %rcx
movl -0x40(%rbp), %eax
cmpl 0x80(%rcx), %eax
jge 0x65a4
movq -0x298(%rbp), %rax
movslq 0x7c(%rax), %rax
movq %rax, -0x2a8(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x76c0
movq -0x2a8(%rbp), %rsi
movq -0x2a0(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x76e0
jmp 0x6412
leaq -0x59(%rbp), %rdi
callq 0x7750
movl $0x0, -0x60(%rbp)
movq -0x298(%rbp), %rcx
movl -0x60(%rbp), %eax
cmpl 0x7c(%rcx), %eax
jge 0x652e
movl -0x60(%rbp), %eax
movl %eax, -0x2ac(%rbp)
callq 0x5530
movl %eax, %ecx
movl -0x2ac(%rbp), %eax
xorl %edx, %edx
divl %ecx
movq -0x298(%rbp), %rax
movl %edx, -0x64(%rbp)
leaq 0x1310(%rip), %rcx      # 0x7770
movq %rcx, -0x80(%rbp)
movq $0x0, -0x78(%rbp)
movq %rax, -0x88(%rbp)
movslq -0x60(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x7d10
movq %rax, %rdi
callq 0x7ce0
movq %rax, -0x90(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x90(%rbp), %rcx
leaq -0x64(%rbp), %r8
callq 0x7d30
jmp 0x64b0
movslq -0x60(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x7e00
movq %rax, %rdi
leaq -0x70(%rbp), %rsi
callq 0x7e20
leaq -0x70(%rbp), %rdi
callq 0x7e60
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x6422
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x76a0
jmp 0x701a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x7750
jmp 0x7011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x7f70
jmp 0x7011
leaq -0x58(%rbp), %rdi
callq 0x7e90
movq %rax, -0x98(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x7f00
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x7ec0
testb $0x1, %al
jne 0x6567
jmp 0x658d
leaq -0x98(%rbp), %rdi
callq 0x7f30
movq %rax, %rdi
callq 0x5610
jmp 0x657d
jmp 0x657f
leaq -0x98(%rbp), %rdi
callq 0x7f50
jmp 0x653e
leaq -0x58(%rbp), %rdi
callq 0x7f70
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x63c1
leaq -0x120(%rbp), %rax
movq %rax, %rcx
addq $0x78, %rcx
movq %rcx, -0x2c0(%rbp)
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x7fd0
movq -0x2c8(%rbp), %rax
movq -0x2c0(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x2b8(%rbp)
jne 0x65c0
leaq -0x28(%rbp), %rdi
callq 0x8000
movq %rax, -0x128(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x8070
movq %rax, -0x130(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x8030
testb $0x1, %al
jne 0x662a
jmp 0x669f
movl $0x0, -0x134(%rbp)
cmpl $0x5, -0x134(%rbp)
jge 0x668c
leaq -0x128(%rbp), %rdi
callq 0x80a0
movq %rax, %rdx
movslq -0x134(%rbp), %rax
imulq $0x18, %rax, %rax
addq %rax, %rdx
movslq -0x134(%rbp), %rax
leaq -0x120(%rbp), %rsi
imulq $0x18, %rax, %rax
addq %rax, %rsi
leaq -0x150(%rbp), %rdi
callq 0x80c0
movl -0x134(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x134(%rbp)
jmp 0x6634
jmp 0x668e
leaq -0x128(%rbp), %rdi
callq 0x8130
jmp 0x6601
callq 0x5070
movq %rax, -0x168(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0x10(%rbp), %rsi
callq 0x8180
movq %rax, -0x2d0(%rbp)
jmp 0x66c4
movq -0x2d0(%rbp), %rax
movq %rax, -0x160(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x8150
movq %rax, -0x2d8(%rbp)
jmp 0x66e7
movq -0x2d8(%rbp), %rax
movq %rax, -0x158(%rbp)
movb $0x1, -0x1bb(%rbp)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq %rax, -0x1b8(%rbp)
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x5690
movq -0x2e8(%rbp), %rdi
movq -0x2e0(%rbp), %rdx
leaq 0x33b12(%rip), %rsi     # 0x3a24b
callq 0x70c0
jmp 0x6740
leaq -0x190(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq %rax, -0x1b8(%rbp)
leaq -0x1ba(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x5690
movq -0x2f8(%rbp), %rdi
movq -0x2f0(%rbp), %rdx
leaq 0x33ad5(%rip), %rsi     # 0x3a252
callq 0x70c0
jmp 0x6784
movb $0x0, -0x1bb(%rbp)
leaq -0x1ba(%rbp), %rdi
callq 0x5440
leaq -0x1b9(%rbp), %rdi
callq 0x5440
movq 0x507f6(%rip), %rdi     # 0x56fa0
leaq 0x33aa9(%rip), %rsi     # 0x3a25a
callq 0x53e0
movq %rax, -0x300(%rbp)
jmp 0x67bf
movq -0x300(%rbp), %rdi
movq -0x298(%rbp), %rax
movslq 0x78(%rax), %rax
shlq $0x5, %rax
leaq -0x1b0(%rbp,%rax), %rsi
callq 0x53a0
movq %rax, -0x308(%rbp)
jmp 0x67eb
movq -0x308(%rbp), %rdi
movq 0x50767(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6800
movq 0x50799(%rip), %rdi     # 0x56fa0
leaq 0x33a58(%rip), %rsi     # 0x3a266
callq 0x53e0
movq %rax, -0x310(%rbp)
jmp 0x681c
movq -0x310(%rbp), %rdi
movq -0x298(%rbp), %rax
movl 0x7c(%rax), %esi
callq 0x5640
movq %rax, -0x318(%rbp)
jmp 0x683b
movq -0x318(%rbp), %rdi
movq 0x50717(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6850
movq 0x50749(%rip), %rdi     # 0x56fa0
leaq 0x33a1c(%rip), %rsi     # 0x3a27a
callq 0x53e0
movq %rax, -0x320(%rbp)
jmp 0x686c
movq -0x320(%rbp), %rdi
movq -0x298(%rbp), %rax
movl 0x80(%rax), %esi
callq 0x5640
movq %rax, -0x328(%rbp)
jmp 0x688e
movq -0x328(%rbp), %rdi
movq 0x506c4(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x68a3
movq 0x506f6(%rip), %rdi     # 0x56fa0
leaq 0x339db(%rip), %rsi     # 0x3a28c
callq 0x53e0
movq %rax, -0x330(%rbp)
jmp 0x68bf
leaq -0x158(%rbp), %rdi
callq 0x81d0
movq %rax, -0x338(%rbp)
jmp 0x68d4
movq -0x338(%rbp), %rsi
movq -0x330(%rbp), %rdi
callq 0x56c0
movq %rax, -0x340(%rbp)
jmp 0x68f0
movq -0x340(%rbp), %rdi
movq 0x50662(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6905
movq 0x50694(%rip), %rdi     # 0x56fa0
leaq 0x3398c(%rip), %rsi     # 0x3a29f
callq 0x53e0
movq %rax, -0x348(%rbp)
jmp 0x6921
callq 0x5530
movq -0x348(%rbp), %rdi
movl %eax, %esi
callq 0x5520
movq %rax, -0x350(%rbp)
jmp 0x693d
movq -0x350(%rbp), %rdi
movq 0x50615(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6952
xorl %edi, %edi
leaq -0x250(%rbp), %rsi
callq 0x5220
movq 0x50639(%rip), %rdi     # 0x56fa0
leaq 0x3394e(%rip), %rsi     # 0x3a2bc
callq 0x53e0
movq %rax, -0x358(%rbp)
jmp 0x697c
movq -0x358(%rbp), %rdi
movq -0x230(%rbp), %rsi
callq 0x56c0
movq %rax, -0x360(%rbp)
jmp 0x6998
movq -0x360(%rbp), %rdi
movq 0x505ba(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x69ad
movq 0x505ec(%rip), %rdi     # 0x56fa0
leaq 0x1835(%rip), %rsi      # 0x81f0
callq 0x5110
movq %rax, -0x368(%rbp)
jmp 0x69c9
movl $0xc, %edi
callq 0x8220
movl %eax, -0x36c(%rbp)
jmp 0x69db
movq -0x368(%rbp), %rdi
movl -0x36c(%rbp), %eax
movl %eax, -0x254(%rbp)
movl -0x254(%rbp), %esi
callq 0x54b0
movq %rax, -0x378(%rbp)
jmp 0x6a02
movq -0x378(%rbp), %rdi
leaq 0x338cc(%rip), %rsi     # 0x3a2dc
callq 0x53e0
movq %rax, -0x380(%rbp)
jmp 0x6a1e
movq -0x380(%rbp), %rdi
leaq 0x1814(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x388(%rbp)
jmp 0x6a3a
movl $0x8, %edi
callq 0x8220
movl %eax, -0x38c(%rbp)
jmp 0x6a4c
movq -0x388(%rbp), %rdi
movl -0x38c(%rbp), %eax
movl %eax, -0x258(%rbp)
movl -0x258(%rbp), %esi
callq 0x54b0
movq %rax, -0x398(%rbp)
jmp 0x6a73
movq -0x398(%rbp), %rdi
leaq 0x33860(%rip), %rsi     # 0x3a2e1
callq 0x53e0
movq %rax, -0x3a0(%rbp)
jmp 0x6a8f
movq -0x3a0(%rbp), %rdi
leaq 0x17a3(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x3a8(%rbp)
jmp 0x6aab
movl $0x10, %edi
callq 0x8220
movl %eax, -0x3ac(%rbp)
jmp 0x6abd
movq -0x3a8(%rbp), %rdi
movl -0x3ac(%rbp), %eax
movl %eax, -0x25c(%rbp)
movl -0x25c(%rbp), %esi
callq 0x54b0
movq %rax, -0x3b8(%rbp)
jmp 0x6ae4
movq -0x3b8(%rbp), %rdi
leaq 0x337f2(%rip), %rsi     # 0x3a2e4
callq 0x53e0
movq %rax, -0x3c0(%rbp)
jmp 0x6b00
movq -0x3c0(%rbp), %rdi
leaq 0x1732(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x3c8(%rbp)
jmp 0x6b1c
movl $0x10, %edi
callq 0x8220
movl %eax, -0x3cc(%rbp)
jmp 0x6b2e
movq -0x3c8(%rbp), %rdi
movl -0x3cc(%rbp), %eax
movl %eax, -0x260(%rbp)
movl -0x260(%rbp), %esi
callq 0x54b0
movq %rax, -0x3d8(%rbp)
jmp 0x6b55
movq -0x3d8(%rbp), %rdi
leaq 0x33784(%rip), %rsi     # 0x3a2e7
callq 0x53e0
movq %rax, -0x3e0(%rbp)
jmp 0x6b71
movq -0x3e0(%rbp), %rdi
leaq 0x16c1(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x3e8(%rbp)
jmp 0x6b8d
movl $0x10, %edi
callq 0x8220
movl %eax, -0x3ec(%rbp)
jmp 0x6b9f
movq -0x3e8(%rbp), %rdi
movl -0x3ec(%rbp), %eax
movl %eax, -0x264(%rbp)
movl -0x264(%rbp), %esi
callq 0x54b0
movq %rax, -0x3f8(%rbp)
jmp 0x6bc6
movq -0x3f8(%rbp), %rdi
leaq 0x33716(%rip), %rsi     # 0x3a2ea
callq 0x53e0
movq %rax, -0x400(%rbp)
jmp 0x6be2
movq -0x400(%rbp), %rdi
movq 0x50370(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6bf7
movl $0x0, -0x268(%rbp)
cmpl $0x5, -0x268(%rbp)
jge 0x6f82
movq 0x5038b(%rip), %rdi     # 0x56fa0
leaq 0x15d4(%rip), %rsi      # 0x81f0
callq 0x5110
movq %rax, -0x408(%rbp)
jmp 0x6c2a
movl $0xc, %edi
callq 0x8220
movl %eax, -0x40c(%rbp)
jmp 0x6c3c
movq -0x408(%rbp), %rdi
movl -0x40c(%rbp), %eax
movl %eax, -0x26c(%rbp)
movl -0x26c(%rbp), %esi
callq 0x54b0
movq %rax, -0x418(%rbp)
jmp 0x6c63
movq -0x418(%rbp), %rdi
movq -0x298(%rbp), %rax
movslq -0x268(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x53e0
movq %rax, -0x420(%rbp)
jmp 0x6c8e
movq -0x420(%rbp), %rdi
leaq 0x15a4(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x428(%rbp)
jmp 0x6caa
movl $0x8, %edi
callq 0x8220
movl %eax, -0x42c(%rbp)
jmp 0x6cbc
movq -0x428(%rbp), %rdi
movl -0x42c(%rbp), %eax
movl %eax, -0x270(%rbp)
movl -0x270(%rbp), %esi
callq 0x54b0
movq %rax, -0x438(%rbp)
jmp 0x6ce3
movslq -0x268(%rbp), %rax
leaq (%rax,%rax,2), %rax
leaq -0x120(%rbp,%rax,8), %rdi
callq 0x8270
movq -0x438(%rbp), %rdi
movq %rax, %rsi
callq 0x50b0
movq %rax, -0x440(%rbp)
jmp 0x6d13
movq -0x440(%rbp), %rdi
leaq 0x151f(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x448(%rbp)
jmp 0x6d2f
movl $0x10, %edi
callq 0x8220
movl %eax, -0x44c(%rbp)
jmp 0x6d41
movq -0x448(%rbp), %rdi
movl -0x44c(%rbp), %eax
movl %eax, -0x274(%rbp)
movl -0x274(%rbp), %esi
callq 0x54b0
movq %rax, -0x458(%rbp)
jmp 0x6d68
movq -0x458(%rbp), %rdi
movslq -0x268(%rbp), %rax
leaq (%rax,%rax,2), %rax
movl -0x110(%rbp,%rax,8), %esi
callq 0x5640
movq %rax, -0x460(%rbp)
jmp 0x6d8f
movq -0x460(%rbp), %rdi
leaq 0x14a3(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x468(%rbp)
jmp 0x6dab
movl $0x10, %edi
callq 0x8220
movl %eax, -0x46c(%rbp)
jmp 0x6dbd
movq -0x468(%rbp), %rdi
movl -0x46c(%rbp), %eax
movl %eax, -0x278(%rbp)
movl -0x278(%rbp), %esi
callq 0x54b0
movq %rax, -0x478(%rbp)
jmp 0x6de4
movslq -0x268(%rbp), %rax
leaq (%rax,%rax,2), %rax
leaq -0x120(%rbp,%rax,8), %rdi
callq 0x82b0
movq -0x478(%rbp), %rdi
movq %rax, %rsi
callq 0x50b0
movq %rax, -0x480(%rbp)
jmp 0x6e14
movq -0x480(%rbp), %rdi
leaq 0x141e(%rip), %rsi      # 0x8240
callq 0x5110
movq %rax, -0x488(%rbp)
jmp 0x6e30
movl $0x10, %edi
callq 0x8220
movl %eax, -0x48c(%rbp)
jmp 0x6e42
movq -0x488(%rbp), %rdi
movl -0x48c(%rbp), %eax
movl %eax, -0x27c(%rbp)
movl -0x27c(%rbp), %esi
callq 0x54b0
movq %rax, -0x498(%rbp)
jmp 0x6e69
movq -0x498(%rbp), %rdi
movslq -0x268(%rbp), %rax
leaq (%rax,%rax,2), %rax
movl -0x10c(%rbp,%rax,8), %esi
callq 0x5640
movq %rax, -0x4a0(%rbp)
jmp 0x6e90
movq -0x4a0(%rbp), %rdi
movq 0x500c2(%rip), %rsi     # 0x56f60
callq 0x5420
jmp 0x6ea5
jmp 0x6ea7
movl -0x268(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x268(%rbp)
jmp 0x6c01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x7011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6ef2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1ba(%rbp), %rdi
callq 0x5440
leaq -0x1b9(%rbp), %rdi
callq 0x5440
testb $0x1, -0x1bb(%rbp)
jne 0x6f09
jmp 0x6f56
movq -0x1b8(%rbp), %rax
leaq -0x1b0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4a8(%rbp)
je 0x6f54
movq -0x4a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x5290
movq -0x4b0(%rbp), %rax
leaq -0x1b0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4a8(%rbp)
jne 0x6f23
jmp 0x6f56
jmp 0x7011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x4c0(%rbp)
addq $0x40, %rax
movq %rax, -0x4b8(%rbp)
jmp 0x6fde
leaq -0x1b0(%rbp), %rax
movq %rax, -0x4d0(%rbp)
addq $0x40, %rax
movq %rax, -0x4c8(%rbp)
movq -0x4c8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x5290
movq -0x4d0(%rbp), %rcx
movq -0x4d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4c8(%rbp)
jne 0x6f9b
leaq -0x28(%rbp), %rdi
callq 0x82f0
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
movq -0x4b8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x5290
movq -0x4c0(%rbp), %rcx
movq -0x4e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x4b8(%rbp)
jne 0x6fde
jmp 0x7011
leaq -0x28(%rbp), %rdi
callq 0x82f0
movq -0x38(%rbp), %rdi
callq 0x5680
nopw %cs:(%rax,%rax)
nopl (%rax)