// File: /workspace/github_cpp_makefile_star2_O3/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 0x7e7e1(%rip), %rsi     # 0x91106
leaq 0x7e7de(%rip), %rdx     # 0x9110a
leaq 0x48(%rsp), %rdi
callq 0x253d0
leaq 0x140(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xa299
leaq 0xa7d61(%rip), %rsi     # 0xba6b0
leaq 0x520(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x2afb2
leaq 0xa7d45(%rip), %rdx     # 0xba6b0
leaq 0x800(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x2ae14
leaq 0xa7d29(%rip), %rsi     # 0xba6b0
leaq 0xa867a(%rip), %rdx     # 0xbb008
leaq 0x470(%rsp), %rdi
callq 0x2f2bc
leaq 0xa7d0e(%rip), %rdx     # 0xba6b0
leaq 0x6e8(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x2f208
leaq 0xe08(%rsp), %rdi
leaq 0x800(%rsp), %rsi
leaq 0x6e8(%rsp), %rdx
callq 0x3173a
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x7e670(%rip), %rsi     # 0x91055
leaq 0x7e66b(%rip), %rdx     # 0x91057
leaq 0x28(%rsp), %rdi
callq 0x253d0
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xa299
leaq 0x918(%rsp), %rdi
leaq 0xe08(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x316aa
leaq 0x7(%rsp), %rsi
movb $0x3b, (%rsi)
leaq 0xb0(%rsp), %rdi
callq 0x9d54
leaq 0xa8927(%rip), %rsi     # 0xbb368
leaq 0x330(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x319a8
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x7e681(%rip), %rsi     # 0x910e7
leaq 0x7e67d(%rip), %rdx     # 0x910ea
leaq 0x8(%rsp), %rdi
callq 0x253d0
leaq 0x68(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xa299
leaq 0xa7c23(%rip), %rsi     # 0xba6b0
leaq 0x3c0(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x2afb2
leaq 0xa7c0a(%rip), %rdx     # 0xba6b0
leaq 0x5d0(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x2ae14
leaq 0x188(%rsp), %rdi
leaq 0x330(%rsp), %rsi
leaq 0x5d0(%rsp), %rdx
callq 0x318bc
leaq 0x1290(%rsp), %rdi
leaq 0x918(%rsp), %rsi
leaq 0x188(%rsp), %rdx
callq 0x3121e
movq 0x320(%rsp), %rax
testq %rax, %rax
je 0x12b14
leaq 0x310(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2c8(%rsp), %rdi
callq 0x161f6
leaq 0x280(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12b4c
leaq 0x260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x218(%rsp), %rdi
callq 0x161f6
leaq 0x1d0(%rsp), %rdi
callq 0x161f6
leaq 0x188(%rsp), %rdi
callq 0x3160e
movq 0x6d8(%rsp), %rax
testq %rax, %rax
je 0x12b92
leaq 0x6c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x680(%rsp), %rdi
callq 0x161f6
leaq 0x638(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12bca
leaq 0x618(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x5d0(%rsp), %rdi
callq 0x161f6
leaq 0x428(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12c02
leaq 0x408(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x3c0(%rsp), %rdi
callq 0x161f6
leaq 0x68(%rsp), %rdi
callq 0x18eaa
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x12c30
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x378(%rsp), %rdi
callq 0x161f6
leaq 0x330(%rsp), %rdi
callq 0x3160e
leaq 0xb0(%rsp), %rdi
callq 0x161f6
leaq 0xb48(%rsp), %rdi
callq 0x18eaa
leaq 0x918(%rsp), %rdi
callq 0x220d8
leaq 0xf8(%rsp), %rdi
callq 0x18eaa
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x12c95
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xe08(%rsp), %rdi
callq 0x220d8
movq 0x7f0(%rsp), %rax
testq %rax, %rax
je 0x12cc1
leaq 0x7e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x798(%rsp), %rdi
callq 0x161f6
leaq 0x750(%rsp), %r14
movq %r14, %rdi
callq 0x2531a
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12cf9
leaq 0x730(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x6e8(%rsp), %rdi
callq 0x161f6
leaq 0x4d8(%rsp), %r14
movq %r14, %rdi
callq 0x2531a
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12d31
leaq 0x4b8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x470(%rsp), %rdi
callq 0x161f6
movq 0x908(%rsp), %rax
testq %rax, %rax
je 0x12d5d
leaq 0x8f8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x8b0(%rsp), %rdi
callq 0x161f6
leaq 0x868(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12d95
leaq 0x848(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x800(%rsp), %rdi
callq 0x161f6
leaq 0x588(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12dcd
leaq 0x568(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x520(%rsp), %rdi
callq 0x161f6
leaq 0x140(%rsp), %rdi
callq 0x18eaa
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x12dfe
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xa78ab(%rip), %rsi     # 0xba6b0
leaq 0xe08(%rsp), %rdi
leaq 0x1290(%rsp), %rdx
callq 0x31c68
leaq 0xa788f(%rip), %rdx     # 0xba6b0
leaq 0x918(%rsp), %rdi
leaq 0xe08(%rsp), %rsi
callq 0x31a76
leaq 0x188(%rsp), %rdi
leaq 0x918(%rsp), %rsi
movq %rbx, %rdx
callq 0x2219a
movq 0xdf8(%rsp), %rax
testq %rax, %rax
je 0x12e6d
leaq 0xde8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xda0(%rsp), %rdi
callq 0x161f6
leaq 0x980(%rsp), %r14
movq %r14, %rdi
callq 0x22676
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12ea5
leaq 0x960(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x918(%rsp), %rdi
callq 0x161f6
leaq 0xe70(%rsp), %r14
movq %r14, %rdi
callq 0x22676
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x12edd
leaq 0xe50(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xe08(%rsp), %rdi
callq 0x161f6
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 0xa634e(%rip), %rax     # 0xb9268
movq %rax, (%r14)
movq %rcx, 0x18(%r14)
movq %r14, %rdi
addq $0x20, %rdi
callq 0x31db0
movl 0x1c8(%rsp), %ebx
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0x12f51
movq 0x1c0(%rsp), %rsi
subq %rdi, %rsi
callq 0x5260
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12f72
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1290(%rsp), %rdi
callq 0x22676
movl %ebx, %eax
movq %r14, %rdx
addq $0x16b0, %rsp           # imm = 0x16B0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
jmp 0x12faf
movq %rax, %rdi
callq 0x253c4
movq %rax, %rbx
movl $0x38, %esi
movq %r14, %rdi
callq 0x5260
jmp 0x12fcc
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
callq 0x22642
jmp 0x13002
movq %rax, %rbx
leaq 0x918(%rsp), %rdi
callq 0x225ac
jmp 0x12ff0
movq %rax, %rbx
leaq 0xe08(%rsp), %rdi
callq 0x2260c
jmp 0x13002
movq %rax, %rbx
leaq 0x1290(%rsp), %rdi
callq 0x22676
jmp 0x13142
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
callq 0x2205a
jmp 0x13029
movq %rax, %rbx
leaq 0x5d0(%rsp), %rdi
callq 0x1b9bc
jmp 0x1303b
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0x1ba1c
jmp 0x1304d
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x18eaa
jmp 0x1305c
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x13078
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x13078
movq %rax, %rbx
leaq 0x378(%rsp), %rdi
callq 0x161f6
leaq 0x330(%rsp), %rdi
callq 0x3160e
leaq 0xb0(%rsp), %rdi
callq 0x161f6
leaq 0xb48(%rsp), %rdi
callq 0x18eaa
leaq 0x918(%rsp), %rdi
callq 0x220d8
leaq 0xf8(%rsp), %rdi
callq 0x18eaa
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x130dd
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xe08(%rsp), %rdi
callq 0x220d8
leaq 0x6e8(%rsp), %rdi
callq 0x20102
leaq 0x470(%rsp), %rdi
callq 0x20162
leaq 0x800(%rsp), %rdi
callq 0x1b9bc
leaq 0x520(%rsp), %rdi
callq 0x1ba1c
leaq 0x140(%rsp), %rdi
callq 0x18eaa
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x13142
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0
movq %rax, %rbx
jmp 0x13092
movq %rax, %rbx
jmp 0x1309f
movq %rax, %rbx
jmp 0x130b9
movq %rax, %rbx
jmp 0x130c6
movq %rax, %rbx
jmp 0x130dd
movq %rax, %rbx
jmp 0x130ea
movq %rax, %rbx
jmp 0x130f7
movq %rax, %rbx
jmp 0x13104
movq %rax, %rbx
jmp 0x13111
movq %rax, %rbx
jmp 0x1311e
movq %rax, %rbx
jmp 0x1312b
movq %rax, %rbx
jmp 0x13142