// File: /workspace/github_cpp_makefile_star2_O2/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 %r15
pushq %r14
pushq %rbx
subq $0x1d00, %rsp           # imm = 0x1D00
movq %rdi, %rbx
leaq 0x4b16b(%rip), %rsi     # 0x590eb
leaq 0xb8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xfa26
leaq 0x1f8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x840a
leaq 0x7d72a(%rip), %rsi     # 0x8b6d8
leaq 0x410(%rsp), %rdi
leaq 0x1f8(%rsp), %rdx
callq 0x1923c
leaq 0x7d70e(%rip), %rdx     # 0x8b6d8
leaq 0x908(%rsp), %rdi
leaq 0x410(%rsp), %rsi
callq 0x191c8
leaq 0x7dbca(%rip), %rdx     # 0x8bbb0
leaq 0x4c0(%rsp), %rdi
leaq 0x908(%rsp), %rsi
callq 0x1c3d8
leaq 0x4b115(%rip), %rsi     # 0x59117
leaq 0x98(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xfa26
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x840a
leaq 0x7d6a8(%rip), %rsi     # 0x8b6d8
leaq 0x360(%rsp), %rdi
leaq 0x1b0(%rsp), %rdx
callq 0x1923c
leaq 0x7d68c(%rip), %rdx     # 0x8b6d8
leaq 0x7f0(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0x191c8
leaq 0x7dfc8(%rip), %rdx     # 0x8c030
leaq 0xb80(%rsp), %rdi
leaq 0x7f0(%rsp), %rsi
callq 0x1c412
leaq 0xce0(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
leaq 0xb80(%rsp), %rdx
callq 0x1c39e
leaq 0x4b04e(%rip), %rsi     # 0x590ef
leaq 0x78(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0xfa26
leaq 0x168(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x840a
leaq 0x4b02a(%rip), %rsi     # 0x590f3
leaq 0x58(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0xfa26
leaq 0x120(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x840a
leaq 0x2d0(%rsp), %rdi
leaq 0x168(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0x17d36
leaq 0x7d5ca(%rip), %rsi     # 0x8b6d8
leaq 0x6f8(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0x17eae
leaq 0x7d5ae(%rip), %rdx     # 0x8b6d8
leaq 0xa20(%rsp), %rdi
leaq 0x6f8(%rsp), %rsi
callq 0x17e00
leaq 0x1240(%rsp), %rdi
leaq 0xce0(%rsp), %rsi
leaq 0xa20(%rsp), %rdx
callq 0x1c364
leaq 0x4af93(%rip), %rsi     # 0x590f6
leaq 0x38(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0xfa26
leaq 0xd8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x840a
leaq 0x7dd85(%rip), %rdx     # 0x8bf10
leaq 0x240(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1c482
leaq 0x7de89(%rip), %rsi     # 0x8c030
leaq 0x620(%rsp), %rdi
leaq 0x240(%rsp), %rdx
callq 0x1c44c
leaq 0x1808(%rsp), %rdi
leaq 0x1240(%rsp), %rsi
leaq 0x620(%rsp), %rdx
callq 0x1c180
leaq 0x620(%rsp), %rdi
callq 0x1595c
leaq 0x240(%rsp), %rdi
callq 0x15972
leaq 0xd8(%rsp), %rdi
callq 0x11074
leaq 0x38(%rsp), %rdi
callq 0x5120
leaq 0x1240(%rsp), %rdi
callq 0x15988
leaq 0xa20(%rsp), %rdi
callq 0x11296
leaq 0x6f8(%rsp), %rdi
callq 0x112b0
leaq 0x2d0(%rsp), %rdi
callq 0x112c6
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x58(%rsp), %rdi
callq 0x5120
leaq 0x168(%rsp), %rdi
callq 0x11074
leaq 0x78(%rsp), %rdi
callq 0x5120
leaq 0xce0(%rsp), %rdi
callq 0x159a2
leaq 0xb80(%rsp), %rdi
callq 0x159bc
leaq 0x7f0(%rsp), %rdi
callq 0x12312
leaq 0x360(%rsp), %rdi
callq 0x1232c
leaq 0x1b0(%rsp), %rdi
callq 0x11074
leaq 0x98(%rsp), %rdi
callq 0x5120
leaq 0x4c0(%rsp), %rdi
callq 0x159d6
leaq 0x908(%rsp), %rdi
callq 0x12312
leaq 0x410(%rsp), %rdi
callq 0x1232c
leaq 0x1f8(%rsp), %rdi
callq 0x11074
leaq 0xb8(%rsp), %rdi
callq 0x5120
leaq 0x7d3d6(%rip), %rsi     # 0x8b6d8
leaq 0xce0(%rsp), %rdi
leaq 0x1808(%rsp), %rdx
callq 0x1c56a
leaq 0x7d3ba(%rip), %rdx     # 0x8b6d8
leaq 0x1240(%rsp), %rdi
leaq 0xce0(%rsp), %rsi
callq 0x1c4b8
leaq 0x4c0(%rsp), %rdi
leaq 0x1240(%rsp), %rsi
movq %rbx, %rdx
callq 0x159f0
leaq 0x1240(%rsp), %rdi
callq 0x15c22
leaq 0xce0(%rsp), %rdi
callq 0x15c3c
pushq $0x40
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %r15
leaq 0x4f0(%rsp), %rdi
movups -0x10(%rdi), %xmm0
movaps %xmm0, 0x20(%rsp)
movups 0x20(%rdi), %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0x4ad5a(%rip), %rsi     # 0x590ef
callq 0x15c52
testb %al, %al
je 0xe3aa
pushq $0x10
popq %rdi
callq 0x5260
pushq $-0x1
jmp 0xe3b4
pushq $0x10
popq %rdi
callq 0x5260
pushq $0x1
popq %rcx
movq 0x8(%rbx), %rdx
movq %rdx, (%rax)
movl %ecx, 0x8(%rax)
andl $0x0, 0xc(%rax)
movq %r15, 0x8(%r14)
movl $0x8, 0x10(%r14)
leaq 0x7beca(%rip), %rcx     # 0x8a2a0
movq %rcx, (%r14)
movaps 0x20(%rsp), %xmm0
movups %xmm0, 0x18(%r14)
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x28(%r14)
movq %rax, 0x38(%r14)
leaq 0x4c0(%rsp), %rdi
movl 0x60(%rdi), %ebx
callq 0x15c60
leaq 0x1808(%rsp), %rdi
callq 0x15c76
movl %ebx, %eax
movq %r14, %rdx
addq $0x1d00, %rsp           # imm = 0x1D00
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
pushq $0x40
popq %rsi
movq %r14, %rdi
callq 0x5270
jmp 0xe433
movq %rax, %rbx
leaq 0x4c0(%rsp), %rdi
callq 0x15c60
jmp 0xe469
movq %rax, %rbx
leaq 0x1240(%rsp), %rdi
callq 0x15c22
jmp 0xe457
movq %rax, %rbx
leaq 0xce0(%rsp), %rdi
callq 0x15c3c
jmp 0xe469
movq %rax, %rbx
leaq 0x1808(%rsp), %rdi
callq 0x15c76
jmp 0xe5b4
movq %rax, %rbx
leaq 0x620(%rsp), %rdi
callq 0x1595c
jmp 0xe490
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0x15972
jmp 0xe4a2
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x11074
jmp 0xe4b4
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x5120
jmp 0xe4c3
movq %rax, %rbx
leaq 0x1240(%rsp), %rdi
callq 0x15988
leaq 0xa20(%rsp), %rdi
callq 0x11296
leaq 0x6f8(%rsp), %rdi
callq 0x112b0
leaq 0x2d0(%rsp), %rdi
callq 0x112c6
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x58(%rsp), %rdi
callq 0x5120
leaq 0x168(%rsp), %rdi
callq 0x11074
leaq 0x78(%rsp), %rdi
callq 0x5120
leaq 0xce0(%rsp), %rdi
callq 0x159a2
leaq 0xb80(%rsp), %rdi
callq 0x159bc
leaq 0x7f0(%rsp), %rdi
callq 0x12312
leaq 0x360(%rsp), %rdi
callq 0x1232c
leaq 0x1b0(%rsp), %rdi
callq 0x11074
leaq 0x98(%rsp), %rdi
callq 0x5120
leaq 0x4c0(%rsp), %rdi
callq 0x159d6
leaq 0x908(%rsp), %rdi
callq 0x12312
leaq 0x410(%rsp), %rdi
callq 0x1232c
leaq 0x1f8(%rsp), %rdi
callq 0x11074
leaq 0xb8(%rsp), %rdi
callq 0x5120
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbx
jmp 0xe4d0
movq %rax, %rbx
jmp 0xe4dd
movq %rax, %rbx
jmp 0xe4ea
movq %rax, %rbx
jmp 0xe4f7
movq %rax, %rbx
jmp 0xe504
movq %rax, %rbx
jmp 0xe50e
movq %rax, %rbx
jmp 0xe51b
movq %rax, %rbx
jmp 0xe525
movq %rax, %rbx
jmp 0xe532
movq %rax, %rbx
jmp 0xe53f
movq %rax, %rbx
jmp 0xe54c
movq %rax, %rbx
jmp 0xe559
movq %rax, %rbx
jmp 0xe566
movq %rax, %rbx
jmp 0xe573
movq %rax, %rbx
jmp 0xe580
movq %rax, %rbx
jmp 0xe58d
movq %rax, %rbx
jmp 0xe59a
movq %rax, %rbx
jmp 0xe5a7
movq %rax, %rbx
jmp 0xe5b4