// File: killwing[P]PTree/test.cpp
// Function: main
int main() {
    PTree<string> pt;    

    // normal get
    string name("Alice");
    pt.put("person.name", name);
    string nameOut = pt.get("person.name"); // assignment syntax
    assert(name == nameOut);
    string nameEx(pt.get<string>("person.name")); // explicit syntax, need convert explicitly
    assert(name == nameEx);
    assert(pt.isValidPath("person.name"));

    // const get
    const PTree<string>& cpt = pt;
    string nameOutC = cpt.get("person.name");
    assert(name == nameOutC);
    string nameExC;
    nameExC = cpt.get<string>("person.name");
    assert(name == nameExC);
    const string& nameRefC = cpt.get("person.name");
    assert(name == nameRefC);

    // ref get
    string& nameRef = pt.get("person.name");
    nameRef = "Bob";
    nameOut = pt.get<string>("person.name");
    assert(nameRef == nameOut);

    // other types
    int age = 25;
    pt.put("person.age", age);
    int ageOut(pt.get("person.age"));
    assert(age == ageOut);

    float height = 1.65;
    pt.put("person.height", height);
    float heightOut(pt.get("person.height"));
    assert(height == heightOut);

    Car car;
    car.color = "black";
    car.price = 50000;
    pt.put("person.car", car);
    Car carOut(pt.get("person.car"));
    assert(car.color == carOut.color);
    assert(car.price == carOut.price);

    // push as vector
    int income = 100;
    pt.push("person.deposit", income++);
    pt.push("person.deposit", income++);
    pt.push("person.deposit", income++);
    const std::vector<int>& sum = pt.get("person.deposit");
    assert(sum.size() == 3);

    // del
    string error;
    pt.del("person.name");
    try {
        pt.get("person.name");
    } catch (const PTreeError& e) {
        error = e.what();
        cout << "catched PTreeError: " << error << endl;
    }
    assert(!error.empty());
    assert(!pt.isValidPath("person.name"));

    cout << "all test passed" << endl;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9f0, %rsp            # imm = 0x9F0
movl $0x0, -0x4(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4510
leaq -0x59(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
callq 0x3370
movq -0x8f8(%rbp), %rdx
leaq 0xaadb(%rip), %rsi      # 0xe004
leaq -0x58(%rbp), %rdi
callq 0x4530
jmp 0x3534
leaq -0x59(%rbp), %rdi
callq 0x3260
leaq 0xaac6(%rip), %rsi      # 0xe00a
leaq -0xc0(%rbp), %rdi
callq 0x47e0
jmp 0x3552
leaq -0x38(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0x58(%rbp), %rdx
callq 0x45e0
jmp 0x3568
leaq -0xc0(%rbp), %rdi
callq 0x48e0
leaq 0xaa8f(%rip), %rsi      # 0xe00a
leaq -0x138(%rbp), %rdi
callq 0x47e0
jmp 0x3589
leaq -0x38(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x4900
movq %rax, -0x900(%rbp)
jmp 0x35a2
movq -0x900(%rbp), %rax
movq %rax, -0xe8(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4c40
movq %rax, -0x908(%rbp)
jmp 0x35c5
movq -0x908(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x30a0
jmp 0x35da
leaq -0x138(%rbp), %rdi
callq 0x48e0
leaq -0x58(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x35fc
jmp 0x3601
jmp 0x3685
leaq 0xaa0e(%rip), %rdi      # 0xe016
leaq 0xaa17(%rip), %rsi      # 0xe026
movl $0x14, %edx
leaq 0xaa14(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x3260
jmp 0x44ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x48e0
jmp 0x44e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x48e0
jmp 0x44e3
leaq 0xa97e(%rip), %rsi      # 0xe00a
leaq -0x1a8(%rbp), %rdi
callq 0x47e0
jmp 0x369a
leaq -0x38(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x4db0
movq %rax, -0x910(%rbp)
jmp 0x36b3
movq -0x910(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x30a0
jmp 0x36c8
leaq -0x1a8(%rbp), %rdi
callq 0x48e0
leaq -0x58(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x36ea
jmp 0x36ec
jmp 0x3739
leaq 0xa947(%rip), %rdi      # 0xe03a
leaq 0xa92c(%rip), %rsi      # 0xe026
movl $0x16, %edx
leaq 0xa929(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x48e0
jmp 0x44d7
leaq 0xa8ca(%rip), %rsi      # 0xe00a
leaq -0x1f8(%rbp), %rdi
callq 0x47e0
jmp 0x374e
leaq -0x38(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x4e60
movb %al, -0x911(%rbp)
jmp 0x3766
movb -0x911(%rbp), %al
testb $0x1, %al
jne 0x3772
jmp 0x3774
jmp 0x37c1
leaq 0xa9db(%rip), %rdi      # 0xe156
leaq 0xa8a4(%rip), %rsi      # 0xe026
movl $0x17, %edx
leaq 0xa8a1(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x48e0
jmp 0x44cb
leaq -0x1f8(%rbp), %rdi
callq 0x48e0
leaq -0x38(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rax
movq %rax, -0x920(%rbp)
leaq 0xa81d(%rip), %rsi      # 0xe00a
leaq -0x278(%rbp), %rdi
callq 0x47e0
jmp 0x37fb
movq -0x920(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x5000
movq %rax, -0x928(%rbp)
jmp 0x3817
movq -0x928(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x5340
movq %rax, -0x930(%rbp)
jmp 0x383a
movq -0x930(%rbp), %rsi
leaq -0x220(%rbp), %rdi
callq 0x30a0
jmp 0x384f
leaq -0x278(%rbp), %rdi
callq 0x48e0
leaq -0x58(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x3871
jmp 0x3873
jmp 0x38af
leaq 0xa7cf(%rip), %rdi      # 0xe049
leaq 0xa7a5(%rip), %rsi      # 0xe026
movl $0x1c, %edx
leaq 0xa7a2(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x48e0
jmp 0x44cb
leaq -0x298(%rbp), %rdi
callq 0x32e0
movq -0x200(%rbp), %rax
movq %rax, -0x938(%rbp)
leaq 0xa73a(%rip), %rsi      # 0xe00a
leaq -0x2e8(%rbp), %rdi
callq 0x47e0
jmp 0x38de
movq -0x938(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x5420
movq %rax, -0x940(%rbp)
jmp 0x38fa
movq -0x940(%rbp), %rsi
leaq -0x298(%rbp), %rdi
callq 0x3040
jmp 0x390f
leaq -0x2e8(%rbp), %rdi
callq 0x48e0
leaq -0x58(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x3931
jmp 0x3933
jmp 0x3980
leaq 0xa720(%rip), %rdi      # 0xe05a
leaq 0xa6e5(%rip), %rsi      # 0xe026
movl $0x1f, %edx
leaq 0xa6e2(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movq -0x200(%rbp), %rax
movq %rax, -0x948(%rbp)
leaq 0xa675(%rip), %rsi      # 0xe00a
leaq -0x348(%rbp), %rdi
callq 0x47e0
jmp 0x39a3
movq -0x948(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x5000
movq %rax, -0x950(%rbp)
jmp 0x39bf
movq -0x950(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x54d0
movq %rax, -0x958(%rbp)
jmp 0x39e2
leaq -0x348(%rbp), %rdi
callq 0x48e0
movq -0x958(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq -0x2f0(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x4d20
testb $0x1, %al
jne 0x3a12
jmp 0x3a14
jmp 0x3a50
leaq 0xa64f(%rip), %rdi      # 0xe06a
leaq 0xa604(%rip), %rsi      # 0xe026
movl $0x21, %edx
leaq 0xa601(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
leaq 0xa5b3(%rip), %rsi      # 0xe00a
leaq -0x3a8(%rbp), %rdi
callq 0x47e0
jmp 0x3a65
leaq -0x38(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x4900
movq %rax, -0x960(%rbp)
jmp 0x3a7e
movq -0x960(%rbp), %rax
movq %rax, -0x358(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x4c40
movq %rax, -0x968(%rbp)
jmp 0x3aa1
leaq -0x3a8(%rbp), %rdi
callq 0x48e0
movq -0x968(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rdi
leaq 0xa5b2(%rip), %rsi      # 0xe07b
callq 0x32d0
jmp 0x3ad0
leaq 0xa533(%rip), %rsi      # 0xe00a
leaq -0x3f8(%rbp), %rdi
callq 0x47e0
jmp 0x3ae5
leaq -0x38(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x4db0
movq %rax, -0x970(%rbp)
jmp 0x3afe
movq -0x970(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
callq 0x3040
jmp 0x3b13
leaq -0x3f8(%rbp), %rdi
callq 0x48e0
movq -0x350(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x3b38
jmp 0x3b3a
jmp 0x3b93
leaq 0xa53e(%rip), %rdi      # 0xe07f
leaq 0xa4de(%rip), %rsi      # 0xe026
movl $0x27, %edx
leaq 0xa4db(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movl $0x19, -0x3fc(%rbp)
leaq 0xa4ee(%rip), %rsi      # 0xe092
leaq -0x450(%rbp), %rdi
callq 0x47e0
jmp 0x3bb2
leaq -0x38(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x3fc(%rbp), %rdx
callq 0x55b0
jmp 0x3bcb
leaq -0x450(%rbp), %rdi
callq 0x48e0
leaq 0xa4b4(%rip), %rsi      # 0xe092
leaq -0x4b0(%rbp), %rdi
callq 0x47e0
jmp 0x3bec
leaq -0x38(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x4900
movq %rax, -0x978(%rbp)
jmp 0x3c05
movq -0x978(%rbp), %rax
movq %rax, -0x460(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x57b0
movq %rax, -0x980(%rbp)
jmp 0x3c28
movq -0x980(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x984(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x48e0
movl -0x984(%rbp), %eax
movl %eax, -0x454(%rbp)
movl -0x3fc(%rbp), %eax
cmpl -0x454(%rbp), %eax
jne 0x3c5f
jmp 0x3cb8
leaq 0xa437(%rip), %rdi      # 0xe09d
leaq 0xa3b9(%rip), %rsi      # 0xe026
movl $0x2d, %edx
leaq 0xa3b6(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movl $0x3fd33333, -0x4b4(%rbp) # imm = 0x3FD33333
leaq 0xa3e2(%rip), %rsi      # 0xe0ab
leaq -0x508(%rbp), %rdi
callq 0x47e0
jmp 0x3cd7
leaq -0x38(%rbp), %rdi
leaq -0x508(%rbp), %rsi
leaq -0x4b4(%rbp), %rdx
callq 0x5890
jmp 0x3cf0
leaq -0x508(%rbp), %rdi
callq 0x48e0
leaq 0xa3a8(%rip), %rsi      # 0xe0ab
leaq -0x568(%rbp), %rdi
callq 0x47e0
jmp 0x3d11
leaq -0x38(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x4900
movq %rax, -0x990(%rbp)
jmp 0x3d2a
movq -0x990(%rbp), %rax
movq %rax, -0x518(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x5a90
movq %rax, -0x998(%rbp)
jmp 0x3d4d
movq -0x998(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x99c(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x48e0
movss -0x99c(%rbp), %xmm0
movss %xmm0, -0x50c(%rbp)
movss -0x4b4(%rbp), %xmm0
ucomiss -0x50c(%rbp), %xmm0
jne 0x3d91
jp 0x3d91
jmp 0x3dea
leaq 0xa321(%rip), %rdi      # 0xe0b9
leaq 0xa287(%rip), %rsi      # 0xe026
movl $0x32, %edx
leaq 0xa284(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x508(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x48e0
jmp 0x44b3
leaq -0x590(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x5b70
movq -0x9a8(%rbp), %rdi
leaq 0xa2c2(%rip), %rsi      # 0xe0cd
callq 0x32d0
jmp 0x3e12
movl $0xc350, -0x570(%rbp)   # imm = 0xC350
leaq 0xa2b0(%rip), %rsi      # 0xe0d3
leaq -0x5e0(%rbp), %rdi
callq 0x47e0
jmp 0x3e31
leaq -0x38(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
leaq -0x590(%rbp), %rdx
callq 0x5b90
jmp 0x3e4a
leaq -0x5e0(%rbp), %rdi
callq 0x48e0
leaq 0xa276(%rip), %rsi      # 0xe0d3
leaq -0x660(%rbp), %rdi
callq 0x47e0
jmp 0x3e6b
leaq -0x38(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x4900
movq %rax, -0x9b0(%rbp)
jmp 0x3e84
movq -0x9b0(%rbp), %rax
movq %rax, -0x610(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x5d90
movq %rax, -0x9b8(%rbp)
jmp 0x3ea7
movq -0x9b8(%rbp), %rsi
leaq -0x608(%rbp), %rdi
callq 0x5e70
jmp 0x3ebc
leaq -0x660(%rbp), %rdi
callq 0x48e0
leaq -0x590(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x4d20
testb $0x1, %al
jne 0x3ee1
jmp 0x3ee3
jmp 0x3f4d
leaq 0xa1f4(%rip), %rdi      # 0xe0de
leaq 0xa135(%rip), %rsi      # 0xe026
movl $0x39, %edx
leaq 0xa132(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x44a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5e0(%rbp), %rdi
callq 0x48e0
jmp 0x44a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x660(%rbp), %rdi
callq 0x48e0
jmp 0x44a7
movl -0x570(%rbp), %eax
cmpl -0x5e8(%rbp), %eax
jne 0x3f5d
jmp 0x3f7c
leaq 0xa194(%rip), %rdi      # 0xe0f8
leaq 0xa0bb(%rip), %rsi      # 0xe026
movl $0x3a, %edx
leaq 0xa0b8(%rip), %rcx      # 0xe02f
callq 0x3130
movl $0x64, -0x664(%rbp)
leaq 0xa185(%rip), %rsi      # 0xe112
leaq -0x6b8(%rbp), %rdi
callq 0x47e0
jmp 0x3f9b
movl -0x664(%rbp), %eax
movl %eax, %ecx
incl %ecx
movl %ecx, -0x664(%rbp)
movl %eax, -0x6bc(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
leaq -0x6bc(%rbp), %rdx
callq 0x5eb0
jmp 0x3fca
leaq -0x6b8(%rbp), %rdi
callq 0x48e0
leaq 0xa135(%rip), %rsi      # 0xe112
leaq -0x710(%rbp), %rdi
callq 0x47e0
jmp 0x3feb
movl -0x664(%rbp), %eax
movl %eax, %ecx
incl %ecx
movl %ecx, -0x664(%rbp)
movl %eax, -0x714(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x710(%rbp), %rsi
leaq -0x714(%rbp), %rdx
callq 0x5eb0
jmp 0x401a
leaq -0x710(%rbp), %rdi
callq 0x48e0
leaq 0xa0e5(%rip), %rsi      # 0xe112
leaq -0x768(%rbp), %rdi
callq 0x47e0
jmp 0x403b
movl -0x664(%rbp), %eax
movl %eax, %ecx
incl %ecx
movl %ecx, -0x664(%rbp)
movl %eax, -0x76c(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x768(%rbp), %rsi
leaq -0x76c(%rbp), %rdx
callq 0x5eb0
jmp 0x406a
leaq -0x768(%rbp), %rdi
callq 0x48e0
leaq 0xa095(%rip), %rsi      # 0xe112
leaq -0x7d0(%rbp), %rdi
callq 0x47e0
jmp 0x408b
leaq -0x38(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x4900
movq %rax, -0x9c0(%rbp)
jmp 0x40a4
movq -0x9c0(%rbp), %rax
movq %rax, -0x780(%rbp)
leaq -0x780(%rbp), %rdi
callq 0x6160
movq %rax, -0x9c8(%rbp)
jmp 0x40c7
leaq -0x7d0(%rbp), %rdi
callq 0x48e0
movq -0x9c8(%rbp), %rax
movq %rax, -0x778(%rbp)
movq -0x778(%rbp), %rdi
callq 0x6240
cmpq $0x3, %rax
jne 0x40f8
jmp 0x419c
leaq 0xa022(%rip), %rdi      # 0xe121
leaq 0x9f20(%rip), %rsi      # 0xe026
movl $0x42, %edx
leaq 0x9f1d(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x449b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0x48e0
jmp 0x449b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x48e0
jmp 0x449b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x48e0
jmp 0x449b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x48e0
jmp 0x449b
leaq -0x7f0(%rbp), %rdi
callq 0x32e0
leaq 0x9e5b(%rip), %rsi      # 0xe00a
leaq -0x840(%rbp), %rdi
callq 0x47e0
jmp 0x41bd
leaq -0x38(%rbp), %rdi
leaq -0x840(%rbp), %rsi
callq 0x6260
jmp 0x41cf
leaq -0x840(%rbp), %rdi
callq 0x48e0
leaq 0x9e28(%rip), %rsi      # 0xe00a
leaq -0x890(%rbp), %rdi
callq 0x47e0
jmp 0x41f0
leaq -0x38(%rbp), %rdi
leaq -0x890(%rbp), %rsi
callq 0x4900
movq %rax, -0x9d0(%rbp)
jmp 0x4209
movq -0x9d0(%rbp), %rax
movq %rax, -0x898(%rbp)
leaq -0x890(%rbp), %rdi
callq 0x48e0
jmp 0x4313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x448f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x840(%rbp), %rdi
callq 0x48e0
jmp 0x448f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x427c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x890(%rbp), %rdi
callq 0x48e0
movl -0x6c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x448f
movq -0x68(%rbp), %rdi
callq 0x3090
movq %rax, -0x8a0(%rbp)
movq -0x8a0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
leaq -0x7f0(%rbp), %rdi
callq 0x32d0
jmp 0x42bd
movq 0x11d0c(%rip), %rdi     # 0x15fd0
leaq 0x9e66(%rip), %rsi      # 0xe131
callq 0x31f0
movq %rax, -0x9d8(%rbp)
jmp 0x42d9
movq -0x9d8(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
callq 0x31e0
movq %rax, -0x9e0(%rbp)
jmp 0x42f5
movq -0x9e0(%rbp), %rdi
movq 0x11cb5(%rip), %rsi     # 0x15fb8
callq 0x3240
jmp 0x430a
callq 0x3330
jmp 0x4311
jmp 0x4313
leaq -0x7f0(%rbp), %rdi
callq 0x3340
xorb $-0x1, %al
testb $0x1, %al
jne 0x4327
jmp 0x4329
jmp 0x4360
leaq 0x9e16(%rip), %rdi      # 0xe146
leaq 0x9cef(%rip), %rsi      # 0xe026
movl $0x4d, %edx
leaq 0x9cec(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
callq 0x3330
jmp 0x435b
jmp 0x448f
leaq 0x9ca3(%rip), %rsi      # 0xe00a
leaq -0x8f0(%rbp), %rdi
callq 0x47e0
jmp 0x4375
leaq -0x38(%rbp), %rdi
leaq -0x8f0(%rbp), %rsi
callq 0x4e60
movb %al, -0x9e1(%rbp)
jmp 0x438d
movb -0x9e1(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x439b
jmp 0x439d
jmp 0x43d9
leaq 0x9db1(%rip), %rdi      # 0xe155
leaq 0x9c7b(%rip), %rsi      # 0xe026
movl $0x4e, %edx
leaq 0x9c78(%rip), %rcx      # 0xe02f
callq 0x3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x8f0(%rbp), %rdi
callq 0x48e0
jmp 0x448f
leaq -0x8f0(%rbp), %rdi
callq 0x48e0
movq 0x11be4(%rip), %rdi     # 0x15fd0
leaq 0x9d81(%rip), %rsi      # 0xe174
callq 0x31f0
movq %rax, -0x9f0(%rbp)
jmp 0x4401
movq -0x9f0(%rbp), %rdi
movq 0x11ba9(%rip), %rsi     # 0x15fb8
callq 0x3240
jmp 0x4416
movl $0x0, -0x4(%rbp)
leaq -0x7f0(%rbp), %rdi
callq 0x3120
leaq -0x608(%rbp), %rdi
callq 0x6400
leaq -0x590(%rbp), %rdi
callq 0x6400
leaq -0x298(%rbp), %rdi
callq 0x3120
leaq -0x220(%rbp), %rdi
callq 0x3120
leaq -0x158(%rbp), %rdi
callq 0x3120
leaq -0xe0(%rbp), %rdi
callq 0x3120
leaq -0x58(%rbp), %rdi
callq 0x3120
leaq -0x38(%rbp), %rdi
callq 0x6420
movl -0x4(%rbp), %eax
addq $0x9f0, %rsp            # imm = 0x9F0
popq %rbp
retq
leaq -0x7f0(%rbp), %rdi
callq 0x3120
leaq -0x608(%rbp), %rdi
callq 0x6400
leaq -0x590(%rbp), %rdi
callq 0x6400
leaq -0x298(%rbp), %rdi
callq 0x3120
leaq -0x220(%rbp), %rdi
callq 0x3120
leaq -0x158(%rbp), %rdi
callq 0x3120
leaq -0xe0(%rbp), %rdi
callq 0x3120
leaq -0x58(%rbp), %rdi
callq 0x3120
leaq -0x38(%rbp), %rdi
callq 0x6420
movq -0x68(%rbp), %rdi
callq 0x3360
movq %rax, %rdi
callq 0x63f0
nopw %cs:(%rax,%rax)