// File: Konano[P]UselessDatabase/Database.cpp
// Function: Database::checkWhere(WhereStmt&)
bool Database::checkWhere(WhereStmt &w) { // Table::checkWhere
    Anys data, _data;
    for (auto it: w.cols) {
        if (filterTable(it.first)->checkPointer() == false) return true;
        data.push_back(filterTable(it.first)->getPointerColData(it.second));
    }
    switch (w.rvalue_ty) {
    case 0: {
        bool nl = true, nnl = true;
        for (uint i = 0; i < w.cols.size(); i++) {
            nl &= data[i].isNull();
            nnl &= !data[i].isNull();
        }
        return (w.op == OP_NL && nl) && (w.op == OP_NNL && nnl);
    }
    case 1: {
        for (auto it: w.rvalue) {
            _data.push_back(it);
        }
        return cmpCol(w.op, data, _data);
    }
    case 2: {
        for (auto it: w.rvalue_cols) {
            if (filterTable(it.first)->checkPointer() == false) return true;
            _data.push_back(filterTable(it.first)->getPointerColData(it.second));
        }
        return cmpCol(w.op, data, _data);
    }
    case 3:
        if (w.op == OP_IN) w.any = true, w.op = OP_EQ;
        if (w.any || w.all) {
            return filterTable(w.rvalue_table)->cmpRecords(data, w.op, w.any, w.all);
        } else {
            return filterTable(w.rvalue_table)->cmpRecord(data, filterTable(w.rvalue_table)->val, w.op);
        }
    default:
        return false;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xc310
leaq -0x48(%rbp), %rdi
callq 0xc310
jmp 0x8812
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0xc7f0
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0xc820
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xc850
testb $0x1, %al
jne 0x884a
jmp 0x8991
leaq -0x68(%rbp), %rdi
callq 0xc890
movq (%rax), %rax
movq %rax, -0x78(%rbp)
cmpl $0x0, -0x78(%rbp)
jge 0x8883
movq -0x130(%rbp), %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl -0x78(%rbp), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x138(%rbp)
jmp 0x889a
movq -0x130(%rbp), %rax
movslq -0x78(%rbp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0x4f060
movb %al, -0x139(%rbp)
jmp 0x88ae
movb -0x139(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x88f0
movb $0x1, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x90a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x909d
cmpl $0x0, -0x78(%rbp)
jge 0x8919
movq -0x130(%rbp), %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl -0x78(%rbp), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x148(%rbp)
jmp 0x8930
movq -0x130(%rbp), %rax
movslq -0x78(%rbp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rsi
movl -0x74(%rbp), %edx
leaq -0x88(%rbp), %rdi
callq 0x4f0a0
jmp 0x8948
leaq -0x30(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xc330
jmp 0x895a
leaq -0x88(%rbp), %rdi
callq 0xc3c0
leaq -0x68(%rbp), %rdi
callq 0xc8b0
jmp 0x8834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xc3c0
jmp 0x909d
movq -0x18(%rbp), %rax
movl 0x20(%rax), %eax
movq %rax, -0x150(%rbp)
subq $0x3, %rax
ja 0x9072
movq -0x150(%rbp), %rax
leaq 0x75681(%rip), %rcx     # 0x7e038
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x1, -0x89(%rbp)
movb $0x1, -0x8a(%rbp)
movl $0x0, -0x90(%rbp)
movl -0x90(%rbp), %eax
movq %rax, -0x158(%rbp)
movq -0x18(%rbp), %rdi
callq 0xc8d0
movq %rax, %rcx
movq -0x158(%rbp), %rax
cmpq %rcx, %rax
jae 0x8aaf
movl -0x90(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0xc8f0
movq %rax, -0x160(%rbp)
jmp 0x8a19
movq -0x160(%rbp), %rdi
callq 0xc920
movb %al, -0x161(%rbp)
jmp 0x8a2d
movb -0x161(%rbp), %al
movzbl %al, %eax
movzbl -0x89(%rbp), %ecx
andl %ecx, %eax
andb $0x1, %al
movb %al, -0x89(%rbp)
movl -0x90(%rbp), %esi
leaq -0x30(%rbp), %rdi
callq 0xc8f0
movq %rax, -0x170(%rbp)
jmp 0x8a5f
movq -0x170(%rbp), %rdi
callq 0xc920
movb %al, -0x171(%rbp)
jmp 0x8a73
movb -0x171(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %ecx
movb -0x8a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
andl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x8a(%rbp)
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x89d8
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpl $0x6, 0x18(%rcx)
movb %al, -0x172(%rbp)
jne 0x8afc
xorl %eax, %eax
testb $0x1, -0x89(%rbp)
movb %al, -0x172(%rbp)
je 0x8afc
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpl $0x7, 0x18(%rcx)
movb %al, -0x173(%rbp)
jne 0x8af0
movb -0x8a(%rbp), %al
movb %al, -0x173(%rbp)
movb -0x173(%rbp), %al
movb %al, -0x172(%rbp)
movb -0x172(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq -0x18(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0xc940
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rdi
callq 0xc970
movq %rax, -0xa8(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xc9a0
testb $0x1, %al
jne 0x8b64
jmp 0x8c08
leaq -0xa0(%rbp), %rdi
callq 0xc9e0
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0xca00
jmp 0x8b81
leaq -0xb8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xca00
jmp 0x8b96
leaq -0x48(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xc330
jmp 0x8ba8
leaq -0xb8(%rbp), %rdi
callq 0xc3c0
leaq -0xb0(%rbp), %rdi
callq 0xc3c0
leaq -0xa0(%rbp), %rdi
callq 0xca50
jmp 0x8b48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8bf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xc3c0
leaq -0xb0(%rbp), %rdi
callq 0xc3c0
jmp 0x909d
movq -0x18(%rbp), %rax
movl 0x18(%rax), %edi
leaq -0x30(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x8720
movb %al, -0x174(%rbp)
jmp 0x8c24
movb -0x174(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq -0x18(%rbp), %rax
addq $0x40, %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rdi
callq 0xc7f0
movq %rax, -0xc8(%rbp)
movq -0xc0(%rbp), %rdi
callq 0xc820
movq %rax, -0xd0(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xc850
testb $0x1, %al
jne 0x8c8c
jmp 0x8dcf
leaq -0xc8(%rbp), %rdi
callq 0xc890
movq (%rax), %rax
movq %rax, -0xd8(%rbp)
cmpl $0x0, -0xd8(%rbp)
jge 0x8cd1
movq -0x130(%rbp), %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl -0xd8(%rbp), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x180(%rbp)
jmp 0x8ceb
movq -0x130(%rbp), %rax
movslq -0xd8(%rbp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rdi
callq 0x4f060
movb %al, -0x181(%rbp)
jmp 0x8cff
movb -0x181(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x8d1f
movb $0x1, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
jmp 0x907d
cmpl $0x0, -0xd8(%rbp)
jge 0x8d4e
movq -0x130(%rbp), %rax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl -0xd8(%rbp), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x190(%rbp)
jmp 0x8d68
movq -0x130(%rbp), %rax
movslq -0xd8(%rbp), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rsi
movl -0xd4(%rbp), %edx
leaq -0xe0(%rbp), %rdi
callq 0x4f0a0
jmp 0x8d83
leaq -0x48(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xc330
jmp 0x8d95
leaq -0xe0(%rbp), %rdi
callq 0xc3c0
leaq -0xc8(%rbp), %rdi
callq 0xc8b0
jmp 0x8c70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0xc3c0
jmp 0x909d
movq -0x18(%rbp), %rax
movl 0x18(%rax), %edi
leaq -0x30(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0x8720
movb %al, -0x191(%rbp)
jmp 0x8deb
movb -0x191(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq -0x18(%rbp), %rax
cmpl $0x8, 0x18(%rax)
jne 0x8e1f
movq -0x18(%rbp), %rax
movb $0x1, 0x1c(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x18(%rax)
movq -0x18(%rbp), %rax
testb $0x1, 0x1c(%rax)
jne 0x8e37
movq -0x18(%rbp), %rax
testb $0x1, 0x1d(%rax)
je 0x8f15
movq -0x18(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x8e68
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl 0x58(%rdx), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x1a0(%rbp)
jmp 0x8e83
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rax
movq %rax, -0x1a8(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xc400
jmp 0x8ea3
movq -0x1a8(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x18(%rax), %edx
movzbl 0x1d(%rax), %r8d
movzbl 0x1c(%rax), %ecx
andl $0x1, %ecx
andl $0x1, %r8d
leaq -0xf8(%rbp), %rsi
callq 0x4f230
movb %al, -0x1a9(%rbp)
jmp 0x8ed5
movb -0x1a9(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0xc430
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0xc430
jmp 0x909d
movq -0x18(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x8f46
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl 0x58(%rdx), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x1b8(%rbp)
jmp 0x8f61
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
leaq -0x110(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xc400
jmp 0x8f81
movq -0x18(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x8fb2
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl 0x58(%rdx), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x1c8(%rbp)
jmp 0x8fcd
movq -0x130(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rsi
addq $0x9fd0, %rsi           # imm = 0x9FD0
leaq -0x128(%rbp), %rdi
callq 0xc400
jmp 0x8fe9
movq -0x1c0(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x18(%rax), %ecx
leaq -0x110(%rbp), %rsi
leaq -0x128(%rbp), %rdx
callq 0x4f160
movb %al, -0x1c9(%rbp)
jmp 0x9012
movb -0x1c9(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xc430
leaq -0x110(%rbp), %rdi
callq 0xc430
movl $0x1, -0x7c(%rbp)
jmp 0x907d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xc430
leaq -0x110(%rbp), %rdi
callq 0xc430
jmp 0x909d
movb $0x0, -0x1(%rbp)
movl $0x1, -0x7c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xc430
leaq -0x30(%rbp), %rdi
callq 0xc430
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0xc430
leaq -0x30(%rbp), %rdi
callq 0xc430
movq -0x50(%rbp), %rdi
callq 0x6890
nopl (%rax,%rax)