// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_param_group_fn(input_t*)
pair<int, pl0_ast_param_group *> pl0_param_group_fn(input_t *text) {
    // var declaration in parameter group indicates call-by-ref, else call-by-value.
    int vardecl = std::get<0>((spaces >> pl0_string_literal("var") << spaces)(text));
    auto parser = (pl0_identify % pl0_character(',')) + (pl0_character(':') >> pl0_primitive_type);
    auto res = (spaces >> parser << spaces)(text->drop(vardecl == -1 ? 0: vardecl));
    if (verbose) {
        cout << "parsing: Parameter Group" << endl;
    }
    return make_pair(
        (vardecl == -1 ? 0 : vardecl) + std::get<0>(res),
        new pl0_ast_param_group(
            text->locate(),
            std::get<1>(res).first,
            std::get<1>(res).second,
            vardecl != -1
        )
    );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x530, %rsp            # imm = 0x530
movq %rdi, %rbx
leaq 0x4e60c(%rip), %rsi     # 0x5910b
leaq 0x50(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0xfa26
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x840a
leaq 0x80bb4(%rip), %rsi     # 0x8b6d8
leaq 0x98(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1923c
leaq 0x80b9b(%rip), %rdx     # 0x8b6d8
leaq 0x220(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x191c8
leaq 0x410(%rsp), %rdi
leaq 0x220(%rsp), %rsi
movq %rbx, %rdx
callq 0x1210a
leaq 0x410(%rsp), %rdi
movl 0x40(%rdi), %r15d
callq 0x10768
leaq 0x220(%rsp), %rdi
callq 0x12312
leaq 0x98(%rsp), %rdi
callq 0x1232c
leaq 0x8(%rsp), %rdi
callq 0x11074
leaq 0x50(%rsp), %rdi
callq 0x5120
leaq 0x6(%rsp), %rsi
movb $0x2c, (%rsi)
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x818c
leaq 0x80feb(%rip), %rsi     # 0x8bbb0
leaq 0x220(%rsp), %rdi
movq %r14, %rdx
callq 0x187ac
leaq 0x7(%rsp), %rsi
movb $0x3a, (%rsi)
leaq 0x50(%rsp), %rdi
callq 0x818c
leaq 0x810e2(%rip), %rdx     # 0x8bcd0
leaq 0x98(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x192e6
leaq 0x410(%rsp), %rdi
leaq 0x220(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x19272
leaq 0x98(%rsp), %rdi
callq 0x12342
leaq 0x50(%rsp), %rdi
callq 0xfaa6
leaq 0x220(%rsp), %rdi
callq 0x11774
leaq 0x8(%rsp), %rdi
callq 0xfaa6
leaq 0x80a86(%rip), %rsi     # 0x8b6d8
leaq 0x98(%rsp), %rdi
leaq 0x410(%rsp), %rdx
callq 0x193ce
leaq 0x80a6a(%rip), %rdx     # 0x8b6d8
leaq 0x220(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x1931c
xorl %r12d, %r12d
cmpl $-0x1, %r15d
cmovnel %r15d, %r12d
leaq 0x50(%rsp), %rsi
movl %r12d, (%rsi)
movq %rbx, %rdi
callq 0x10b60
leaq 0x8(%rsp), %rdi
leaq 0x220(%rsp), %rsi
movq %rax, %rdx
callq 0x12358
leaq 0x220(%rsp), %rdi
callq 0x1256a
leaq 0x98(%rsp), %rdi
callq 0x12584
movl 0x48(%rsp), %ebp
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rsi
leaq 0x28(%rsp), %rdx
movq 0x18(%rdx), %rcx
xorl %r8d, %r8d
cmpl $-0x1, %r15d
setne %r8b
movq %rax, %rdi
callq 0x1259a
addl %r12d, %ebp
leaq 0x8(%rsp), %rdi
callq 0x125c6
leaq 0x410(%rsp), %rdi
callq 0x125dc
movl %ebp, %eax
movq %r14, %rdx
addq $0x530, %rsp            # imm = 0x530
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
pushq $0x30
popq %rsi
movq %r14, %rdi
callq 0x5270
jmp 0xad3e
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x125c6
jmp 0xae03
movq %rax, %rbx
jmp 0xadf6
movq %rax, %rbx
jmp 0xae03
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x12342
jmp 0xad72
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xfaa6
jmp 0xad81
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x11774
jmp 0xad93
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xfaa6
jmp 0xae10
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x12312
jmp 0xadb4
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x1232c
jmp 0xadc6
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x11074
jmp 0xadd5
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x5120
jmp 0xae10
movq %rax, %rbx
jmp 0xae10
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x1256a
leaq 0x98(%rsp), %rdi
callq 0x12584
leaq 0x410(%rsp), %rdi
callq 0x125dc
movq %rbx, %rdi
callq 0x53f0