// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movq %rdi, %rbx
leaq 0x20(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, 0x10(%rcx)
movl $0x0, 0x18(%rcx)
leaq 0xb18f8(%rip), %rsi     # 0xc14d0
leaq 0x198(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e404
leaq 0x198(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
movl 0x38(%rsp), %r12d
cmpl $-0x1, %r12d
movq %rbx, 0x40(%rsp)
jne 0xfc5a
leaq 0xb1869(%rip), %rsi     # 0xc1488
leaq 0x168(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e51c
leaq 0x168(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xfe08
movb $0x1, %r14b
movl $0x0, 0xc(%rsp)
xorl %r13d, %r13d
xorl %r15d, %r15d
xorl %ebx, %ebx
xorl %ebp, %ebp
xorl %eax, %eax
testb %al, %al
je 0xfc90
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfc90
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
testb %bpl, %bpl
je 0xfcb6
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfcb6
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5260
testb %bl, %bl
movq 0x40(%rsp), %rbx
je 0xfce0
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfce0
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5260
testb %r15b, %r15b
je 0xfd06
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd06
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5260
testb %r13b, %r13b
je 0xfd2c
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd2c
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x5260
cmpb $0x0, 0xc(%rsp)
je 0xfd54
leaq 0x148(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd54
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x5260
cmpl $-0x1, %r12d
jne 0xfd7b
leaq 0x178(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd7b
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd9c
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x5260
testb %r14b, %r14b
je 0xfdac
movl 0x38(%rsp), %ebx
movq 0x30(%rsp), %r14
jmp 0xfdd5
movl $0x18, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
movl $0x9, 0x10(%r14)
leaq 0xaf3c0(%rip), %rax     # 0xbf190
movq %rax, (%r14)
xorl %ebx, %ebx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xfdf1
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
movl %ebx, %eax
movq %r14, %rdx
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xb1169(%rip), %rsi     # 0xc0f78
leaq 0x138(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e634
leaq 0x138(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xfe54
movb $0x1, %al
movl %eax, 0xc(%rsp)
xorl %r13d, %r13d
xorl %r15d, %r15d
jmp 0xfe9e
leaq 0xb147d(%rip), %rsi     # 0xc12d8
leaq 0x108(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e74c
leaq 0x108(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xfeac
movb $0x1, %al
movl %eax, 0xc(%rsp)
xorl %r15d, %r15d
movb $0x1, %r13b
xorl %ebx, %ebx
xorl %ebp, %ebp
xorl %eax, %eax
movb $0x1, %r14b
jmp 0xfc71
leaq 0xb146d(%rip), %rsi     # 0xc1320
leaq 0xd8(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e864
leaq 0xd8(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xfefa
movb $0x1, %al
movl %eax, 0xc(%rsp)
xorl %ebx, %ebx
movb $0x1, %r13b
movb $0x1, %r15b
jmp 0xfea0
leaq 0xb153f(%rip), %rsi     # 0xc1440
leaq 0xa8(%rsp), %rdi
movq %rbx, %rdx
callq 0x1e97c
leaq 0xa8(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xff4d
movb $0x1, %al
movl %eax, 0xc(%rsp)
xorl %ebp, %ebp
movb $0x1, %r13b
movb $0x1, %r15b
movb $0x1, %bl
jmp 0xfea2
leaq 0xb145c(%rip), %rsi     # 0xc13b0
leaq 0x78(%rsp), %rdi
movq %rbx, %rdx
callq 0x1ea94
leaq 0x78(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
je 0xff9d
movb $0x1, %al
movl %eax, 0xc(%rsp)
xorl %eax, %eax
movb $0x1, %r13b
movb $0x1, %r15b
movb $0x1, %bl
movb $0x1, %bpl
jmp 0xfea4
leaq 0xb1454(%rip), %rsi     # 0xc13f8
leaq 0x48(%rsp), %rdi
movq %rbx, %rdx
callq 0x1ebac
leaq 0x48(%rsp), %rsi
movl 0x28(%rsi), %eax
leaq 0x10(%rsp), %rdi
movl %eax, 0x28(%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x20(%rdi)
callq 0x5150
cmpl $-0x1, 0x38(%rsp)
setne %r14b
movb $0x1, %al
movl %eax, 0xc(%rsp)
movb $0x1, %r13b
movb $0x1, %r15b
movb $0x1, %bl
movb $0x1, %bpl
movb $0x1, %al
jmp 0xfc71
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10014
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10014
jmp 0x10011
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1003c
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1003c
jmp 0x10039
movq %rax, %rbx
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10064
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10064
jmp 0x10061
movq %rax, %rbx
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1008c
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1008c
jmp 0x10089
movq %rax, %rbx
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x100b4
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x100b4
jmp 0x100b1
movq %rax, %rbx
leaq 0x148(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x100dc
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x100dc
jmp 0x100d9
movq %rax, %rbx
leaq 0x178(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10106
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x10106
jmp 0x10103
jmp 0x10129
movq %rax, %rbx
leaq 0x1a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1012c
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1012c
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x10148
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0