// File: /workspace/github_cpp_makefile_star2_O1/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 0x9c3d
leaq 0x6(%rsp), %rsi
movb $0x2d, (%rsi)
leaq 0x190(%rsp), %rdi
callq 0x9c3d
leaq 0x318(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
leaq 0x190(%rsp), %rdx
callq 0x28bbe
leaq 0xb534b(%rip), %rsi     # 0xc06b0
leaq 0x220(%rsp), %rdi
leaq 0x318(%rsp), %rdx
callq 0x28b1a
leaq 0xb532f(%rip), %rdx     # 0xc06b0
leaq 0x30(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x2891e
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x1802a
movq 0x180(%rsp), %rax
testq %rax, %rax
je 0xb3c4
leaq 0x170(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x128(%rsp), %rdi
callq 0x161e0
leaq 0x98(%rsp), %r14
leaq 0xe0(%rsp), %r15
movq %r15, %rdi
callq 0x161e0
movq %r14, %rdi
callq 0x161e0
movq -0x58(%r15), %rax
testq %rax, %rax
je 0xb409
leaq 0x78(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x30(%rsp), %rdi
callq 0x161e0
leaq 0x288(%rsp), %r14
leaq 0x2d0(%rsp), %r15
movq %r15, %rdi
callq 0x161e0
movq %r14, %rdi
callq 0x161e0
movq -0x58(%r15), %rax
testq %rax, %rax
je 0xb44e
leaq 0x268(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x220(%rsp), %rdi
callq 0x161e0
leaq 0x360(%rsp), %rdi
callq 0x161e0
leaq 0x318(%rsp), %rdi
callq 0x161e0
leaq 0x190(%rsp), %rdi
callq 0x161e0
leaq 0x1d8(%rsp), %rdi
callq 0x161e0
cmpl $-0x1, 0x2c(%rsp)
je 0xb51d
leaq 0x2c(%rsp), %rsi
movb -0x4(%rsi), %r15b
movq %rbx, %rdi
callq 0x18636
leaq 0xb568e(%rip), %rsi     # 0xc0b40
leaq 0x30(%rsp), %rdi
movq %rax, %rdx
callq 0x1851e
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 0xb5bd
movq 0x40(%rsp), %rsi
jmp 0xb5b5
leaq 0xb561c(%rip), %rsi     # 0xc0b40
leaq 0xb5585(%rip), %rdx     # 0xc0ab0
leaq 0x30(%rsp), %rdi
callq 0x28c8c
leaq 0x220(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %rbx, %rdx
callq 0x187c2
leaq 0x78(%rsp), %rdi
callq 0x28d5a
leaq 0x30(%rsp), %rdi
callq 0x28d5a
movl $0x10, %edi
callq 0x5250
movq %rax, %r14
movq 0x240(%rsp), %rdx
xorl %eax, %eax
movl $0x0, %ecx
testq %rdx, %rdx
je 0xb582
movl 0x8(%rdx), %ecx
movq 0x8(%rbx), %rsi
testq %rdx, %rdx
je 0xb58e
movl 0xc(%rdx), %eax
movq %rsi, (%r14)
movl %ecx, 0x8(%r14)
movl %eax, 0xc(%r14)
leaq 0x230(%rsp), %rax
movl 0x18(%rax), %ebp
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb5bd
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb5d8
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 0xb6c5
movq 0x230(%rsp), %rsi
jmp 0xb648
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x28d5a
leaq 0x30(%rsp), %rdi
callq 0x28d5a
jmp 0xb6c5
jmp 0xb6c2
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6c5
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0xb6c5
jmp 0xb656
jmp 0xb656
movq %rax, %rdi
callq 0x266fe
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x18458
jmp 0xb670
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x184d0
jmp 0xb682
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x161e0
leaq 0x318(%rsp), %rdi
callq 0x161e0
jmp 0xb6a1
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x161e0
jmp 0xb6b3
movq %rax, %rbx
leaq 0x1d8(%rsp), %rdi
callq 0x161e0
jmp 0xb6e0
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6e0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5260
movq %rbx, %rdi
callq 0x53d0