// File: 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
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
callq 0x23a30
leaq -0x48(%rbp), %rdi
callq 0x23a50
movq -0x18(%rbp), %rdx
movb $0x0, -0xb9(%rbp)
movb $0x0, -0xf1(%rbp)
movb $0x0, -0x129(%rbp)
movb $0x0, -0x161(%rbp)
movb $0x0, -0x199(%rbp)
movb $0x0, -0x1d1(%rbp)
movb $0x0, -0x209(%rbp)
leaq 0x14ef6b(%rip), %rsi    # 0x1605f8
leaq -0x78(%rbp), %rdi
callq 0x23aa0
jmp 0x11698
leaq -0x48(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x23b80
movq %rax, -0x250(%rbp)
jmp 0x116ae
movq -0x250(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14eed7(%rip), %rsi    # 0x1605b0
leaq -0xb8(%rbp), %rdi
callq 0x23bb0
jmp 0x116e7
movb $0x1, -0xb9(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x23c90
movq %rax, -0x260(%rbp)
jmp 0x11707
movq -0x260(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14e96e(%rip), %rsi    # 0x1600a0
leaq -0xf0(%rbp), %rdi
callq 0x23cc0
jmp 0x11740
movb $0x1, -0xf1(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x23da0
movq %rax, -0x268(%rbp)
jmp 0x11760
movq -0x268(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14ec75(%rip), %rsi    # 0x160400
leaq -0x128(%rbp), %rdi
callq 0x23dd0
jmp 0x11799
movb $0x1, -0x129(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x23eb0
movq %rax, -0x270(%rbp)
jmp 0x117b9
movq -0x270(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14ec64(%rip), %rsi    # 0x160448
leaq -0x160(%rbp), %rdi
callq 0x23ee0
jmp 0x117f2
movb $0x1, -0x161(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x23fc0
movq %rax, -0x278(%rbp)
jmp 0x11812
movq -0x278(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14ed2b(%rip), %rsi    # 0x160568
leaq -0x198(%rbp), %rdi
callq 0x23ff0
jmp 0x1184b
movb $0x1, -0x199(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x240d0
movq %rax, -0x280(%rbp)
jmp 0x1186b
movq -0x280(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14ec42(%rip), %rsi    # 0x1604d8
leaq -0x1d0(%rbp), %rdi
callq 0x24100
jmp 0x118a4
movb $0x1, -0x1d1(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x241e0
movq %rax, -0x288(%rbp)
jmp 0x118c4
movq -0x288(%rbp), %rdi
callq 0x23a80
movq %rax, %rcx
movb $0x1, %al
cmpl $-0x1, (%rcx)
movb %al, -0x251(%rbp)
jne 0x11931
movq -0x18(%rbp), %rdx
leaq 0x14ec35(%rip), %rsi    # 0x160520
leaq -0x208(%rbp), %rdi
callq 0x24210
jmp 0x118f9
movb $0x1, -0x209(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x242f0
movq %rax, -0x290(%rbp)
jmp 0x11919
movq -0x290(%rbp), %rdi
callq 0x23a80
cmpl $-0x1, (%rax)
setne %al
movb %al, -0x251(%rbp)
movb -0x251(%rbp), %al
movb %al, -0x291(%rbp)
testb $0x1, -0x209(%rbp)
jne 0x11948
jmp 0x11954
leaq -0x208(%rbp), %rdi
callq 0x24320
testb $0x1, -0x1d1(%rbp)
jne 0x1195f
jmp 0x1196b
leaq -0x1d0(%rbp), %rdi
callq 0x24340
testb $0x1, -0x199(%rbp)
jne 0x11976
jmp 0x11982
leaq -0x198(%rbp), %rdi
callq 0x24360
testb $0x1, -0x161(%rbp)
jne 0x1198d
jmp 0x11999
leaq -0x160(%rbp), %rdi
callq 0x24380
testb $0x1, -0x129(%rbp)
jne 0x119a4
jmp 0x119b0
leaq -0x128(%rbp), %rdi
callq 0x243a0
testb $0x1, -0xf1(%rbp)
jne 0x119bb
jmp 0x119c7
leaq -0xf0(%rbp), %rdi
callq 0x243c0
testb $0x1, -0xb9(%rbp)
jne 0x119d2
jmp 0x119de
leaq -0xb8(%rbp), %rdi
callq 0x243e0
leaq -0x78(%rbp), %rdi
callq 0x24400
movb -0x291(%rbp), %al
testb $0x1, %al
jne 0x119f6
jmp 0x11bc9
leaq -0x48(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x23a80
movq -0x2b0(%rbp), %rdi
movq %rax, -0x2a8(%rbp)
callq 0x24450
movq -0x2a8(%rbp), %rdi
movq %rax, %rsi
callq 0x24420
movq %rdx, -0x2a0(%rbp)
movl %eax, -0x298(%rbp)
jmp 0x11a37
movq -0x2a0(%rbp), %rax
movl -0x298(%rbp), %ecx
movl %ecx, -0x220(%rbp)
movq %rax, -0x218(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x24470
jmp 0x11c9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11cf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11bbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11ba2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11b89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11b70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11b57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11b3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x11b25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
testb $0x1, -0x209(%rbp)
jne 0x11b17
jmp 0x11b23
leaq -0x208(%rbp), %rdi
callq 0x24320
jmp 0x11b25
testb $0x1, -0x1d1(%rbp)
jne 0x11b30
jmp 0x11b3c
leaq -0x1d0(%rbp), %rdi
callq 0x24340
jmp 0x11b3e
testb $0x1, -0x199(%rbp)
jne 0x11b49
jmp 0x11b55
leaq -0x198(%rbp), %rdi
callq 0x24360
jmp 0x11b57
testb $0x1, -0x161(%rbp)
jne 0x11b62
jmp 0x11b6e
leaq -0x160(%rbp), %rdi
callq 0x24380
jmp 0x11b70
testb $0x1, -0x129(%rbp)
jne 0x11b7b
jmp 0x11b87
leaq -0x128(%rbp), %rdi
callq 0x243a0
jmp 0x11b89
testb $0x1, -0xf1(%rbp)
jne 0x11b94
jmp 0x11ba0
leaq -0xf0(%rbp), %rdi
callq 0x243c0
jmp 0x11ba2
testb $0x1, -0xb9(%rbp)
jne 0x11bad
jmp 0x11bb9
leaq -0xb8(%rbp), %rdi
callq 0x243e0
jmp 0x11bbb
leaq -0x78(%rbp), %rdi
callq 0x24400
jmp 0x11cf0
movl $0x0, -0x234(%rbp)
movl $0x18, %edi
callq 0x5340
movq %rax, -0x2b8(%rbp)
jmp 0x11be6
movq -0x18(%rbp), %rdi
callq 0x1a350
movq %rax, -0x2c0(%rbp)
jmp 0x11bf8
movq -0x2b8(%rbp), %rdi
movq -0x2c0(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x248(%rbp), %rsi
callq 0x23210
jmp 0x11c1b
movq -0x2b8(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq -0x234(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x231e0
movq %rdx, -0x2d0(%rbp)
movl %eax, -0x2c4(%rbp)
jmp 0x11c4b
movq -0x2d0(%rbp), %rax
movl -0x2c4(%rbp), %ecx
movl %ecx, -0x230(%rbp)
movq %rax, -0x228(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x244a0
jmp 0x11c77
jmp 0x11c9b
movq -0x2b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x18, %esi
callq 0x5350
jmp 0x11cf0
testb $0x1, 0x14db96(%rip)    # 0x15f838
je 0x11cd7
movq 0x14d32d(%rip), %rdi    # 0x15efd8
leaq 0xdd786(%rip), %rsi     # 0xef438
callq 0x5330
movq %rax, -0x2d8(%rbp)
jmp 0x11cc0
movq -0x2d8(%rbp), %rdi
movq 0x14d2f2(%rip), %rsi    # 0x15efc0
callq 0x53a0
jmp 0x11cd5
jmp 0x11cd7
leaq -0x48(%rbp), %rdi
callq 0x244d0
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rdx
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0x244d0
movq -0x80(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)