// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_function_header_fn(input_t*)
pair<int, pl0_ast_function_header *> pl0_function_header_fn(input_t *text) {
    auto parser = (pl0_string_literal("function") >> (pl0_identify + (~pl0_param_list))) + (pl0_character(':') >> pl0_primitive_type << pl0_character(';'));
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: Function Header" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_function_header(text->locate(), std::get<1>(res).first.first, std::get<1>(res).first.second, std::get<1>(res).second));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x8b8, %rsp            # imm = 0x8B8
movq %rdi, %rbx
leaq 0x4f6ac(%rip), %rsi     # 0x5a9bf
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xfa26
leaq 0x108(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x840a
leaq 0x80b45(%rip), %rsi     # 0x8be80
leaq 0xc0(%rsp), %rdi
callq 0x19846
leaq 0x80861(%rip), %rsi     # 0x8bbb0
leaq 0x150(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x19910
leaq 0x488(%rsp), %rdi
leaq 0x108(%rsp), %rsi
leaq 0x150(%rsp), %rdx
callq 0x198da
leaq 0xe(%rsp), %rsi
movb $0x3a, (%rsi)
leaq 0x78(%rsp), %rdi
callq 0x818c
leaq 0x80936(%rip), %rdx     # 0x8bcd0
leaq 0x1e0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x192e6
leaq 0xd(%rsp), %rsi
movb $0x3b, (%rsi)
leaq 0x30(%rsp), %rdi
callq 0x818c
leaq 0x270(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x19ac0
leaq 0x708(%rsp), %rdi
leaq 0x488(%rsp), %rsi
leaq 0x270(%rsp), %rdx
callq 0x19a48
leaq 0x270(%rsp), %rdi
callq 0x12b42
leaq 0x30(%rsp), %rdi
callq 0xfaa6
leaq 0x1e0(%rsp), %rdi
callq 0x12342
leaq 0x78(%rsp), %rdi
callq 0xfaa6
leaq 0x488(%rsp), %rdi
callq 0x12932
leaq 0x150(%rsp), %rdi
callq 0x12948
leaq 0xc0(%rsp), %rdi
callq 0x19946
leaq 0x108(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
leaq 0x80270(%rip), %rsi     # 0x8b6d8
leaq 0x270(%rsp), %rdi
leaq 0x708(%rsp), %rdx
callq 0x19bac
leaq 0x80254(%rip), %rdx     # 0x8b6d8
leaq 0x488(%rsp), %rdi
leaq 0x270(%rsp), %rsi
callq 0x19afa
leaq 0x150(%rsp), %rdi
leaq 0x488(%rsp), %rsi
movq %rbx, %rdx
callq 0x12b5c
leaq 0x488(%rsp), %rdi
callq 0x12d14
leaq 0x270(%rsp), %rdi
callq 0x12d2e
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x150(%rsp), %rdi
movq 0x30(%rdi), %rcx
movq %rax, (%r14)
movups 0x20(%rdi), %xmm0
movups %xmm0, 0x8(%r14)
movq %rcx, 0x18(%r14)
movl 0x38(%rdi), %ebx
callq 0x5120
leaq 0x708(%rsp), %rdi
callq 0x12d44
movl %ebx, %eax
movq %r14, %rdx
addq $0x8b8, %rsp            # imm = 0x8B8
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x5120
jmp 0xb554
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
callq 0x12d14
jmp 0xb542
movq %rax, %rbx
leaq 0x270(%rsp), %rdi
callq 0x12d2e
jmp 0xb554
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
callq 0x12d44
jmp 0xb5e9
movq %rax, %rbx
leaq 0x270(%rsp), %rdi
callq 0x12b42
jmp 0xb57b
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xfaa6
jmp 0xb58a
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0x12342
jmp 0xb59c
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0xfaa6
jmp 0xb5ab
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
callq 0x12932
leaq 0x150(%rsp), %rdi
callq 0x12948
leaq 0xc0(%rsp), %rdi
callq 0x19946
leaq 0x108(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbx
jmp 0xb5b8
movq %rax, %rbx
jmp 0xb5c5
movq %rax, %rbx
jmp 0xb5d2
movq %rax, %rbx
jmp 0xb5df
movq %rax, %rbx
jmp 0xb5e9