// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/./libparsec/parse_tool.hpp
// Function: ParsecT<parser_t<pl0_ast_program*>, pl0_ast_program*>::parse(input_t*) const
ValueT<V> parse(input_t *text) const {
        pair<int, int> loc = make_pair(1, 1);
        tuple<int, V, string> res;
        try { // try exception throwed during operating the stream object.
            res = parser(text);
        } catch (std::exception & e) {
            cout << string("!!!Exception: ") + string(e.what()) << endl;
            res = make_tuple(-1, V(), "!!!Exception: " + string(e.what()));
        } catch (...) {
            cout << string("!!!Exception: ") + "unknown exception." << endl;
        }
        text = text->next(std::get<0>(res)); // move ahead offset.
        if (!text->empty()) {
            // cout << "NOT COMSUME ALL TOKEN IN THE INPUT STREAM!" << endl;
            // cout << "    in stream: " << (*text) << endl;
        }
        return ValueT<V>(std::get<0>(res) != -1, loc, std::get<0>(res), std::get<1>(res), std::get<2>(res), text->empty());
    }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc0, %rsp
movq %rdx, %r15
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
andq $0x0, 0x10(%rax)
movq %rdi, %rbx
andl $0x0, 0x18(%rax)
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x580a0
leaq 0x90(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x58234
leaq 0x40(%rsp), %rdi
callq 0x5120
leaq 0xb8(%rsp), %rsi
movq %r15, %rdi
callq 0x10b60
leaq 0xb0(%rsp), %r8
movl 0x8(%r8), %ecx
xorl %esi, %esi
cmpl $-0x1, %ecx
setne %sil
cmpq $0x0, 0x18(%rax)
sete 0x40(%rsp)
movq %r14, (%rsp)
movabsq $0x100000001, %rdx      # imm = 0x100000001
leaq 0x90(%rsp), %r9
movq %rbx, %rdi
callq 0x5814e
leaq 0x90(%rsp), %rdi
callq 0x5120
movq %rbx, %rax
addq $0xc0, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x58087
movq %rdx, %r13
movq %rax, %r12
leaq 0x40(%rsp), %rdi
callq 0x5120
jmp 0x57e8d
movq %rdx, %r13
movq %rax, %r12
movq %r12, %rdi
callq 0x50f0
cmpl $0x2, %r13d
jne 0x57faf
movq %rax, %r12
leaq 0x369a(%rip), %rsi      # 0x5b543
leaq 0x20(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0xfa26
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
leaq 0x70(%rsp), %rdi
leaq 0x14(%rsp), %rdx
movq %rax, %rsi
callq 0xfa26
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0xfd33
movq 0x330e9(%rip), %rdi     # 0x8afd8
leaq 0x40(%rsp), %rsi
callq 0x5210
movq %rax, %rdi
callq 0x5130
leaq 0x40(%rsp), %rdi
callq 0x5120
leaq 0x70(%rsp), %rdi
callq 0x5120
leaq 0x20(%rsp), %rdi
callq 0x5120
orl $-0x1, 0x14(%rsp)
andq $0x0, 0x18(%rsp)
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
leaq 0x70(%rsp), %rdi
leaq 0x13(%rsp), %rdx
movq %rax, %rsi
callq 0xfa26
leaq 0x35f6(%rip), %rsi      # 0x5b543
leaq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0xfac0
leaq 0x40(%rsp), %r12
leaq 0x14(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x20(%rsp), %r13
movq %r12, %rdi
movq %r13, %rcx
callq 0x5824e
leaq 0x90(%rsp), %rdi
movq %r12, %rsi
callq 0x58138
movq %r12, %rdi
callq 0x5120
movq %r13, %rdi
callq 0x5120
leaq 0x70(%rsp), %rdi
callq 0x5120
callq 0x53d0
jmp 0x57e02
leaq 0x358d(%rip), %rsi      # 0x5b543
leaq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0xfa26
leaq 0x3586(%rip), %rdx      # 0x5b552
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xfd14
movq 0x32ff6(%rip), %rdi     # 0x8afd8
leaq 0x40(%rsp), %rsi
callq 0x5210
movq %rax, %rdi
callq 0x5130
leaq 0x40(%rsp), %rdi
callq 0x5120
leaq 0x20(%rsp), %rdi
callq 0x5120
callq 0x53d0
jmp 0x57e02
movq %rax, %rbx
jmp 0x58046
movq %rax, %rbx
jmp 0x58050
jmp 0x58087
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0x58073
jmp 0x58034
movq %rax, %rbx
jmp 0x58064
movq %rax, %rbx
jmp 0x5806e
movq %rax, %rbx
jmp 0x58078
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x5120
leaq 0x20(%rsp), %rdi
callq 0x5120
callq 0x53d0
jmp 0x5808a
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x5120
leaq 0x70(%rsp), %rdi
callq 0x5120
leaq 0x20(%rsp), %rdi
callq 0x5120
callq 0x53d0
jmp 0x5808a
movq %rax, %rdi
callq 0x16924
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5120
movq %rbx, %rdi
callq 0x53f0
nop