// File: /workspace/github_cpp_makefile_star2_O3/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_const_fn(input_t*)
pair<int, pl0_ast_constv *> pl0_const_fn(input_t *text) {
    auto res1 = (spaces >> (pl0_character('+') | pl0_character('-')) << spaces)(text);
    pair<int, pl0_ast_constv *> ans;
    if (std::get<0>(res1) != -1) {
        int flag = std::get<1>(res1) == '+' ? (1) : (-1);
        auto res2 = pl0_unsigned(text->drop(std::get<0>(res1)));
        ans = make_pair(
            std::get<0>(res2) == -1 ? -1 : (std::get<0>(res1) + std::get<0>(res2)),
            new pl0_ast_constv(text->locate(), std::get<1>(res2)->val * flag, pl0_ast_constv::INT)
        );
    }
    else {
        auto res = (pl0_unsigned | pl0_char)(text);
        ans = make_pair(std::get<0>(res), new pl0_ast_constv(text->locate(), std::get<1>(res) ? std::get<1>(res)->val : 0, std::get<1>(res) ? std::get<1>(res)->dt : pl0_ast_constv::INT));
    }
    if (verbose) {
        cout << "parsing: Constant" << endl;
    }
    return ans;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x3a8, %rsp            # imm = 0x3A8
movq %rdi, %rbx
leaq 0x7(%rsp), %rsi
movb $0x2b, (%rsi)
leaq 0x1d8(%rsp), %rdi
callq 0x9d54
leaq 0x6(%rsp), %rsi
movb $0x2d, (%rsi)
leaq 0x190(%rsp), %rdi
callq 0x9d54
leaq 0x318(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
leaq 0x190(%rsp), %rdx
callq 0x27842
leaq 0xaf224(%rip), %rsi     # 0xba6b0
leaq 0x220(%rsp), %rdi
leaq 0x318(%rsp), %rdx
callq 0x2779e
leaq 0xaf208(%rip), %rdx     # 0xba6b0
leaq 0x30(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x275a2
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x17e7e
movq 0x180(%rsp), %rax
testq %rax, %rax
je 0xb4eb
leaq 0x170(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x128(%rsp), %rdi
callq 0x161f6
leaq 0x98(%rsp), %r14
leaq 0xe0(%rsp), %r15
movq %r15, %rdi
callq 0x161f6
movq %r14, %rdi
callq 0x161f6
movq -0x58(%r15), %rax
testq %rax, %rax
je 0xb530
leaq 0x78(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x30(%rsp), %rdi
callq 0x161f6
leaq 0x288(%rsp), %r14
leaq 0x2d0(%rsp), %r15
movq %r15, %rdi
callq 0x161f6
movq %r14, %rdi
callq 0x161f6
movq -0x58(%r15), %rax
testq %rax, %rax
je 0xb575
leaq 0x268(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x220(%rsp), %rdi
callq 0x161f6
leaq 0x360(%rsp), %rdi
callq 0x161f6
leaq 0x318(%rsp), %rdi
callq 0x161f6
leaq 0x190(%rsp), %rdi
callq 0x161f6
leaq 0x1d8(%rsp), %rdi
callq 0x161f6
cmpl $-0x1, 0x2c(%rsp)
je 0xb644
leaq 0x2c(%rsp), %rsi
movb -0x4(%rsi), %r15b
movq %rbx, %rdi
callq 0x183a6
leaq 0xaf567(%rip), %rsi     # 0xbab40
leaq 0x30(%rsp), %rdi
movq %rax, %rdx
callq 0x1828e
movl 0x58(%rsp), %eax
movl 0x2c(%rsp), %ebp
addl %eax, %ebp
cmpl $-0x1, %eax
cmovel %eax, %ebp
movl $0x10, %edi
callq 0x5250
movq %rax, %r14
leaq 0x40(%rsp), %rax
movq 0x10(%rax), %rcx
movl 0x8(%rcx), %ecx
movl %ecx, %edx
negl %edx
cmpb $0x2b, %r15b
movq 0x8(%rbx), %rsi
cmovel %ecx, %edx
movq %rsi, (%r14)
movl %edx, 0x8(%r14)
movl $0x0, 0xc(%r14)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6d9
movq 0x40(%rsp), %rsi
jmp 0xb6d1
leaq 0xaf4f5(%rip), %rsi     # 0xbab40
leaq 0xaf45e(%rip), %rdx     # 0xbaab0
leaq 0x30(%rsp), %rdi
callq 0x27910
leaq 0x220(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x18532
leaq 0x78(%rsp), %rdi
callq 0x279de
leaq 0x30(%rsp), %rdi
callq 0x279de
movl $0x10, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x240(%rsp), %rcx
testq %rcx, %rcx
je 0xb6aa
movsd 0x8(%rcx), %xmm0
jmp 0xb6ad
xorps %xmm0, %xmm0
movq %rax, (%r14)
movlps %xmm0, 0x8(%r14)
leaq 0x230(%rsp), %rax
movl 0x18(%rax), %ebp
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6d9
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6f4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
movl %ebp, %eax
movq %r14, %rdx
addq $0x3a8, %rsp            # imm = 0x3A8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x230(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb7e1
movq 0x230(%rsp), %rsi
jmp 0xb764
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x279de
leaq 0x30(%rsp), %rdi
callq 0x279de
jmp 0xb7e1
jmp 0xb7de
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb7e1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0xb7e1
jmp 0xb772
jmp 0xb772
movq %rax, %rdi
callq 0x253c4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x181c8
jmp 0xb78c
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x18240
jmp 0xb79e
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x161f6
leaq 0x318(%rsp), %rdi
callq 0x161f6
jmp 0xb7bd
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x161f6
jmp 0xb7cf
movq %rax, %rbx
leaq 0x1d8(%rsp), %rdi
callq 0x161f6
jmp 0xb7fc
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb7fc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0