// File: /workspace/github_cpp_makefile_star2_O3/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_stmt_fn(input_t*)
pair<int, pl0_ast_stmt *> pl0_stmt_fn(input_t *text) {
    pair<int, pl0_ast_stmt *> ans;
    std::tuple<int, pl0_ast_stmt *, string> res;
    // short-circuit evaluation
    if (std::get<0>(res = pl0_write_stmt(text)) != -1
            || std::get<0>(res = pl0_read_stmt(text)) != -1
            || std::get<0>(res = pl0_assign_stmt(text)) != -1
            || std::get<0>(res = pl0_cond_stmt(text)) != -1
            || std::get<0>(res = pl0_case_stmt(text)) != -1
            || std::get<0>(res = pl0_compound_stmt(text)) != -1
            || std::get<0>(res = pl0_for_stmt(text)) != -1
            || std::get<0>(res = pl0_call_proc(text)) != -1) {
        ans = make_pair(std::get<0>(res), std::get<1>(res));
    }
    else {
        // default: empty statement.
        ans = make_pair(0, new pl0_ast_null_stmt(text->locate()));
    }
    if (verbose) {
        cout << "parsing: Statement" << endl;
    }
    return ans;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
xorl %eax, %eax
movq %rax, -0x8(%r15)
movb $0x0, (%r15)
movq %rax, 0x10(%r15)
movl $0x0, 0x18(%r15)
leaq 0xab7e2(%rip), %rsi     # 0xbb4d0
leaq 0x188(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db3c
leaq 0x188(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xffd5
leaq 0xab755(%rip), %rsi     # 0xbb488
leaq 0x158(%rsp), %rdi
movq %rbx, %rdx
callq 0x1dc54
leaq 0x158(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xffb4
leaq 0xab200(%rip), %rsi     # 0xbaf78
leaq 0x128(%rsp), %rdi
movq %rbx, %rdx
callq 0x1dd6c
leaq 0x128(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xff93
leaq 0xab51b(%rip), %rsi     # 0xbb2d8
leaq 0xf8(%rsp), %rdi
movq %rbx, %rdx
callq 0x1de84
leaq 0xf8(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xff72
leaq 0xab51e(%rip), %rsi     # 0xbb320
leaq 0xc8(%rsp), %rdi
movq %rbx, %rdx
callq 0x1df9c
leaq 0xc8(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xff51
leaq 0xab5f9(%rip), %rsi     # 0xbb440
leaq 0x98(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e0b4
leaq 0x98(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xff30
leaq 0xab524(%rip), %rsi     # 0xbb3b0
leaq 0x68(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e1cc
leaq 0x68(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movb $0x1, %bpl
cmpl $-0x1, 0x30(%rsp)
jne 0xff15
leaq 0xab531(%rip), %rsi     # 0xbb3f8
leaq 0x38(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e2e4
leaq 0x38(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x8(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x30(%rsp)
setne %bpl
leaq 0x48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff15
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff30
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff51
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff72
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff93
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xffb4
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x168(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xffd5
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfff6
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x5260
testb %bpl, %bpl
je 0x10006
movl 0x30(%rsp), %ebx
movq 0x28(%rsp), %r14
jmp 0x1002f
movl $0x18, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
movl $0x9, 0x10(%r14)
leaq 0xa9186(%rip), %rax     # 0xb91b0
movq %rax, (%r14)
xorl %ebx, %ebx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x10046
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
movl %ebx, %eax
movq %r14, %rdx
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1007e
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1007e
jmp 0x1007b
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x100a0
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x100a0
jmp 0x1009d
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x100c8
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x100c8
jmp 0x100c5
movq %rax, %rbx
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x100f0
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x100f0
jmp 0x100ed
movq %rax, %rbx
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10118
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10118
jmp 0x10115
movq %rax, %rbx
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10140
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10140
jmp 0x1013d
movq %rax, %rbx
leaq 0x168(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1016a
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1016a
jmp 0x10167
jmp 0x1018d
movq %rax, %rbx
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10190
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10190
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x101a7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0