// File: /workspace/github_cpp_makefile_star2_O3/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 $0x418, %rsp            # imm = 0x418
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x5177(%rip), %rsi      # 0x145d4
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf631
leaq 0x5165(%rip), %rsi      # 0x145d9
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf653
leaq 0x4e2a(%rip), %rsi      # 0x142b5
movq %r14, %rdi
callq 0x30b0
testl %eax, %eax
je 0xf66e
movq %rbx, -0x58(%rbp)
movq 0x8(%r14), %rax
testq %rax, %rax
je 0xf50a
xorl %ebx, %ebx
movabsq $0x130000000000, %r12   # imm = 0x130000000000
leaq 0x5162(%rip), %r15      # 0x1461d
movq (%r14), %rcx
movzbl (%rcx,%rbx), %ecx
cmpq $0x2c, %rcx
ja 0xf502
btq %rcx, %r12
jae 0xf502
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
movq 0x8(%r14), %rax
incq %rbx
cmpq %rax, %rbx
jb 0xf4bb
leaq -0x440(%rbp), %rdi
callq 0x3390
leaq -0x430(%rbp), %rdi
movq (%r14), %rsi
movq 0x8(%r14), %rdx
callq 0x3310
leaq -0x1b8(%rbp), %r13
movq %r13, -0x10(%r13)
xorl %eax, %eax
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq -0xd0(%rbp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb %al, (%r12)
leaq -0x440(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3360
leaq 0x5072(%rip), %rsi      # 0x145df
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf675
leaq 0x5060(%rip), %rsi      # 0x145e8
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf704
leaq 0x4dab(%rip), %rsi      # 0x1434e
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf7ae
leaq 0x4ddc(%rip), %rsi      # 0x1439a
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf837
leaq 0x507e(%rip), %rsi      # 0x14657
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xfe86
leaq 0x50a3(%rip), %rsi      # 0x14697
leaq -0x1c8(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x103a7
movq 0xb9b9(%rip), %rdi      # 0x1afc8
leaq 0x5034(%rip), %rsi      # 0x1464a
movl $0xc, %edx
callq 0x3310
movq 0xb9a1(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10a6a
addq $0x98, %rbx
movq %rbx, %rdi
callq 0x9a3a
leaq 0x50b9(%rip), %rdi      # 0x14700
callq 0x33f0
movb $0x1, %bl
jmp 0x10a9a
addq $0x98, %rbx
movq %rbx, %rdi
callq 0x9a3a
leaq 0x5097(%rip), %rdi      # 0x14700
callq 0x33f0
xorl %ebx, %ebx
jmp 0x10a9a
leaq -0x130(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x440(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3360
leaq -0x258(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
addq %rsi, %rdx
leaq -0x268(%rbp), %rdi
callq 0x88b4
leaq -0x268(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x11014
movl %eax, %ebx
movq -0x268(%rbp), %rdi
cmpq %r15, %rdi
je 0xf6ea
callq 0x3270
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
je 0x10a6c
callq 0x3270
jmp 0x10a6c
leaq -0x170(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x440(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3360
leaq 0x491e(%rip), %rsi      # 0x14052
leaq -0x180(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0xf9fc
leaq 0x49ef(%rip), %rsi      # 0x1413e
leaq -0x180(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x10239
movq 0xb85e(%rip), %rbx      # 0x1afc8
leaq 0x4ed9(%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 0xb82c(%rip), %rdi      # 0x1afc8
callq 0x3040
movq %rax, %rdi
callq 0x31c0
jmp 0x10a52
leaq -0x170(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x440(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3360
leaq 0x4873(%rip), %rsi      # 0x14052
leaq -0x180(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x10303
leaq 0x4944(%rip), %rsi      # 0x1413e
leaq -0x180(%rbp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x1074b
movq 0xb7b3(%rip), %rdi      # 0x1afc8
leaq 0x4e2e(%rip), %rsi      # 0x1464a
movl $0xc, %edx
callq 0x3310
movq 0xb79b(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10954
leaq -0x170(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x440(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0x180(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
xorps %xmm0, %xmm0
leaq -0x80(%rbp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x238(%rbp), %r14
leaq -0x440(%rbp), %r15
leaq -0x248(%rbp), %r13
leaq -0x140(%rbp), %r12
leaq -0x40(%rbp), %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movb $0x0, -0x40(%rbp)
movq %r15, %rdi
leaq -0x50(%rbp), %rsi
callq 0x3360
movq %r14, -0x248(%rbp)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x88b4
movq %r12, %rdi
movq %r13, %rdx
callq 0x111e6
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x11a94
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0xf924
callq 0x3270
movq -0x248(%rbp), %rdi
cmpq %r14, %rdi
je 0xf935
callq 0x3270
movq %r15, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
movq %r13, %rbx
movq %r15, %r13
movq %r14, %r15
leaq -0xe0(%rbp), %rdi
leaq 0x4ea6(%rip), %rsi      # 0x14801
callq 0x30b0
movl %eax, %r14d
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xf975
callq 0x3270
testl %r14d, %r14d
movq %r15, %r14
movq %r13, %r15
movq %rbx, %r13
jne 0xf8bb
leaq -0x228(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x9240
leaq -0x140(%rbp), %rdi
leaq -0x180(%rbp), %rdx
leaq -0x228(%rbp), %rcx
movq -0x58(%rbp), %rsi
leaq -0x1b8(%rbp), %r13
leaq -0xd0(%rbp), %r12
callq 0x749c
leaq -0x228(%rbp), %rdi
callq 0x89f0
cmpb $0x0, -0x140(%rbp)
je 0x10368
movq 0xb5e5(%rip), %rbx      # 0x1afc8
leaq 0x4cbb(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x10385
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x440(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
xorps %xmm0, %xmm0
leaq -0x1a0(%rbp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x70(%rbp), %r15
leaq -0x90(%rbp), %r14
movl $0x3f3f3f3f, -0x2c(%rbp) # imm = 0x3F3F3F3F
movq 0xb56c(%rip), %rax      # 0x1afc8
movq %rax, -0x1d0(%rbp)
movq %r15, -0x80(%rbp)
movq $0x0, -0x78(%rbp)
movb $0x0, -0x70(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3360
leaq -0x80(%rbp), %rdi
leaq 0x4b61(%rip), %rsi      # 0x145ef
callq 0x30b0
testl %eax, %eax
je 0xfbb8
movq %r14, -0xa0(%rbp)
movq $0x0, -0x98(%rbp)
movb $0x0, -0x90(%rbp)
movl $0x0, -0x1a4(%rbp)
leaq -0x440(%rbp), %rbx
movq %rbx, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3360
leaq -0xa0(%rbp), %rdi
leaq 0x4b15(%rip), %rsi      # 0x145f7
callq 0x30b0
testl %eax, %eax
jne 0xfb18
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
movq %rbx, %rdi
leaq -0x1a4(%rbp), %rsi
callq 0x3180
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq $0x0, -0xb8(%rbp)
movb $0x0, -0xb0(%rbp)
movq %rbx, %rdi
leaq -0xc0(%rbp), %rbx
movq %rbx, %rsi
callq 0x3360
leaq -0x130(%rbp), %rax
movq %rax, -0x140(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x138(%rbp)
movb $0x0, -0x130(%rbp)
movl $0x0, -0x108(%rbp)
movq %rcx, -0x100(%rbp)
leaq -0x108(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq %rax, -0xf0(%rbp)
movq %rcx, -0xe8(%rbp)
movq %rbx, %rdi
leaq 0x44fe(%rip), %rsi      # 0x1409d
callq 0x30b0
testl %eax, %eax
je 0xfc88
movb $0x0, -0x118(%rbp)
jmp 0xfca2
leaq -0x440(%rbp), %rbx
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0x130(%rbp), %rax
movq %rax, -0x140(%rbp)
movq $0x0, -0x138(%rbp)
movb $0x0, -0x130(%rbp)
movq %rbx, %rdi
leaq -0x140(%rbp), %rsi
callq 0x3360
movq -0x1a0(%rbp), %r14
movq -0x198(%rbp), %r12
movq -0x140(%rbp), %rbx
subq %r14, %r12
je 0xfd90
sarq $0x5, %r12
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r12
movq -0x138(%rbp), %r13
cmpq $0x1, %r12
adcq $0x0, %r12
addq $0x8, %r14
xorl %r15d, %r15d
cmpq %r13, (%r14)
jne 0xfc77
testq %r13, %r13
je 0xfd81
movq -0x8(%r14), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x32b0
testl %eax, %eax
je 0xfd81
incq %r15
addq $0x60, %r14
cmpq %r15, %r12
jne 0xfc52
jmp 0xfd85
movb $0x1, -0x118(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0x140(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3150
leaq -0xa0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x4934(%rip), %rsi      # 0x145f7
callq 0x30b0
testl %eax, %eax
je 0xfd61
movq %rbx, %rdi
leaq 0x4922(%rip), %rsi      # 0x145fc
callq 0x30b0
testl %eax, %eax
je 0xfd75
movq %rbx, %rdi
leaq 0x490f(%rip), %rsi      # 0x14600
callq 0x30b0
testl %eax, %eax
je 0xfdb9
movl $0x18, %edx
movq 0xb2be(%rip), %rdi      # 0x1afc8
leaq 0x48f5(%rip), %rsi      # 0x14606
callq 0x3310
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
movq 0xb29d(%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 0xfde0
movl $0x2, -0x120(%rbp)
movl -0x1a4(%rbp), %eax
incl %eax
jmp 0xfdc5
movl $0x0, -0x120(%rbp)
jmp 0xfdc3
movl %r15d, -0x2c(%rbp)
leaq -0x1b8(%rbp), %r13
leaq -0x70(%rbp), %r15
leaq -0x130(%rbp), %rax
cmpq %rax, %rbx
leaq -0xd0(%rbp), %r12
leaq -0x90(%rbp), %r14
je 0xfdb2
movq %rbx, %rdi
callq 0x3270
movl $0x6, %ebx
jmp 0xfe2d
movl $0x1, -0x120(%rbp)
xorl %eax, %eax
movl %eax, -0x11c(%rbp)
xorl %ebx, %ebx
leaq -0x1a0(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xe6f4
leaq -0x110(%rbp), %rdi
callq 0x84ba
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0xfe04
callq 0x3270
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xfe1c
callq 0x3270
movq -0xa0(%rbp), %rdi
cmpq %r14, %rdi
je 0xfe2d
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0xfe3b
callq 0x3270
testl %ebx, %ebx
je 0xfa63
cmpl $0x6, %ebx
jne 0x10a34
movl -0x2c(%rbp), %r8d
cmpl $0x3f3f3f3f, %r8d       # imm = 0x3F3F3F3F
jne 0x108a7
movq 0xb164(%rip), %rdi      # 0x1afc8
leaq 0x47b4(%rip), %rsi      # 0x1461f
movl $0x2a, %edx
callq 0x3310
movq 0xb14c(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10a34
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x440(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x1a0(%rbp), %rdi
callq 0xee88
leaq 0x4176(%rip), %rdx      # 0x14051
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x119a4
leaq -0x140(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0xde1c
movl %eax, %ebx
leaq -0x130(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff12
callq 0x3270
testb %bl, %bl
je 0x107b0
leaq 0x4130(%rip), %rdx      # 0x14051
leaq -0x180(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x119a4
leaq -0x140(%rbp), %rdi
leaq -0x180(%rbp), %rdx
movq -0x58(%rbp), %rsi
callq 0xdf7e
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff5d
callq 0x3270
leaq -0x70(%rbp), %r14
leaq -0x440(%rbp), %rbx
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdi
callq 0x3360
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x10aae
movq %r14, -0x80(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x78(%rbp)
movb %cl, -0x70(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq %rcx, -0x98(%rbp)
movb %cl, -0x90(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq %rcx, -0xb8(%rbp)
movb %cl, -0xb0(%rbp)
movq %rbx, %rdi
leaq -0x80(%rbp), %rsi
callq 0x3360
leaq -0xa0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
movq %rax, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3360
movq -0x118(%rbp), %r14
movq -0x110(%rbp), %rax
movl $0x18, %edx
subq %r14, %rax
je 0x10aee
sarq $0x5, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
movq -0x80(%rbp), %r15
movq -0x78(%rbp), %r13
cmpq $0x1, %rax
movl $0x0, %ebx
sbbq %rax, %rbx
addq $0x8, %r14
xorl %r12d, %r12d
cmpq %r13, (%r14)
jne 0x1005c
testq %r13, %r13
je 0x1006d
movq -0x8(%r14), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x32b0
testl %eax, %eax
je 0x1006d
decq %r12
addq $0x60, %r14
cmpq %r12, %rbx
jne 0x1003f
jmp 0x1086c
cmpl $0x1, %r12d
leaq -0x1b8(%rbp), %r13
leaq -0x70(%rbp), %r14
je 0x10b77
leaq -0xa0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x45f9(%rip), %rsi      # 0x1468c
callq 0x30b0
testl %eax, %eax
je 0x10107
movq %rbx, %rdi
leaq 0x45e8(%rip), %rsi      # 0x1468e
callq 0x30b0
testl %eax, %eax
je 0x10110
movq %rbx, %rdi
leaq 0x45d6(%rip), %rsi      # 0x1468f
callq 0x30b0
testl %eax, %eax
je 0x10119
movq %rbx, %rdi
leaq 0x45c5(%rip), %rsi      # 0x14691
callq 0x30b0
testl %eax, %eax
je 0x10122
movq %rbx, %rdi
leaq 0x45b6(%rip), %rsi      # 0x14695
callq 0x30b0
testl %eax, %eax
je 0x1012b
movq %rbx, %rdi
leaq 0x45a2(%rip), %rsi      # 0x14694
callq 0x30b0
movl $0x5, -0x2c(%rbp)
testl %eax, %eax
je 0x10132
jmp 0x10bc0
movl $0x0, -0x2c(%rbp)
jmp 0x10132
movl $0x1, -0x2c(%rbp)
jmp 0x10132
movl $0x2, -0x2c(%rbp)
jmp 0x10132
movl $0x3, -0x2c(%rbp)
jmp 0x10132
movl $0x4, -0x2c(%rbp)
leaq -0x200(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x210(%rbp), %rbx
movq %rbx, %rdi
callq 0x88b4
leaq -0x2c8(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rdx
callq 0x111e6
negq %r12
leaq -0x180(%rbp), %rbx
movq %rbx, %rdi
movl %r12d, %esi
movl -0x2c(%rbp), %edx
movq %r15, %rcx
callq 0xee46
leaq -0x1a0(%rbp), %rdi
movq %rbx, %rsi
leaq -0xd0(%rbp), %r12
callq 0xee9c
leaq -0x440(%rbp), %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x101c2
callq 0x3270
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x101da
callq 0x3270
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x101f2
callq 0x3270
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x1020a
callq 0x3270
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x10222
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0xff68
callq 0x3270
jmp 0xff68
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
xorl %eax, %eax
movq %rax, -0x8(%r14)
movb %al, (%r14)
leaq -0x70(%rbp), %r15
movq %r15, -0x10(%r15)
movq %rax, -0x8(%r15)
movb %al, (%r15)
leaq -0x90(%rbp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb %al, (%r12)
leaq -0x440(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x80(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0xe0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0xa0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rdx
leaq -0x80(%rbp), %rcx
leaq -0xa0(%rbp), %r8
movq -0x58(%rbp), %rsi
callq 0x3d32
cmpb $0x0, -0x140(%rbp)
je 0x10803
movq 0xacde(%rip), %rbx      # 0x1afc8
leaq 0x43b4(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x10820
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq -0x440(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3360
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rdx
movq -0x58(%rbp), %rsi
callq 0x497a
cmpb $0x0, -0x140(%rbp)
je 0x107d9
movq 0xac79(%rip), %rbx      # 0x1afc8
leaq 0x434f(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x107f6
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq 0xac4b(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x140(%rbp), %rdi
callq 0x7a0e
leaq -0x80(%rbp), %rdi
callq 0x89f0
jmp 0x10a52
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x440(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3360
leaq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
leaq -0x1a0(%rbp), %rdi
callq 0xee88
leaq 0x3c64(%rip), %rdx      # 0x14051
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x119a4
leaq -0x140(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0xde1c
movl %eax, %ebx
leaq -0x130(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10424
callq 0x3270
testb %bl, %bl
je 0x108ec
leaq 0x3c1e(%rip), %rdx      # 0x14051
leaq -0x180(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x119a4
leaq -0x140(%rbp), %rdi
leaq -0x180(%rbp), %rdx
movq -0x58(%rbp), %rsi
callq 0xdf7e
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1046f
callq 0x3270
leaq -0x70(%rbp), %r14
leaq -0x440(%rbp), %rbx
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdi
callq 0x3360
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x10afe
movq %r14, -0x80(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x78(%rbp)
movb %cl, -0x70(%rbp)
leaq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq %rcx, -0x98(%rbp)
movb %cl, -0x90(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq %rcx, -0xb8(%rbp)
movb %cl, -0xb0(%rbp)
movq %rbx, %rdi
leaq -0x80(%rbp), %rsi
callq 0x3360
leaq -0xa0(%rbp), %rsi
movq %rax, %rdi
callq 0x3360
movq %rax, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3360
movq -0x118(%rbp), %r14
movq -0x110(%rbp), %rax
movl $0x18, %edx
subq %r14, %rax
je 0x10b43
sarq $0x5, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
movq -0x80(%rbp), %r15
movq -0x78(%rbp), %r13
cmpq $0x1, %rax
movl $0x0, %ebx
sbbq %rax, %rbx
addq $0x8, %r14
xorl %r12d, %r12d
cmpq %r13, (%r14)
jne 0x1056e
testq %r13, %r13
je 0x1057f
movq -0x8(%r14), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x32b0
testl %eax, %eax
je 0x1057f
decq %r12
addq $0x60, %r14
cmpq %r12, %rbx
jne 0x10551
jmp 0x10960
cmpl $0x1, %r12d
je 0x10960
leaq -0xa0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x40f2(%rip), %rsi      # 0x1468c
callq 0x30b0
testl %eax, %eax
leaq -0x1b8(%rbp), %r13
leaq -0x70(%rbp), %r14
je 0x10619
movq %rbx, %rdi
leaq 0x40d6(%rip), %rsi      # 0x1468e
callq 0x30b0
testl %eax, %eax
je 0x10622
movq %rbx, %rdi
leaq 0x40c4(%rip), %rsi      # 0x1468f
callq 0x30b0
testl %eax, %eax
je 0x1062b
movq %rbx, %rdi
leaq 0x40b3(%rip), %rsi      # 0x14691
callq 0x30b0
testl %eax, %eax
je 0x10634
movq %rbx, %rdi
leaq 0x40a4(%rip), %rsi      # 0x14695
callq 0x30b0
testl %eax, %eax
je 0x1063d
movq %rbx, %rdi
leaq 0x4090(%rip), %rsi      # 0x14694
callq 0x30b0
movl $0x5, -0x2c(%rbp)
testl %eax, %eax
je 0x10644
jmp 0x10bd8
movl $0x0, -0x2c(%rbp)
jmp 0x10644
movl $0x1, -0x2c(%rbp)
jmp 0x10644
movl $0x2, -0x2c(%rbp)
jmp 0x10644
movl $0x3, -0x2c(%rbp)
jmp 0x10644
movl $0x4, -0x2c(%rbp)
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1f0(%rbp), %r15
movq %r15, %rdi
callq 0x88b4
leaq -0x298(%rbp), %rbx
movq %rbx, %rdi
movq %r15, %rdx
callq 0x111e6
negq %r12
leaq -0x180(%rbp), %r15
movq %r15, %rdi
movl %r12d, %esi
movl -0x2c(%rbp), %edx
movq %rbx, %rcx
callq 0xee46
leaq -0x1a0(%rbp), %rdi
movq %r15, %rsi
leaq -0xd0(%rbp), %r12
callq 0xee9c
leaq -0x440(%rbp), %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x106d4
callq 0x3270
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x106ec
callq 0x3270
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x10704
callq 0x3270
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x1071c
callq 0x3270
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x10734
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x1047a
callq 0x3270
jmp 0x1047a
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq -0x440(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3360
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rdx
movq -0x58(%rbp), %rsi
callq 0x42be
cmpb $0x0, -0x140(%rbp)
je 0x10915
movq 0xa831(%rip), %rbx      # 0x1afc8
leaq 0x3f07(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x10932
movq 0xa811(%rip), %rdi      # 0x1afc8
leaq 0x3ea0(%rip), %rsi      # 0x1465e
movl $0x14, %edx
callq 0x3310
movq 0xa7f9(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x109e4
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq 0xa7da(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
jmp 0x1093a
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq 0xa7b0(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x140(%rbp), %rdi
callq 0x7a0e
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x10845
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
leaq -0xd0(%rbp), %r12
je 0x1085a
callq 0x3270
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10a4d
jmp 0x10a52
leaq 0x3e00(%rip), %rsi      # 0x14673
leaq -0x1b8(%rbp), %r13
leaq -0xd0(%rbp), %r12
leaq -0x70(%rbp), %r14
movl $0x18, %edx
movq 0xa737(%rip), %rdi      # 0x1afc8
callq 0x3310
movq 0xa72b(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x10996
leaq -0x140(%rbp), %rdi
leaq -0x50(%rbp), %rdx
leaq -0x1a0(%rbp), %rcx
movq -0x58(%rbp), %rsi
callq 0x46a6
cmpb $0x0, -0x140(%rbp)
je 0x109fb
leaq 0x3dcf(%rip), %rsi      # 0x146a5
movl $0x2, %edx
movq 0xa6e6(%rip), %rdi      # 0x1afc8
callq 0x3310
jmp 0x10a1c
movq 0xa6d5(%rip), %rdi      # 0x1afc8
leaq 0x3d64(%rip), %rsi      # 0x1465e
movl $0x14, %edx
callq 0x3310
movq 0xa6bd(%rip), %rdi      # 0x1afc8
callq 0x3120
jmp 0x109e4
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq 0xa69e(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x140(%rbp), %rdi
callq 0x7a0e
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x10954
callq 0x3270
movq -0x180(%rbp), %rdi
jmp 0x109f4
leaq 0x3d0c(%rip), %rsi      # 0x14673
leaq -0x1b8(%rbp), %r13
leaq -0xd0(%rbp), %r12
leaq -0x70(%rbp), %r14
movl $0x18, %edx
movq 0xa643(%rip), %rdi      # 0x1afc8
callq 0x3310
movq 0xa637(%rip), %rdi      # 0x1afc8
callq 0x3120
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x109ae
callq 0x3270
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x109c6
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x109d4
callq 0x3270
leaq -0x40(%rbp), %r14
leaq -0x140(%rbp), %rdi
callq 0x7a3c
leaq -0x1a0(%rbp), %rdi
callq 0x8854
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10a65
jmp 0x10a6a
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq 0xa5b8(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x3120
leaq -0x140(%rbp), %rdi
callq 0x7a0e
leaq -0x1a0(%rbp), %rdi
callq 0x844c
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x10a52
callq 0x3270
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x10a6a
callq 0x3270
xorl %ebx, %ebx
movq -0xe0(%rbp), %rdi
cmpq %r12, %rdi
je 0x10a7d
callq 0x3270
movq -0x1c8(%rbp), %rdi
cmpq %r13, %rdi
je 0x10a8e
callq 0x3270
leaq -0x440(%rbp), %rdi
callq 0x34e0
movl %ebx, %eax
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x180(%rbp), %rdi
leaq -0x50(%rbp), %rdx
leaq -0x1a0(%rbp), %rcx
movq -0x58(%rbp), %rsi
callq 0x4b36
cmpb $0x0, -0x180(%rbp)
leaq -0x40(%rbp), %r14
je 0x10b53
leaq -0x140(%rbp), %rsi
leaq -0x180(%rbp), %rdx
callq 0x11340
jmp 0x10baf
leaq 0x3b7e(%rip), %rsi      # 0x14673
leaq -0x70(%rbp), %r14
jmp 0x1088a
leaq -0x180(%rbp), %rdi
leaq -0x50(%rbp), %rdx
leaq -0x1a0(%rbp), %rcx
movq -0x58(%rbp), %rsi
callq 0x60dc
cmpb $0x0, -0x180(%rbp)
leaq -0x40(%rbp), %r14
je 0x10b8a
movq 0xa49b(%rip), %rbx      # 0x1afc8
leaq 0x3b6a(%rip), %rsi      # 0x1469e
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3310
jmp 0x10ba7
leaq 0x3b29(%rip), %rsi      # 0x14673
leaq -0x70(%rbp), %r14
jmp 0x1097e
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
movq 0xa460(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rdi
callq 0x3120
jmp 0x10baf
leaq 0x3af5(%rip), %rsi      # 0x14673
leaq -0xd0(%rbp), %r12
jmp 0x10885
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
movq 0xa429(%rip), %rdi      # 0x1afc8
callq 0x3310
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3120
leaq -0x180(%rbp), %rdi
callq 0x7a0e
jmp 0x109d8
movl $0xc, %edx
leaq -0xd0(%rbp), %r12
leaq 0x3a77(%rip), %rsi      # 0x1464a
jmp 0x1088a
movl $0xc, %edx
leaq -0xd0(%rbp), %r12
leaq 0x3a5f(%rip), %rsi      # 0x1464a
jmp 0x1097e
jmp 0x10d11
jmp 0x10d11
jmp 0x10bfc
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0x7a0e
jmp 0x10dfe
movq %rax, %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x10c30
callq 0x3270
jmp 0x10c30
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0x10c4d
callq 0x3270
jmp 0x10c4d
movq %rax, %rbx
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
jmp 0x10cb9
jmp 0x10db9
jmp 0x10cd1
jmp 0x10d4d
jmp 0x10d09
movq %rax, %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x10c8e
callq 0x3270
jmp 0x10c8e
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x10cab
callq 0x3270
jmp 0x10cab
movq %rax, %rbx
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x10dbc
callq 0x3270
jmp 0x10dbc
jmp 0x10db9
movq %rax, %rbx
leaq -0x170(%rbp), %rax
jmp 0x10d36
jmp 0x10d4d
jmp 0x10d11
jmp 0x10db9
jmp 0x10d25
jmp 0x10d25
jmp 0x10d4d
jmp 0x10d2c
jmp 0x10d4d
jmp 0x10e18
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x7a0e
jmp 0x10f7a
movq %rax, %rbx
jmp 0x10f7a
movq %rax, %rbx
jmp 0x10dfe
jmp 0x10db9
jmp 0x10e50
jmp 0x10d25
movq %rax, %rbx
jmp 0x10da2
jmp 0x10d4d
movq %rax, %rbx
leaq -0x130(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10e0a
callq 0x3270
jmp 0x10e0a
movq %rax, %rbx
jmp 0x10e0a
jmp 0x10e18
jmp 0x10d93
jmp 0x10e18
movq %rax, %rbx
leaq -0x228(%rbp), %rdi
callq 0x89f0
jmp 0x10faf
movq %rax, %rbx
jmp 0x10faf
jmp 0x10db9
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x7a0e
jmp 0x10e53
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x7a0e
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x10e47
callq 0x3270
jmp 0x10e47
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x10dd4
callq 0x3270
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x10dec
callq 0x3270
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x10dfe
callq 0x3270
leaq -0x140(%rbp), %rdi
callq 0x7a3c
leaq -0x1a0(%rbp), %rdi
callq 0x8854
jmp 0x10e1b
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
jmp 0x10fc6
movq %rax, %rbx
jmp 0x10f86
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x7a0e
jmp 0x10faf
movq %rax, %rbx
movq -0x180(%rbp), %rdi
jmp 0x10ec4
movq %rax, %rbx
movq -0xa0(%rbp), %rdi
cmpq %r12, %rdi
je 0x10e64
callq 0x3270
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0x10e72
callq 0x3270
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10f93
jmp 0x10fb8
jmp 0x10eb2
movq %rax, %rbx
movq -0x268(%rbp), %rdi
cmpq %r15, %rdi
je 0x10ebd
callq 0x3270
jmp 0x10ebd
movq %rax, %rbx
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
jmp 0x10f5e
movq %rax, %rbx
jmp 0x10fb8
movq %rax, %rbx
movq -0x140(%rbp), %rdi
cmpq %r14, %rdi
jne 0x10fcb
jmp 0x10fd0
movq %rax, %rbx
jmp 0x10f38
movq %rax, %rbx
jmp 0x11000
movq %rax, %rbx
jmp 0x10fd0
movq %rax, %rbx
jmp 0x10f50
movq %rax, %rbx
jmp 0x10f68
jmp 0x10f9a
movq %rax, %rbx
jmp 0x10f16
movq %rax, %rbx
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x10f16
callq 0x3270
movq -0x248(%rbp), %rdi
cmpq %r14, %rdi
je 0x10f9d
callq 0x3270
jmp 0x10f9d
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0xe72c
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x10f50
callq 0x3270
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x10f68
callq 0x3270
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x10f7a
callq 0x3270
leaq -0x1a0(%rbp), %rdi
callq 0x844c
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x10fb8
callq 0x3270
jmp 0x10fb8
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x10faf
callq 0x3270
leaq -0x80(%rbp), %rdi
callq 0x89f0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x10fd0
callq 0x3270
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x10fe8
callq 0x3270
movq -0x1c8(%rbp), %rdi
leaq -0x1b8(%rbp), %rax
cmpq %rax, %rdi
je 0x11000
callq 0x3270
leaq -0x440(%rbp), %rdi
callq 0x34e0
movq %rbx, %rdi
callq 0x3480