// File: sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_primitive_type_fn(input_t*)
pair<int, pl0_ast_primitive_type *> pl0_primitive_type_fn(input_t *text) {
    auto parser = pl0_string_literal("integer") | pl0_string_literal("char");
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: Primitive Type" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_primitive_type(text->locate(), std::get<1>(res)));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4b0, %rsp            # imm = 0x4B0
movq %rdi, -0x18(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x55d0
movq -0x478(%rbp), %rdx
leaq 0xe2197(%rip), %rsi     # 0xef247
leaq -0x110(%rbp), %rdi
callq 0x19840
jmp 0xd0be
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xa6a0
jmp 0xd0d3
leaq -0x191(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x55d0
movq -0x480(%rbp), %rdx
leaq 0xe2e8b(%rip), %rsi     # 0xeff7f
leaq -0x190(%rbp), %rdi
callq 0x19840
jmp 0xd102
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xa6a0
jmp 0xd117
leaq -0xa8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x170(%rbp), %rdx
callq 0x1d910
jmp 0xd133
leaq -0x170(%rbp), %rdi
callq 0x1d950
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x191(%rbp), %rdi
callq 0x53c0
leaq -0xf0(%rbp), %rdi
callq 0x1d950
leaq -0x110(%rbp), %rdi
callq 0x5200
leaq -0x111(%rbp), %rdi
callq 0x53c0
leaq 0x15264e(%rip), %rsi    # 0x15f7d0
leaq -0x438(%rbp), %rdi
leaq -0xa8(%rbp), %rdx
callq 0x1d9c0
jmp 0xd197
leaq 0x152632(%rip), %rdx    # 0x15f7d0
leaq -0x340(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0x1d980
jmp 0xd1b3
movq -0x18(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x1da00
jmp 0xd1cc
leaq -0x340(%rbp), %rdi
callq 0x1dd80
leaq -0x438(%rbp), %rdi
callq 0x1ddb0
testb $0x1, 0x15264d(%rip)    # 0x15f838
je 0xd34a
movq 0x151de0(%rip), %rdi    # 0x15efd8
leaq 0xe2064(%rip), %rsi     # 0xef263
callq 0x5330
movq %rax, -0x488(%rbp)
jmp 0xd20d
movq -0x488(%rbp), %rdi
movq 0x151da5(%rip), %rsi    # 0x15efc0
callq 0x53a0
jmp 0xd222
jmp 0xd34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd2c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd2bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd2a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd298
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x1d950
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x191(%rbp), %rdi
callq 0x53c0
leaq -0xf0(%rbp), %rdi
callq 0x1d950
leaq -0x110(%rbp), %rdi
callq 0x5200
leaq -0x111(%rbp), %rdi
callq 0x53c0
jmp 0xd4b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd4ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd322
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x1dd80
leaq -0x438(%rbp), %rdi
callq 0x1ddb0
jmp 0xd4ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd49f
leaq -0x1e0(%rbp), %rdi
callq 0x1c110
movq %rax, -0x498(%rbp)
movl $0x28, %edi
callq 0x5340
movq %rax, -0x490(%rbp)
jmp 0xd370
movb $0x1, -0x469(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1a350
movq %rax, -0x4a0(%rbp)
jmp 0xd389
movq -0x4a0(%rbp), %rax
movq %rax, -0x448(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x1c130
movq %rax, %rsi
leaq -0x468(%rbp), %rdi
callq 0x5150
jmp 0xd3b4
movq -0x490(%rbp), %rdi
movq -0x448(%rbp), %rsi
leaq -0x468(%rbp), %rdx
callq 0x1de10
jmp 0xd3d0
movq -0x498(%rbp), %rdi
movq -0x490(%rbp), %rax
movb $0x0, -0x469(%rbp)
movq %rax, -0x440(%rbp)
leaq -0x440(%rbp), %rsi
callq 0x1dde0
movq %rdx, -0x4b0(%rbp)
movl %eax, -0x4a4(%rbp)
jmp 0xd407
movq -0x4b0(%rbp), %rax
movl -0x4a4(%rbp), %ecx
movl %ecx, -0x10(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x5200
leaq -0x1e0(%rbp), %rdi
callq 0x1c190
leaq -0xa8(%rbp), %rdi
callq 0x1de50
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rdx
addq $0x4b0, %rsp            # imm = 0x4B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
jmp 0xd481
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x5200
testb $0x1, -0x469(%rbp)
jne 0xd48c
jmp 0xd49d
movq -0x490(%rbp), %rdi
movl $0x28, %esi
callq 0x5350
jmp 0xd49f
leaq -0x1e0(%rbp), %rdi
callq 0x1c190
leaq -0xa8(%rbp), %rdi
callq 0x1de50
movq -0x120(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)