// File: /workspace/github_cpp_makefile_star2_O1/zimpha[P]MiniSQL/interpreter.cc
// Function: Interpreter::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool Interpreter::parse(std::string input) {
    if (input == "quit") {
        api.bm.BufferManagerFlush();
        printf("Flush finished\n");
        return true;
    }

    if (input == "flush") {
        api.bm.BufferManagerFlush();
        printf("Flush finished\n");
        return false;
    }

    if (input == "") return false;
    
    for (size_t i = 0; i < input.length(); ++ i) {
        if (input[i] == '(' || input[i] == ')' || input[i] == ',') {
            input.insert(i, " ");
            input.insert(i + 2, " ");
            i += 2;
        }
    }
    std::strstream sin;
    sin << input;

    std::string oper, null;
    sin >> oper;

    if (oper == "execfile") {
        std::string filename;
        sin >> filename;
        return execfile(filename);
    }
    else if (oper == "create") {
        std::string type;
        sin >> type;

        if (type == "table") {
            std::string tableName;
            sin >> tableName >> null;
            // null == "("

            std::vector<AttrType> data;
            int pk = 0x3f3f3f3f;

            while (1) {
                std::string attrName;
                sin >> attrName;

                if (attrName == "primary") {
                    sin >> null; // null == "key"
                    sin >> null; // null == "("
                    std::string pkName;
                    sin >> pkName;

                    for (size_t i = 0; i < data.size(); ++ i) {
                        if (data[i].name == pkName) {
                            pk = i;
                            break;
                        }
                    }
                    break;
                }

                std::string dataType;
                int length = 0;
                sin >> dataType;

                if (dataType == "char") { // get char length
                    sin >> null; // null == "("
                    sin >> length;
                    sin >> null; // null == ")"
                }
                std::string unique;
                sin >> unique;

                AttrType newAttr;
                if (unique == "unique") {
                    newAttr.unique = true;
                    sin >> null; // null: ","
                }
                else {
                    // unique == ","
                    newAttr.unique = false;
                }
                newAttr.name = attrName;
                if (dataType == "char") {
                    newAttr.type = 2;
                    newAttr.length = length + 1;
                }
                else if (dataType == "int") {
                    newAttr.type = 0;
                    newAttr.length = 0;
                }
                else if (dataType == "float") {
                    newAttr.type = 1;
                    newAttr.length = 0;
                }
                else {
                    std::cout << "unrecognized data type: " << dataType << std::endl;
                    return false;
                }
                data.push_back(newAttr);
            }
            if (pk == 0x3f3f3f3f) {
                std::cout << "don't set primary key or no such attribute" << std::endl;
                return false;
            }
            else {
                Response res = api.createTable(tableName, data, pk);
                if (!res.succeed) {
                    std::cout << res.info << std::endl;
                    return false;
                }
                else {
                    std::cout << "OK" << std::endl;
                    return false;
                }
            }
        }
        else if (type == "index") {
            std::string indexName, tableName, attrName;
            sin >> indexName >> null >> tableName >> null >> attrName;
            // first null == "on"
            // second null == "("
            Response res = api.createIndex(indexName, tableName, attrName);
            if (!res.succeed) {
                std::cout << res.info << std::endl;
                return false;
            }
            else {
                std::cout << "OK" << std::endl;
                return false;
            }
        }
        else {
            std::cout << "syntax error" << std::endl;
            return false;
        }
    }
    else if (oper == "drop") {
        std::string type;
        sin >> type;
        if (type == "table") {
            std::string tableName;
            sin >> tableName;
            Response res = api.dropTable(tableName);
            if (!res.succeed) {
                std::cout << res.info << std::endl;
                return false;
            }
            else {
                std::cout << "OK" << std::endl;
                return false;
            }
        }
        else if (type == "index") {
            std::string indexName;
            sin >> indexName;
            Response res = api.dropIndex(indexName);
            if (!res.succeed) {
                std::cout << res.info << std::endl;
                return false;
            }
            else {
                std::cout << "OK" << std::endl;
                return false;
            }
        }
        else {
            std::cout << "syntax error" << std::endl;
            return false;
        }
    }
    else if (oper == "insert") {
        std::string tableName;
        sin >> null >> tableName >> null >> null;
        // first null == "into"
        // second null == "values"
        // third null == "("
        std::vector<element> entry;
        while (1) {
            std::string data;
            sin >> data;
            entry.push_back(parseElement(data));
            sin >> null; // null == ","
            if (null == ")") {
                break;
            }
        }
        Response res = api.Insert(tableName, entry);
        if (!res.succeed) {
            std::cout << res.info << std::endl;
            return false;
        }
        else {
            std::cout << "OK" << std::endl;
            return false;
        }
    }
    else if (oper == "select") {
        std::string tableName;
        sin >> null >> null >> tableName;
        // first null == "*"
        // second null == "from"
        Filter filter;
        if (!api.cm.hasTable(tableName + ".table")) {
            std::cout << "table does not exist" << std::endl;
            return false;
        }
        Table nt = api.cm.loadTable(tableName + ".table");
        while (sin >> null) { // null == "where", null == "and"
            std::string attrName, ope, data;
            sin >> attrName >> ope >> data;
            int index = -1, op;
            for (size_t i = 0; i < nt.attributes.size(); ++ i) {
                if (nt.attributes[i].name == attrName) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                std::cout << "attribute does not exist" << std::endl;
                return false;
            }
            if (ope == "<") op = 0;
            else if (ope == "<=") op = 1;
            else if (ope == "=") op = 2;
            else if (ope == ">=") op = 3;
            else if (ope == ">") op = 4;
            else if (ope == "<>") op = 5;
            else {
                std::cout << "syntax error" << std::endl;
                return false;
            }
            filter.addRule(Rule(index, op, parseElement(data)));
        }
        Response res = api.Select(tableName, filter);
        if (!res.succeed) {
            std::cout << res.info << std::endl;
            return false;
        }
        else {
            printSelectResult(nt, res);
            return false;
        }
    }
    else if (oper == "delete") {
        std::string tableName;
        sin >> null >> tableName;// null == from;
        Filter filter;
        if (!api.cm.hasTable(tableName + ".table")) {
            std::cout << "table does not exist" << std::endl;
            return false;
        }
        Table nt = api.cm.loadTable(tableName + ".table");
        while (sin >> null) { // null == "where", null == "and"
            std::string attrName, ope, data;
            sin >> attrName >> ope >> data;
            int index = -1, op;
            for (size_t i = 0; i < nt.attributes.size(); ++ i) {
                if (nt.attributes[i].name == attrName) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                std::cout << "attribute does not exist" << std::endl;
                return false;
            }
            if (ope == "<") op = 0;
            else if (ope == "<=") op = 1;
            else if (ope == "=") op = 2;
            else if (ope == ">=") op = 3;
            else if (ope == ">") op = 4;
            else if (ope == "<>") op = 5;
            else {
                std::cout << "syntax error" << std::endl;
                return false;
            }
            filter.addRule(Rule(index, op, parseElement(data)));
        }
        Response res = api.Delete(tableName, filter);
        if (!res.succeed) {
            std::cout << res.info << std::endl;
        }
        else {
            std::cout << "delete OK" << std::endl;
        }
    }
    else {
        std::cout << "syntax error" << std::endl;
        return false;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x408, %rsp            # imm = 0x408
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x5249(%rip), %rsi      # 0x145d4
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf558
leaq 0x5237(%rip), %rsi      # 0x145d9
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf57a
leaq 0x4efc(%rip), %rsi      # 0x142b5
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf595
movq %rbx, -0x50(%rbp)
cmpq $0x0, 0x8(%r14)
je 0xf433
xorl %ebx, %ebx
movabsq $0x130000000000, %r12   # imm = 0x130000000000
leaq 0x5236(%rip), %r15      # 0x1461d
movq (%r14), %rax
movzbl (%rax,%rbx), %eax
cmpq $0x2c, %rax
ja 0xf42a
btq %rax, %r12
jae 0xf42a
movl $0x1, %r8d
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x3300
addq $0x2, %rbx
movl $0x1, %r8d
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x3300
incq %rbx
cmpq 0x8(%r14), %rbx
jb 0xf3e7
leaq -0x430(%rbp), %rdi
callq 0x3390
leaq -0x420(%rbp), %rdi
movq (%r14), %rsi
movq 0x8(%r14), %rdx
callq 0x3310
leaq -0x1a8(%rbp), %r12
movq %r12, -0x10(%r12)
xorl %eax, %eax
movq %rax, -0x8(%r12)
movb %al, (%r12)
leaq -0x188(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x430(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3360
leaq 0x514b(%rip), %rsi      # 0x145df
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf59c
leaq 0x5139(%rip), %rsi      # 0x145e8
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf62b
leaq 0x4e84(%rip), %rsi      # 0x1434e
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf6d5
leaq 0x4eb5(%rip), %rsi      # 0x1439a
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf75e
leaq 0x5157(%rip), %rsi      # 0x14657
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xfda7
leaq 0x517c(%rip), %rsi      # 0x14697
leaq -0x1b8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x102b1
movq 0xba92(%rip), %rdi      # 0x1afc8
leaq 0x510d(%rip), %rsi      # 0x1464a
movl $0xc, %edx
callq 0x3310
movq 0xba7a(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10a2e
addq $0x98, %rbx
movq %rbx, %rdi
callq 0x98e6
leaq 0x5192(%rip), %rdi      # 0x14700
callq 0x33f0
movb $0x1, %bl
jmp 0x10a65
addq $0x98, %rbx
movq %rbx, %rdi
callq 0x98e6
leaq 0x5170(%rip), %rdi      # 0x14700
callq 0x33f0
xorl %ebx, %ebx
jmp 0x10a65
leaq -0x108(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x430(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3360
leaq -0x248(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x118(%rbp), %rsi
movq -0x110(%rbp), %rdx
addq %rsi, %rdx
leaq -0x258(%rbp), %rdi
callq 0x8766
leaq -0x258(%rbp), %rsi
movq -0x50(%rbp), %rdi
callq 0x10eca
movl %eax, %ebx
movq -0x258(%rbp), %rdi
cmpq %r15, %rdi
je 0xf611
callq 0x3270
movq -0x118(%rbp), %rdi
cmpq %r14, %rdi
je 0x10a30
callq 0x3270
jmp 0x10a30
leaq -0x148(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x3360
leaq 0x49f7(%rip), %rsi      # 0x14052
leaq -0x158(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf91c
leaq 0x4ac8(%rip), %rsi      # 0x1413e
leaq -0x158(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x10146
movq 0xb937(%rip), %rbx      # 0x1afc8
leaq 0x4fb2(%rip), %rsi      # 0x1464a
movl $0xc, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq 0xb905(%rip), %rdi      # 0x1afc8
callq 0x3040
movq %rax, %rdi
callq 0x31c0
jmp 0x108e8
leaq -0x148(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x430(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x3360
leaq 0x494c(%rip), %rsi      # 0x14052
leaq -0x158(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x1020d
leaq 0x4a1d(%rip), %rsi      # 0x1413e
leaq -0x158(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x1063e
movq 0xb88c(%rip), %rdi      # 0x1afc8
leaq 0x4f07(%rip), %rsi      # 0x1464a
movl $0xc, %edx
callq 0x3310
movq 0xb874(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x1080c
leaq -0x148(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
leaq -0x158(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
xorps %xmm0, %xmm0
leaq -0x70(%rbp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x228(%rbp), %r14
leaq -0x430(%rbp), %r15
leaq -0x238(%rbp), %r13
leaq -0x118(%rbp), %r12
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
movq %r15, %rdi
leaq -0x48(%rbp), %rsi
callq 0x3360
movq %r14, -0x238(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x8766
movq %r12, %rdi
movq %r13, %rdx
callq 0x11098
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
callq 0x1193a
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0xf84b
callq 0x3270
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0xf85c
callq 0x3270
movq %r15, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq %r13, %rbx
movq %r15, %r13
movq %r14, %r15
leaq -0x198(%rbp), %rdi
leaq 0x4f7f(%rip), %rsi      # 0x14801
callq 0x30b0
movl %eax, %r14d
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xf89c
callq 0x3270
testl %r14d, %r14d
movq %r15, %r14
movq %r13, %r15
movq %rbx, %r13
jne 0xf7e2
leaq -0x218(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x90ea
leaq -0x118(%rbp), %rdi
leaq -0x158(%rbp), %rdx
leaq -0x218(%rbp), %rcx
movq -0x50(%rbp), %rsi
leaq -0x1a8(%rbp), %r12
callq 0x735a
leaq -0x218(%rbp), %rdi
callq 0x889a
cmpb $0x0, -0x118(%rbp)
je 0x10272
movq 0xb6c5(%rip), %rbx      # 0x1afc8
leaq 0x4d9b(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x1028f
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
xorps %xmm0, %xmm0
leaq -0x170(%rbp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x60(%rbp), %r15
leaq -0x80(%rbp), %r14
leaq -0xa8(%rbp), %r13
movl $0x3f3f3f3f, -0x98(%rbp) # imm = 0x3F3F3F3F
movq 0xb645(%rip), %rax      # 0x1afc8
movq %rax, -0x1c0(%rbp)
movq %r15, -0x70(%rbp)
movq $0x0, -0x68(%rbp)
movb $0x0, -0x60(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3360
leaq -0x70(%rbp), %rdi
leaq 0x4c3a(%rip), %rsi      # 0x145ef
callq 0x30b0
testl %eax, %eax
je 0xfad5
movq %r14, -0x90(%rbp)
movq $0x0, -0x88(%rbp)
movb $0x0, -0x80(%rbp)
movl $0x0, -0x174(%rbp)
leaq -0x430(%rbp), %rbx
movq %rbx, %rdi
leaq -0x90(%rbp), %rsi
callq 0x3360
leaq -0x90(%rbp), %rdi
leaq 0x4bf1(%rip), %rsi      # 0x145f7
callq 0x30b0
testl %eax, %eax
jne 0xfa3c
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq %rbx, %rdi
leaq -0x174(%rbp), %rsi
callq 0x3180
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq %r13, -0xb8(%rbp)
movq $0x0, -0xb0(%rbp)
movb $0x0, -0xa8(%rbp)
movq %rbx, %rdi
leaq -0xb8(%rbp), %rbx
movq %rbx, %rsi
callq 0x3360
leaq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x110(%rbp)
movb $0x0, -0x108(%rbp)
movl $0x0, -0xe0(%rbp)
movq %rcx, -0xd8(%rbp)
leaq -0xe0(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq %rax, -0xc8(%rbp)
movq %rcx, -0xc0(%rbp)
movq %rbx, %rdi
leaq 0x45e1(%rip), %rsi      # 0x1409d
callq 0x30b0
testl %eax, %eax
je 0xfba6
movb $0x0, -0xf0(%rbp)
jmp 0xfbc0
leaq -0x430(%rbp), %rbx
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
leaq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
movq $0x0, -0x110(%rbp)
movb $0x0, -0x108(%rbp)
movq %rbx, %rdi
leaq -0x118(%rbp), %rsi
callq 0x3360
movq -0x170(%rbp), %r13
movq -0x168(%rbp), %r14
subq %r13, %r14
je 0xfcbb
sarq $0x5, %r14
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r14
movq -0x118(%rbp), %rbx
movq -0x110(%rbp), %r12
cmpq $0x1, %r14
adcq $0x0, %r14
addq $0x8, %r13
xorl %r15d, %r15d
movq (%r13), %rdx
cmpq %r12, %rdx
jne 0xfb95
testq %rdx, %rdx
je 0xfca9
movq -0x8(%r13), %rdi
movq %rbx, %rsi
callq 0x32b0
testl %eax, %eax
je 0xfca9
incq %r15
addq $0x60, %r13
cmpq %r15, %r14
jne 0xfb6f
jmp 0xfcb0
movb $0x1, -0xf0(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
leaq -0x118(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3150
leaq -0x90(%rbp), %rbx
movq %rbx, %rdi
leaq 0x4a16(%rip), %rsi      # 0x145f7
callq 0x30b0
testl %eax, %eax
je 0xfc82
movq %rbx, %rdi
leaq 0x4a04(%rip), %rsi      # 0x145fc
callq 0x30b0
testl %eax, %eax
je 0xfc9c
movq %rbx, %rdi
leaq 0x49f1(%rip), %rsi      # 0x14600
callq 0x30b0
testl %eax, %eax
je 0xfce5
movl $0x18, %edx
movq 0xb3a0(%rip), %rdi      # 0x1afc8
leaq 0x49d7(%rip), %rsi      # 0x14606
callq 0x3310
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
movq 0xb37f(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movl $0x1, %ebx
movq %rax, %rdi
callq 0x31c0
jmp 0xfd05
movl $0x2, -0xf8(%rbp)
movl -0x174(%rbp), %eax
incl %eax
movl %eax, -0xf4(%rbp)
jmp 0xfcf0
movq $0x0, -0xf8(%rbp)
jmp 0xfcf0
movl %r15d, -0x98(%rbp)
leaq -0x1a8(%rbp), %r12
leaq -0x60(%rbp), %r15
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
leaq -0x80(%rbp), %r14
leaq -0xa8(%rbp), %r13
je 0xfcde
callq 0x3270
movl $0x6, %ebx
jmp 0xfd4b
movq $0x1, -0xf8(%rbp)
xorl %ebx, %ebx
leaq -0x170(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xe5e0
leaq -0xe8(%rbp), %rdi
callq 0x8372
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0xfd29
callq 0x3270
movq -0xb8(%rbp), %rdi
cmpq %r13, %rdi
je 0xfd3a
callq 0x3270
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0xfd4b
callq 0x3270
movq -0x70(%rbp), %rdi
cmpq %r15, %rdi
je 0xfd59
callq 0x3270
testl %ebx, %ebx
je 0xf98a
cmpl $0x6, %ebx
jne 0x108ca
movl -0x98(%rbp), %r8d
cmpl $0x3f3f3f3f, %r8d       # imm = 0x3F3F3F3F
jne 0x1075f
movq 0xb243(%rip), %rdi      # 0x1afc8
leaq 0x4893(%rip), %rsi      # 0x1461f
movl $0x2a, %edx
callq 0x3310
movq 0xb22b(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x108ca
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x48(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x170(%rbp), %rdi
callq 0xed7c
leaq 0x4256(%rip), %rdx      # 0x14051
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1184b
leaq -0x118(%rbp), %rsi
movq -0x50(%rbp), %rdi
callq 0xdd18
movl %eax, %ebx
leaq -0x108(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfe32
callq 0x3270
testb %bl, %bl
je 0x106a3
leaq 0x4210(%rip), %rdx      # 0x14051
leaq -0x158(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1184b
leaq -0x118(%rbp), %rdi
leaq -0x158(%rbp), %rdx
movq -0x50(%rbp), %rsi
callq 0xde70
leaq -0x148(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfe7d
callq 0x3270
leaq -0xa8(%rbp), %r15
leaq 0x47e8(%rip), %rax      # 0x14673
movq %rax, -0x98(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x10821
leaq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
xorl %eax, %eax
movq %rax, -0x68(%rbp)
movb %al, -0x60(%rbp)
leaq -0x80(%rbp), %rcx
movq %rcx, -0x90(%rbp)
movq %rax, -0x88(%rbp)
movb %al, -0x80(%rbp)
movq %r15, -0xb8(%rbp)
movq %rax, -0xb0(%rbp)
movb %al, -0xa8(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3360
movq %rax, %rdi
leaq -0x90(%rbp), %rsi
callq 0x3360
movq %rax, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3360
movq -0xf0(%rbp), %r15
movq -0xe8(%rbp), %r14
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
subq %r15, %r14
je 0xffa0
sarq $0x5, %r14
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r14
movq -0x70(%rbp), %rbx
movq -0x68(%rbp), %r13
cmpq $0x1, %r14
adcq $0x0, %r14
addq $0x8, %r15
xorl %r12d, %r12d
leaq -0x90(%rbp), %rdi
movq (%r15), %rdx
cmpq %r13, %rdx
jne 0xff8c
testq %rdx, %rdx
je 0xffa9
movq -0x8(%r15), %rdi
movq %rbx, %rsi
callq 0x32b0
testl %eax, %eax
leaq -0x90(%rbp), %rdi
je 0xffa9
incq %r12
addq $0x60, %r15
cmpq %r12, %r14
jne 0xff68
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
jmp 0xffa9
leaq -0x90(%rbp), %rdi
jmp 0xffa9
cmpl $-0x1, %r12d
leaq -0xa8(%rbp), %r15
je 0x10868
leaq 0x46cb(%rip), %rsi      # 0x1468c
movq %rdi, %rbx
callq 0x30b0
testl %eax, %eax
je 0x10036
movq %rbx, %rdi
leaq 0x46b7(%rip), %rsi      # 0x1468e
callq 0x30b0
testl %eax, %eax
je 0x1003a
movq %rbx, %rdi
leaq 0x46a5(%rip), %rsi      # 0x1468f
callq 0x30b0
testl %eax, %eax
je 0x10041
movq %rbx, %rdi
leaq 0x4694(%rip), %rsi      # 0x14691
callq 0x30b0
testl %eax, %eax
je 0x10048
movq %rbx, %rdi
leaq 0x4685(%rip), %rsi      # 0x14695
callq 0x30b0
testl %eax, %eax
je 0x1004f
movq %rbx, %rdi
leaq 0x4671(%rip), %rsi      # 0x14694
callq 0x30b0
movl $0x5, %ebx
testl %eax, %eax
je 0x10054
jmp 0x10a79
xorl %ebx, %ebx
jmp 0x10054
movl $0x1, %ebx
jmp 0x10054
movl $0x2, %ebx
jmp 0x10054
movl $0x3, %ebx
jmp 0x10054
movl $0x4, %ebx
movl %r12d, %r14d
leaq -0x1f0(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x200(%rbp), %r12
movq %r12, %rdi
callq 0x8766
leaq -0x2b8(%rbp), %r13
movq %r13, %rdi
movq %r12, %rdx
callq 0x11098
leaq -0x158(%rbp), %r12
movq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
movq %r13, %rcx
callq 0xed3a
leaq -0x170(%rbp), %rdi
movq %r12, %rsi
callq 0xed90
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x100d5
callq 0x3270
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x100ed
callq 0x3270
movq -0x200(%rbp), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x10105
callq 0x3270
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0x10116
callq 0x3270
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x1012b
callq 0x3270
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xfe92
callq 0x3270
jmp 0xfe92
leaq -0x38(%rbp), %r14
movq %r14, -0x10(%r14)
xorl %eax, %eax
movq %rax, -0x8(%r14)
movb %al, (%r14)
leaq -0x60(%rbp), %r15
movq %r15, -0x10(%r15)
movq %rax, -0x8(%r15)
movb %al, (%r15)
leaq -0x80(%rbp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb %al, (%r12)
leaq -0x430(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x70(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x198(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x90(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x70(%rbp), %rcx
leaq -0x90(%rbp), %r8
movq -0x50(%rbp), %rsi
callq 0x3d32
cmpb $0x0, -0x118(%rbp)
je 0x106f6
movq 0xadd4(%rip), %rbx      # 0x1afc8
leaq 0x44aa(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x10713
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq -0x430(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3360
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rdx
movq -0x50(%rbp), %rsi
callq 0x4934
cmpb $0x0, -0x118(%rbp)
je 0x106cc
movq 0xad6f(%rip), %rbx      # 0x1afc8
leaq 0x4445(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x106e9
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0xad41(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
callq 0x78ca
leaq -0x70(%rbp), %rdi
callq 0x889a
jmp 0x108e8
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
leaq -0x48(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x170(%rbp), %rdi
callq 0xed7c
leaq 0x3d5b(%rip), %rdx      # 0x14051
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1184b
leaq -0x118(%rbp), %rsi
movq -0x50(%rbp), %rdi
callq 0xdd18
movl %eax, %ebx
leaq -0x108(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1032d
callq 0x3270
testb %bl, %bl
je 0x107a4
leaq 0x3d15(%rip), %rdx      # 0x14051
leaq -0x158(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1184b
leaq -0x118(%rbp), %rdi
leaq -0x158(%rbp), %rdx
movq -0x50(%rbp), %rsi
callq 0xde70
leaq -0x148(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10378
callq 0x3270
leaq -0xa8(%rbp), %r15
leaq 0x42ed(%rip), %rax      # 0x14673
movq %rax, -0x98(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3360
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x108fb
leaq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
xorl %eax, %eax
movq %rax, -0x68(%rbp)
movb %al, -0x60(%rbp)
leaq -0x80(%rbp), %rcx
movq %rcx, -0x90(%rbp)
movq %rax, -0x88(%rbp)
movb %al, -0x80(%rbp)
movq %r15, -0xb8(%rbp)
movq %rax, -0xb0(%rbp)
movb %al, -0xa8(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3360
movq %rax, %rdi
leaq -0x90(%rbp), %rsi
callq 0x3360
movq %rax, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3360
movq -0xf0(%rbp), %r15
movq -0xe8(%rbp), %r14
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
subq %r15, %r14
je 0x1049b
sarq $0x5, %r14
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r14
movq -0x70(%rbp), %rbx
movq -0x68(%rbp), %r13
cmpq $0x1, %r14
adcq $0x0, %r14
addq $0x8, %r15
xorl %r12d, %r12d
leaq -0x90(%rbp), %rdi
movq (%r15), %rdx
cmpq %r13, %rdx
jne 0x10487
testq %rdx, %rdx
je 0x104a4
movq -0x8(%r15), %rdi
movq %rbx, %rsi
callq 0x32b0
testl %eax, %eax
leaq -0x90(%rbp), %rdi
je 0x104a4
incq %r12
addq $0x60, %r15
cmpq %r12, %r14
jne 0x10463
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
jmp 0x104a4
leaq -0x90(%rbp), %rdi
jmp 0x104a4
cmpl $-0x1, %r12d
leaq -0xa8(%rbp), %r15
je 0x1094a
leaq 0x41d0(%rip), %rsi      # 0x1468c
movq %rdi, %rbx
callq 0x30b0
testl %eax, %eax
je 0x10531
movq %rbx, %rdi
leaq 0x41bc(%rip), %rsi      # 0x1468e
callq 0x30b0
testl %eax, %eax
je 0x10535
movq %rbx, %rdi
leaq 0x41aa(%rip), %rsi      # 0x1468f
callq 0x30b0
testl %eax, %eax
je 0x1053c
movq %rbx, %rdi
leaq 0x4199(%rip), %rsi      # 0x14691
callq 0x30b0
testl %eax, %eax
je 0x10543
movq %rbx, %rdi
leaq 0x418a(%rip), %rsi      # 0x14695
callq 0x30b0
testl %eax, %eax
je 0x1054a
movq %rbx, %rdi
leaq 0x4176(%rip), %rsi      # 0x14694
callq 0x30b0
movl $0x5, %ebx
testl %eax, %eax
je 0x1054f
jmp 0x10a91
xorl %ebx, %ebx
jmp 0x1054f
movl $0x1, %ebx
jmp 0x1054f
movl $0x2, %ebx
jmp 0x1054f
movl $0x3, %ebx
jmp 0x1054f
movl $0x4, %ebx
leaq -0x1d0(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1e0(%rbp), %r13
movq %r13, %rdi
callq 0x8766
leaq -0x288(%rbp), %r14
movq %r14, %rdi
movq %r13, %rdx
callq 0x11098
leaq -0x158(%rbp), %r13
movq %r13, %rdi
movl %r12d, %esi
movl %ebx, %edx
movq %r14, %rcx
callq 0xed3a
leaq -0x170(%rbp), %rdi
movq %r13, %rsi
callq 0xed90
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x105cd
callq 0x3270
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x105e5
callq 0x3270
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x105fd
callq 0x3270
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0x1060e
callq 0x3270
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x10623
callq 0x3270
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x1038d
callq 0x3270
jmp 0x1038d
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq -0x430(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3360
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rdx
movq -0x50(%rbp), %rsi
callq 0x4278
cmpb $0x0, -0x118(%rbp)
je 0x107cd
movq 0xa93e(%rip), %rbx      # 0x1afc8
leaq 0x4014(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x107ea
movq 0xa91e(%rip), %rdi      # 0x1afc8
leaq 0x3fad(%rip), %rsi      # 0x1465e
movl $0x14, %edx
callq 0x3310
movq 0xa906(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10a10
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0xa8e7(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
jmp 0x107f2
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0xa8bd(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
callq 0x78ca
movq -0x90(%rbp), %rdi
cmpq %r12, %rdi
je 0x10738
callq 0x3270
movq -0x70(%rbp), %rdi
cmpq %r15, %rdi
leaq -0x1a8(%rbp), %r12
je 0x1074d
callq 0x3270
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0x108e3
jmp 0x108e8
leaq -0x118(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x170(%rbp), %rcx
movq -0x50(%rbp), %rsi
callq 0x4660
cmpb $0x0, -0x118(%rbp)
je 0x10891
leaq 0x3f17(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq 0xa82e(%rip), %rdi      # 0x1afc8
callq 0x3310
jmp 0x108b2
movq 0xa81d(%rip), %rdi      # 0x1afc8
leaq 0x3eac(%rip), %rsi      # 0x1465e
movl $0x14, %edx
callq 0x3310
movq 0xa805(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10a10
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0xa7e6(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
callq 0x78ca
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x1080c
callq 0x3270
movq -0x158(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10a29
jmp 0x10a2e
leaq -0x158(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x170(%rbp), %rcx
movq -0x50(%rbp), %rsi
callq 0x4af0
cmpb $0x0, -0x158(%rbp)
leaq -0x1a8(%rbp), %r12
je 0x109af
leaq -0x118(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0x111f2
jmp 0x109f8
movl $0x18, %edx
movq 0xa754(%rip), %rdi      # 0x1afc8
movq -0x98(%rbp), %rsi
callq 0x3310
movq 0xa741(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x1096e
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
movq 0xa722(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, -0x1c0(%rbp)
movq -0x1c0(%rbp), %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
callq 0x78ca
leaq -0x170(%rbp), %rdi
callq 0x8304
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x108e8
callq 0x3270
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
jmp 0x10a24
leaq -0x158(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x170(%rbp), %rcx
movq -0x50(%rbp), %rsi
callq 0x6000
cmpb $0x0, -0x158(%rbp)
leaq -0x1a8(%rbp), %r12
je 0x109d3
movq 0xa697(%rip), %rbx      # 0x1afc8
leaq 0x3d66(%rip), %rsi      # 0x1469e
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x109f0
movl $0x18, %edx
movq 0xa672(%rip), %rdi      # 0x1afc8
movq -0x98(%rbp), %rsi
callq 0x3310
movq 0xa65f(%rip), %rdi      # 0x1afc8
callq 0x3120
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0x1097f
callq 0x3270
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x10994
callq 0x3270
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
leaq -0x1a8(%rbp), %r12
je 0x10a04
callq 0x3270
jmp 0x10a04
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq 0xa604(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rdi
callq 0x3120
jmp 0x109f8
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
movq 0xa5e0(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x158(%rbp), %rdi
callq 0x78ca
leaq -0x118(%rbp), %rdi
callq 0x78f8
leaq -0x170(%rbp), %rdi
callq 0x870c
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x10a2e
callq 0x3270
xorl %ebx, %ebx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x10a48
callq 0x3270
movq -0x1b8(%rbp), %rdi
cmpq %r12, %rdi
je 0x10a59
callq 0x3270
leaq -0x430(%rbp), %rdi
callq 0x34e0
movl %ebx, %eax
addq $0x408, %rsp            # imm = 0x408
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0xc, %edx
leaq 0x3bc5(%rip), %rax      # 0x1464a
movq %rax, -0x98(%rbp)
jmp 0x1086d
movl $0xc, %edx
leaq 0x3bad(%rip), %rax      # 0x1464a
movq %rax, -0x98(%rbp)
jmp 0x1094f
jmp 0x10ce1
jmp 0x10ce1
jmp 0x10ac1
jmp 0x10ad7
jmp 0x10b44
jmp 0x10d39
movq %rax, %rbx
leaq -0x158(%rbp), %rdi
callq 0x78ca
jmp 0x10d7b
jmp 0x10b0d
movq %rax, %rbx
leaq -0x148(%rbp), %rax
jmp 0x10b2d
jmp 0x10b44
jmp 0x10d39
jmp 0x10b1c
jmp 0x10b1c
jmp 0x10b44
jmp 0x10b23
jmp 0x10b44
jmp 0x10ba5
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x78ca
jmp 0x10e30
movq %rax, %rbx
jmp 0x10e30
jmp 0x10c2d
jmp 0x10b1c
movq %rax, %rbx
jmp 0x10b91
jmp 0x10b44
movq %rax, %rbx
leaq -0x108(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10d87
callq 0x3270
jmp 0x10d87
movq %rax, %rbx
jmp 0x10d87
jmp 0x10ba5
jmp 0x10b82
jmp 0x10ba5
movq %rax, %rbx
leaq -0x218(%rbp), %rdi
callq 0x889a
jmp 0x10e65
movq %rax, %rbx
jmp 0x10e65
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x78ca
jmp 0x10c30
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x78ca
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x10c21
callq 0x3270
jmp 0x10c21
movq %rax, %rbx
jmp 0x10d93
movq %rax, %rbx
jmp 0x10e3c
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x78ca
jmp 0x10e65
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x10bf3
callq 0x3270
jmp 0x10bf3
jmp 0x10d39
movq %rax, %rbx
jmp 0x10c0b
movq %rax, %rbx
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x10c0b
callq 0x3270
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
jmp 0x10cd5
movq %rax, %rbx
movq -0x158(%rbp), %rdi
jmp 0x10d11
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r12, %rdi
je 0x10c41
callq 0x3270
movq -0x70(%rbp), %rdi
cmpq %r15, %rdi
je 0x10c4f
callq 0x3270
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10e49
jmp 0x10e6e
jmp 0x10ce1
jmp 0x10cff
movq %rax, %rbx
movq -0x258(%rbp), %rdi
cmpq %r15, %rdi
je 0x10d0a
callq 0x3270
jmp 0x10d0a
movq %rax, %rbx
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x10caf
callq 0x3270
jmp 0x10caf
jmp 0x10d39
movq %rax, %rbx
jmp 0x10cc7
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0x10cc7
callq 0x3270
movq -0x200(%rbp), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x10d3c
callq 0x3270
jmp 0x10d3c
movq %rax, %rbx
jmp 0x10d7b
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
jmp 0x10e14
movq %rax, %rbx
jmp 0x10e6e
movq %rax, %rbx
movq -0x118(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10e81
jmp 0x10e86
jmp 0x10d39
movq %rax, %rbx
jmp 0x10df1
movq %rax, %rbx
jmp 0x10eb6
movq %rax, %rbx
jmp 0x10e86
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x10d54
callq 0x3270
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x10d69
callq 0x3270
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x10d7b
callq 0x3270
leaq -0x118(%rbp), %rdi
callq 0x78f8
leaq -0x170(%rbp), %rdi
callq 0x870c
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
jmp 0x10e7c
movq %rax, %rbx
jmp 0x10e09
movq %rax, %rbx
jmp 0x10e1e
jmp 0x10e50
movq %rax, %rbx
jmp 0x10dcf
movq %rax, %rbx
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x10dcf
callq 0x3270
movq -0x238(%rbp), %rdi
cmpq %r14, %rdi
je 0x10e53
callq 0x3270
jmp 0x10e53
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0xe618
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x10e09
callq 0x3270
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x10e1e
callq 0x3270
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x10e30
callq 0x3270
leaq -0x170(%rbp), %rdi
callq 0x8304
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x10e6e
callq 0x3270
jmp 0x10e6e
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x10e65
callq 0x3270
leaq -0x70(%rbp), %rdi
callq 0x889a
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x10e86
callq 0x3270
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x10e9e
callq 0x3270
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x10eb6
callq 0x3270
leaq -0x430(%rbp), %rdi
callq 0x34e0
movq %rbx, %rdi
callq 0x3480