// File: /workspace/github_cpp_makefile_star2_O1/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_for_stmt_fn(input_t*)
pair<int, pl0_ast_for_stmt *> pl0_for_stmt_fn(input_t *text) {
    auto parser = (((spaces >> pl0_string_literal("for") << spaces) >> pl0_identify) + ((spaces >> pl0_string_literal(":=") << spaces) >> pl0_expression))
        + (spaces >> (pl0_string_literal("downto") | pl0_string_literal("to")) << spaces)
        + (pl0_expression + (pl0_string_literal("do") >> pl0_stmt));
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: For Loop Statement" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_for_stmt(
        text->locate(),
        std::get<1>(res).first.first.first,
        std::get<1>(res).first.first.second,
        std::get<1>(res).second.first,
        std::get<1>(res).second.second,
        std::get<1>(res).first.second == "downto" ? new pl0_ast_constv(text->locate(), -1, pl0_ast_constv::INT) : new pl0_ast_constv(text->locate(), 1, pl0_ast_constv::INT)
    ));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1cd8, %rsp           # imm = 0x1CD8
movq %rdi, %r14
leaq 0xa0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x83c1a(%rip), %rsi     # 0x970eb
leaq 0x83c16(%rip), %rdx     # 0x970ee
leaq 0x90(%rsp), %rdi
callq 0x2670a
leaq 0x1d0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xa172
leaq 0xad1af(%rip), %rsi     # 0xc06b0
leaq 0x548(%rsp), %rdi
leaq 0x1d0(%rsp), %rdx
callq 0x2c376
leaq 0xad193(%rip), %rdx     # 0xc06b0
leaq 0x710(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0x2c1d8
leaq 0xad64f(%rip), %rdx     # 0xc0b88
leaq 0x218(%rsp), %rdi
leaq 0x710(%rsp), %rsi
callq 0x33bd2
leaq 0x80(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x83bb6(%rip), %rsi     # 0x97117
leaq 0x83bb1(%rip), %rdx     # 0x97119
leaq 0x70(%rsp), %rdi
callq 0x2670a
leaq 0x188(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xa172
leaq 0xad125(%rip), %rsi     # 0xc06b0
leaq 0x498(%rsp), %rdi
leaq 0x188(%rsp), %rdx
callq 0x2c376
leaq 0xad109(%rip), %rdx     # 0xc06b0
leaq 0x5f8(%rsp), %rdi
leaq 0x498(%rsp), %rsi
callq 0x2c1d8
leaq 0xada45(%rip), %rdx     # 0xc1008
leaq 0xb58(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0x33d00
leaq 0x1280(%rsp), %rdi
leaq 0x218(%rsp), %rsi
leaq 0xb58(%rsp), %rdx
callq 0x33b98
leaq 0x60(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x83aea(%rip), %rsi     # 0x970ef
leaq 0x83ae9(%rip), %rdx     # 0x970f5
leaq 0x50(%rsp), %rdi
callq 0x2670a
leaq 0x140(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xa172
leaq 0x40(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x83aba(%rip), %rsi     # 0x970f3
leaq 0x83ab5(%rip), %rdx     # 0x970f5
leaq 0x30(%rsp), %rdi
callq 0x2670a
leaq 0xf8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xa172
leaq 0x408(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x29304
leaq 0xad030(%rip), %rsi     # 0xc06b0
leaq 0x988(%rsp), %rdi
leaq 0x408(%rsp), %rdx
callq 0x29634
leaq 0xad014(%rip), %rdx     # 0xc06b0
leaq 0x828(%rsp), %rdi
leaq 0x988(%rsp), %rsi
callq 0x29438
movq %r14, 0x8(%rsp)
leaq 0xcb8(%rsp), %rdi
leaq 0x1280(%rsp), %rsi
leaq 0x828(%rsp), %rdx
callq 0x33b3c
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x83a13(%rip), %rsi     # 0x970f6
leaq 0x83a0e(%rip), %rdx     # 0x970f8
leaq 0x10(%rsp), %rdi
callq 0x2670a
leaq 0xb0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xa172
leaq 0xad7db(%rip), %rdx     # 0xc0ee8
leaq 0x378(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x33eb8
leaq 0xad8df(%rip), %rsi     # 0xc1008
leaq 0xa80(%rsp), %rdi
leaq 0x378(%rsp), %rdx
callq 0x33e2e
leaq 0x17e0(%rsp), %rdi
leaq 0xcb8(%rsp), %rsi
leaq 0xa80(%rsp), %rdx
callq 0x335dc
leaq 0xac8(%rsp), %r14
leaq 0xb10(%rsp), %rdi
callq 0x32356
movq %r14, %rdi
callq 0x191e0
leaq 0xa80(%rsp), %rdi
callq 0x26654
leaq 0x3c0(%rsp), %rdi
callq 0x32356
leaq 0x378(%rsp), %rdi
callq 0x191e0
leaq 0xb0(%rsp), %rdi
callq 0x191e0
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x137c3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
movq 0x10c8(%rsp), %rax
testq %rax, %rax
je 0x137e2
leaq 0x10b8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1070(%rsp), %rdi
callq 0x161e0
leaq 0xfe0(%rsp), %r14
leaq 0x1028(%rsp), %r15
movq %r15, %rdi
callq 0x191e0
movq %r14, %rdi
callq 0x191e0
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x1382a
leaq 0xfc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xf78(%rsp), %rdi
callq 0x161e0
leaq 0xcb8(%rsp), %rdi
callq 0x23e4e
movq 0x978(%rsp), %rax
testq %rax, %rax
je 0x13863
leaq 0x968(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x920(%rsp), %rdi
callq 0x161e0
leaq 0x890(%rsp), %r14
leaq 0x8d8(%rsp), %r15
movq %r15, %rdi
callq 0x191e0
movq %r14, %rdi
callq 0x191e0
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x138ab
leaq 0x870(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x828(%rsp), %rdi
callq 0x161e0
leaq 0x9f0(%rsp), %r14
leaq 0xa38(%rsp), %r15
movq %r15, %rdi
callq 0x191e0
movq %r14, %rdi
callq 0x191e0
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x138f3
leaq 0x9d0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x988(%rsp), %rdi
callq 0x161e0
leaq 0x450(%rsp), %rdi
callq 0x191e0
leaq 0x408(%rsp), %rdi
callq 0x191e0
leaq 0xf8(%rsp), %rdi
callq 0x191e0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
movq 0x8(%rsp), %r15
je 0x13943
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x140(%rsp), %rdi
callq 0x191e0
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13967
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1280(%rsp), %rdi
callq 0x23e4e
leaq 0xc70(%rsp), %r14
movq %r14, %rdi
callq 0x26654
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x1399f
leaq 0xc50(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xc08(%rsp), %rdi
callq 0x161e0
leaq 0xbc0(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x139d7
leaq 0xba0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xb58(%rsp), %rdi
callq 0x161e0
movq 0x700(%rsp), %rax
testq %rax, %rax
je 0x13a03
leaq 0x6f0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x6a8(%rsp), %rdi
callq 0x161e0
leaq 0x660(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13a3b
leaq 0x640(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x5f8(%rsp), %rdi
callq 0x161e0
leaq 0x500(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13a73
leaq 0x4e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x498(%rsp), %rdi
callq 0x161e0
leaq 0x188(%rsp), %rdi
callq 0x191e0
movq 0x70(%rsp), %rdi
cmpq %r13, %rdi
je 0x13aa7
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x330(%rsp), %r14
movq %r14, %rdi
callq 0x2ab4e
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13ad2
leaq 0x310(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2c8(%rsp), %rdi
callq 0x161e0
leaq 0x280(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13b0a
leaq 0x260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x218(%rsp), %rdi
callq 0x161e0
movq 0x818(%rsp), %rax
testq %rax, %rax
je 0x13b36
leaq 0x808(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x7c0(%rsp), %rdi
callq 0x161e0
leaq 0x778(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13b6e
leaq 0x758(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x710(%rsp), %rdi
callq 0x161e0
leaq 0x5b0(%rsp), %r14
movq %r14, %rdi
callq 0x191e0
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13ba6
leaq 0x590(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x548(%rsp), %rdi
callq 0x161e0
leaq 0x1d0(%rsp), %rdi
callq 0x191e0
movq 0x90(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13bdd
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xacacc(%rip), %rsi     # 0xc06b0
leaq 0x1280(%rsp), %rdi
leaq 0x17e0(%rsp), %rdx
callq 0x341b6
leaq 0xacab0(%rip), %rdx     # 0xc06b0
leaq 0xcb8(%rsp), %rdi
leaq 0x1280(%rsp), %rsi
callq 0x33f86
leaq 0x218(%rsp), %rdi
leaq 0xcb8(%rsp), %rsi
movq %r15, %rdx
callq 0x24000
movq 0x1270(%rsp), %rax
testq %rax, %rax
je 0x13c4c
leaq 0x1260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1218(%rsp), %rdi
callq 0x161e0
leaq 0xd20(%rsp), %r14
movq %r14, %rdi
callq 0x2469c
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13c84
leaq 0xd00(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xcb8(%rsp), %rdi
callq 0x161e0
leaq 0x12e8(%rsp), %r14
movq %r14, %rdi
callq 0x2469c
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13cbc
leaq 0x12c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1280(%rsp), %rdi
callq 0x161e0
movl $0x40, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%r15), %rbx
leaq 0x248(%rsp), %rdi
movq -0x10(%rdi), %r15
movq -0x8(%rdi), %r12
movq 0x20(%rdi), %r13
movq 0x28(%rdi), %rbp
leaq 0x833f6(%rip), %rsi     # 0x970ef
callq 0x50c0
testl %eax, %eax
je 0x13d13
movl $0x10, %edi
callq 0x5250
movl $0x1, %ecx
jmp 0x13d22
movl $0x10, %edi
callq 0x5250
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq 0x8(%rsp), %rdx
movq 0x8(%rdx), %rdx
movq %rdx, (%rax)
movl %ecx, 0x8(%rax)
movl $0x0, 0xc(%rax)
movq %rbx, 0x8(%r14)
movl $0x8, 0x10(%r14)
leaq 0xab555(%rip), %rcx     # 0xbf2a0
movq %rcx, (%r14)
movq %r15, 0x18(%r14)
movq %r12, 0x20(%r14)
movq %r13, 0x28(%r14)
movq %rbp, 0x30(%r14)
movq %rax, 0x38(%r14)
leaq 0x258(%rsp), %rax
movl 0x20(%rax), %ebx
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13d86
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x228(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13da7
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x17e0(%rsp), %rdi
callq 0x2469c
movl %ebx, %eax
movq %r14, %rdx
addq $0x1cd8, %rsp           # imm = 0x1CD8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
jmp 0x13ded
movq %rax, %rdi
callq 0x266fe
movq %rax, 0x8(%rsp)
movl $0x40, %esi
movq %r14, %rdi
callq 0x5260
jmp 0x13e0e
movq %rax, 0x8(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x24666
jmp 0x13e4a
movq %rax, 0x8(%rsp)
leaq 0xcb8(%rsp), %rdi
callq 0x245d0
jmp 0x13e36
movq %rax, 0x8(%rsp)
leaq 0x1280(%rsp), %rdi
callq 0x24630
jmp 0x13e4a
movq %rax, 0x8(%rsp)
leaq 0x17e0(%rsp), %rdi
callq 0x2469c
jmp 0x13ffd
movq %rax, 0x8(%rsp)
leaq 0xa80(%rsp), %rdi
callq 0x23d92
jmp 0x13e75
movq %rax, 0x8(%rsp)
leaq 0x3c0(%rsp), %rdi
callq 0x32356
leaq 0x378(%rsp), %rdi
callq 0x191e0
jmp 0x13e96
movq %rax, 0x8(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x191e0
jmp 0x13eaa
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x13ec8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x13ec8
movq %rax, 0x8(%rsp)
leaq 0xcb8(%rsp), %rdi
callq 0x23dc0
leaq 0x828(%rsp), %rdi
callq 0x19756
leaq 0x988(%rsp), %rdi
callq 0x197ce
leaq 0x450(%rsp), %rdi
callq 0x191e0
leaq 0x408(%rsp), %rdi
callq 0x191e0
leaq 0xf8(%rsp), %rdi
callq 0x191e0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x13f2d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x140(%rsp), %rdi
callq 0x191e0
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13f51
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1280(%rsp), %rdi
callq 0x23e4e
leaq 0xb58(%rsp), %rdi
callq 0x23f28
leaq 0x5f8(%rsp), %rdi
callq 0x1bfb2
leaq 0x498(%rsp), %rdi
callq 0x1c012
leaq 0x188(%rsp), %rdi
callq 0x191e0
movq 0x70(%rsp), %rdi
cmpq %r13, %rdi
je 0x13fac
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x218(%rsp), %rdi
callq 0x23f94
leaq 0x710(%rsp), %rdi
callq 0x1bfb2
leaq 0x548(%rsp), %rdi
callq 0x1c012
leaq 0x1d0(%rsp), %rdi
callq 0x191e0
movq 0x90(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13ffd
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5260
movq 0x8(%rsp), %rdi
callq 0x53d0
movq %rax, 0x8(%rsp)
jmp 0x13ed5
movq %rax, 0x8(%rsp)
jmp 0x13ee2
movq %rax, 0x8(%rsp)
jmp 0x13eef
movq %rax, 0x8(%rsp)
jmp 0x13f09
movq %rax, 0x8(%rsp)
jmp 0x13f16
movq %rax, 0x8(%rsp)
jmp 0x13f2d
movq %rax, 0x8(%rsp)
jmp 0x13f3a
movq %rax, 0x8(%rsp)
jmp 0x13f51
movq %rax, 0x8(%rsp)
jmp 0x13f5e
movq %rax, 0x8(%rsp)
jmp 0x13f6b
movq %rax, 0x8(%rsp)
jmp 0x13f78
movq %rax, 0x8(%rsp)
jmp 0x13f85
movq %rax, 0x8(%rsp)
jmp 0x13f92
movq %rax, 0x8(%rsp)
jmp 0x13fac
movq %rax, 0x8(%rsp)
jmp 0x13fb9
movq %rax, 0x8(%rsp)
jmp 0x13fc6
movq %rax, 0x8(%rsp)
jmp 0x13fd3
movq %rax, 0x8(%rsp)
jmp 0x13fe0
movq %rax, 0x8(%rsp)
jmp 0x13ffd