// File: /workspace/github_cpp_makefile_star2_O2/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 %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x600, %rsp            # imm = 0x600
movq %rdi, %rbx
movb 0x8278e(%rip), %al      # 0x8b960
testb %al, %al
je 0x9559
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x670b(%rip), %rax      # 0xf8f4
movq %rax, 0x28(%rsp)
leaq 0x6777(%rip), %rax      # 0xf96c
movq %rax, 0x20(%rsp)
leaq 0x8333f(%rip), %rsi     # 0x8c540
leaq 0x83380(%rip), %rdx     # 0x8c588
leaq 0x2d0(%rsp), %rdi
callq 0x17408
leaq 0x108(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x172ea
leaq 0x8330f(%rip), %rsi     # 0x8c540
leaq 0x528(%rsp), %rdi
leaq 0x108(%rsp), %rdx
callq 0x17b06
leaq 0x108(%rsp), %rdi
callq 0x102fc
leaq 0x2d0(%rsp), %rdi
callq 0x102fc
leaq 0x430(%rsp), %rdi
leaq 0x528(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x17ca4
leaq 0x82457(%rip), %rsi     # 0x8b6d8
leaq 0x2d0(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x17c6e
leaq 0x8243b(%rip), %rdx     # 0x8b6d8
leaq 0x108(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x17b3c
leaq 0x30(%rsp), %rdi
leaq 0x108(%rsp), %rsi
movq %rbx, %rdx
callq 0x10e0c
leaq 0x108(%rsp), %rdi
callq 0x11014
leaq 0x2d0(%rsp), %rdi
callq 0x1102e
leaq 0x430(%rsp), %rdi
callq 0x11044
cmpl $-0x1, 0x70(%rsp)
je 0x94a7
leaq 0xc0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x17cde
leaq 0x78(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x17cde
leaq 0x430(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x17cde
leaq 0x108(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x22ad0
leaq 0x2d0(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x22ad0
leaq 0x108(%rsp), %rdi
callq 0x10768
leaq 0x108(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x17cde
leaq 0x823be(%rip), %r14     # 0x8b740
movl $0x220, %r13d           # imm = 0x220
leaq 0x108(%rsp), %r12
cmpq $0x20, %r13
je 0x93f4
movq %r12, %rdi
movq %r14, %rsi
callq 0xf984
testb %al, %al
jne 0x9436
leaq 0x20(%r14), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0xf984
testb %al, %al
jne 0x945d
leaq 0x40(%r14), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0xf984
testb %al, %al
jne 0x945d
leaq 0x60(%r14), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0xf984
testb %al, %al
jne 0x945d
subq $-0x80, %r14
addq $-0x80, %r13
jmp 0x9390
sarq $0x5, %r13
cmpq $0x1, %r13
je 0x943f
cmpq $0x2, %r13
je 0x9422
cmpq $0x3, %r13
jne 0x9456
leaq 0x108(%rsp), %rdi
movq %r14, %rsi
callq 0xf984
testb %al, %al
jne 0x9436
addq $0x20, %r14
leaq 0x108(%rsp), %rdi
movq %r14, %rsi
callq 0xf984
testb %al, %al
je 0x943b
movq %r14, %r15
jmp 0x945d
addq $0x20, %r14
movq %r14, %r15
leaq 0x108(%rsp), %rdi
movq %r14, %rsi
callq 0xf984
testb %al, %al
jne 0x945d
leaq 0x82503(%rip), %r15     # 0x8b960
leaq 0x108(%rsp), %rdi
callq 0x10768
leaq 0x2d0(%rsp), %rdi
callq 0x10768
leaq 0x430(%rsp), %rdi
callq 0x10768
leaq 0x78(%rsp), %rdi
callq 0x10768
leaq 0x824cb(%rip), %r14     # 0x8b960
leaq 0xc0(%rsp), %rdi
callq 0x10768
cmpq %r14, %r15
je 0x94fb
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rbx
leaq 0x52082(%rip), %rsi     # 0x5b53f
leaq 0x108(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0xfa26
movq %rbx, (%r14)
movq %r14, %rdi
addq $0x8, %rdi
leaq 0x108(%rsp), %rsi
callq 0x5340
leaq 0x108(%rsp), %rdi
callq 0x5120
pushq $-0x1
popq %rbx
jmp 0x9522
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x50(%rsp), %rsi
movq %rax, (%r14)
movq %r14, %rdi
addq $0x8, %rdi
callq 0x5340
movl 0x70(%rsp), %ebx
leaq 0x30(%rsp), %rdi
callq 0x10768
leaq 0x528(%rsp), %rdi
callq 0x1105e
leaq 0x10(%rsp), %rdi
callq 0x3a072
movl %ebx, %eax
movq %r14, %rdx
addq $0x600, %rsp            # imm = 0x600
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x82400(%rip), %rdi     # 0x8b960
callq 0x5420
testl %eax, %eax
je 0x91da
leaq 0x821cc(%rip), %r14     # 0x8b740
leaq 0x4fb66(%rip), %rsi     # 0x590e1
leaq 0x108(%rsp), %rdx
movq %r14, %rdi
callq 0xfa26
leaq 0x821ce(%rip), %r15     # 0x8b760
leaq 0x4fb4e(%rip), %rsi     # 0x590e7
leaq 0x2d0(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821d0(%rip), %r15     # 0x8b780
leaq 0x4fb34(%rip), %rsi     # 0x590eb
leaq 0x430(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821d2(%rip), %r15     # 0x8b7a0
leaq 0x4fb1a(%rip), %rsi     # 0x590ef
leaq 0x528(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821d4(%rip), %r15     # 0x8b7c0
leaq 0x4fb00(%rip), %rsi     # 0x590f3
leaq 0x78(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821d9(%rip), %r15     # 0x8b7e0
leaq 0x4fae8(%rip), %rsi     # 0x590f6
leaq 0x30(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821de(%rip), %r15     # 0x8b800
leaq 0x4fad0(%rip), %rsi     # 0x590f9
leaq 0x10(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821e3(%rip), %r15     # 0x8b820
leaq 0x4fab8(%rip), %rsi     # 0x590fc
leaq 0xf(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821e8(%rip), %r15     # 0x8b840
leaq 0x4faa2(%rip), %rsi     # 0x59101
leaq 0xe(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821ed(%rip), %r15     # 0x8b860
leaq 0x4fa8c(%rip), %rsi     # 0x59106
leaq 0xd(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821f2(%rip), %r15     # 0x8b880
leaq 0x501c8(%rip), %rsi     # 0x5985d
leaq 0xc(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821f7(%rip), %r15     # 0x8b8a0
leaq 0x4fa5b(%rip), %rsi     # 0x5910b
leaq 0xb(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x821fc(%rip), %r15     # 0x8b8c0
leaq 0x513c7(%rip), %rsi     # 0x5aa92
leaq 0xa(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x82201(%rip), %r15     # 0x8b8e0
leaq 0x4f96f(%rip), %rsi     # 0x59055
leaq 0x9(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x82206(%rip), %r15     # 0x8b900
leaq 0x4fa05(%rip), %rsi     # 0x59106
leaq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x8220b(%rip), %r15     # 0x8b920
leaq 0x4f9f3(%rip), %rsi     # 0x5910f
leaq 0x7(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x82210(%rip), %r15     # 0x8b940
leaq 0x50130(%rip), %rsi     # 0x59867
leaq 0x6(%rsp), %rdx
movq %r15, %rdi
callq 0xfa26
leaq 0x7699(%rip), %rdi      # 0x10de4
leaq 0x81fee(%rip), %rsi     # 0x8b740
leaq 0x81af7(%rip), %rdx     # 0x8b250
callq 0x5200
leaq 0x821fb(%rip), %rdi     # 0x8b960
callq 0x5190
jmp 0x91da
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
jmp 0x978d
movq %rax, %rbx
addq $-0x20, %r15
movq %r15, %rdi
callq 0x5120
cmpq %r14, %r15
jne 0x9790
leaq 0x821b8(%rip), %rdi     # 0x8b960
callq 0x5180
jmp 0x98e5
movq %rax, %rbx
jmp 0x97a1
jmp 0x9883
jmp 0x9804
jmp 0x9817
movq %rax, %rbx
jmp 0x9893
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
jmp 0x989b
movq %rax, %rbx
jmp 0x98a0
movq %rax, %rbx
jmp 0x98ad
movq %rax, %rbx
jmp 0x98b7
jmp 0x9817
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x5120
jmp 0x9807
movq %rax, %rbx
pushq $0x28
popq %rsi
movq %r14, %rdi
callq 0x5270
jmp 0x98c4
movq %rax, %rbx
jmp 0x98c4
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x11014
jmp 0x9834
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x1102e
jmp 0x9846
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x11044
jmp 0x98ce
movq %rax, %rbx
jmp 0x98ce
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x102fc
jmp 0x986f
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x102fc
jmp 0x98db
movq %rax, %rbx
jmp 0x98db
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x10768
leaq 0x2d0(%rsp), %rdi
callq 0x10768
leaq 0x430(%rsp), %rdi
callq 0x10768
leaq 0x78(%rsp), %rdi
callq 0x10768
leaq 0xc0(%rsp), %rdi
callq 0x10768
leaq 0x30(%rsp), %rdi
callq 0x10768
leaq 0x528(%rsp), %rdi
callq 0x1105e
leaq 0x10(%rsp), %rdi
callq 0x3a072
movq %rbx, %rdi
callq 0x53f0