// File: yangwanyuan[P]HLKVDS/tools/DbTest.cc
// Function: Open_DB_Test(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Open_DB_Test(string filename) {

    Options opts;
    KVDS *db = KVDS::Open_KVDS(filename.c_str(), opts);

    //DB Insert 
    string test_key = "test-key";
    int test_key_size = 8;
    string test_value = "test-value";
    int test_value_size = 10;

    Status s = db->Insert(test_key.c_str(), test_key_size, test_value.c_str(),
                          test_value_size);
    if (!s.ok()) {
        std::cout << "Insert Failed" << std::endl;
    } else {
        std::cout << "Insert Success" << std::endl;
    }

    test_value = "test-value-new";
    test_value_size = 14;
    s = db->Insert(test_key.c_str(), test_key_size, test_value.c_str(),
                   test_value_size);
    if (!s.ok()) {
        std::cout << "Insert Failed" << std::endl;
    } else {
        std::cout << "Insert Success" << std::endl;
    }

    //DB Get
    string get_data;
    s = db->Get(test_key.c_str(), test_key_size, get_data);
    if (!s.ok()) {
        std::cout << "Get Failed" << std::endl;
    } else {
        std::cout << "Get Success: data is " << get_data << std::endl;
    }

    //DB Delete
    s = db->Delete(test_key.c_str(), test_key_size);
    if (!s.ok()) {
        std::cout << "Delete Failed" << std::endl;
    } else {
        std::cout << "Delete Success!" << std::endl;
    }

    ////DB Get
    //if (!db->Get(test_key.c_str(), test_key_size, get_data)){
    //  std::cout << "Get Failed" << std::endl;
    //}else{
    //  std::cout << "Get Success: data is " << get_data << std::endl; 
    //}

    WriteBatch batch;
    batch.put(test_key.c_str(), test_key_size, test_value.c_str(),
                test_value_size);

    string test_key2 = "test-key2";
    int test_key2_size = 9;
    string test_value2 = "test-value2";
    int test_value2_size = 11;
    batch.put(test_key2.c_str(), test_key2_size, test_value2.c_str(),
                test_value2_size);
    batch.put("keykeykey3",10,"value3",6);
    batch.put("keykeykey4",10,"value4",6);
    batch.put("keykeykey5",10,"value5",6);
    batch.put("keykeykey6",10,"value6",6);
    batch.put("keykeykey7",10,"value7",6);
    batch.put("keykeykey8",10,"value8",6);
    batch.put("keykeykey9",10,"value9",6);
    batch.del(test_key.c_str(), test_key_size);

    s = db->InsertBatch(&batch);
    if (!s.ok()) {
        std::cout << "Insert Batch Failed" << std::endl;
    }
    else {
        std::cout << "Insert Batch Success" << std::endl;
    }

    //DB Get
    //string get_data;
    s = db->Get(test_key.c_str(), test_key_size, get_data);
    if (!s.ok()) {
        std::cout << "Get Failed" << std::endl;
    } else {
        std::cout << "Get Success: data is " << get_data << std::endl;
    }
    s = db->Get(test_key2.c_str(), test_key2_size, get_data);
    if (!s.ok()) {
        std::cout << "Get Failed" << std::endl;
    } else {
        std::cout << "Get Success: data is " << get_data << std::endl;
    }

    Iterator* it = db->NewIterator();
    //test iterator if compile iterator
    if ( it != NULL) {
        cout << "Iterator the db: First to Last" << endl;
        for(it->SeekToFirst(); it->Valid(); it->Next()) {
            cout << it->Key() << ": " << it->Value() << endl;
        }
        sleep(3);
        cout << "Iterator the db: Last to First" << endl;
        for(it->SeekToLast(); it->Valid(); it->Prev()) {
            cout << it->Key() << ": " << it->Value() << endl;
        }
        delete it;
    }
    delete db;
}

// Assembly:
subq $0x4b8, %rsp            # imm = 0x4B8
movq %rdi, 0x210(%rsp)
movq %rdi, 0x4b0(%rsp)
leaq 0x460(%rsp), %rdi
callq 0x37460
movq 0x210(%rsp), %rdi
callq 0x8180
movq %rax, %rdi
movups 0x4a0(%rsp), %xmm0
movaps %xmm0, 0x440(%rsp)
movups 0x460(%rsp), %xmm0
movups 0x470(%rsp), %xmm1
movups 0x480(%rsp), %xmm2
movups 0x490(%rsp), %xmm3
movaps %xmm3, 0x430(%rsp)
movaps %xmm2, 0x420(%rsp)
movaps %xmm1, 0x410(%rsp)
movaps %xmm0, 0x400(%rsp)
movaps 0x440(%rsp), %xmm0
movq %rsp, %rax
movups %xmm0, 0x40(%rax)
movaps 0x400(%rsp), %xmm0
movaps 0x410(%rsp), %xmm1
movaps 0x420(%rsp), %xmm2
movaps 0x430(%rsp), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x2bce0
movq %rax, 0x458(%rsp)
leaq 0x3df(%rsp), %rdi
movq %rdi, 0x218(%rsp)
callq 0x8830
movq 0x218(%rsp), %rdx
leaq 0x49128(%rip), %rsi     # 0x5202b
leaq 0x3e0(%rsp), %rdi
callq 0x8680
jmp 0x8f12
leaq 0x3df(%rsp), %rdi
callq 0x8540
movl $0x8, 0x3c8(%rsp)
leaq 0x3a7(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0x8830
movq 0x208(%rsp), %rdx
leaq 0x490e6(%rip), %rsi     # 0x52034
leaq 0x3a8(%rsp), %rdi
callq 0x8680
jmp 0x8f5d
leaq 0x3a7(%rsp), %rdi
callq 0x8540
movl $0xa, 0x3a0(%rsp)
movq 0x458(%rsp), %rax
movq %rax, 0x1f0(%rsp)
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq %rax, 0x1f8(%rsp)
movl 0x3c8(%rsp), %eax
movl %eax, 0x204(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0x8180
movq 0x1f0(%rsp), %rsi
movq 0x1f8(%rsp), %rdx
movl 0x204(%rsp), %ecx
movq %rax, %r8
movzwl 0x3a0(%rsp), %r9d
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x390(%rsp), %rdi
callq 0x2c700
jmp 0x8ff0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x1ef(%rsp)
jmp 0x9006
movb 0x1ef(%rsp), %al
testb $0x1, %al
jne 0x90cd
jmp 0x9017
movq 0x67fb2(%rip), %rdi     # 0x70fd0
leaq 0x4901a(%rip), %rsi     # 0x5203f
callq 0x84e0
movq %rax, 0x1e0(%rsp)
jmp 0x9034
movq 0x1e0(%rsp), %rdi
movq 0x67f5d(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x904a
jmp 0x9102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x3df(%rsp), %rdi
callq 0x8540
jmp 0x9ec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x3a7(%rsp), %rdi
callq 0x8540
jmp 0x9eb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9eaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9e9d
movq 0x67efc(%rip), %rdi     # 0x70fd0
leaq 0x48f72(%rip), %rsi     # 0x5204d
callq 0x84e0
movq %rax, 0x1d8(%rsp)
jmp 0x90ea
movq 0x1d8(%rsp), %rdi
movq 0x67ea7(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9100
jmp 0x9102
leaq 0x48f53(%rip), %rsi     # 0x5205c
leaq 0x3a8(%rsp), %rdi
callq 0x8670
jmp 0x9118
movl $0xe, 0x3a0(%rsp)
movq 0x458(%rsp), %rax
movq %rax, 0x1c0(%rsp)
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq %rax, 0x1c8(%rsp)
movl 0x3c8(%rsp), %eax
movl %eax, 0x1d4(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0x8180
movq 0x1c0(%rsp), %rsi
movq 0x1c8(%rsp), %rdx
movl 0x1d4(%rsp), %ecx
movq %rax, %r8
movzwl 0x3a0(%rsp), %r9d
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x380(%rsp), %rdi
callq 0x2c700
jmp 0x919e
movups 0x380(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x380(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x1bf(%rsp)
jmp 0x91d1
movb 0x1bf(%rsp), %al
testb $0x1, %al
jne 0x9213
jmp 0x91de
movq 0x67deb(%rip), %rdi     # 0x70fd0
leaq 0x48e53(%rip), %rsi     # 0x5203f
callq 0x84e0
movq %rax, 0x1b0(%rsp)
jmp 0x91fb
movq 0x1b0(%rsp), %rdi
movq 0x67d96(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9211
jmp 0x9248
movq 0x67db6(%rip), %rdi     # 0x70fd0
leaq 0x48e2c(%rip), %rsi     # 0x5204d
callq 0x84e0
movq %rax, 0x1a8(%rsp)
jmp 0x9230
movq 0x1a8(%rsp), %rdi
movq 0x67d61(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9246
jmp 0x9248
leaq 0x360(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x86a0
movq 0x458(%rsp), %rax
movq %rax, 0x198(%rsp)
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq 0x198(%rsp), %rsi
movq 0x1a0(%rsp), %r8
movq %rax, %rdx
movl 0x3c8(%rsp), %ecx
leaq 0x350(%rsp), %rdi
callq 0x2ca00
jmp 0x92a3
movups 0x350(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x350(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x197(%rsp)
jmp 0x92d6
movb 0x197(%rsp), %al
testb $0x1, %al
jne 0x9331
jmp 0x92e3
movq 0x67ce6(%rip), %rdi     # 0x70fd0
leaq 0x48d7a(%rip), %rsi     # 0x5206b
callq 0x84e0
movq %rax, 0x188(%rsp)
jmp 0x9300
movq 0x188(%rsp), %rdi
movq 0x67c91(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9316
jmp 0x9385
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9e90
movq 0x67c98(%rip), %rdi     # 0x70fd0
leaq 0x48d37(%rip), %rsi     # 0x52076
callq 0x84e0
movq %rax, 0x180(%rsp)
jmp 0x934e
movq 0x180(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x8470
movq %rax, 0x178(%rsp)
jmp 0x936d
movq 0x178(%rsp), %rdi
movq 0x67c24(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9383
jmp 0x9385
movq 0x458(%rsp), %rax
movq %rax, 0x170(%rsp)
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq 0x170(%rsp), %rsi
movq %rax, %rdx
movl 0x3c8(%rsp), %ecx
leaq 0x340(%rsp), %rdi
callq 0x2c9b0
jmp 0x93c3
movups 0x340(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x340(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x16f(%rsp)
jmp 0x93f6
movb 0x16f(%rsp), %al
testb $0x1, %al
jne 0x9438
jmp 0x9403
movq 0x67bc6(%rip), %rdi     # 0x70fd0
leaq 0x48c7b(%rip), %rsi     # 0x5208c
callq 0x84e0
movq %rax, 0x160(%rsp)
jmp 0x9420
movq 0x160(%rsp), %rdi
movq 0x67b71(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9436
jmp 0x946d
movq 0x67b91(%rip), %rdi     # 0x70fd0
leaq 0x48c54(%rip), %rsi     # 0x5209a
callq 0x84e0
movq %rax, 0x158(%rsp)
jmp 0x9455
movq 0x158(%rsp), %rdi
movq 0x67b3c(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x946b
jmp 0x946d
leaq 0x328(%rsp), %rdi
callq 0x51a60
jmp 0x947c
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq %rax, 0x148(%rsp)
movl 0x3c8(%rsp), %eax
movl %eax, 0x154(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0x8180
movq 0x148(%rsp), %rsi
movl 0x154(%rsp), %edx
movq %rax, %rcx
movzwl 0x3a0(%rsp), %r8d
leaq 0x328(%rsp), %rdi
callq 0x51b20
jmp 0x94d6
leaq 0x307(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x8830
movq 0x140(%rsp), %rdx
leaq 0x48bb0(%rip), %rsi     # 0x520aa
leaq 0x308(%rsp), %rdi
callq 0x8680
jmp 0x9509
leaq 0x307(%rsp), %rdi
callq 0x8540
movl $0x9, 0x300(%rsp)
leaq 0x2df(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x8830
movq 0x138(%rsp), %rdx
leaq 0x48b6f(%rip), %rsi     # 0x520b4
leaq 0x2e0(%rsp), %rdi
callq 0x8680
jmp 0x9554
leaq 0x2df(%rsp), %rdi
callq 0x8540
movl $0xb, 0x2d8(%rsp)
leaq 0x308(%rsp), %rdi
callq 0x8180
movq %rax, 0x128(%rsp)
movl 0x300(%rsp), %eax
movl %eax, 0x134(%rsp)
leaq 0x2e0(%rsp), %rdi
callq 0x8180
movq 0x128(%rsp), %rsi
movl 0x134(%rsp), %edx
movq %rax, %rcx
movzwl 0x2d8(%rsp), %r8d
leaq 0x328(%rsp), %rdi
callq 0x51b20
jmp 0x95c6
leaq 0x48af3(%rip), %rsi     # 0x520c0
leaq 0x48af7(%rip), %rcx     # 0x520cb
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x95ee
leaq 0x48add(%rip), %rsi     # 0x520d2
leaq 0x48ae1(%rip), %rcx     # 0x520dd
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x9616
leaq 0x48ac7(%rip), %rsi     # 0x520e4
leaq 0x48acb(%rip), %rcx     # 0x520ef
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x963e
leaq 0x48ab1(%rip), %rsi     # 0x520f6
leaq 0x48ab5(%rip), %rcx     # 0x52101
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x9666
leaq 0x48a9b(%rip), %rsi     # 0x52108
leaq 0x48a9f(%rip), %rcx     # 0x52113
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x968e
leaq 0x48a85(%rip), %rsi     # 0x5211a
leaq 0x48a89(%rip), %rcx     # 0x52125
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x96b6
leaq 0x48a6f(%rip), %rsi     # 0x5212c
leaq 0x48a73(%rip), %rcx     # 0x52137
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
movl $0x6, %r8d
callq 0x51b20
jmp 0x96de
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq %rax, %rsi
movl 0x3c8(%rsp), %edx
leaq 0x328(%rsp), %rdi
callq 0x51bc0
jmp 0x9704
movq 0x458(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
leaq 0x328(%rsp), %rdx
callq 0x2ce00
jmp 0x9723
movups 0x2c8(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x127(%rsp)
jmp 0x9756
movb 0x127(%rsp), %al
testb $0x1, %al
jne 0x981d
jmp 0x9767
movq 0x67862(%rip), %rdi     # 0x70fd0
leaq 0x489c9(%rip), %rsi     # 0x5213e
callq 0x84e0
movq %rax, 0x118(%rsp)
jmp 0x9784
movq 0x118(%rsp), %rdi
movq 0x6780d(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x979a
jmp 0x9852
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9e83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x307(%rsp), %rdi
callq 0x8540
jmp 0x9e83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x2df(%rsp), %rdi
callq 0x8540
jmp 0x9e76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9e69
movq 0x677ac(%rip), %rdi     # 0x70fd0
leaq 0x48927(%rip), %rsi     # 0x52152
callq 0x84e0
movq %rax, 0x110(%rsp)
jmp 0x983a
movq 0x110(%rsp), %rdi
movq 0x67757(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9850
jmp 0x9852
movq 0x458(%rsp), %rax
movq %rax, 0x108(%rsp)
leaq 0x3e0(%rsp), %rdi
callq 0x8180
movq 0x108(%rsp), %rsi
movq %rax, %rdx
movl 0x3c8(%rsp), %ecx
leaq 0x2b8(%rsp), %rdi
leaq 0x360(%rsp), %r8
callq 0x2ca00
jmp 0x9898
movups 0x2b8(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0x107(%rsp)
jmp 0x98cb
movb 0x107(%rsp), %al
testb $0x1, %al
jne 0x990d
jmp 0x98d8
movq 0x676f1(%rip), %rdi     # 0x70fd0
leaq 0x48785(%rip), %rsi     # 0x5206b
callq 0x84e0
movq %rax, 0xf8(%rsp)
jmp 0x98f5
movq 0xf8(%rsp), %rdi
movq 0x6769c(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x990b
jmp 0x9961
movq 0x676bc(%rip), %rdi     # 0x70fd0
leaq 0x4875b(%rip), %rsi     # 0x52076
callq 0x84e0
movq %rax, 0xf0(%rsp)
jmp 0x992a
movq 0xf0(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x8470
movq %rax, 0xe8(%rsp)
jmp 0x9949
movq 0xe8(%rsp), %rdi
movq 0x67648(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x995f
jmp 0x9961
movq 0x458(%rsp), %rax
movq %rax, 0xe0(%rsp)
leaq 0x308(%rsp), %rdi
callq 0x8180
movq 0xe0(%rsp), %rsi
movq %rax, %rdx
movl 0x300(%rsp), %ecx
leaq 0x2a8(%rsp), %rdi
leaq 0x360(%rsp), %r8
callq 0x2ca00
jmp 0x99a7
movups 0x2a8(%rsp), %xmm0
movaps %xmm0, 0x390(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0xa8b0
leaq 0x390(%rsp), %rdi
callq 0xa890
movb %al, 0xdf(%rsp)
jmp 0x99da
movb 0xdf(%rsp), %al
testb $0x1, %al
jne 0x9a1c
jmp 0x99e7
movq 0x675e2(%rip), %rdi     # 0x70fd0
leaq 0x48676(%rip), %rsi     # 0x5206b
callq 0x84e0
movq %rax, 0xd0(%rsp)
jmp 0x9a04
movq 0xd0(%rsp), %rdi
movq 0x6758d(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9a1a
jmp 0x9a70
movq 0x675ad(%rip), %rdi     # 0x70fd0
leaq 0x4864c(%rip), %rsi     # 0x52076
callq 0x84e0
movq %rax, 0xc8(%rsp)
jmp 0x9a39
movq 0xc8(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x8470
movq %rax, 0xc0(%rsp)
jmp 0x9a58
movq 0xc0(%rsp), %rdi
movq 0x67539(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9a6e
jmp 0x9a70
movq 0x458(%rsp), %rdi
callq 0x2bc70
movq %rax, 0xb8(%rsp)
jmp 0x9a87
movq 0xb8(%rsp), %rax
movq %rax, 0x2a0(%rsp)
cmpq $0x0, 0x2a0(%rsp)
je 0x9de8
movq 0x67523(%rip), %rdi     # 0x70fd0
leaq 0x486b3(%rip), %rsi     # 0x52167
callq 0x84e0
movq %rax, 0xb0(%rsp)
jmp 0x9ac3
movq 0xb0(%rsp), %rdi
movq 0x674ce(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9ad9
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0x9aec
jmp 0x9aee
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movb %al, 0xaf(%rsp)
jmp 0x9b08
movb 0xaf(%rsp), %al
testb $0x1, %al
jne 0x9b18
jmp 0x9c3a
movq 0x2a0(%rsp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq 0x280(%rsp), %rdi
callq *%rax
jmp 0x9b33
movq 0x67496(%rip), %rdi     # 0x70fd0
leaq 0x280(%rsp), %rsi
callq 0x8470
movq %rax, 0xa0(%rsp)
jmp 0x9b51
movq 0xa0(%rsp), %rdi
leaq 0x491ba(%rip), %rsi     # 0x52d1a
callq 0x84e0
movq %rax, 0x98(%rsp)
jmp 0x9b6f
movq 0x2a0(%rsp), %rsi
movq (%rsi), %rax
movq 0x40(%rax), %rax
leaq 0x260(%rsp), %rdi
callq *%rax
jmp 0x9b8a
movq 0x98(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x8470
movq %rax, 0x90(%rsp)
jmp 0x9ba9
movq 0x90(%rsp), %rdi
movq 0x673e8(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9bbf
leaq 0x260(%rsp), %rdi
callq 0x8928
leaq 0x280(%rsp), %rdi
callq 0x8928
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
jmp 0x9bec
jmp 0x9aee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9c28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x8928
leaq 0x280(%rsp), %rdi
callq 0x8928
jmp 0x9e69
movl $0x3, %edi
callq 0x83c0
jmp 0x9c46
movq 0x67383(%rip), %rdi     # 0x70fd0
leaq 0x48532(%rip), %rsi     # 0x52186
callq 0x84e0
movq %rax, 0x88(%rsp)
jmp 0x9c63
movq 0x88(%rsp), %rdi
movq 0x6732e(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9c79
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0x9c8c
jmp 0x9c8e
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movb %al, 0x87(%rsp)
jmp 0x9ca8
movb 0x87(%rsp), %al
testb $0x1, %al
jne 0x9cb8
jmp 0x9dc8
movq 0x2a0(%rsp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq 0x240(%rsp), %rdi
callq *%rax
jmp 0x9cd3
movq 0x672f6(%rip), %rdi     # 0x70fd0
leaq 0x240(%rsp), %rsi
callq 0x8470
movq %rax, 0x78(%rsp)
jmp 0x9cee
movq 0x78(%rsp), %rdi
leaq 0x49020(%rip), %rsi     # 0x52d1a
callq 0x84e0
movq %rax, 0x70(%rsp)
jmp 0x9d06
movq 0x2a0(%rsp), %rsi
movq (%rsi), %rax
movq 0x40(%rax), %rax
leaq 0x220(%rsp), %rdi
callq *%rax
jmp 0x9d21
movq 0x70(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x8470
movq %rax, 0x68(%rsp)
jmp 0x9d3a
movq 0x68(%rsp), %rdi
movq 0x6725a(%rip), %rsi     # 0x70fa0
callq 0x8520
jmp 0x9d4d
leaq 0x220(%rsp), %rdi
callq 0x8928
leaq 0x240(%rsp), %rdi
callq 0x8928
movq 0x2a0(%rsp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
jmp 0x9d7a
jmp 0x9c8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
jmp 0x9db6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3d0(%rsp)
movl %eax, 0x3cc(%rsp)
leaq 0x220(%rsp), %rdi
callq 0x8928
leaq 0x240(%rsp), %rdi
callq 0x8928
jmp 0x9e69
movq 0x2a0(%rsp), %rax
movq %rax, 0x60(%rsp)
cmpq $0x0, %rax
je 0x9de6
movq 0x60(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x9de8
movq 0x458(%rsp), %rax
movq %rax, 0x58(%rsp)
cmpq $0x0, %rax
je 0x9e06
movq 0x58(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x2e0(%rsp), %rdi
callq 0x8928
leaq 0x308(%rsp), %rdi
callq 0x8928
leaq 0x328(%rsp), %rdi
callq 0x51a70
leaq 0x360(%rsp), %rdi
callq 0x8928
leaq 0x390(%rsp), %rdi
callq 0xa8b0
leaq 0x3a8(%rsp), %rdi
callq 0x8928
leaq 0x3e0(%rsp), %rdi
callq 0x8928
addq $0x4b8, %rsp            # imm = 0x4B8
retq
leaq 0x2e0(%rsp), %rdi
callq 0x8928
leaq 0x308(%rsp), %rdi
callq 0x8928
leaq 0x328(%rsp), %rdi
callq 0x51a70
leaq 0x360(%rsp), %rdi
callq 0x8928
leaq 0x390(%rsp), %rdi
callq 0xa8b0
leaq 0x3a8(%rsp), %rdi
callq 0x8928
leaq 0x3e0(%rsp), %rdi
callq 0x8928
movq 0x3d0(%rsp), %rdi
callq 0x8820
nopw %cs:(%rax,%rax)