// File: /workspace/github_cpp_makefile_star2_O3/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_factor_fn(input_t*)
pair<int, pl0_ast_factor *> pl0_factor_fn(input_t *text) {
    auto res1 = (pl0_identify + (pl0_character('[') >> pl0_expression << pl0_character(']') << spaces))(text);
    pair<int, pl0_ast_factor *> ans;
    if (std::get<0>(res1) != -1) {
        ans = make_pair(std::get<0>(res1), new pl0_ast_factor(text->locate(), std::get<1>(res1)));
    }
    else {
        auto res2 = (spaces >> pl0_character('(') >> (spaces >> pl0_expression << spaces) << pl0_character(')') << spaces)(text);
        if (std::get<0>(res2) != -1) {
            ans = make_pair(std::get<0>(res2), new pl0_ast_factor(text->locate(), pl0_ast_factor::type_t::EXPR, std::get<1>(res2)));
        }
        else {
            auto res3 = (spaces >> pl0_unsigned << spaces)(text);
            if (std::get<0>(res3) != -1) {
                ans = make_pair(std::get<0>(res3), new pl0_ast_factor(text->locate(), pl0_ast_factor::type_t::UNSIGNED, std::get<1>(res3)));
            }
            else {
                auto res4 = (spaces >> pl0_call_func << spaces)(text);
                if (std::get<0>(res4) != -1) {
                    ans = make_pair(std::get<0>(res4), new pl0_ast_factor(text->locate(), pl0_ast_factor::type_t::CALL_FUNC, std::get<1>(res4)));
                }
                else {
                    auto res5 = (spaces >> pl0_identify << spaces)(text);
                    ans = make_pair(std::get<0>(res5), new pl0_ast_factor(text->locate(), pl0_ast_factor::type_t::ID, std::get<1>(res5)));
                }
            }
        }
    }
    if (verbose) {
        cout << "parsing: Factor" << endl;
    }
    return ans;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x9d0, %rsp            # imm = 0x9D0
movq %rdi, %rbx
leaq 0x288(%rsp), %rsi
movb $0x5b, (%rsi)
leaq 0x78(%rsp), %r14
movq %r14, %rdi
callq 0x9d54
leaq 0xaa494(%rip), %rdx     # 0xbb008
leaq 0x128(%rsp), %rdi
movq %r14, %rsi
callq 0x2d4a6
leaq 0x240(%rsp), %rsi
movb $0x5d, (%rsi)
leaq 0x548(%rsp), %rdi
callq 0x9d54
leaq 0x808(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x548(%rsp), %rdx
callq 0x2d40c
leaq 0xa9af0(%rip), %rdx     # 0xba6b0
leaq 0x5f8(%rsp), %rdi
leaq 0x808(%rsp), %r14
movq %r14, %rsi
callq 0x2ea84
leaq 0xa9fa9(%rip), %rsi     # 0xbab88
leaq 0x2d0(%rsp), %rdi
leaq 0x5f8(%rsp), %r15
movq %r15, %rdx
callq 0x2e8be
leaq 0x40(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movq %rbx, %rdx
callq 0x1f794
movq 0x448(%rsp), %rax
testq %rax, %rax
je 0x10c2b
leaq 0x438(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x318(%rsp), %r12
leaq 0x3f0(%rsp), %rdi
callq 0x161f6
leaq 0x3a8(%rsp), %rdi
callq 0x161f6
leaq 0x360(%rsp), %rdi
callq 0x2531a
movq %r12, %rdi
callq 0x161f6
leaq 0x2d0(%rsp), %rdi
callq 0x297aa
movq 0x728(%rsp), %rax
testq %rax, %rax
je 0x10c8e
leaq 0x718(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x6d0(%rsp), %rdi
callq 0x161f6
movl $0x90, %r12d
leaq (%r15,%r12), %rdi
callq 0x161f6
leaq 0x640(%rsp), %rdi
callq 0x2531a
movq %r15, %rdi
callq 0x161f6
addq %r14, %r12
movq %r12, %rdi
callq 0x161f6
leaq 0x850(%rsp), %rdi
callq 0x2531a
movq %r14, %rdi
callq 0x161f6
leaq 0x548(%rsp), %rdi
callq 0x161f6
leaq 0x170(%rsp), %rdi
callq 0x2531a
leaq 0x128(%rsp), %rdi
callq 0x161f6
leaq 0x78(%rsp), %rdi
callq 0x161f6
movl 0x70(%rsp), %ebp
cmpl $-0x1, %ebp
je 0x10d44
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, (%r14)
movl $0x5, 0x8(%r14)
movups 0x60(%rsp), %xmm0
movups %xmm0, 0x18(%r14)
jmp 0x11320
leaq 0xf(%rsp), %rsi
movb $0x28, (%rsi)
leaq 0x288(%rsp), %rdi
callq 0x9d54
leaq 0xa9950(%rip), %rsi     # 0xba6b0
leaq 0x78(%rsp), %rdi
leaq 0x288(%rsp), %rdx
callq 0x2f11a
leaq 0xa9937(%rip), %rsi     # 0xba6b0
leaq 0xaa288(%rip), %rdx     # 0xbb008
leaq 0x548(%rsp), %rdi
callq 0x2f2bc
leaq 0xa991c(%rip), %rdx     # 0xba6b0
leaq 0x128(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0x2f208
leaq 0x808(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0x128(%rsp), %rdx
callq 0x2f036
leaq 0xe(%rsp), %rsi
movb $0x29, (%rsi)
leaq 0x240(%rsp), %rdi
callq 0x9d54
leaq 0x5f8(%rsp), %rdi
leaq 0x808(%rsp), %rsi
leaq 0x240(%rsp), %rdx
callq 0x2efa6
leaq 0xa98b4(%rip), %rdx     # 0xba6b0
leaq 0x2d0(%rsp), %rdi
leaq 0x5f8(%rsp), %r14
movq %r14, %rsi
callq 0x2ebbc
leaq 0x10(%rsp), %rdi
leaq 0x2d0(%rsp), %r15
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1fcbe
movq 0x538(%rsp), %rax
testq %rax, %rax
je 0x10e4b
leaq 0x528(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x4e0(%rsp), %rdi
callq 0x161f6
movl $0x1c8, %r12d           # imm = 0x1C8
leaq (%r15,%r12), %rdi
callq 0x161f6
movq %r15, %rdi
callq 0x2006a
addq %r14, %r12
movq %r12, %rdi
callq 0x161f6
movq %r14, %rdi
callq 0x2006a
leaq 0x240(%rsp), %rdi
callq 0x161f6
leaq 0x808(%rsp), %rdi
callq 0x2006a
movq 0x230(%rsp), %rax
testq %rax, %rax
je 0x10ebb
leaq 0x220(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1d8(%rsp), %rdi
callq 0x161f6
leaq 0x190(%rsp), %r14
movq %r14, %rdi
callq 0x2531a
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x10ef3
leaq 0x170(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x128(%rsp), %rdi
callq 0x161f6
leaq 0x5b0(%rsp), %r14
movq %r14, %rdi
callq 0x2531a
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x10f2b
leaq 0x590(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x548(%rsp), %rdi
callq 0x161f6
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
callq 0x161f6
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x10f63
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x78(%rsp), %rdi
callq 0x161f6
leaq 0x288(%rsp), %rdi
callq 0x161f6
movl 0x38(%rsp), %ebp
cmpl $-0x1, %ebp
je 0x10fb5
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x30(%rsp), %rcx
movq %rax, (%r14)
movl $0x3, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movq %rcx, 0x10(%r14)
jmp 0x11305
leaq 0xa96f4(%rip), %rsi     # 0xba6b0
leaq 0xa9b7d(%rip), %rdx     # 0xbab40
leaq 0x5f8(%rsp), %rdi
callq 0x2f548
leaq 0xa96d9(%rip), %rdx     # 0xba6b0
leaq 0x2d0(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x2f3aa
leaq 0x808(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movq %rbx, %rdx
callq 0x201ce
movq 0x3d8(%rsp), %rax
testq %rax, %rax
je 0x11023
leaq 0x3c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x380(%rsp), %rdi
callq 0x161f6
leaq 0x338(%rsp), %r14
movq %r14, %rdi
callq 0x279de
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x1105b
leaq 0x318(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2d0(%rsp), %rdi
callq 0x161f6
leaq 0x660(%rsp), %r14
movq %r14, %rdi
callq 0x279de
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x11093
leaq 0x640(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x5f8(%rsp), %rdi
callq 0x161f6
movl 0x830(%rsp), %ebp
cmpl $-0x1, %ebp
je 0x110e1
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x828(%rsp), %rcx
movq %rax, (%r14)
movl $0x2, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movq %rcx, 0x10(%r14)
jmp 0x112e4
leaq 0xa95c8(%rip), %rsi     # 0xba6b0
leaq 0xa9ff1(%rip), %rdx     # 0xbb0e0
leaq 0x5f8(%rsp), %rdi
callq 0x2f832
leaq 0xa95ad(%rip), %rdx     # 0xba6b0
leaq 0x2d0(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x2f636
leaq 0x128(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movq %rbx, %rdx
callq 0x205c6
movq 0x3d8(%rsp), %rax
testq %rax, %rax
je 0x1114f
leaq 0x3c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x380(%rsp), %rdi
callq 0x161f6
leaq 0x338(%rsp), %r14
movq %r14, %rdi
callq 0x2f920
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x11187
leaq 0x318(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2d0(%rsp), %rdi
callq 0x161f6
leaq 0x660(%rsp), %r14
movq %r14, %rdi
callq 0x2f920
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x111bf
leaq 0x640(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x5f8(%rsp), %rdi
callq 0x161f6
movl 0x150(%rsp), %ebp
cmpl $-0x1, %ebp
je 0x1120d
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x148(%rsp), %rcx
movq %rax, (%r14)
movl $0x4, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movq %rcx, 0x10(%r14)
jmp 0x112c3
leaq 0xa949c(%rip), %rsi     # 0xba6b0
leaq 0xa996d(%rip), %rdx     # 0xbab88
leaq 0x5f8(%rsp), %rdi
callq 0x2fafc
leaq 0xa9481(%rip), %rdx     # 0xba6b0
leaq 0x2d0(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x2f95e
leaq 0x78(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movq %rbx, %rdx
callq 0x209be
leaq 0x2d0(%rsp), %rdi
callq 0x20d20
leaq 0x5f8(%rsp), %rdi
callq 0x20d80
movl $0x28, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x88(%rsp), %rcx
movq 0x10(%rcx), %rdx
movq %rax, (%r14)
movl $0x1, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movq %rdx, 0x10(%r14)
movl 0x18(%rcx), %ebp
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x112c3
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x112e4
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x818(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11305
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11320
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1133b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5260
movl %ebp, %eax
movq %r14, %rdx
addq $0x9d0, %rsp            # imm = 0x9D0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1139f
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x1139f
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x20d20
jmp 0x1138b
movq %rax, %rbx
leaq 0x5f8(%rsp), %rdi
callq 0x20d80
jmp 0x1139f
jmp 0x1139c
movq %rax, %rbx
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x113fa
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x113fa
jmp 0x11554
jmp 0x11554
jmp 0x11554
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x20928
jmp 0x113e6
movq %rax, %rbx
leaq 0x5f8(%rsp), %rdi
callq 0x20988
jmp 0x113fa
jmp 0x113f7
movq %rax, %rbx
leaq 0x818(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11455
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x11455
jmp 0x11554
jmp 0x11554
jmp 0x11554
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x20530
jmp 0x11441
movq %rax, %rbx
leaq 0x5f8(%rsp), %rdi
callq 0x20590
jmp 0x11455
jmp 0x11452
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11531
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x11531
jmp 0x11554
jmp 0x11554
jmp 0x11554
jmp 0x11554
jmp 0x11554
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x20020
jmp 0x114a7
movq %rax, %rbx
leaq 0x7c0(%rsp), %rdi
callq 0x161f6
leaq 0x5f8(%rsp), %rdi
callq 0x2006a
jmp 0x114c6
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0x161f6
jmp 0x114d8
movq %rax, %rbx
leaq 0x808(%rsp), %rdi
callq 0x2006a
jmp 0x114ea
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x20102
leaq 0x548(%rsp), %rdi
callq 0x20162
leaq 0x78(%rsp), %rdi
callq 0x20198
leaq 0x288(%rsp), %rdi
callq 0x161f6
jmp 0x11531
movq %rax, %rbx
jmp 0x114f7
movq %rax, %rbx
jmp 0x11504
movq %rax, %rbx
jmp 0x1150e
jmp 0x1152e
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x115cb
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x115cb
jmp 0x11554
movq %rax, %rdi
callq 0x253c4
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
callq 0x1fbfe
jmp 0x11571
movq %rax, %rbx
leaq 0x5f8(%rsp), %rdi
callq 0x1fc6a
jmp 0x11583
movq %rax, %rbx
leaq 0x808(%rsp), %rdi
callq 0x1d63a
jmp 0x11595
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
callq 0x161f6
jmp 0x115a7
movq %rax, %rbx
leaq 0x170(%rsp), %rdi
callq 0x2531a
leaq 0x128(%rsp), %rdi
callq 0x161f6
leaq 0x78(%rsp), %rdi
callq 0x161f6
movq %rbx, %rdi
callq 0x53d0
movq %rax, %rbx
jmp 0x115c1