// File: /workspace/github_cpp_makefile_star2_O1/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_case_stmt_fn(input_t*)
pair<int, pl0_ast_case_stmt *> pl0_case_stmt_fn(input_t *text) {
    auto parser = ((spaces >> pl0_string_literal("case") << spaces) >> (spaces >> pl0_expression << spaces) << pl0_string_literal("of"))
        + ((pl0_case_term % pl0_character(';')) << (spaces >> pl0_string_literal("end") << spaces));
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: Case Statement" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_case_stmt(text->locate(), std::get<1>(res).first, std::get<1>(res).second));
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x16b0, %rsp           # imm = 0x16B0
movq %rdi, %rbx
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x84836(%rip), %rsi     # 0x97106
leaq 0x84833(%rip), %rdx     # 0x9710a
leaq 0x48(%rsp), %rdi
callq 0x2670a
leaq 0x140(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xa172
leaq 0xaddb6(%rip), %rsi     # 0xc06b0
leaq 0x520(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x2c376
leaq 0xadd9a(%rip), %rdx     # 0xc06b0
leaq 0x800(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x2c1d8
leaq 0xadd7e(%rip), %rsi     # 0xc06b0
leaq 0xae6cf(%rip), %rdx     # 0xc1008
leaq 0x470(%rsp), %rdi
callq 0x306da
leaq 0xadd63(%rip), %rdx     # 0xc06b0
leaq 0x6e8(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x30626
leaq 0xe08(%rsp), %rdi
leaq 0x800(%rsp), %rsi
leaq 0x6e8(%rsp), %rdx
callq 0x32b80
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x846c5(%rip), %rsi     # 0x97055
leaq 0x846c0(%rip), %rdx     # 0x97057
leaq 0x28(%rsp), %rdi
callq 0x2670a
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xa172
leaq 0x918(%rsp), %rdi
leaq 0xe08(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x32af0
leaq 0x7(%rsp), %rsi
movb $0x3b, (%rsi)
leaq 0xb0(%rsp), %rdi
callq 0x9c3d
leaq 0xae97c(%rip), %rsi     # 0xc1368
leaq 0x330(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x32dee
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x846d6(%rip), %rsi     # 0x970e7
leaq 0x846d2(%rip), %rdx     # 0x970ea
leaq 0x8(%rsp), %rdi
callq 0x2670a
leaq 0x68(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xa172
leaq 0xadc78(%rip), %rsi     # 0xc06b0
leaq 0x3c0(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x2c376
leaq 0xadc5f(%rip), %rdx     # 0xc06b0
leaq 0x5d0(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x2c1d8
leaq 0x188(%rsp), %rdi
leaq 0x330(%rsp), %rsi
leaq 0x5d0(%rsp), %rdx
callq 0x32d02
leaq 0x1290(%rsp), %rdi
leaq 0x918(%rsp), %rsi
leaq 0x188(%rsp), %rdx
callq 0x3265c
movq 0x320(%rsp), %rax
testq %rax, %rax
je 0x12abf
leaq 0x310(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2c8(%rsp), %rdi
callq 0x161e0
leaq 0x280(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12af7
leaq 0x260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x218(%rsp), %rdi
callq 0x161e0
leaq 0x1d0(%rsp), %rdi
callq 0x161e0
leaq 0x188(%rsp), %rdi
callq 0x32a4c
movq 0x6d8(%rsp), %rax
testq %rax, %rax
je 0x12b3d
leaq 0x6c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x680(%rsp), %rdi
callq 0x161e0
leaq 0x638(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12b75
leaq 0x618(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x5d0(%rsp), %rdi
callq 0x161e0
leaq 0x428(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12bad
leaq 0x408(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x3c0(%rsp), %rdi
callq 0x161e0
leaq 0x68(%rsp), %rdi
callq 0x191e0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x12bdb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x378(%rsp), %rdi
callq 0x161e0
leaq 0x330(%rsp), %rdi
callq 0x32a4c
leaq 0xb0(%rsp), %rdi
callq 0x161e0
leaq 0xb48(%rsp), %rdi
callq 0x191e0
leaq 0x918(%rsp), %rdi
callq 0x230e8
leaq 0xf8(%rsp), %rdi
callq 0x191e0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x12c40
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xe08(%rsp), %rdi
callq 0x230e8
movq 0x7f0(%rsp), %rax
testq %rax, %rax
je 0x12c6c
leaq 0x7e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x798(%rsp), %rdi
callq 0x161e0
leaq 0x750(%rsp), %r14
movq %r14, %rdi
callq 0x26654
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12ca4
leaq 0x730(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x6e8(%rsp), %rdi
callq 0x161e0
leaq 0x4d8(%rsp), %r14
movq %r14, %rdi
callq 0x26654
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12cdc
leaq 0x4b8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x470(%rsp), %rdi
callq 0x161e0
movq 0x908(%rsp), %rax
testq %rax, %rax
je 0x12d08
leaq 0x8f8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x8b0(%rsp), %rdi
callq 0x161e0
leaq 0x868(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12d40
leaq 0x848(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x800(%rsp), %rdi
callq 0x161e0
leaq 0x588(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12d78
leaq 0x568(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x520(%rsp), %rdi
callq 0x161e0
leaq 0x140(%rsp), %rdi
callq 0x191e0
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x12da9
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xad900(%rip), %rsi     # 0xc06b0
leaq 0xe08(%rsp), %rdi
leaq 0x1290(%rsp), %rdx
callq 0x330b0
leaq 0xad8e4(%rip), %rdx     # 0xc06b0
leaq 0x918(%rsp), %rdi
leaq 0xe08(%rsp), %rsi
callq 0x32ebc
leaq 0x188(%rsp), %rdi
leaq 0x918(%rsp), %rsi
movq %rbx, %rdx
callq 0x231aa
movq 0xdf8(%rsp), %rax
testq %rax, %rax
je 0x12e18
leaq 0xde8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xda0(%rsp), %rdi
callq 0x161e0
leaq 0x980(%rsp), %r14
movq %r14, %rdi
callq 0x23686
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12e50
leaq 0x960(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x918(%rsp), %rdi
callq 0x161e0
leaq 0xe70(%rsp), %r14
movq %r14, %rdi
callq 0x23686
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12e88
leaq 0xe50(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xe08(%rsp), %rdi
callq 0x161e0
movl $0x38, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x1b0(%rsp), %rsi
movq -0x8(%rsi), %rcx
movq %rax, 0x8(%r14)
movl $0x3, 0x10(%r14)
leaq 0xac3a3(%rip), %rax     # 0xbf268
movq %rax, (%r14)
movq %rcx, 0x18(%r14)
movq %r14, %rdi
addq $0x20, %rdi
callq 0x33154
movl 0x1c8(%rsp), %ebx
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x12efc
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5260
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12f1d
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1290(%rsp), %rdi
callq 0x23686
movl %ebx, %eax
movq %r14, %rdx
addq $0x16b0, %rsp           # imm = 0x16B0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
jmp 0x12f5a
movq %rax, %rdi
callq 0x266fe
movq %rax, %rbx
movl $0x38, %esi
movq %r14, %rdi
callq 0x5260
jmp 0x12f77
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
callq 0x23652
jmp 0x12fad
movq %rax, %rbx
leaq 0x918(%rsp), %rdi
callq 0x235bc
jmp 0x12f9b
movq %rax, %rbx
leaq 0xe08(%rsp), %rdi
callq 0x2361c
jmp 0x12fad
movq %rax, %rbx
leaq 0x1290(%rsp), %rdi
callq 0x23686
jmp 0x130ed
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
callq 0x2306a
jmp 0x12fd4
movq %rax, %rbx
leaq 0x5d0(%rsp), %rdi
callq 0x1bfb2
jmp 0x12fe6
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0x1c012
jmp 0x12ff8
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x191e0
jmp 0x13007
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x13023
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x13023
movq %rax, %rbx
leaq 0x378(%rsp), %rdi
callq 0x161e0
leaq 0x330(%rsp), %rdi
callq 0x32a4c
leaq 0xb0(%rsp), %rdi
callq 0x161e0
leaq 0xb48(%rsp), %rdi
callq 0x191e0
leaq 0x918(%rsp), %rdi
callq 0x230e8
leaq 0xf8(%rsp), %rdi
callq 0x191e0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x13088
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xe08(%rsp), %rdi
callq 0x230e8
leaq 0x6e8(%rsp), %rdi
callq 0x20cd0
leaq 0x470(%rsp), %rdi
callq 0x20d30
leaq 0x800(%rsp), %rdi
callq 0x1bfb2
leaq 0x520(%rsp), %rdi
callq 0x1c012
leaq 0x140(%rsp), %rdi
callq 0x191e0
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x130ed
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0
movq %rax, %rbx
jmp 0x1303d
movq %rax, %rbx
jmp 0x1304a
movq %rax, %rbx
jmp 0x13064
movq %rax, %rbx
jmp 0x13071
movq %rax, %rbx
jmp 0x13088
movq %rax, %rbx
jmp 0x13095
movq %rax, %rbx
jmp 0x130a2
movq %rax, %rbx
jmp 0x130af
movq %rax, %rbx
jmp 0x130bc
movq %rax, %rbx
jmp 0x130c9
movq %rax, %rbx
jmp 0x130d6
movq %rax, %rbx
jmp 0x130ed