// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_type_fn(input_t*)
pair<int, pl0_ast_type *> pl0_type_fn(input_t *text) {
    function<pair<pl0_ast_constv *, pl0_ast_primitive_type *> (pl0_ast_primitive_type *)> fn = [&, text](pl0_ast_primitive_type *t) { return make_pair(new pl0_ast_constv(text->locate(), -1, pl0_ast_constv::INT), t); };
    auto parser = (pl0_primitive_type / fn) // not array
        | ((pl0_string_literal("array") >> spaces >> (pl0_character('[') >> pl0_unsigned << pl0_character(']')) << spaces << pl0_string_literal("of")) + pl0_primitive_type); // array
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: Type" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_type(text->locate(), std::get<1>(res).second, std::get<1>(res).first ? std::get<1>(res).first->val : -1));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x1178, %rsp           # imm = 0x1178
movq %rdi, %rbx
leaq 0x50(%rsp), %rdx
andq $0x0, 0x8(%rdx)
movq %rdi, (%rdx)
leaq 0x5e85(%rip), %rax      # 0xf9be
movq %rax, 0x18(%rdx)
leaq 0x5eaa(%rip), %rax      # 0xf9ee
movq %rax, 0x10(%rdx)
leaq 0x82181(%rip), %rsi     # 0x8bcd0
leaq 0x190(%rsp), %rdi
callq 0x181f2
leaq 0x50f2f(%rip), %rsi     # 0x5aa92
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xfa26
leaq 0x148(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x840a
leaq 0x81b4d(%rip), %rdx     # 0x8b6d8
leaq 0x288(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0x18310
leaq 0xe(%rsp), %rsi
movb $0x5b, (%rsi)
leaq 0x100(%rsp), %rdi
callq 0x818c
leaq 0x81fac(%rip), %rdx     # 0x8bb68
leaq 0x1f8(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x18380
leaq 0xd(%rsp), %rsi
movb $0x5d, (%rsi)
leaq 0xb8(%rsp), %rdi
callq 0x818c
leaq 0x338(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x18346
leaq 0x600(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x338(%rsp), %rdx
callq 0x182d6
leaq 0x81ab1(%rip), %rdx     # 0x8b6d8
leaq 0x410(%rsp), %rdi
leaq 0x600(%rsp), %rsi
callq 0x1829c
leaq 0x4f412(%rip), %rsi     # 0x59055
leaq 0x10(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0xfa26
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x840a
leaq 0x788(%rsp), %rdi
leaq 0x410(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x18262
leaq 0x8204e(%rip), %rdx     # 0x8bcd0
leaq 0xad8(%rsp), %rdi
leaq 0x788(%rsp), %rsi
callq 0x18228
leaq 0xe90(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0xad8(%rsp), %rdx
callq 0x17ee4
leaq 0xad8(%rsp), %rdi
callq 0x112dc
leaq 0x788(%rsp), %rdi
callq 0x112f6
leaq 0x70(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
leaq 0x410(%rsp), %rdi
callq 0x11310
leaq 0x600(%rsp), %rdi
callq 0x1132a
leaq 0x338(%rsp), %rdi
callq 0x11344
leaq 0xb8(%rsp), %rdi
callq 0xfaa6
leaq 0x1f8(%rsp), %rdi
callq 0x1135e
leaq 0x100(%rsp), %rdi
callq 0xfaa6
leaq 0x288(%rsp), %rdi
callq 0x11374
leaq 0x148(%rsp), %rdi
callq 0x11074
leaq 0x30(%rsp), %rdi
callq 0x5120
leaq 0x190(%rsp), %rdi
callq 0x1138a
leaq 0x81970(%rip), %rsi     # 0x8b6d8
leaq 0x788(%rsp), %rdi
leaq 0xe90(%rsp), %rdx
callq 0x18464
leaq 0x81954(%rip), %rdx     # 0x8b6d8
leaq 0xad8(%rsp), %rdi
leaq 0x788(%rsp), %rsi
callq 0x183b6
leaq 0x410(%rsp), %rdi
leaq 0xad8(%rsp), %rsi
movq %rbx, %rdx
callq 0x113a0
leaq 0xad8(%rsp), %rdi
callq 0x1153a
leaq 0x788(%rsp), %rdi
callq 0x11554
pushq $0x18
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x430(%rsp), %rdx
movq 0x438(%rsp), %rcx
testq %rdx, %rdx
je 0x9df4
movl 0x8(%rdx), %edx
jmp 0x9df7
pushq $-0x1
popq %rdx
movq %rax, (%r14)
movq %rcx, 0x8(%r14)
movl %edx, 0x10(%r14)
leaq 0x410(%rsp), %rdi
movl 0x30(%rdi), %ebx
callq 0x5120
leaq 0xe90(%rsp), %rdi
callq 0x1156a
leaq 0x50(%rsp), %rdi
callq 0x3a072
movl %ebx, %eax
movq %r14, %rdx
addq $0x1178, %rsp           # imm = 0x1178
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x410(%rsp), %rdi
callq 0x5120
jmp 0x9e72
movq %rax, %rbx
leaq 0xad8(%rsp), %rdi
callq 0x1153a
jmp 0x9e60
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
callq 0x11554
jmp 0x9e72
movq %rax, %rbx
leaq 0xe90(%rsp), %rdi
callq 0x1156a
jmp 0x9f48
movq %rax, %rbx
leaq 0xad8(%rsp), %rdi
callq 0x112dc
jmp 0x9e99
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
callq 0x112f6
jmp 0x9eab
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x11074
jmp 0x9eba
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5120
jmp 0x9ec9
movq %rax, %rbx
leaq 0x410(%rsp), %rdi
callq 0x11310
leaq 0x600(%rsp), %rdi
callq 0x1132a
leaq 0x338(%rsp), %rdi
callq 0x11344
leaq 0xb8(%rsp), %rdi
callq 0xfaa6
leaq 0x1f8(%rsp), %rdi
callq 0x1135e
leaq 0x100(%rsp), %rdi
callq 0xfaa6
leaq 0x288(%rsp), %rdi
callq 0x11374
leaq 0x148(%rsp), %rdi
callq 0x11074
leaq 0x30(%rsp), %rdi
callq 0x5120
leaq 0x190(%rsp), %rdi
callq 0x1138a
leaq 0x50(%rsp), %rdi
callq 0x3a072
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbx
jmp 0x9ed6
movq %rax, %rbx
jmp 0x9ee3
movq %rax, %rbx
jmp 0x9ef0
movq %rax, %rbx
jmp 0x9efd
movq %rax, %rbx
jmp 0x9f0a
movq %rax, %rbx
jmp 0x9f17
movq %rax, %rbx
jmp 0x9f24
movq %rax, %rbx
jmp 0x9f31
movq %rax, %rbx
jmp 0x9f3b
movq %rax, %rbx
jmp 0x9f48