// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_write_stmt_fn(input_t*)
pair<int, pl0_ast_write_stmt *> pl0_write_stmt_fn(input_t *text) {
    pair<int, pl0_ast_write_stmt *> ans;
    auto parser1 = pl0_charseq + (pl0_character(',') >> pl0_expression);
    auto parser2 = pl0_charseq;
    auto parser3 = pl0_expression;
    auto res1 = (spaces >> (pl0_string_literal("write") >> spaces >> pl0_character('(') >> parser1 << pl0_character(')')) << spaces)(text);
    if (std::get<0>(res1) != -1) {
        ans = make_pair(std::get<0>(res1), new pl0_ast_write_stmt(text->locate(), std::get<1>(res1).first, std::get<1>(res1).second));
    }
    else {
        auto res2 = (spaces >> (pl0_string_literal("write") >> spaces >> pl0_character('(') >> parser2 << pl0_character(')')) << spaces)(text);
        if (std::get<0>(res2) != -1) {
            ans = make_pair(std::get<0>(res2), new pl0_ast_write_stmt(text->locate(), std::get<1>(res2)));
        }
        else {
            auto res3 = (spaces >> (pl0_string_literal("write") >> spaces >> pl0_character('(') >> parser3 << pl0_character(')')) << spaces)(text);
            ans = make_pair(std::get<0>(res3), new pl0_ast_write_stmt(text->locate(), std::get<1>(res3)));
        }
    }
    if (verbose) {
        cout << "parsing: Write Statement" << endl;
    }
    return ans;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0xe00, %rsp            # imm = 0xE00
movq %rdi, %rbx
leaq 0x5a8(%rsp), %rsi
movb $0x2c, (%rsi)
leaq 0x7c0(%rsp), %r14
movq %r14, %rdi
callq 0x818c
leaq 0x7d0fa(%rip), %rdx     # 0x8c030
leaq 0xa40(%rsp), %rdi
movq %r14, %rsi
callq 0x1a284
leaq 0x7cbd3(%rip), %rsi     # 0x8bb20
leaq 0xd28(%rsp), %rdi
leaq 0xa40(%rsp), %rdx
callq 0x1cb7c
leaq 0xa40(%rsp), %rdi
callq 0x13140
leaq 0x7c0(%rsp), %rdi
callq 0xfaa6
leaq 0x7cb9d(%rip), %rsi     # 0x8bb20
leaq 0x298(%rsp), %rdi
callq 0x16242
leaq 0x7d099(%rip), %rsi     # 0x8c030
leaq 0x250(%rsp), %rdi
callq 0x16290
leaq 0x4a186(%rip), %rsi     # 0x59131
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xfa26
leaq 0x120(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x840a
leaq 0x7c705(%rip), %rdx     # 0x8b6d8
leaq 0x1a0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x18310
leaq 0x10(%rsp), %rsi
movb $0x28, (%rsi)
leaq 0xd8(%rsp), %rdi
callq 0x818c
leaq 0x2e0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1ce50
leaq 0x3d8(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
leaq 0xd28(%rsp), %rdx
callq 0x1ce16
leaq 0xd(%rsp), %rsi
movb $0x29, (%rsi)
leaq 0x90(%rsp), %rdi
callq 0x818c
leaq 0x5a8(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x1cddc
leaq 0x7c668(%rip), %rsi     # 0x8b6d8
leaq 0x7c0(%rsp), %rdi
leaq 0x5a8(%rsp), %rdx
callq 0x1cda6
leaq 0x7c64c(%rip), %rdx     # 0x8b6d8
leaq 0xa40(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
callq 0x1cc3e
leaq 0x168(%rsp), %rdi
leaq 0xa40(%rsp), %rsi
movq %rbx, %rdx
callq 0x162de
leaq 0xa40(%rsp), %rdi
callq 0x16478
leaq 0x7c0(%rsp), %rdi
callq 0x16492
leaq 0x5a8(%rsp), %rdi
callq 0x164a8
leaq 0x90(%rsp), %rdi
callq 0xfaa6
leaq 0x3d8(%rsp), %rdi
callq 0x164c2
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x30(%rsp), %rdi
callq 0x5120
movl 0x198(%rsp), %ebp
cmpl $-0x1, %ebp
je 0xf181
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
movq %rax, 0x8(%r14)
movabsq $0x200000006, %rax      # imm = 0x200000006
movq %rax, 0x10(%r14)
leaq 0x7b214(%rip), %rax     # 0x8a380
movq %rax, (%r14)
movups 0x188(%rsp), %xmm0
movups %xmm0, 0x18(%r14)
jmp 0xf529
leaq 0x49fa9(%rip), %rsi     # 0x59131
leaq 0x60(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xfa26
leaq 0x120(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x840a
leaq 0x7c528(%rip), %rdx     # 0x8b6d8
leaq 0x1a0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x18310
leaq 0xd(%rsp), %rsi
movb $0x28, (%rsi)
leaq 0xd8(%rsp), %rdi
callq 0x818c
leaq 0x2e0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1ce50
leaq 0x3d8(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
leaq 0x298(%rsp), %rdx
callq 0x1cff4
leaq 0xe(%rsp), %rsi
movb $0x29, (%rsi)
leaq 0x90(%rsp), %rdi
callq 0x818c
leaq 0x5a8(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x1cfba
leaq 0x7c48b(%rip), %rsi     # 0x8b6d8
leaq 0x7c0(%rsp), %rdi
leaq 0x5a8(%rsp), %rdx
callq 0x1cf84
leaq 0x7c46f(%rip), %rdx     # 0x8b6d8
leaq 0xa40(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
callq 0x1ce94
leaq 0x30(%rsp), %rdi
leaq 0xa40(%rsp), %rsi
movq %rbx, %rdx
callq 0x164f6
leaq 0xa40(%rsp), %rdi
callq 0x16684
leaq 0x7c0(%rsp), %rdi
callq 0x1669e
leaq 0x5a8(%rsp), %rdi
callq 0x166b4
leaq 0x90(%rsp), %rdi
callq 0xfaa6
leaq 0x3d8(%rsp), %rdi
callq 0x166ce
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x60(%rsp), %rdi
callq 0x5120
movl 0x58(%rsp), %ebp
cmpl $-0x1, %ebp
je 0xf34e
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
movq 0x50(%rsp), %rcx
movq %rax, 0x8(%r14)
movq $0x6, 0x10(%r14)
leaq 0x7b03e(%rip), %rax     # 0x8a380
movq %rax, (%r14)
movq %rcx, 0x18(%r14)
jmp 0xf51f
leaq 0x49ddc(%rip), %rsi     # 0x59131
leaq 0x10(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0xfa26
leaq 0x120(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x840a
leaq 0x7c35b(%rip), %rdx     # 0x8b6d8
leaq 0x1a0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x18310
leaq 0xe(%rsp), %rsi
movb $0x28, (%rsi)
leaq 0xd8(%rsp), %rdi
callq 0x818c
leaq 0x2e0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1ce50
leaq 0x3d8(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
leaq 0x250(%rsp), %rdx
callq 0x1d18e
leaq 0xf(%rsp), %rsi
movb $0x29, (%rsi)
leaq 0x90(%rsp), %rdi
callq 0x818c
leaq 0x5a8(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x1d154
leaq 0x7c2be(%rip), %rsi     # 0x8b6d8
leaq 0x7c0(%rsp), %rdi
leaq 0x5a8(%rsp), %rdx
callq 0x1d11e
leaq 0x7c2a2(%rip), %rdx     # 0x8b6d8
leaq 0xa40(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
callq 0x1d02e
leaq 0x60(%rsp), %rdi
leaq 0xa40(%rsp), %rsi
movq %rbx, %rdx
callq 0x166e8
leaq 0xa40(%rsp), %rdi
callq 0x16876
leaq 0x7c0(%rsp), %rdi
callq 0x16890
leaq 0x5a8(%rsp), %rdi
callq 0x168a6
leaq 0x90(%rsp), %rdi
callq 0xfaa6
leaq 0x3d8(%rsp), %rdi
callq 0x168c0
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
pushq $0x28
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x60(%rsp), %rdi
movq 0x20(%rdi), %rcx
movq %rax, 0x8(%r14)
movabsq $0x100000006, %rax      # imm = 0x100000006
movq %rax, 0x10(%r14)
leaq 0x7ae70(%rip), %rax     # 0x8a380
movq %rax, (%r14)
movq %rcx, 0x20(%r14)
movl 0x28(%rdi), %ebp
callq 0x5120
leaq 0x30(%rsp), %rdi
callq 0x5120
leaq 0x168(%rsp), %rdi
callq 0x5120
leaq 0x250(%rsp), %rdi
callq 0x168da
leaq 0x298(%rsp), %rdi
callq 0x168f4
leaq 0xd28(%rsp), %rdi
callq 0x1690e
movl %ebp, %eax
movq %r14, %rdx
addq $0xe00, %rsp            # imm = 0xE00
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
jmp 0xf60c
movq %rax, %rbx
leaq 0xa40(%rsp), %rdi
callq 0x16876
jmp 0xf590
movq %rax, %rbx
leaq 0x7c0(%rsp), %rdi
callq 0x16890
jmp 0xf5a2
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
callq 0x168a6
jmp 0xf5b4
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xfaa6
jmp 0xf5c6
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
callq 0x168c0
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
leaq 0x30(%rsp), %rdi
jmp 0xf6cc
movq %rax, %rbx
jmp 0xf5d3
movq %rax, %rbx
jmp 0xf5e0
movq %rax, %rbx
jmp 0xf5ed
movq %rax, %rbx
jmp 0xf5fa
movq %rax, %rbx
jmp 0xf607
jmp 0xf636
movq %rax, %rbx
jmp 0xf611
movq %rax, %rbx
leaq 0xa40(%rsp), %rdi
callq 0x16684
jmp 0xf650
movq %rax, %rbx
leaq 0x7c0(%rsp), %rdi
callq 0x1669e
jmp 0xf662
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
callq 0x166b4
jmp 0xf674
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xfaa6
jmp 0xf686
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
callq 0x166ce
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x60(%rsp), %rdi
callq 0x5120
leaq 0x168(%rsp), %rdi
jmp 0xf78f
movq %rax, %rbx
jmp 0xf693
movq %rax, %rbx
jmp 0xf6a0
movq %rax, %rbx
jmp 0xf6ad
movq %rax, %rbx
jmp 0xf6ba
movq %rax, %rbx
jmp 0xf6c7
jmp 0xf6f9
movq %rax, %rbx
jmp 0xf6d1
movq %rax, %rbx
leaq 0xa40(%rsp), %rdi
callq 0x16478
jmp 0xf713
movq %rax, %rbx
leaq 0x7c0(%rsp), %rdi
callq 0x16492
jmp 0xf725
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
callq 0x164a8
jmp 0xf737
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xfaa6
jmp 0xf749
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
callq 0x164c2
leaq 0x2e0(%rsp), %rdi
callq 0x164dc
leaq 0xd8(%rsp), %rdi
callq 0xfaa6
leaq 0x1a0(%rsp), %rdi
callq 0x11374
leaq 0x120(%rsp), %rdi
callq 0x11074
leaq 0x30(%rsp), %rdi
callq 0x5120
leaq 0x250(%rsp), %rdi
callq 0x168da
leaq 0x298(%rsp), %rdi
callq 0x168f4
leaq 0xd28(%rsp), %rdi
callq 0x1690e
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbx
jmp 0xf756
movq %rax, %rbx
jmp 0xf763
movq %rax, %rbx
jmp 0xf770
movq %rax, %rbx
jmp 0xf77d
movq %rax, %rbx
jmp 0xf78a
movq %rax, %rbx
jmp 0xf794
movq %rax, %rbx
jmp 0xf7a1
movq %rax, %rbx
jmp 0xf7ae
movq %rax, %rbx
leaq 0xa40(%rsp), %rdi
callq 0x13140
jmp 0xf800
movq %rax, %rbx
leaq 0x7c0(%rsp), %rdi
callq 0xfaa6
jmp 0xf7bb
nop