// File: cybozu[P]yrmcds/src/memcache/gc.cpp
// Function: yrmcds::memcache::gc_thread::run()
void gc_thread::run() {
    if( ! cybozu::has_ip_address(g_config.vip()) ) {
        cybozu::logger::error() << "VIP has been lost.  Exiting quickly...";
        std::quick_exit(2);
    }

    using namespace std::chrono;
    auto t1 = steady_clock::now();
    gc();
    if( ! m_new_slaves.empty() )
        cybozu::logger::info() << "Initial replication completed for "
                               << m_new_slaves.size() << " new slave(s).";
    g_stats.objects.store(m_objects, std::memory_order_relaxed);
    g_stats.objects_under_1k.store(m_objects_under_1k, std::memory_order_relaxed);
    g_stats.objects_under_4k.store(m_objects_under_4k, std::memory_order_relaxed);
    g_stats.objects_under_16k.store(m_objects_under_16k, std::memory_order_relaxed);
    g_stats.objects_under_64k.store(m_objects_under_64k, std::memory_order_relaxed);
    g_stats.objects_under_256k.store(m_objects_under_256k, std::memory_order_relaxed);
    g_stats.objects_under_1m.store(m_objects_under_1m, std::memory_order_relaxed);
    g_stats.objects_under_4m.store(m_objects_under_4m, std::memory_order_relaxed);
    g_stats.objects_huge.store(m_objects_huge, std::memory_order_relaxed);
    g_stats.used_memory.store(m_used_memory, std::memory_order_relaxed);
    g_stats.conflicts.store(m_conflicts, std::memory_order_relaxed);
    g_stats.gc_count.fetch_add(1, std::memory_order_relaxed);
    g_stats.oldest_age.store(m_oldest_age, std::memory_order_relaxed);
    g_stats.largest_object_size.store(m_largest_object_size, std::memory_order_relaxed);
    g_stats.last_expirations.store(m_last_expirations, std::memory_order_relaxed);
    g_stats.last_evictions.store(m_last_evictions, std::memory_order_relaxed);
    g_stats.total_evictions.fetch_add(m_last_evictions, std::memory_order_relaxed);

    auto t2 = steady_clock::now();
    std::uint64_t us = static_cast<std::uint64_t>(
        duration_cast<microseconds>(t2-t1).count() );
    g_stats.last_gc_elapsed.store(us, std::memory_order_relaxed);
    g_stats.total_gc_elapsed.fetch_add(us, std::memory_order_relaxed);
    cybozu::logger::debug() << "GC end: elapsed=" << us
                            << "us, expired=" << m_last_expirations
                            << ", evicted=" << m_last_evictions
                            << ", survived=" << m_objects;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x410, %rsp            # imm = 0x410
movq %rdi, -0x208(%rbp)
movq -0x208(%rbp), %rax
movq %rax, -0x280(%rbp)
leaq 0x4fe09(%rip), %rdi     # 0xafd00
callq 0x22f30
movq %rax, %rdi
callq 0x2a450
testb $0x1, %al
jne 0x5ff69
leaq -0x218(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0xa600
movq -0x288(%rbp), %rdi
leaq 0x1d0ee(%rip), %rsi     # 0x7d017
callq 0x61c10
jmp 0x5ff30
leaq -0x218(%rbp), %rdi
callq 0xa770
movl $0x2, %edi
callq 0x8390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x218(%rbp), %rdi
callq 0xa770
jmp 0x60ee4
callq 0x88b0
movq -0x280(%rbp), %rdi
movq %rax, -0x230(%rbp)
callq 0x60ef0
movq -0x280(%rbp), %rdi
addq $0x30, %rdi
callq 0x39c80
testb $0x1, %al
jne 0x60041
leaq -0x240(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x22390
movq -0x298(%rbp), %rdi
leaq 0x1d084(%rip), %rsi     # 0x7d03e
callq 0x61c50
movq %rax, -0x290(%rbp)
jmp 0x5ffc8
movq -0x280(%rbp), %rdi
addq $0x30, %rdi
callq 0x3a5e0
movq -0x290(%rbp), %rdi
movq %rax, -0x248(%rbp)
leaq -0x248(%rbp), %rsi
callq 0x24e10
movq %rax, -0x2a0(%rbp)
jmp 0x5fffb
movq -0x2a0(%rbp), %rdi
leaq 0x1d058(%rip), %rsi     # 0x7d061
callq 0x61c90
jmp 0x60010
leaq -0x240(%rbp), %rdi
callq 0xa770
jmp 0x60041
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xa770
jmp 0x60ee4
movq -0x280(%rbp), %rax
movl 0x48(%rax), %eax
leaq 0x4ffae(%rip), %rcx     # 0xb0000
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
movl $0x0, -0xd8(%rbp)
movq -0xd0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movl -0xd8(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0xdc(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0x2a4(%rbp)
movl -0xd4(%rbp), %ecx
movl %ecx, -0xe0(%rbp)
subl $0x3, %eax
je 0x600ca
jmp 0x600ac
movl -0x2a4(%rbp), %eax
subl $0x5, %eax
je 0x600db
jmp 0x600b9
movq -0x2b0(%rbp), %rax
movl -0xe0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x600ea
movq -0x2b0(%rbp), %rax
movl -0xe0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x600ea
movq -0x2b0(%rbp), %rcx
movl -0xe0(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x4c(%rax), %eax
leaq 0x4ff05(%rip), %rcx     # 0xb0000
addq $0x4, %rcx
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
movl $0x0, -0xf0(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movl -0xf0(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0xf4(%rbp)
movl -0xf0(%rbp), %eax
movl %eax, -0x2b4(%rbp)
movl -0xec(%rbp), %ecx
movl %ecx, -0xf8(%rbp)
subl $0x3, %eax
je 0x60177
jmp 0x60159
movl -0x2b4(%rbp), %eax
subl $0x5, %eax
je 0x60188
jmp 0x60166
movq -0x2c0(%rbp), %rax
movl -0xf8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60197
movq -0x2c0(%rbp), %rax
movl -0xf8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60197
movq -0x2c0(%rbp), %rcx
movl -0xf8(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x50(%rax), %eax
leaq 0x4fe58(%rip), %rcx     # 0xb0000
addq $0x8, %rcx
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
movl $0x0, -0x108(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movl -0x108(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x10c(%rbp)
movl -0x108(%rbp), %eax
movl %eax, -0x2c4(%rbp)
movl -0x104(%rbp), %ecx
movl %ecx, -0x110(%rbp)
subl $0x3, %eax
je 0x60224
jmp 0x60206
movl -0x2c4(%rbp), %eax
subl $0x5, %eax
je 0x60235
jmp 0x60213
movq -0x2d0(%rbp), %rax
movl -0x110(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60244
movq -0x2d0(%rbp), %rax
movl -0x110(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60244
movq -0x2d0(%rbp), %rcx
movl -0x110(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x54(%rax), %eax
leaq 0x4fdab(%rip), %rcx     # 0xb0000
addq $0xc, %rcx
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
movl $0x0, -0x120(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movl -0x120(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x124(%rbp)
movl -0x120(%rbp), %eax
movl %eax, -0x2d4(%rbp)
movl -0x11c(%rbp), %ecx
movl %ecx, -0x128(%rbp)
subl $0x3, %eax
je 0x602d1
jmp 0x602b3
movl -0x2d4(%rbp), %eax
subl $0x5, %eax
je 0x602e2
jmp 0x602c0
movq -0x2e0(%rbp), %rax
movl -0x128(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x602f1
movq -0x2e0(%rbp), %rax
movl -0x128(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x602f1
movq -0x2e0(%rbp), %rcx
movl -0x128(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x58(%rax), %eax
leaq 0x4fcfe(%rip), %rcx     # 0xb0000
addq $0x10, %rcx
movq %rcx, -0x130(%rbp)
movl %eax, -0x134(%rbp)
movl $0x0, -0x138(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movl -0x138(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x13c(%rbp)
movl -0x138(%rbp), %eax
movl %eax, -0x2e4(%rbp)
movl -0x134(%rbp), %ecx
movl %ecx, -0x140(%rbp)
subl $0x3, %eax
je 0x6037e
jmp 0x60360
movl -0x2e4(%rbp), %eax
subl $0x5, %eax
je 0x6038f
jmp 0x6036d
movq -0x2f0(%rbp), %rax
movl -0x140(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6039e
movq -0x2f0(%rbp), %rax
movl -0x140(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6039e
movq -0x2f0(%rbp), %rcx
movl -0x140(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x5c(%rax), %eax
leaq 0x4fc51(%rip), %rcx     # 0xb0000
addq $0x14, %rcx
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
movl $0x0, -0x150(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0x300(%rbp)
movl -0x150(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x154(%rbp)
movl -0x150(%rbp), %eax
movl %eax, -0x2f4(%rbp)
movl -0x14c(%rbp), %ecx
movl %ecx, -0x158(%rbp)
subl $0x3, %eax
je 0x6042b
jmp 0x6040d
movl -0x2f4(%rbp), %eax
subl $0x5, %eax
je 0x6043c
jmp 0x6041a
movq -0x300(%rbp), %rax
movl -0x158(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6044b
movq -0x300(%rbp), %rax
movl -0x158(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6044b
movq -0x300(%rbp), %rcx
movl -0x158(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x60(%rax), %eax
leaq 0x4fba4(%rip), %rcx     # 0xb0000
addq $0x18, %rcx
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
movl $0x0, -0x168(%rbp)
movq -0x160(%rbp), %rax
movq %rax, -0x310(%rbp)
movl -0x168(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x16c(%rbp)
movl -0x168(%rbp), %eax
movl %eax, -0x304(%rbp)
movl -0x164(%rbp), %ecx
movl %ecx, -0x170(%rbp)
subl $0x3, %eax
je 0x604d8
jmp 0x604ba
movl -0x304(%rbp), %eax
subl $0x5, %eax
je 0x604e9
jmp 0x604c7
movq -0x310(%rbp), %rax
movl -0x170(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x604f8
movq -0x310(%rbp), %rax
movl -0x170(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x604f8
movq -0x310(%rbp), %rcx
movl -0x170(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x64(%rax), %eax
leaq 0x4faf7(%rip), %rcx     # 0xb0000
addq $0x1c, %rcx
movq %rcx, -0x178(%rbp)
movl %eax, -0x17c(%rbp)
movl $0x0, -0x180(%rbp)
movq -0x178(%rbp), %rax
movq %rax, -0x320(%rbp)
movl -0x180(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x184(%rbp)
movl -0x180(%rbp), %eax
movl %eax, -0x314(%rbp)
movl -0x17c(%rbp), %ecx
movl %ecx, -0x188(%rbp)
subl $0x3, %eax
je 0x60585
jmp 0x60567
movl -0x314(%rbp), %eax
subl $0x5, %eax
je 0x60596
jmp 0x60574
movq -0x320(%rbp), %rax
movl -0x188(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x605a5
movq -0x320(%rbp), %rax
movl -0x188(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x605a5
movq -0x320(%rbp), %rcx
movl -0x188(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x68(%rax), %eax
leaq 0x4fa4a(%rip), %rcx     # 0xb0000
addq $0x20, %rcx
movq %rcx, -0x190(%rbp)
movl %eax, -0x194(%rbp)
movl $0x0, -0x198(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x330(%rbp)
movl -0x198(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x19c(%rbp)
movl -0x198(%rbp), %eax
movl %eax, -0x324(%rbp)
movl -0x194(%rbp), %ecx
movl %ecx, -0x1a0(%rbp)
subl $0x3, %eax
je 0x60632
jmp 0x60614
movl -0x324(%rbp), %eax
subl $0x5, %eax
je 0x60643
jmp 0x60621
movq -0x330(%rbp), %rax
movl -0x1a0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60652
movq -0x330(%rbp), %rax
movl -0x1a0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60652
movq -0x330(%rbp), %rcx
movl -0x1a0(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movq 0x70(%rax), %rax
leaq 0x4f99c(%rip), %rcx     # 0xb0000
addq $0x28, %rcx
movq %rcx, -0x70(%rbp)
movq %rax, -0x78(%rbp)
movl $0x0, -0x7c(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x340(%rbp)
movl -0x7c(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x80(%rbp)
movl -0x7c(%rbp), %eax
movl %eax, -0x334(%rbp)
movq -0x78(%rbp), %rcx
movq %rcx, -0x88(%rbp)
subl $0x3, %eax
je 0x606cd
jmp 0x606ad
movl -0x334(%rbp), %eax
subl $0x5, %eax
je 0x606e0
jmp 0x606ba
movq -0x340(%rbp), %rax
movq -0x88(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x606f1
movq -0x340(%rbp), %rax
movq -0x88(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x606f1
movq -0x340(%rbp), %rcx
movq -0x88(%rbp), %rax
xchgq %rax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x78(%rax), %eax
leaq 0x4f8fe(%rip), %rcx     # 0xb0000
addq $0x30, %rcx
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
movl $0x0, -0x1b0(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x350(%rbp)
movl -0x1b0(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x1b4(%rbp)
movl -0x1b0(%rbp), %eax
movl %eax, -0x344(%rbp)
movl -0x1ac(%rbp), %ecx
movl %ecx, -0x1b8(%rbp)
subl $0x3, %eax
je 0x6077e
jmp 0x60760
movl -0x344(%rbp), %eax
subl $0x5, %eax
je 0x6078f
jmp 0x6076d
movq -0x350(%rbp), %rax
movl -0x1b8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6079e
movq -0x350(%rbp), %rax
movl -0x1b8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x6079e
movq -0x350(%rbp), %rcx
movl -0x1b8(%rbp), %eax
xchgl %eax, (%rcx)
leaq 0x4f85b(%rip), %rax     # 0xb0000
addq $0x34, %rax
movq %rax, -0x58(%rbp)
movl $0x1, -0x5c(%rbp)
movl $0x0, -0x60(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x360(%rbp)
movl -0x60(%rbp), %eax
movl -0x5c(%rbp), %ecx
movl %ecx, -0x64(%rbp)
decl %eax
movl %eax, %ecx
movq %rcx, -0x358(%rbp)
subl $0x4, %eax
ja 0x607f6
movq -0x358(%rbp), %rax
leaq 0x1c7b7(%rip), %rcx     # 0x7cfa4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x360(%rbp), %rcx
movl -0x64(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x68(%rbp)
jmp 0x60853
movq -0x360(%rbp), %rcx
movl -0x64(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x68(%rbp)
jmp 0x60853
movq -0x360(%rbp), %rcx
movl -0x64(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x68(%rbp)
jmp 0x60853
movq -0x360(%rbp), %rcx
movl -0x64(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x68(%rbp)
jmp 0x60853
movq -0x360(%rbp), %rcx
movl -0x64(%rbp), %eax
lock
xaddl %eax, (%rcx)
movl %eax, -0x68(%rbp)
movq -0x280(%rbp), %rax
movl 0x7c(%rax), %eax
leaq 0x4f79c(%rip), %rcx     # 0xb0000
addq $0x38, %rcx
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
movl $0x0, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rax
movq %rax, -0x370(%rbp)
movl -0x1c8(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x1cc(%rbp)
movl -0x1c8(%rbp), %eax
movl %eax, -0x364(%rbp)
movl -0x1c4(%rbp), %ecx
movl %ecx, -0x1d0(%rbp)
subl $0x3, %eax
je 0x608e0
jmp 0x608c2
movl -0x364(%rbp), %eax
subl $0x5, %eax
je 0x608f1
jmp 0x608cf
movq -0x370(%rbp), %rax
movl -0x1d0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60900
movq -0x370(%rbp), %rax
movl -0x1d0(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60900
movq -0x370(%rbp), %rcx
movl -0x1d0(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movq 0x80(%rax), %rax
leaq 0x4f6eb(%rip), %rcx     # 0xb0000
addq $0x40, %rcx
movq %rcx, -0x90(%rbp)
movq %rax, -0x98(%rbp)
movl $0x0, -0x9c(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x380(%rbp)
movl -0x9c(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0xa0(%rbp)
movl -0x9c(%rbp), %eax
movl %eax, -0x374(%rbp)
movq -0x98(%rbp), %rcx
movq %rcx, -0xa8(%rbp)
subl $0x3, %eax
je 0x60996
jmp 0x60976
movl -0x374(%rbp), %eax
subl $0x5, %eax
je 0x609a9
jmp 0x60983
movq -0x380(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x609ba
movq -0x380(%rbp), %rax
movq -0xa8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x609ba
movq -0x380(%rbp), %rcx
movq -0xa8(%rbp), %rax
xchgq %rax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x88(%rax), %eax
leaq 0x4f632(%rip), %rcx     # 0xb0000
addq $0x48, %rcx
movq %rcx, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
movl $0x0, -0x1e0(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0x390(%rbp)
movl -0x1e0(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x1e4(%rbp)
movl -0x1e0(%rbp), %eax
movl %eax, -0x384(%rbp)
movl -0x1dc(%rbp), %ecx
movl %ecx, -0x1e8(%rbp)
subl $0x3, %eax
je 0x60a4a
jmp 0x60a2c
movl -0x384(%rbp), %eax
subl $0x5, %eax
je 0x60a5b
jmp 0x60a39
movq -0x390(%rbp), %rax
movl -0x1e8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60a6a
movq -0x390(%rbp), %rax
movl -0x1e8(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60a6a
movq -0x390(%rbp), %rcx
movl -0x1e8(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x8c(%rax), %eax
leaq 0x4f582(%rip), %rcx     # 0xb0000
addq $0x4c, %rcx
movq %rcx, -0x1f0(%rbp)
movl %eax, -0x1f4(%rbp)
movl $0x0, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rax
movq %rax, -0x3a0(%rbp)
movl -0x1f8(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0x1fc(%rbp)
movl -0x1f8(%rbp), %eax
movl %eax, -0x394(%rbp)
movl -0x1f4(%rbp), %ecx
movl %ecx, -0x200(%rbp)
subl $0x3, %eax
je 0x60afa
jmp 0x60adc
movl -0x394(%rbp), %eax
subl $0x5, %eax
je 0x60b0b
jmp 0x60ae9
movq -0x3a0(%rbp), %rax
movl -0x200(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60b1a
movq -0x3a0(%rbp), %rax
movl -0x200(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x60b1a
movq -0x3a0(%rbp), %rcx
movl -0x200(%rbp), %eax
xchgl %eax, (%rcx)
movq -0x280(%rbp), %rax
movl 0x8c(%rax), %eax
leaq 0x4f4d2(%rip), %rcx     # 0xb0000
addq $0x50, %rcx
movq %rcx, -0x8(%rbp)
movq %rax, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movl -0x14(%rbp), %eax
movq -0x10(%rbp), %rcx
movq %rcx, -0x20(%rbp)
decl %eax
movl %eax, %ecx
movq %rcx, -0x3a8(%rbp)
subl $0x4, %eax
ja 0x60b7e
movq -0x3a8(%rbp), %rax
leaq 0x1c443(%rip), %rcx     # 0x7cfb8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x3b0(%rbp), %rcx
movq -0x20(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x28(%rbp)
jmp 0x60bea
movq -0x3b0(%rbp), %rcx
movq -0x20(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x28(%rbp)
jmp 0x60bea
movq -0x3b0(%rbp), %rcx
movq -0x20(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x28(%rbp)
jmp 0x60bea
movq -0x3b0(%rbp), %rcx
movq -0x20(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x28(%rbp)
jmp 0x60bea
movq -0x3b0(%rbp), %rcx
movq -0x20(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x28(%rbp)
callq 0x88b0
movq %rax, -0x250(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xfc70
movq %rax, -0x268(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x5fc70
movq %rax, -0x260(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x5fca0
movq %rax, -0x258(%rbp)
movq -0x258(%rbp), %rax
leaq 0x4f3bc(%rip), %rcx     # 0xb0000
addq $0x58, %rcx
movq %rcx, -0xb0(%rbp)
movq %rax, -0xb8(%rbp)
movl $0x0, -0xbc(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x3c0(%rbp)
movl -0xbc(%rbp), %edi
movl $0xffff, %esi           # imm = 0xFFFF
callq 0x104e0
movl %eax, -0xc0(%rbp)
movl -0xbc(%rbp), %eax
movl %eax, -0x3b4(%rbp)
movq -0xb8(%rbp), %rcx
movq %rcx, -0xc8(%rbp)
subl $0x3, %eax
je 0x60cc5
jmp 0x60ca5
movl -0x3b4(%rbp), %eax
subl $0x5, %eax
je 0x60cd8
jmp 0x60cb2
movq -0x3c0(%rbp), %rax
movq -0xc8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x60ce9
movq -0x3c0(%rbp), %rax
movq -0xc8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x60ce9
movq -0x3c0(%rbp), %rcx
movq -0xc8(%rbp), %rax
xchgq %rax, (%rcx)
movq -0x258(%rbp), %rax
leaq 0x4f309(%rip), %rcx     # 0xb0000
addq $0x60, %rcx
movq %rcx, -0x30(%rbp)
movq %rax, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x3d0(%rbp)
movl -0x3c(%rbp), %eax
movq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
decl %eax
movl %eax, %ecx
movq %rcx, -0x3c8(%rbp)
subl $0x4, %eax
ja 0x60d47
movq -0x3c8(%rbp), %rax
leaq 0x1c28e(%rip), %rcx     # 0x7cfcc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x3d0(%rbp), %rcx
movq -0x48(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x50(%rbp)
jmp 0x60db3
movq -0x3d0(%rbp), %rcx
movq -0x48(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x50(%rbp)
jmp 0x60db3
movq -0x3d0(%rbp), %rcx
movq -0x48(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x50(%rbp)
jmp 0x60db3
movq -0x3d0(%rbp), %rcx
movq -0x48(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x50(%rbp)
jmp 0x60db3
movq -0x3d0(%rbp), %rcx
movq -0x48(%rbp), %rax
lock
xaddq %rax, (%rcx)
movq %rax, -0x50(%rbp)
leaq -0x278(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0xded0
movq -0x3e0(%rbp), %rdi
leaq 0x1c1b0(%rip), %rsi     # 0x7cf84
callq 0x61cd0
movq %rax, -0x3d8(%rbp)
jmp 0x60de2
movq -0x3d8(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x24e10
movq %rax, -0x3e8(%rbp)
jmp 0x60dfe
movq -0x3e8(%rbp), %rdi
leaq 0x1c264(%rip), %rsi     # 0x7d070
callq 0x57f20
movq %rax, -0x3f0(%rbp)
jmp 0x60e1a
movq -0x3f0(%rbp), %rdi
movq -0x280(%rbp), %rsi
addq $0x88, %rsi
callq 0x24620
movq %rax, -0x3f8(%rbp)
jmp 0x60e3d
movq -0x3f8(%rbp), %rdi
leaq 0x1c232(%rip), %rsi     # 0x7d07d
callq 0x2cd60
movq %rax, -0x400(%rbp)
jmp 0x60e59
movq -0x400(%rbp), %rdi
movq -0x280(%rbp), %rsi
addq $0x8c, %rsi
callq 0x24620
movq %rax, -0x408(%rbp)
jmp 0x60e7c
movq -0x408(%rbp), %rdi
leaq 0x1c10d(%rip), %rsi     # 0x7cf97
callq 0x225a0
movq %rax, -0x410(%rbp)
jmp 0x60e98
movq -0x410(%rbp), %rdi
movq -0x280(%rbp), %rsi
addq $0x48, %rsi
callq 0x24620
jmp 0x60eb1
leaq -0x278(%rbp), %rdi
callq 0xa770
addq $0x410, %rsp            # imm = 0x410
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xa770
movq -0x220(%rbp), %rdi
callq 0x8bc0