// File: /workspace/github_cpp_makefile_star2_O1/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_identify_fn(input_t*)
pair<int, pl0_ast_identify *> pl0_identify_fn(input_t *text) {
    static std::array<string, 17> keywords = {{
        "begin", "end", "for", "downto", "to", "do", "if", "then", "else", "case",
        "const", "var", "array", "of", "case", "integer", "char"}};
    function<string (pair<pl0_ast_alnum *, vector<pl0_ast_alnum *>>)> fn = [](pair<pl0_ast_alnum *, vector<pl0_ast_alnum *>> const & p) {
        string ans = string(1, p.first ? p.first->val : 0); for (pl0_ast_alnum *c: p.second) { ans.push_back(c ? c->val : 0); } return ans;
    };
    auto parser = pl0_alpha + (++(pl0_alpha | pl0_digit));
    auto res = (spaces >> (parser / fn) << spaces)(text);
    pair<int, pl0_ast_identify *> ans;
    if (std::get<0>(res) != -1 && std::none_of(keywords.begin(), keywords.end(), [&, res](string s) { return s == std::get<1>(res); })) {
        ans = make_pair(std::get<0>(res), new pl0_ast_identify(text->locate(), std::get<1>(res)));
    }
    else {
        ans = make_pair(-1, new pl0_ast_identify(text->locate(), ""));
    }
    if (verbose) {
        cout << "parsing: Identifier" << endl;
    }
    return ans;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x608, %rsp            # imm = 0x608
movq %rdi, %r12
movb 0xb5236(%rip), %al      # 0xc0938
testb %al, %al
je 0xbdc0
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xa86b(%rip), %rax      # 0x15f84
movq %rax, 0x28(%rsp)
leaq 0xa8ef(%rip), %rax      # 0x16014
movq %rax, 0x20(%rsp)
leaq 0xb5de7(%rip), %rsi     # 0xc1518
leaq 0xb5e28(%rip), %rdx     # 0xc1560
leaq 0x2d8(%rsp), %rdi
callq 0x27aaa
leaq 0x110(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x278b4
leaq 0xb5db7(%rip), %rsi     # 0xc1518
leaq 0x530(%rsp), %rdi
leaq 0x110(%rsp), %rdx
callq 0x28dfe
leaq 0x158(%rsp), %rdi
callq 0x2797c
leaq 0x110(%rsp), %rdi
callq 0x2797c
leaq 0x320(%rsp), %rdi
callq 0x2797c
leaq 0x2d8(%rsp), %rdi
callq 0x2797c
leaq 0x438(%rsp), %rdi
leaq 0x530(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x291fa
leaq 0xb4ee5(%rip), %rsi     # 0xc06b0
leaq 0x2d8(%rsp), %rdi
leaq 0x438(%rsp), %rdx
callq 0x290cc
leaq 0xb4ec9(%rip), %rdx     # 0xc06b0
leaq 0x110(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x28e88
leaq 0x38(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movq %r12, %rdx
callq 0x18b06
leaq 0x110(%rsp), %rdi
callq 0x1903e
movq 0x428(%rsp), %rax
testq %rax, %rax
je 0xb83d
leaq 0x418(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x340(%rsp), %r14
leaq 0x388(%rsp), %r15
leaq 0x3d0(%rsp), %rdi
callq 0x2797c
movq %r15, %rdi
callq 0x2797c
movq %r14, %rdi
callq 0x2797c
movq -0x58(%r15), %rax
testq %rax, %rax
je 0xb885
leaq 0x320(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2d8(%rsp), %rdi
callq 0x161e0
movq 0x520(%rsp), %rax
testq %rax, %rax
je 0xb8b1
leaq 0x510(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x480(%rsp), %r14
leaq 0x4c8(%rsp), %rdi
callq 0x2797c
movq %r14, %rdi
callq 0x2797c
leaq 0x438(%rsp), %rdi
callq 0x2797c
movl 0x78(%rsp), %ebp
cmpl $-0x1, %ebp
je 0xba84
leaq 0x80(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x292a2
movl 0x78(%rsp), %eax
leaq 0x80(%rsp), %rsi
movl %eax, 0x40(%rsi)
leaq 0xc8(%rsp), %rdi
callq 0x292a2
movl 0xc0(%rsp), %eax
leaq 0xc8(%rsp), %rsi
movl %eax, 0x40(%rsi)
leaq 0x438(%rsp), %rdi
callq 0x292a2
movl 0x108(%rsp), %eax
leaq 0x438(%rsp), %rsi
movl %eax, 0x40(%rsi)
leaq 0x110(%rsp), %rdi
callq 0x3eec4
movl 0x478(%rsp), %eax
leaq 0x110(%rsp), %rsi
movl %eax, 0x40(%rsi)
leaq 0x2d8(%rsp), %rdi
callq 0x3eec4
leaq 0x140(%rsp), %rcx
movl 0x10(%rcx), %eax
movl %eax, 0x318(%rsp)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0xb99e
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x120(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb9bf
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x5260
movl %ebp, 0xc(%rsp)
movq %r12, %rbp
leaq 0x110(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x292a2
movl 0x318(%rsp), %eax
leaq 0x110(%rsp), %r12
movl %eax, 0x40(%r12)
leaq 0xb4d22(%rip), %r15     # 0xc0718
movl $0x5, %r13d
movl $0x220, %ebx            # imm = 0x220
movq %r12, %rdi
movq %r15, %rsi
callq 0x16062
testb %al, %al
jne 0xba8b
leaq 0x20(%r15), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x16062
testb %al, %al
jne 0xba8e
leaq 0x40(%r15), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x16062
testb %al, %al
jne 0xba8e
leaq 0x60(%r15), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x16062
testb %al, %al
jne 0xba8e
subq $-0x80, %r15
decq %r13
addq $-0x80, %rbx
cmpq $0x1, %r13
ja 0xba01
sarq $0x5, %rbx
cmpq $0x1, %rbx
je 0xbd8d
cmpq $0x3, %rbx
movq %rbp, %r12
je 0xbd59
cmpq $0x2, %rbx
je 0xbd71
jmp 0xbdb4
xorl %ebx, %ebx
jmp 0xbbb2
movq %r15, %r14
movq %rbp, %r12
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0xbab6
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x5260
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xbadb
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x308(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbafc
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x2e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbb1d
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x468(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbb3e
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x448(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbb5f
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbb80
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbba1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xb4d90(%rip), %rax     # 0xc0938
cmpq %rax, %r14
sete %bl
movl 0xc(%rsp), %ebp
cmpl $-0x1, %ebp
je 0xbbf9
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbbd8
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbbf9
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x5260
testb %bl, %bl
je 0xbc3c
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%r12), %rax
movq %rax, (%r14)
leaq 0x8(%r14), %rdi
movq %r14, %rax
addq $0x18, %rax
movq %rax, 0x8(%r14)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
callq 0x36590
movl 0x78(%rsp), %ebx
jmp 0xbcc9
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movl 0x8(%r12), %ebx
movl 0xc(%r12), %r12d
leaq 0x120(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8d8a9(%rip), %rdx     # 0x9950f
leaq 0x110(%rsp), %rdi
movq %rdx, %rsi
callq 0x2670a
shlq $0x20, %r12
orq %rbx, %r12
movq %r12, (%r14)
leaq 0x8(%r14), %rdi
movq %r14, %rax
addq $0x18, %rax
movq %rax, 0x8(%r14)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
callq 0x36590
movq 0x110(%rsp), %rdi
cmpq %r15, %rdi
je 0xbcc4
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x5260
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbce4
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbcff
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x578(%rsp), %r15
leaq 0x5c0(%rsp), %rdi
callq 0x2797c
movq %r15, %rdi
callq 0x2797c
leaq 0x530(%rsp), %rdi
callq 0x2797c
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0xbd42
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movl %ebx, %eax
movq %r14, %rdx
addq $0x608, %rsp            # imm = 0x608
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x110(%rsp), %rdi
movq %r15, %rsi
callq 0x16062
testb %al, %al
jne 0xbd85
addq $0x20, %r15
leaq 0x110(%rsp), %rdi
movq %r15, %rsi
callq 0x16062
testb %al, %al
je 0xbd95
movq %r15, %r14
jmp 0xba91
movq %r15, %r14
movq %rbp, %r12
jmp 0xbd9c
addq $0x20, %r15
movq %r15, %r14
leaq 0x110(%rsp), %rdi
movq %r14, %rsi
callq 0x16062
testb %al, %al
jne 0xba91
leaq 0xb4b7d(%rip), %r14     # 0xc0938
jmp 0xba91
leaq 0xb4b71(%rip), %rdi     # 0xc0938
callq 0x5400
testl %eax, %eax
je 0xb70a
leaq 0xb494d(%rip), %rax     # 0xc0728
movq %rax, 0xb4936(%rip)     # 0xc0718
leaq 0xb492f(%rip), %r14     # 0xc0718
leaq 0x8b2f1(%rip), %rsi     # 0x970e1
leaq 0x8b2ef(%rip), %rdx     # 0x970e6
movq %r14, %rdi
callq 0x2670a
leaq 0xb4942(%rip), %rax     # 0xc0748
movq %rax, 0xb492b(%rip)     # 0xc0738
leaq 0xb4924(%rip), %r14     # 0xc0738
leaq 0x8b2cc(%rip), %rsi     # 0x970e7
leaq 0x8b2c8(%rip), %rdx     # 0x970ea
movq %r14, %rdi
callq 0x2670a
leaq 0xb4937(%rip), %rax     # 0xc0768
movq %rax, 0xb4920(%rip)     # 0xc0758
leaq 0xb4919(%rip), %r14     # 0xc0758
leaq 0x8b2a5(%rip), %rsi     # 0x970eb
leaq 0x8b2a1(%rip), %rdx     # 0x970ee
movq %r14, %rdi
callq 0x2670a
leaq 0xb492c(%rip), %rax     # 0xc0788
movq %rax, 0xb4915(%rip)     # 0xc0778
leaq 0xb490e(%rip), %r14     # 0xc0778
leaq 0x8b27e(%rip), %rsi     # 0x970ef
leaq 0x8b27d(%rip), %rdx     # 0x970f5
movq %r14, %rdi
callq 0x2670a
leaq 0xb4921(%rip), %rax     # 0xc07a8
movq %rax, 0xb490a(%rip)     # 0xc0798
leaq 0xb4903(%rip), %r14     # 0xc0798
leaq 0x8b257(%rip), %rsi     # 0x970f3
leaq 0x8b252(%rip), %rdx     # 0x970f5
movq %r14, %rdi
callq 0x2670a
leaq 0xb4916(%rip), %rax     # 0xc07c8
movq %rax, 0xb48ff(%rip)     # 0xc07b8
leaq 0xb48f8(%rip), %r14     # 0xc07b8
leaq 0x8b22f(%rip), %rsi     # 0x970f6
leaq 0x8b22a(%rip), %rdx     # 0x970f8
movq %r14, %rdi
callq 0x2670a
leaq 0xb490b(%rip), %rax     # 0xc07e8
movq %rax, 0xb48f4(%rip)     # 0xc07d8
leaq 0xb48ed(%rip), %r14     # 0xc07d8
leaq 0x8b207(%rip), %rsi     # 0x970f9
leaq 0x8b202(%rip), %rdx     # 0x970fb
movq %r14, %rdi
callq 0x2670a
leaq 0xb4900(%rip), %rax     # 0xc0808
movq %rax, 0xb48e9(%rip)     # 0xc07f8
leaq 0xb48e2(%rip), %r14     # 0xc07f8
leaq 0x8b1df(%rip), %rsi     # 0x970fc
leaq 0x8b1dc(%rip), %rdx     # 0x97100
movq %r14, %rdi
callq 0x2670a
leaq 0xb48f5(%rip), %rax     # 0xc0828
movq %rax, 0xb48de(%rip)     # 0xc0818
leaq 0xb48d7(%rip), %r14     # 0xc0818
leaq 0x8b1b9(%rip), %rsi     # 0x97101
leaq 0x8b1b6(%rip), %rdx     # 0x97105
movq %r14, %rdi
callq 0x2670a
leaq 0xb48ea(%rip), %rax     # 0xc0848
movq %rax, 0xb48d3(%rip)     # 0xc0838
leaq 0xb48cc(%rip), %r14     # 0xc0838
leaq 0x8b193(%rip), %rsi     # 0x97106
leaq 0x8b190(%rip), %rdx     # 0x9710a
movq %r14, %rdi
callq 0x2670a
leaq 0xb48df(%rip), %rax     # 0xc0868
movq %rax, 0xb48c8(%rip)     # 0xc0858
leaq 0xb48c1(%rip), %r14     # 0xc0858
leaq 0x8b8b6(%rip), %rsi     # 0x97854
leaq 0x8b8b4(%rip), %rdx     # 0x97859
movq %r14, %rdi
callq 0x2670a
leaq 0xb48d4(%rip), %rax     # 0xc0888
movq %rax, 0xb48bd(%rip)     # 0xc0878
leaq 0xb48b6(%rip), %r14     # 0xc0878
leaq 0x8b142(%rip), %rsi     # 0x9710b
leaq 0x8b13e(%rip), %rdx     # 0x9710e
movq %r14, %rdi
callq 0x2670a
leaq 0xb48c9(%rip), %rax     # 0xc08a8
movq %rax, 0xb48b2(%rip)     # 0xc0898
leaq 0xb48ab(%rip), %r14     # 0xc0898
leaq 0x8ca7e(%rip), %rsi     # 0x98a72
leaq 0x8ca7c(%rip), %rdx     # 0x98a77
movq %r14, %rdi
callq 0x2670a
leaq 0xb48be(%rip), %rax     # 0xc08c8
movq %rax, 0xb48a7(%rip)     # 0xc08b8
leaq 0xb48a0(%rip), %r14     # 0xc08b8
leaq 0x8b036(%rip), %rsi     # 0x97055
leaq 0x8b031(%rip), %rdx     # 0x97057
movq %r14, %rdi
callq 0x2670a
leaq 0xb48b3(%rip), %rax     # 0xc08e8
movq %rax, 0xb489c(%rip)     # 0xc08d8
leaq 0xb4895(%rip), %r14     # 0xc08d8
leaq 0x8b0bc(%rip), %rsi     # 0x97106
leaq 0x8b0b9(%rip), %rdx     # 0x9710a
movq %r14, %rdi
callq 0x2670a
leaq 0xb48a8(%rip), %rax     # 0xc0908
movq %rax, 0xb4891(%rip)     # 0xc08f8
leaq 0xb488a(%rip), %r14     # 0xc08f8
leaq 0x8b09a(%rip), %rsi     # 0x9710f
leaq 0x8b09a(%rip), %rdx     # 0x97116
movq %r14, %rdi
callq 0x2670a
leaq 0xb489d(%rip), %rax     # 0xc0928
movq %rax, 0xb4886(%rip)     # 0xc0918
leaq 0xb487f(%rip), %r14     # 0xc0918
leaq 0x8d12b(%rip), %rsi     # 0x991cb
leaq 0x8d128(%rip), %rdx     # 0x991cf
movq %r14, %rdi
callq 0x2670a
leaq 0xca10(%rip), %rdi      # 0x18ac6
leaq 0xb465b(%rip), %rsi     # 0xc0718
leaq 0xb4164(%rip), %rdx     # 0xc0228
callq 0x5200
leaq 0xb4868(%rip), %rdi     # 0xc0938
callq 0x5180
jmp 0xb70a
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
jmp 0xc0f8
movq %rax, %rbx
xorl %eax, %eax
testb %al, %al
jne 0xc130
addq $-0x10, %r14
leaq 0xb460c(%rip), %r15     # 0xc0718
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0xc120
movq (%r14), %rsi
incq %rsi
callq 0x5260
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0xc10c
leaq 0xb4801(%rip), %rdi     # 0xc0938
callq 0x5170
jmp 0xc2d3
movq %rax, %rbx
movb $0x1, %al
jmp 0xc0fd
jmp 0xc25f
movq %rax, %rbx
movq 0x110(%rsp), %rdi
cmpq %r15, %rdi
je 0xc174
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0xc174
jmp 0xc171
movq %rax, %rbx
movl $0x28, %esi
movq %r14, %rdi
callq 0x5260
jmp 0xc2a3
jmp 0xc1c4
jmp 0xc1c4
jmp 0xc2db
movq %rax, %rbx
jmp 0xc26f
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0xc2e4
jmp 0xc27c
movq %rax, %rbx
jmp 0xc27c
movq %rax, %rbx
jmp 0xc289
movq %rax, %rbx
jmp 0xc296
movq %rax, %rbx
jmp 0xc2a3
jmp 0xc2db
jmp 0xc2db
jmp 0xc2db
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x1903e
jmp 0xc1f0
movq %rax, %rbx
leaq 0x2d8(%rsp), %rdi
callq 0x190e4
jmp 0xc202
movq %rax, %rbx
leaq 0x438(%rsp), %rdi
callq 0x1915e
jmp 0xc2ad
movq %rax, %rbx
jmp 0xc2ad
movq %rax, %rbx
leaq 0x158(%rsp), %rdi
callq 0x2797c
leaq 0x110(%rsp), %rdi
callq 0x2797c
jmp 0xc23e
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
callq 0x2797c
leaq 0x2d8(%rsp), %rdi
callq 0x2797c
jmp 0xc2ba
movq %rax, %rbx
jmp 0xc2ba
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x1602c
leaq 0x2d8(%rsp), %rdi
callq 0x1602c
leaq 0x438(%rsp), %rdi
callq 0xc2e4
leaq 0xc8(%rsp), %rdi
callq 0xc2e4
leaq 0x80(%rsp), %rdi
callq 0xc2e4
leaq 0x38(%rsp), %rdi
callq 0x17c1a
leaq 0x530(%rsp), %rdi
callq 0x191b2
movq 0x20(%rsp), %rax
testq %rax, %rax
je 0xc2d3
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rdi
callq 0x53d0
movq %rax, %rdi
callq 0x266fe
nop