// File: cla7aye15I4nd[P]basic_interpreter/./lib/program.hpp
// Function: basic::basic_interpreter::eval(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>> const&, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>> const&)
int eval(const expr_iter& begin,
                 const expr_iter& end) {
            std::vector<expr_iter> match(end - begin), stack;
            for (expr_iter ptr = begin; ptr != end; ptr++) {
                if (*ptr == "(") stack.emplace_back(ptr);
                else if (*ptr == ")") {
                    match[stack.back() - begin] = ptr;
                    stack.pop_back();
                }
            }
            return eval(begin, end, begin, match);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x8510
movq %rax, -0x80(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x8550
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0x8570
jmp 0x6c13
leaq -0x31(%rbp), %rdi
callq 0x85e0
leaq -0x60(%rbp), %rdi
callq 0x8600
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x8460
testb $0x1, %al
jne 0x6c46
jmp 0x6d38
leaq -0x68(%rbp), %rdi
callq 0x6e70
movq %rax, %rdi
leaq 0xa492(%rip), %rsi      # 0x110eb
callq 0x4080
movb %al, -0x89(%rbp)
jmp 0x6c66
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0x6c72
jmp 0x6cc3
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x8620
jmp 0x6c81
jmp 0x6d22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x85e0
jmp 0x6d7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x8bb0
leaq -0x30(%rbp), %rdi
callq 0x8bb0
jmp 0x6d7c
leaq -0x68(%rbp), %rdi
callq 0x6e70
movq %rax, %rdi
leaq 0xa446(%rip), %rsi      # 0x1111c
callq 0x4080
movb %al, -0x8a(%rbp)
jmp 0x6ce3
movb -0x8a(%rbp), %al
testb $0x1, %al
jne 0x6cef
jmp 0x6d20
leaq -0x60(%rbp), %rdi
callq 0x86c0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x8510
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x86a0
movq -0x68(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x60(%rbp), %rdi
callq 0x8700
jmp 0x6d22
jmp 0x6d24
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
callq 0x8730
movq %rax, -0x70(%rbp)
jmp 0x6c30
movq -0x88(%rbp), %rdi
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
leaq -0x30(%rbp), %r8
movq %rcx, %rsi
callq 0x8770
movl %eax, -0x90(%rbp)
jmp 0x6d5b
leaq -0x60(%rbp), %rdi
callq 0x8bb0
leaq -0x30(%rbp), %rdi
callq 0x8bb0
movl -0x90(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x33e0
nopw %cs:(%rax,%rax)
nop