// File: Konano[P]UselessDatabase/Table.cpp
// Function: Table::checkWhere(Anys, WhereStmt&)
bool Table::checkWhere(Anys __data, WhereStmt &w) { // Database::checkWhere
    Anys data, _data;
    for (auto it: w.cols) data.push_back(__data[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) {
            _data.push_back(__data[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 $0x1c0, %rsp            # imm = 0x1C0
movq %rsi, -0x140(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x138(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xc310
leaq -0x50(%rbp), %rdi
callq 0xc310
jmp 0x4f46d
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc7f0
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rdi
callq 0xc820
movq %rax, -0x78(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xc850
testb $0x1, %al
jne 0x4f4a5
jmp 0x4f54a
leaq -0x70(%rbp), %rdi
callq 0xc890
movq -0x140(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movl -0x7c(%rbp), %esi
callq 0xc8f0
movq %rax, -0x148(%rbp)
jmp 0x4f4cd
movq -0x148(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0xca00
jmp 0x4f4e2
leaq -0x38(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xc330
jmp 0x4f4f4
leaq -0x88(%rbp), %rdi
callq 0xc3c0
leaq -0x70(%rbp), %rdi
callq 0xc8b0
jmp 0x4f48f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4fbd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4fbcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xc3c0
jmp 0x4fbcf
movq -0x20(%rbp), %rax
movl 0x20(%rax), %eax
movq %rax, -0x150(%rbp)
subq $0x3, %rax
ja 0x4fba1
movq -0x150(%rbp), %rax
leaq 0x345f4(%rip), %rcx     # 0x83b64
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 -0x20(%rbp), %rdi
callq 0xc8d0
movq %rax, %rcx
movq -0x158(%rbp), %rax
cmpq %rcx, %rax
jae 0x4f668
movl -0x90(%rbp), %esi
leaq -0x38(%rbp), %rdi
callq 0xc8f0
movq %rax, -0x160(%rbp)
jmp 0x4f5d2
movq -0x160(%rbp), %rdi
callq 0xc920
movb %al, -0x161(%rbp)
jmp 0x4f5e6
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 -0x38(%rbp), %rdi
callq 0xc8f0
movq %rax, -0x170(%rbp)
jmp 0x4f618
movq -0x170(%rbp), %rdi
callq 0xc920
movb %al, -0x171(%rbp)
jmp 0x4f62c
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 0x4f591
movq -0x20(%rbp), %rcx
xorl %eax, %eax
cmpl $0x6, 0x18(%rcx)
movb %al, -0x172(%rbp)
jne 0x4f6b5
xorl %eax, %eax
testb $0x1, -0x89(%rbp)
movb %al, -0x172(%rbp)
je 0x4f6b5
movq -0x20(%rbp), %rcx
xorl %eax, %eax
cmpl $0x7, 0x18(%rcx)
movb %al, -0x173(%rbp)
jne 0x4f6a9
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, -0x94(%rbp)
jmp 0x4fbaf
movq -0x20(%rbp), %rax
addq $0x28, %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0xc940
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0xc970
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xc9a0
testb $0x1, %al
jne 0x4f720
jmp 0x4f7c4
leaq -0xa8(%rbp), %rdi
callq 0xc9e0
movq %rax, %rsi
leaq -0xb8(%rbp), %rdi
callq 0xca00
jmp 0x4f73d
leaq -0xc0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xca00
jmp 0x4f752
leaq -0x50(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xc330
jmp 0x4f764
leaq -0xc0(%rbp), %rdi
callq 0xc3c0
leaq -0xb8(%rbp), %rdi
callq 0xc3c0
leaq -0xa8(%rbp), %rdi
callq 0xca50
jmp 0x4f704
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4f7b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xc3c0
leaq -0xb8(%rbp), %rdi
callq 0xc3c0
jmp 0x4fbcf
movq -0x20(%rbp), %rax
movl 0x18(%rax), %edi
leaq -0x38(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x8720
movb %al, -0x174(%rbp)
jmp 0x4f7e0
movb -0x174(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0x4fbaf
movq -0x20(%rbp), %rax
addq $0x40, %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xc7f0
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xc820
movq %rax, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xc850
testb $0x1, %al
jne 0x4f84b
jmp 0x4f8dd
leaq -0xd0(%rbp), %rdi
callq 0xc890
movq -0x140(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xe0(%rbp)
movl -0xdc(%rbp), %esi
callq 0xc8f0
movq %rax, -0x180(%rbp)
jmp 0x4f87c
movq -0x180(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xca00
jmp 0x4f891
leaq -0x50(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xc330
jmp 0x4f8a3
leaq -0xe8(%rbp), %rdi
callq 0xc3c0
leaq -0xd0(%rbp), %rdi
callq 0xc8b0
jmp 0x4f82f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0xc3c0
jmp 0x4fbcf
movq -0x20(%rbp), %rax
movl 0x18(%rax), %edi
leaq -0x38(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x8720
movb %al, -0x181(%rbp)
jmp 0x4f8f9
movb -0x181(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0x4fbaf
movq -0x20(%rbp), %rax
cmpl $0x8, 0x18(%rax)
jne 0x4f930
movq -0x20(%rbp), %rax
movb $0x1, 0x1c(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x18(%rax)
movq -0x20(%rbp), %rax
testb $0x1, 0x1c(%rax)
jne 0x4f948
movq -0x20(%rbp), %rax
testb $0x1, 0x1d(%rax)
je 0x4fa31
movq -0x20(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x4f97d
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl 0x58(%rdx), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x190(%rbp)
jmp 0x4f99c
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xc400
jmp 0x4f9bc
movq -0x198(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x18(%rax), %edx
movzbl 0x1d(%rax), %r8d
movzbl 0x1c(%rax), %ecx
andl $0x1, %ecx
andl $0x1, %r8d
leaq -0x100(%rbp), %rsi
callq 0x4f230
movb %al, -0x199(%rbp)
jmp 0x4f9ee
movb -0x199(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xc430
movl $0x1, -0x94(%rbp)
jmp 0x4fbaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xc430
jmp 0x4fbcf
movq -0x20(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x4fa66
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
subl 0x58(%rdx), %ecx
movslq %ecx, %rcx
movq 0x8848(%rax,%rcx,8), %rax
movq %rax, -0x1a8(%rbp)
jmp 0x4fa85
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xc400
jmp 0x4faa5
movq -0x20(%rbp), %rax
cmpl $0x0, 0x58(%rax)
jge 0x4fada
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%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 0x4faf9
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x20(%rbp), %rcx
movslq 0x58(%rcx), %rcx
movq 0x20(%rax,%rcx,8), %rax
movq %rax, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rsi
addq $0x9fd0, %rsi           # imm = 0x9FD0
leaq -0x130(%rbp), %rdi
callq 0xc400
jmp 0x4fb15
movq -0x1b0(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0x18(%rax), %ecx
leaq -0x118(%rbp), %rsi
leaq -0x130(%rbp), %rdx
callq 0x4f160
movb %al, -0x1b9(%rbp)
jmp 0x4fb3e
movb -0x1b9(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
leaq -0x130(%rbp), %rdi
callq 0xc430
leaq -0x118(%rbp), %rdi
callq 0xc430
movl $0x1, -0x94(%rbp)
jmp 0x4fbaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4fb93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0xc430
leaq -0x118(%rbp), %rdi
callq 0xc430
jmp 0x4fbcf
movb $0x0, -0x1(%rbp)
movl $0x1, -0x94(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xc430
leaq -0x38(%rbp), %rdi
callq 0xc430
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0xc430
leaq -0x38(%rbp), %rdi
callq 0xc430
movq -0x58(%rbp), %rdi
callq 0x6890
nopw (%rax,%rax)