// File: /workspace/github_cpp_makefile_star2_O3/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 $0x1ce8, %rsp           # imm = 0x1CE8
movq %rdi, %r13
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x7dbc8(%rip), %rsi     # 0x910eb
leaq 0x7dbc4(%rip), %rdx     # 0x910ee
movq %rsp, %rdi
callq 0x253d0
leaq 0x1e0(%rsp), %rdi
movq %rsp, %rsi
callq 0xa299
leaq 0xa7167(%rip), %rsi     # 0xba6b0
leaq 0x558(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
callq 0x2afb2
leaq 0xa714b(%rip), %rdx     # 0xba6b0
leaq 0x720(%rsp), %rdi
leaq 0x558(%rsp), %rsi
callq 0x2ae14
leaq 0xa7607(%rip), %rdx     # 0xbab88
leaq 0x228(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x3282e
leaq 0x90(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x7db6e(%rip), %rsi     # 0x91117
leaq 0x7db69(%rip), %rdx     # 0x91119
leaq 0x80(%rsp), %rdi
callq 0x253d0
leaq 0x198(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xa299
leaq 0xa70d7(%rip), %rsi     # 0xba6b0
leaq 0x4a8(%rsp), %rdi
leaq 0x198(%rsp), %rdx
callq 0x2afb2
leaq 0xa70bb(%rip), %rdx     # 0xba6b0
leaq 0x608(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
callq 0x2ae14
leaq 0xa79f7(%rip), %rdx     # 0xbb008
leaq 0xb68(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0x3295c
leaq 0x1290(%rsp), %rdi
leaq 0x228(%rsp), %rsi
leaq 0xb68(%rsp), %rdx
callq 0x327f4
leaq 0x70(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x7da9b(%rip), %rsi     # 0x910ef
leaq 0x7da9a(%rip), %rdx     # 0x910f5
leaq 0x60(%rsp), %rdi
callq 0x253d0
leaq 0x150(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xa299
leaq 0x50(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x7da6c(%rip), %rsi     # 0x910f3
leaq 0x7da67(%rip), %rdx     # 0x910f5
leaq 0x40(%rsp), %rdi
callq 0x253d0
leaq 0x108(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xa299
leaq 0x418(%rsp), %rdi
leaq 0x150(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x27f78
leaq 0xa6fe2(%rip), %rsi     # 0xba6b0
leaq 0x998(%rsp), %rdi
leaq 0x418(%rsp), %rdx
callq 0x282a0
leaq 0xa6fc6(%rip), %rdx     # 0xba6b0
leaq 0x838(%rsp), %rdi
leaq 0x998(%rsp), %rsi
callq 0x280a4
leaq 0xcc8(%rsp), %rdi
leaq 0x1290(%rsp), %rsi
leaq 0x838(%rsp), %rdx
callq 0x32798
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7d9ca(%rip), %rsi     # 0x910f6
leaq 0x7d9c5(%rip), %rdx     # 0x910f8
leaq 0x20(%rsp), %rdi
callq 0x253d0
leaq 0xc0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xa299
leaq 0xa7792(%rip), %rdx     # 0xbaee8
leaq 0x388(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x32b14
leaq 0xa7896(%rip), %rsi     # 0xbb008
leaq 0xa90(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x32a8a
leaq 0x17f0(%rsp), %rdi
leaq 0xcc8(%rsp), %rsi
leaq 0xa90(%rsp), %rdx
callq 0x32238
leaq 0xad8(%rsp), %r14
leaq 0xb20(%rsp), %rdi
callq 0x30f18
movq %r14, %rdi
callq 0x18eaa
leaq 0xa90(%rsp), %rdi
callq 0x2531a
leaq 0x3d0(%rsp), %rdi
callq 0x30f18
leaq 0x388(%rsp), %rdi
callq 0x18eaa
leaq 0xc0(%rsp), %rdi
callq 0x18eaa
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x1380c
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5260
movq 0x10d8(%rsp), %rax
testq %rax, %rax
je 0x1382b
leaq 0x10c8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1080(%rsp), %rdi
callq 0x161f6
leaq 0xff0(%rsp), %r14
leaq 0x1038(%rsp), %r15
movq %r15, %rdi
callq 0x18eaa
movq %r14, %rdi
callq 0x18eaa
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x13873
leaq 0xfd0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xf88(%rsp), %rdi
callq 0x161f6
leaq 0xcc8(%rsp), %rdi
callq 0x22d96
movq 0x988(%rsp), %rax
testq %rax, %rax
je 0x138ac
leaq 0x978(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x930(%rsp), %rdi
callq 0x161f6
leaq 0x8a0(%rsp), %r14
leaq 0x8e8(%rsp), %r15
movq %r15, %rdi
callq 0x18eaa
movq %r14, %rdi
callq 0x18eaa
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x138f4
leaq 0x880(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x838(%rsp), %rdi
callq 0x161f6
leaq 0xa00(%rsp), %r14
leaq 0xa48(%rsp), %r15
movq %r15, %rdi
callq 0x18eaa
movq %r14, %rdi
callq 0x18eaa
movq -0x58(%r15), %rax
testq %rax, %rax
je 0x1393c
leaq 0x9e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x998(%rsp), %rdi
callq 0x161f6
leaq 0x460(%rsp), %rdi
callq 0x18eaa
leaq 0x418(%rsp), %rdi
callq 0x18eaa
leaq 0x108(%rsp), %rdi
callq 0x18eaa
movq 0x40(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13987
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x150(%rsp), %rdi
callq 0x18eaa
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x139ab
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1290(%rsp), %rdi
callq 0x22d96
leaq 0xc80(%rsp), %r14
movq %r14, %rdi
callq 0x2531a
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x139e3
leaq 0xc60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xc18(%rsp), %rdi
callq 0x161f6
leaq 0xbd0(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13a1b
leaq 0xbb0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xb68(%rsp), %rdi
callq 0x161f6
movq 0x710(%rsp), %rax
testq %rax, %rax
je 0x13a47
leaq 0x700(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x6b8(%rsp), %rdi
callq 0x161f6
leaq 0x670(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13a7f
leaq 0x650(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x608(%rsp), %rdi
callq 0x161f6
leaq 0x510(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13ab7
leaq 0x4f0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x4a8(%rsp), %rdi
callq 0x161f6
leaq 0x198(%rsp), %rdi
callq 0x18eaa
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13aee
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x340(%rsp), %r14
movq %r14, %rdi
callq 0x297aa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13b19
leaq 0x320(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x2d8(%rsp), %rdi
callq 0x161f6
leaq 0x290(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13b51
leaq 0x270(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x228(%rsp), %rdi
callq 0x161f6
movq 0x828(%rsp), %rax
testq %rax, %rax
je 0x13b7d
leaq 0x818(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x7d0(%rsp), %rdi
callq 0x161f6
leaq 0x788(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13bb5
leaq 0x768(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x720(%rsp), %rdi
callq 0x161f6
leaq 0x5c0(%rsp), %r14
movq %r14, %rdi
callq 0x18eaa
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13bed
leaq 0x5a0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x558(%rsp), %rdi
callq 0x161f6
leaq 0x1e0(%rsp), %rdi
callq 0x18eaa
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x13c22
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0xa6a87(%rip), %rsi     # 0xba6b0
leaq 0x1290(%rsp), %rdi
leaq 0x17f0(%rsp), %rdx
callq 0x32e12
leaq 0xa6a6b(%rip), %rdx     # 0xba6b0
leaq 0xcc8(%rsp), %rdi
leaq 0x1290(%rsp), %rsi
callq 0x32be2
leaq 0x228(%rsp), %rdi
leaq 0xcc8(%rsp), %rsi
movq %r13, %rdx
callq 0x22f48
movq 0x1280(%rsp), %rax
testq %rax, %rax
je 0x13c91
leaq 0x1270(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1228(%rsp), %rdi
callq 0x161f6
leaq 0xd30(%rsp), %r14
movq %r14, %rdi
callq 0x235e4
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13cc9
leaq 0xd10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xcc8(%rsp), %rdi
callq 0x161f6
leaq 0x12f8(%rsp), %r14
movq %r14, %rdi
callq 0x235e4
movq -0x10(%r14), %rax
testq %rax, %rax
je 0x13d01
leaq 0x12d8(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x1290(%rsp), %rdi
callq 0x161f6
movl $0x40, %edi
callq 0x5250
movq %rax, %r14
movq 0x8(%r13), %r15
leaq 0x258(%rsp), %rdi
movups -0x10(%rdi), %xmm0
movaps %xmm0, 0xb0(%rsp)
movups 0x20(%rdi), %xmm0
movaps %xmm0, 0xa0(%rsp)
leaq 0x7d3a9(%rip), %rsi     # 0x910ef
callq 0x50c0
testl %eax, %eax
je 0x13d60
movl $0x10, %edi
callq 0x5250
movl $0x1, %ecx
jmp 0x13d6f
movl $0x10, %edi
callq 0x5250
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movq 0x8(%r13), %rdx
movq %rdx, (%rax)
movl %ecx, 0x8(%rax)
movl $0x0, 0xc(%rax)
movq %r15, 0x8(%r14)
movl $0x8, 0x10(%r14)
leaq 0xa550d(%rip), %rcx     # 0xb92a0
movq %rcx, (%r14)
movaps 0xb0(%rsp), %xmm0
movups %xmm0, 0x18(%r14)
movaps 0xa0(%rsp), %xmm0
movups %xmm0, 0x28(%r14)
movq %rax, 0x38(%r14)
leaq 0x268(%rsp), %rax
movl 0x20(%rax), %ebx
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13dd8
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x238(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13df9
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x17f0(%rsp), %rdi
callq 0x235e4
movl %ebx, %eax
movq %r14, %rdx
addq $0x1ce8, %rsp           # imm = 0x1CE8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
jmp 0x13e3f
movq %rax, %rdi
callq 0x253c4
movq %rax, %r13
movl $0x40, %esi
movq %r14, %rdi
callq 0x5260
jmp 0x13e5c
movq %rax, %r13
leaq 0x228(%rsp), %rdi
callq 0x235ae
jmp 0x13e92
movq %rax, %r13
leaq 0xcc8(%rsp), %rdi
callq 0x23518
jmp 0x13e80
movq %rax, %r13
leaq 0x1290(%rsp), %rdi
callq 0x23578
jmp 0x13e92
movq %rax, %r13
leaq 0x17f0(%rsp), %rdi
callq 0x235e4
jmp 0x1403c
movq %rax, %r13
leaq 0xa90(%rsp), %rdi
callq 0x22cda
jmp 0x13eb9
movq %rax, %r13
leaq 0x3d0(%rsp), %rdi
callq 0x30f18
leaq 0x388(%rsp), %rdi
callq 0x18eaa
jmp 0x13ed8
movq %rax, %r13
leaq 0xc0(%rsp), %rdi
callq 0x18eaa
jmp 0x13eea
movq %rax, %r13
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x13f06
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5260
jmp 0x13f06
movq %rax, %r13
leaq 0xcc8(%rsp), %rdi
callq 0x22d08
leaq 0x838(%rsp), %rdi
callq 0x19420
leaq 0x998(%rsp), %rdi
callq 0x19498
leaq 0x460(%rsp), %rdi
callq 0x18eaa
leaq 0x418(%rsp), %rdi
callq 0x18eaa
leaq 0x108(%rsp), %rdi
callq 0x18eaa
movq 0x40(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13f6b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x150(%rsp), %rdi
callq 0x18eaa
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x13f8f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x1290(%rsp), %rdi
callq 0x22d96
leaq 0xb68(%rsp), %rdi
callq 0x22e70
leaq 0x608(%rsp), %rdi
callq 0x1b9bc
leaq 0x4a8(%rsp), %rdi
callq 0x1ba1c
leaq 0x198(%rsp), %rdi
callq 0x18eaa
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13fed
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x5260
leaq 0x228(%rsp), %rdi
callq 0x22edc
leaq 0x720(%rsp), %rdi
callq 0x1b9bc
leaq 0x558(%rsp), %rdi
callq 0x1ba1c
leaq 0x1e0(%rsp), %rdi
callq 0x18eaa
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1403c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5260
movq %r13, %rdi
callq 0x53d0
movq %rax, %r13
jmp 0x13f13
movq %rax, %r13
jmp 0x13f20
movq %rax, %r13
jmp 0x13f2d
movq %rax, %r13
jmp 0x13f47
movq %rax, %r13
jmp 0x13f54
movq %rax, %r13
jmp 0x13f6b
movq %rax, %r13
jmp 0x13f78
movq %rax, %r13
jmp 0x13f8f
movq %rax, %r13
jmp 0x13f9c
movq %rax, %r13
jmp 0x13fa9
movq %rax, %r13
jmp 0x13fb6
movq %rax, %r13
jmp 0x13fc3
movq %rax, %r13
jmp 0x13fd0
movq %rax, %r13
jmp 0x13fed
movq %rax, %r13
jmp 0x13ffa
movq %rax, %r13
jmp 0x14007
movq %rax, %r13
jmp 0x14014
movq %rax, %r13
jmp 0x14021
movq %rax, %r13
jmp 0x1403c