// File: /workspace/github_cpp_makefile_star2_O3/Konano[P]UselessDatabase/Table.cpp
// Function: Table::updateRecords(std::vector<std::pair<int, Any>, std::allocator<std::pair<int, Any>>>&, std::vector<WhereStmt, std::allocator<WhereStmt>>&)
int Table::updateRecords(vector<Pia> &set, vector<WhereStmt> &where) {
    for (auto it: set) {
        if (col_ty[it.first].beNull() == false && it.second.isNull() == true) return -1;
    }
    vector<uint> _cols = findWheres(where), cols;
    vector<Anys> pk_add, pk_del, _pk_add, _pk_del;
    for (auto i: _cols) {
        Pointer p(this, i);
        Anys data = p.get();
        if (checkWheres(data, where)) {
            bool modify = false;
            for (auto it: set) for (auto _i: p_key->v) if (_i == (uint)it.first) {
                modify = true;
                goto BK1;
            }
            BK1: if (modify) pk_del.push_back(chooseData(data, p_key->v));
            for (auto it: set) data[it.first] = it.second;
            if (modify) pk_add.push_back(chooseData(data, p_key->v));
            for (auto it: f_key) {
                for (auto _it: set) for (auto _i: it->v) if (_i == (uint)_it.first) goto BK2;
                continue;
                BK2: Anys val = chooseData(data, it->v);
                vector<int> ans;
                Table* p_table = it->p->table;
                ans = p_table->index[p_table->p_key_index].queryRecord(&val);
                printf("%d %d\n", val[0].anyRefCast<int>(), val.size());
                if (ans.size() == 0) goto FAIL;
            }
            cols.push_back(i);
            FAIL:;
        }
    }

    sort(pk_add.begin(), pk_add.end());
    sort(pk_del.begin(), pk_del.end());
    vector<Anys>::iterator add_it = pk_add.begin(), del_it = pk_del.begin(), it;
    while (add_it != pk_add.end() && del_it != pk_del.end()) {
        if (*add_it == *del_it) add_it++, del_it++; 
        else if (*add_it < *del_it) _pk_add.push_back(*add_it), add_it++;
        else _pk_del.push_back(*del_it), del_it++;
    }
    while (add_it != pk_add.end()) _pk_add.push_back(*add_it), add_it++;
    while (del_it != pk_del.end()) _pk_del.push_back(*del_it), del_it++;

    for (uint i = 1; i < _pk_add.size(); i++) if (_pk_add[i-1] == _pk_add[i]) return -5;
    for (uint i = 0; i < _pk_add.size(); i++) {
        vector<int> ans = this->index[p_key_index].queryRecord(&_pk_add[i]);
        if (ans.size() != 0) return -7;
    }
    
    for (auto i: cols) updateRecord(i, set);
    for (auto it: pk_del) {
        for (uint i = 0;i < db->table_num;i ++){
            for(uint j = 0;j < db->table[i]->f_key.size();j ++){
                if(db->table[i]->f_key[j]->p->table == this){
                    std::vector <int> ans;
                    if(db->table[i]->index[db->table[i]->f_key_index[j]].fileID == -1){
                        db->table[i]->index[db->table[i]->f_key_index[j]].open();
                        ans = db->table[i]->index[db->table[i]->f_key_index[j]].queryRecord(&it);
                        db->table[i]->index[db->table[i]->f_key_index[j]].close();
                    }
                    else {
                        ans = db->table[i]->index[db->table[i]->f_key_index[j]].queryRecord(&it);
                    }
                    for(uint k = 0;k < ans.size();k ++){
                        if(db->table[i]->index[db->table[i]->f_key_index[j]].fileID == -1){
                            db->table[i]->index[db->table[i]->f_key_index[j]].open();
                            db->table[i]->index[db->table[i]->f_key_index[j]].removeRecord(&it,ans[k]);
                            Anys nullkey;
                            for(uint m = 0;m < it.size();m ++)nullkey.push_back(Any());
                            db->table[i]->index[db->table[i]->f_key_index[j]].insertRecord(&nullkey,ans[k]);
                            db->table[i]->index[db->table[i]->f_key_index[j]].close();
                        }
                        else {
                            db->table[i]->index[db->table[i]->f_key_index[j]].removeRecord(&it,ans[k]);
                            Anys nullkey;
                            for(uint m = 0;m < it.size();m ++)nullkey.push_back(Any());
                            db->table[i]->index[db->table[i]->f_key_index[j]].insertRecord(&nullkey,ans[k]);
                        }
                        Anys pre = db->table[i]->queryRecord(ans[k]);
                        Anys after;
                        vector<bool> mark;
                        for(uint m = 0;m < pre.size();m ++)mark.push_back(true);
                        for(uint m = 0;m < db->table[i]->f_key[j]->v.size();m ++)mark[db->table[i]->f_key[j]->v[m]] = false;
                        for(uint m = 0;m < pre.size();m ++){
                            if(mark[m]) after.push_back(pre[m]);
                            else after.push_back(Any());
                        }
                        int index;
                        BufType buf = bpm->getPage(main_file, ans[k] / record_onepg, index);
                        buf += (record_onepg - 1) / 8 + 1;
                        buf += record_size * (ans[k] % record_onepg);
                        for (uint i = 0; i < col_num; i++) {
                            insert(after[i], col_ty[i].ty, col_ty[i].size(), buf);
                        }
                        bpm->markDirty(index);
                    }
                }
            }
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdx, 0x88(%rsp)
movq %rdi, %rbx
movq (%rsi), %r14
movq %rsi, 0x10(%rsp)
movq 0x8(%rsi), %r15
cmpq %r15, %r14
je 0x267ca
leaq 0x58(%rbx), %r12
movslq (%r14), %r13
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0x2679f
movq (%rdi), %rax
callq *0x10(%rax)
imulq $0x38, %r13, %rcx
cmpb $0x0, (%r12,%rcx)
je 0x267af
testq %rax, %rax
jne 0x267b8
jmp 0x267c1
imulq $0x38, %r13, %rax
cmpb $0x0, (%r12,%rax)
jne 0x267c1
jmp 0x27670
testq %rax, %rax
je 0x27670
movq (%rax), %rcx
movq %rax, %rdi
callq *0x8(%rcx)
addq $0x10, %r14
cmpq %r15, %r14
jne 0x2677b
leaq 0x188(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq 0x88(%rsp), %rdx
callq 0x26268
xorl %eax, %eax
movq %rax, 0x110(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x100(%rsp)
movq %rax, 0xd0(%rsp)
movaps %xmm0, 0xc0(%rsp)
movq %rax, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
movq %rax, 0xf0(%rsp)
movaps %xmm0, 0xe0(%rsp)
movq %rax, 0x170(%rsp)
movaps %xmm0, 0x160(%rsp)
movq (%r15), %r14
movq 0x8(%r15), %rax
movq %rax, 0x38(%rsp)
cmpq %rax, %r14
je 0x26c63
leaq 0x20(%rsp), %r15
leaq 0x1a0(%rsp), %r12
movl (%r14), %eax
movl %eax, 0x98(%rsp)
movq %rbx, 0x40(%rsp)
movl %eax, 0x48(%rsp)
cmpl $-0x1, %eax
je 0x26892
movq 0x48(%rbx), %rdi
movl 0x9fa4(%rbx), %esi
xorl %edx, %edx
divl 0x9fac(%rbx)
movl %eax, %edx
callq 0x6722
movq %rax, 0x50(%rsp)
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
callq 0x1fa4c
movq %r14, 0x90(%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0xa26a
movq %rbx, %rdi
movq %r12, %rsi
movq 0x88(%rsp), %rdx
callq 0x26030
movl %eax, %ebp
movq %r12, %rdi
callq 0xa37e
testb %bpl, %bpl
je 0x26be7
movq 0x10(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x26995
xorl %ebp, %ebp
movl (%r15), %r14d
movq 0x8(%r15), %rdi
testq %rdi, %rdi
je 0x26903
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x26905
xorl %eax, %eax
movq 0x758(%rbx), %rdx
movq 0x30(%rdx), %rcx
movq 0x38(%rdx), %rdx
cmpq %rdx, %rcx
je 0x2692d
cmpl %r14d, (%rcx)
setne %r13b
je 0x26932
addq $0x4, %rcx
cmpq %rdx, %rcx
jne 0x26919
jmp 0x26935
movb $0x1, %r13b
jmp 0x26935
movb $0x1, %bpl
testq %rax, %rax
je 0x26943
movq (%rax), %rcx
movq %rax, %rdi
callq *0x8(%rcx)
addq $0x10, %r15
cmpq %r12, %r15
setne %al
testb %al, %r13b
jne 0x268ef
testb $0x1, %bpl
je 0x26995
movq 0x758(%rbx), %rcx
addq $0x30, %rcx
leaq 0x70(%rsp), %r14
movq %r14, %rdi
leaq 0x20(%rsp), %rdx
callq 0x22d4c
leaq 0xa0(%rsp), %rdi
movq %r14, %rsi
callq 0x28f64
movq %r14, %rdi
callq 0xa37e
movb $0x1, %al
movl %eax, 0x8(%rsp)
jmp 0x2699d
movl $0x0, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %r14
movq 0x8(%rax), %r12
cmpq %r12, %r14
je 0x26a02
movl (%r14), %r13d
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0x269ef
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, %r15
movq 0x20(%rsp), %rbp
movq $0x0, (%rbp,%r13,8)
testq %rax, %rax
je 0x269fc
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%rbp,%r13,8)
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x269fc
movq 0x20(%rsp), %rax
movq $0x0, (%rax,%r13,8)
addq $0x10, %r14
jmp 0x269a9
cmpb $0x0, 0x8(%rsp)
je 0x26a3e
movq 0x758(%rbx), %rcx
addq $0x30, %rcx
leaq 0x70(%rsp), %r14
movq %r14, %rdi
leaq 0x20(%rsp), %rdx
callq 0x22d4c
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x28f64
movq %r14, %rdi
callq 0xa37e
movq 0x760(%rbx), %rax
movq 0x768(%rbx), %rcx
movq %rax, 0x8(%rsp)
movq %rcx, 0x18(%rsp)
cmpq %rcx, %rax
je 0x26ba9
movq 0x10(%rsp), %rax
movq (%rax), %r14
movq 0x8(%rax), %r12
cmpq %r12, %r14
je 0x26b90
movq 0x8(%rsp), %rax
movq (%rax), %rbp
leaq 0x30(%rbp), %rax
movq %rax, 0x68(%rsp)
movl (%r14), %r15d
movq 0x8(%r14), %rdi
testq %rdi, %rdi
je 0x26a99
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x26a9b
xorl %eax, %eax
movq 0x30(%rbp), %rdx
movq 0x38(%rbp), %rcx
cmpq %rcx, %rdx
je 0x26ac4
addq $0x4, %rdx
cmpl %r15d, -0x4(%rdx)
setne %r13b
je 0x26ac7
leaq 0x4(%rdx), %rsi
cmpq %rcx, %rdx
movq %rsi, %rdx
jne 0x26aac
jmp 0x26ac7
movb $0x1, %r13b
testq %rax, %rax
je 0x26ad5
movq (%rax), %rcx
movq %rax, %rdi
callq *0x8(%rcx)
testb %r13b, %r13b
je 0x26ae8
addq $0x10, %r14
cmpq %r12, %r14
jne 0x26a85
jmp 0x26b90
leaq 0x70(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %rdx
movq 0x68(%rsp), %rcx
callq 0x22d4c
movq 0x50(%rbp), %rax
movq 0x48(%rax), %rax
movslq 0x778(%rax), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rsi
addq $0x7a0, %rsi            # imm = 0x7A0
leaq 0x140(%rsp), %rdi
movq %r12, %rdx
callq 0x19a30
movq 0x140(%rsp), %r15
movq 0x148(%rsp), %r14
movq 0x150(%rsp), %rbp
movq 0x70(%rsp), %rdi
callq 0x9d98
movl (%rax), %esi
movq 0x78(%rsp), %rdx
subq 0x70(%rsp), %rdx
shrq $0x3, %rdx
leaq 0x1a129(%rip), %rdi     # 0x40c92
xorl %eax, %eax
callq 0x5080
testq %r15, %r15
je 0x26b83
subq %r15, %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x53a0
movq %r12, %rdi
callq 0xa37e
cmpq %r15, %r14
je 0x26be7
movq 0x8(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x8(%rsp)
cmpq 0x18(%rsp), %rax
jne 0x26a5f
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x26bd2
movl 0x98(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x108(%rsp)
jmp 0x26be7
leaq 0x100(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x1d0aa
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0xa37e
movq 0x90(%rsp), %r14
addq $0x4, %r14
cmpq 0x38(%rsp), %r14
leaq 0x1a0(%rsp), %r12
jne 0x2685c
movq 0xc0(%rsp), %r15
movq 0xc8(%rsp), %r12
cmpq %r12, %r15
je 0x26c63
movq %r12, %rax
subq %r15, %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r15, %rdi
movq %r12, %rsi
callq 0x29113
movq %r15, %rdi
movq %r12, %rsi
callq 0x291d2
movq 0xa0(%rsp), %r13
movq 0xa8(%rsp), %r15
cmpq %r15, %r13
je 0x26d5e
movq %r15, %rax
subq %r13, %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r13, %rdi
movq %r15, %rsi
callq 0x29113
movq %r13, %rdi
movq %r15, %rsi
callq 0x291d2
movq 0xa0(%rsp), %r15
movq 0xa8(%rsp), %r13
movq 0xc0(%rsp), %r12
movq 0xc8(%rsp), %rax
cmpq %rax, %r12
setne %cl
cmpq %r13, %r15
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x26d71
leaq 0xe0(%rsp), %r14
leaq 0x160(%rsp), %rbp
movq %r12, %rdi
movq %r15, %rsi
callq 0x9996
testb %al, %al
je 0x26d13
addq $0x18, %r12
jmp 0x26d3e
movq %r12, %rdi
movq %r15, %rsi
callq 0x9a04
testb %al, %al
je 0x26d33
movq %r14, %rdi
movq %r12, %rsi
callq 0x9b48
addq $0x18, %r12
jmp 0x26d42
movq %rbp, %rdi
movq %r15, %rsi
callq 0x9b48
addq $0x18, %r15
movq 0xc8(%rsp), %rax
movq 0xa8(%rsp), %r13
cmpq %rax, %r12
je 0x26d71
cmpq %r13, %r15
jne 0x26cfe
jmp 0x26d71
movq 0xc0(%rsp), %r12
movq 0xc8(%rsp), %rax
movq %r13, %r15
cmpq %rax, %r12
je 0x26d9f
leaq 0xe0(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x9b48
addq $0x18, %r12
cmpq 0xc8(%rsp), %r12
jne 0x26d7e
movq 0xa8(%rsp), %r13
cmpq %r13, %r15
je 0x26dc5
leaq 0x160(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b48
addq $0x18, %r15
cmpq 0xa8(%rsp), %r15
jne 0x26dac
movq 0xe0(%rsp), %rax
movq 0xe8(%rsp), %rdx
movq %rdx, %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rcx
cmpq $0x2, %rcx
jb 0x26e52
movl $0x1, %ecx
movl $0x2, %r14d
leal -0x2(%r14), %edx
leaq (%rdx,%rdx,2), %rdx
leaq (%rax,%rdx,8), %rdi
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rsi
callq 0x9996
testb %al, %al
jne 0x27677
movl %r14d, %ecx
movq 0xe0(%rsp), %rax
movq 0xe8(%rsp), %rdx
movq %rdx, %rsi
subq %rax, %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rdi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdi, %rsi
incl %r14d
cmpq %rcx, %rsi
ja 0x26dfe
cmpq %rax, %rdx
je 0x26ee5
leaq 0x7a0(%rbx), %r14
movl $0x1, %ebp
xorl %ecx, %ecx
leaq 0x40(%rsp), %r15
movslq 0x778(%rbx), %rdx
imulq $0x98, %rdx, %rsi
addq %r14, %rsi
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rdx
movq %r15, %rdi
callq 0x19a30
movq 0x40(%rsp), %r12
movq 0x48(%rsp), %r13
testq %r12, %r12
je 0x26eae
movq 0x50(%rsp), %rsi
subq %r12, %rsi
movq %r12, %rdi
callq 0x53a0
cmpq %r12, %r13
jne 0x2767e
movl %ebp, %ecx
movq 0xe0(%rsp), %rax
movq 0xe8(%rsp), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rsi # imm = 0xAAAAAAAAAAAAAAAB
imulq %rsi, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x26e6e
movq 0x100(%rsp), %r14
movq 0x108(%rsp), %r15
cmpq %r15, %r14
je 0x26f10
movl (%r14), %esi
movq %rbx, %rdi
movq 0x10(%rsp), %rdx
callq 0x22ac6
addq $0x4, %r14
jmp 0x26ef5
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rax
movq %rax, 0x178(%rsp)
cmpq %rax, %rsi
je 0x2766c
movabsq $0x7fffffff8, %r15      # imm = 0x7FFFFFFF8
leaq 0x80(%rbx), %rax
movq %rax, 0x88(%rsp)
leaq 0x20(%rsp), %r14
leaq 0x40(%rsp), %rbp
leaq 0x19bd9(%rip), %r12     # 0x40b34
movq %r14, %rdi
movq %rsi, 0x180(%rsp)
callq 0xa26a
movq 0x38(%rbx), %rcx
cmpl $0x0, 0x820(%rcx)
je 0x27645
xorl %edi, %edi
movq 0x20(%rcx,%rdi,8), %rax
movq 0x760(%rax), %rdx
cmpq %rdx, 0x768(%rax)
je 0x27633
xorl %r14d, %r14d
movq %rdi, 0x10(%rsp)
movq (%rdx,%r14,8), %rcx
movq 0x50(%rcx), %rcx
cmpq %rbx, 0x48(%rcx)
jne 0x27604
leaq 0x7a0(%rax), %rsi
movq 0x780(%rax), %rcx
movslq (%rcx,%r14,4), %rcx
imulq $0x98, %rcx, %rcx
cmpl $-0x1, 0x814(%rax,%rcx)
movq %r14, 0x18(%rsp)
je 0x27002
addq %rcx, %rsi
movq %rbp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x19a30
movq 0x40(%rsp), %r13
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
jmp 0x270ac
addq %rcx, %rsi
xorl %r13d, %r13d
movq $0x0, 0x38(%rsp)
movq %rsi, %rdi
callq 0x19088
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %r14
movq 0x20(%rax,%r14,8), %rax
movq 0x780(%rax), %rcx
movq 0x18(%rsp), %rdx
movq %rdx, %r15
movslq (%rcx,%rdx,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rsi
addq $0x7a0, %rsi            # imm = 0x7A0
movq %rbp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x19a30
movq 0x40(%rsp), %r13
movq 0x48(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rbx), %rax
movq 0x20(%rax,%r14,8), %rax
movq 0x780(%rax), %rcx
movslq (%rcx,%r15,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
callq 0x190c8
movq 0x68(%rsp), %rcx
movabsq $0x7fffffff8, %r15      # imm = 0x7FFFFFFF8
subq %r13, %rcx
je 0x275ea
sarq $0x2, %rcx
movq $0x0, 0x8(%rsp)
movq %r13, 0x90(%rsp)
movq %rcx, 0x68(%rsp)
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq 0x780(%rax), %rcx
movq 0x18(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
cmpl $-0x1, 0x74(%rdi)
je 0x271d4
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %edx
leaq 0x20(%rsp), %rsi
callq 0x1a82c
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
testq %r15, %rax
je 0x27185
xorl %r14d, %r14d
movq $0x0, 0x128(%rsp)
movq %rbp, %rdi
leaq 0x128(%rsp), %rsi
callq 0x9f9a
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0x2716f
movq (%rdi), %rax
callq *0x8(%rax)
incl %r14d
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
shrq $0x3, %rax
cmpl %eax, %r14d
jb 0x27140
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq 0x780(%rax), %rcx
movq 0x18(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %edx
movq %rbp, %rsi
callq 0x1a6ca
movq %rbp, %rdi
callq 0xa37e
jmp 0x2730e
callq 0x19088
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq 0x780(%rax), %rcx
movq 0x18(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %edx
leaq 0x20(%rsp), %rsi
callq 0x1a82c
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
testq %r15, %rax
je 0x27285
xorl %r14d, %r14d
movq $0x0, 0x130(%rsp)
movq %rbp, %rdi
leaq 0x130(%rsp), %rsi
callq 0x9f9a
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0x2726f
movq (%rdi), %rax
callq *0x8(%rax)
incl %r14d
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
shrq $0x3, %rax
cmpl %eax, %r14d
jb 0x27240
movq %r15, %r12
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %r14
movq 0x20(%rax,%r14,8), %rax
movq 0x780(%rax), %rcx
movq %r13, %rdx
movq 0x18(%rsp), %r13
movslq (%rcx,%r13,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
movq %rdx, %r15
movq 0x8(%rsp), %rax
movl (%rdx,%rax,4), %edx
movq %rbp, %rsi
callq 0x1a6ca
movq 0x38(%rbx), %rax
movq 0x20(%rax,%r14,8), %rax
movq 0x780(%rax), %rcx
movslq (%rcx,%r13,4), %rcx
imulq $0x98, %rcx, %rcx
leaq (%rax,%rcx), %rdi
addq $0x7a0, %rdi            # imm = 0x7A0
callq 0x190c8
movq %rbp, %rdi
callq 0xa37e
movq %r15, %r13
movq %r12, %r15
leaq 0x19826(%rip), %r12     # 0x40b34
movq 0x38(%rbx), %rax
movq 0x10(%rsp), %rcx
movq 0x20(%rax,%rcx,8), %rsi
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %edx
leaq 0x70(%rsp), %rdi
callq 0x22900
xorps %xmm0, %xmm0
movaps %xmm0, 0x140(%rsp)
xorl %eax, %eax
movq %rax, 0x150(%rsp)
movq %rax, 0x40(%rsp)
movl %eax, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movl %eax, 0x58(%rsp)
movq %rax, 0x60(%rsp)
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rdx
movq %rdx, %rcx
subq %rax, %rcx
testq %r15, %rcx
je 0x2739d
xorl %r14d, %r14d
movq %rbp, %rdi
movl $0x1, %esi
callq 0x126f6
incl %r14d
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rdx
movq %rdx, %rcx
subq %rax, %rcx
shrq $0x3, %rcx
cmpl %ecx, %r14d
jb 0x27374
movq 0x38(%rbx), %rcx
movq 0x10(%rsp), %rsi
movq 0x20(%rcx,%rsi,8), %rcx
movq 0x760(%rcx), %rcx
movq 0x18(%rsp), %rsi
movq (%rcx,%rsi,8), %rcx
movq 0x30(%rcx), %rsi
movq 0x38(%rcx), %rdi
subq %rsi, %rdi
je 0x273f8
sarq $0x2, %rdi
movq 0x40(%rsp), %r8
xorl %r9d, %r9d
movl (%rsi,%r9,4), %ecx
movl %ecx, %r10d
movq $-0x2, %r11
rolq %cl, %r11
shrl $0x6, %r10d
andq %r11, (%r8,%r10,8)
incq %r9
movl %r9d, %ecx
cmpq %rcx, %rdi
ja 0x273d4
subq %rax, %rdx
testq %r15, %rdx
je 0x274aa
xorl %r15d, %r15d
movq 0x40(%rsp), %rcx
movq %r15, %rdx
shrq $0x6, %rdx
movq (%rcx,%rdx,8), %rcx
btq %r15, %rcx
jae 0x2742e
movq (%rax,%r15,8), %rdi
testq %rdi, %rdi
je 0x27459
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x2745b
movq $0x0, 0x118(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x9f9a
movq 0x118(%rsp), %rdi
jmp 0x27480
xorl %eax, %eax
movq %rax, 0x120(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x9f9a
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x2748b
movq (%rdi), %rax
callq *0x8(%rax)
incq %r15
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
movl %ecx, %ecx
cmpq %rcx, %r15
jb 0x27407
movq 0x48(%rbx), %rdi
movl 0x9fa4(%rbx), %esi
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %eax
xorl %edx, %edx
divl 0x9fac(%rbx)
movl %eax, %edx
leaq 0x13c(%rsp), %rcx
callq 0x67e4
movq %rax, %rcx
movl 0x9fac(%rbx), %esi
leal -0x1(%rsi), %eax
shrl $0x3, %eax
addq %rax, %rcx
movq 0x8(%rsp), %rax
movl (%r13,%rax,4), %eax
xorl %edx, %edx
divl %esi
imull 0x9fa8(%rbx), %edx
leaq (%rdx,%rcx), %rax
incq %rax
movq %rax, 0x98(%rsp)
cmpl $0x0, 0x54(%rbx)
je 0x27580
movq 0x88(%rsp), %r15
xorl %r13d, %r13d
xorl %r14d, %r14d
movl -0x4(%r15), %edx
cmpq $0x4, %rdx
ja 0x2754d
movslq (%r12,%rdx,4), %rax
addq %r12, %rax
jmpq *%rax
movl $0x4, %ecx
jmp 0x27552
movl $0x10, %ecx
jmp 0x27552
movzbl (%r15), %ecx
jmp 0x27552
movl $0x8, %ecx
jmp 0x27552
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq 0x140(%rsp), %rsi
addq %r13, %rsi
movq %rbx, %rdi
leaq 0x98(%rsp), %r8
callq 0x218fe
incq %r14
movl 0x54(%rbx), %eax
addq $0x8, %r13
addq $0x38, %r15
cmpq %rax, %r14
jb 0x2751f
movq 0x48(%rbx), %rdi
movl 0x13c(%rsp), %esi
movq 0x90(%rsp), %r13
callq 0x689e
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x275af
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
leaq 0x140(%rsp), %rdi
callq 0xa37e
leaq 0x70(%rsp), %rdi
callq 0xa37e
movq 0x8(%rsp), %rdx
incl %edx
movq 0x68(%rsp), %rcx
movq %rdx, 0x8(%rsp)
cmpq %rdx, %rcx
movabsq $0x7fffffff8, %r15      # imm = 0x7FFFFFFF8
ja 0x270cf
testq %r13, %r13
movq 0x18(%rsp), %r14
je 0x27604
movq 0x38(%rsp), %rsi
subq %r13, %rsi
movq %r13, %rdi
callq 0x53a0
incl %r14d
movq 0x38(%rbx), %rcx
movq 0x10(%rsp), %rdi
movq 0x20(%rcx,%rdi,8), %rax
movq 0x760(%rax), %rdx
movq 0x768(%rax), %rsi
subq %rdx, %rsi
sarq $0x3, %rsi
cmpq %r14, %rsi
ja 0x26f9f
incq %rdi
movl 0x820(%rcx), %eax
cmpq %rax, %rdi
jb 0x26f7e
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0xa37e
movq 0x180(%rsp), %rsi
addq $0x18, %rsi
cmpq 0x178(%rsp), %rsi
jne 0x26f5b
xorl %ebx, %ebx
jmp 0x27683
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x276f1
movl $0xfffffffb, %ebx       # imm = 0xFFFFFFFB
jmp 0x27683
movl $0xfffffff9, %ebx       # imm = 0xFFFFFFF9
leaq 0x160(%rsp), %rdi
callq 0x280c0
leaq 0xe0(%rsp), %rdi
callq 0x280c0
leaq 0xa0(%rsp), %rdi
callq 0x280c0
leaq 0xc0(%rsp), %rdi
callq 0x280c0
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x276d4
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x276f1
movq 0x198(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
movl %ebx, %eax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x27730
jmp 0x27730
jmp 0x27750
jmp 0x2777f
jmp 0x2777f
jmp 0x27750
jmp 0x2777f
jmp 0x27730
jmp 0x27730
jmp 0x27730
jmp 0x27730
jmp 0x27730
jmp 0x2777f
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
jmp 0x27758
jmp 0x27730
jmp 0x27730
movq %rax, %rbx
jmp 0x2785f
movq %rax, %rbx
testq %r15, %r15
je 0x27753
subq %r15, %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x53a0
jmp 0x27753
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xa37e
jmp 0x27855
jmp 0x2777f
jmp 0x2777f
movq %rax, %rbx
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x27855
jmp 0x2777f
jmp 0x27796
jmp 0x2777f
jmp 0x2777f
movq %rax, %rbx
jmp 0x27855
movq %rax, %rbx
jmp 0x277ea
movq %rax, %rbx
movq %r15, %r13
jmp 0x277ea
jmp 0x27796
movq %rax, %rbx
jmp 0x27840
jmp 0x277fe
movq %rax, %rbx
movq 0x118(%rsp), %rdi
jmp 0x277c7
movq %rax, %rbx
movq 0x130(%rsp), %rdi
jmp 0x277df
jmp 0x277fe
movq %rax, %rbx
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x27801
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x27801
movq %rax, %rbx
movq 0x128(%rsp), %rdi
testq %rdi, %rdi
je 0x277ea
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x40(%rsp), %rdi
jmp 0x2783b
movq %rax, %rbx
movq 0x90(%rsp), %r13
jmp 0x27801
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x27829
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
movq $0x0, 0x40(%rsp)
movl $0x0, 0x48(%rsp)
leaq 0x140(%rsp), %rdi
callq 0xa37e
leaq 0x70(%rsp), %rdi
callq 0xa37e
testq %r13, %r13
je 0x27855
movq 0x38(%rsp), %rsi
subq %r13, %rsi
movq %r13, %rdi
callq 0x53a0
leaq 0x20(%rsp), %rdi
callq 0xa37e
leaq 0x160(%rsp), %rdi
callq 0x280c0
leaq 0xe0(%rsp), %rdi
callq 0x280c0
leaq 0xa0(%rsp), %rdi
callq 0x280c0
leaq 0xc0(%rsp), %rdi
callq 0x280c0
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x278b0
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x278cd
movq 0x198(%rsp), %rsi
subq %rdi, %rsi
callq 0x53a0
movq %rbx, %rdi
callq 0x56e0
nop