// File: zimpha[P]MiniSQL/interpreter.cc
// Function: Interpreter::execfile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool Interpreter::execfile(std::string filename) {
    std::ifstream fin((filename).c_str());
    if (!fin) std::cout << "file does not exist" << std::endl;
    else {
        std::string buf;
        while (getline(fin, buf)) {
            int len = buf.size();
            while (len && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) {
                len --;
            }
            if (process(buf.substr(0, len))) return true;
        }
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rsi, -0x290(%rbp)
movq %rdi, %rax
movq -0x290(%rbp), %rdi
movq %rax, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x288(%rbp)
callq 0x3120
movq %rax, %rsi
leaq -0x220(%rbp), %rdi
movl $0x8, %edx
callq 0x3540
movq -0x220(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x220(%rbp,%rax), %rdi
callq 0x3160
movb %al, -0x27d(%rbp)
jmp 0x20be8
movb -0x27d(%rbp), %al
testb $0x1, %al
jne 0x20bf4
jmp 0x20c41
movq 0x183cd(%rip), %rdi     # 0x38fc8
leaq 0x6976(%rip), %rsi      # 0x27578
callq 0x32c0
movq %rax, -0x298(%rbp)
jmp 0x20c10
movq -0x298(%rbp), %rdi
movq 0x1838a(%rip), %rsi     # 0x38fa8
callq 0x3310
jmp 0x20c25
jmp 0x20e23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x20e4b
leaq -0x250(%rbp), %rdi
callq 0x3410
leaq -0x220(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x3090
movq %rax, -0x2a0(%rbp)
jmp 0x20c69
movq -0x2a0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3390
movb %al, -0x2a1(%rbp)
jmp 0x20c87
movb -0x2a1(%rbp), %al
testb $0x1, %al
jne 0x20c96
jmp 0x20df1
leaq -0x250(%rbp), %rdi
callq 0x3210
movl %eax, -0x254(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x254(%rbp)
movb %al, -0x2a2(%rbp)
je 0x20d32
movl -0x254(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x250(%rbp), %rdi
callq 0x35a0
movq %rax, -0x2b0(%rbp)
jmp 0x20cd9
movq -0x2b0(%rbp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0xa, %ecx
movb %al, -0x2b1(%rbp)
je 0x20d26
movl -0x254(%rbp), %eax
decl %eax
movslq %eax, %rsi
leaq -0x250(%rbp), %rdi
callq 0x35a0
movq %rax, -0x2c0(%rbp)
jmp 0x20d10
movq -0x2c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xd, %eax
sete %al
movb %al, -0x2b1(%rbp)
movb -0x2b1(%rbp), %al
movb %al, -0x2a2(%rbp)
movb -0x2a2(%rbp), %al
testb $0x1, %al
jne 0x20d3e
jmp 0x20d69
movl -0x254(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x254(%rbp)
jmp 0x20ca8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x20e15
movslq -0x254(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x278(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x32f0
jmp 0x20d89
movq -0x288(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x1e510
movb %al, -0x2c1(%rbp)
jmp 0x20da4
leaq -0x278(%rbp), %rdi
callq 0x35b8
movb -0x2c1(%rbp), %al
testb $0x1, %al
jne 0x20dbc
jmp 0x20dec
movb $0x1, -0x1(%rbp)
movl $0x1, -0x27c(%rbp)
jmp 0x20dfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x35b8
jmp 0x20e15
jmp 0x20c4d
movl $0x0, -0x27c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x35b8
movl -0x27c(%rbp), %eax
testl %eax, %eax
jne 0x20e31
jmp 0x20e13
jmp 0x20e23
leaq -0x250(%rbp), %rdi
callq 0x35b8
jmp 0x20e4b
movb $0x0, -0x1(%rbp)
movl $0x1, -0x27c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x30d0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
leaq -0x220(%rbp), %rdi
callq 0x30d0
movq -0x228(%rbp), %rdi
callq 0x34f0
nopw %cs:(%rax,%rax)