// File: /workspace/github_cpp_makefile_star2_O2/sighingnow[P]compile-pascal/pl0_parser.cpp
// Function: pl0_assign_stmt_fn(input_t*)
pair<int, pl0_ast_assign_stmt *> pl0_assign_stmt_fn(input_t *text) {
    auto parser = pl0_identify + (~(pl0_character('[') >> pl0_expression << pl0_character(']'))) + (spaces >> pl0_string_literal(":=") >> pl0_expression);
    auto res = (spaces >> parser << spaces)(text);
    if (verbose) {
        cout << "parsing: Assign Statement" << endl;
    }
    return make_pair(std::get<0>(res), new pl0_ast_assign_stmt(
        text->locate(),
        std::get<1>(res).first.first,
        std::get<1>(res).first.second,
        std::get<1>(res).second
    ));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xb78, %rsp            # imm = 0xB78
movq %rdi, %rbx
leaq 0xf(%rsp), %rsi
movb $0x5b, (%rsi)
leaq 0xc0(%rsp), %r14
movq %r14, %rdi
callq 0x818c
leaq 0x8063b(%rip), %rdx     # 0x8c030
leaq 0x1e0(%rsp), %rdi
movq %r14, %rsi
callq 0x1a284
leaq 0xe(%rsp), %rsi
movb $0x5d, (%rsi)
leaq 0x78(%rsp), %rdi
callq 0x818c
leaq 0x320(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x1a24a
leaq 0x108(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0x1a19c
leaq 0x80163(%rip), %rsi     # 0x8bbb0
leaq 0x678(%rsp), %rdi
leaq 0x108(%rsp), %rdx
callq 0x1a214
leaq 0x4d6ae(%rip), %rsi     # 0x59117
leaq 0x10(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0xfa26
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x840a
leaq 0x7fc4a(%rip), %rsi     # 0x8b6d8
leaq 0x270(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1923c
leaq 0x80589(%rip), %rdx     # 0x8c030
leaq 0x3f8(%rsp), %rdi
leaq 0x270(%rsp), %rsi
callq 0x1a2ba
leaq 0x960(%rsp), %rdi
leaq 0x678(%rsp), %rsi
leaq 0x3f8(%rsp), %rdx
callq 0x1a0ea
leaq 0x3f8(%rsp), %rdi
callq 0x130f6
leaq 0x270(%rsp), %rdi
callq 0x1232c
leaq 0x30(%rsp), %rdi
callq 0x11074
leaq 0x10(%rsp), %rdi
callq 0x5120
leaq 0x678(%rsp), %rdi
callq 0x13110
leaq 0x108(%rsp), %rdi
callq 0x13126
leaq 0x320(%rsp), %rdi
callq 0x13126
leaq 0x78(%rsp), %rdi
callq 0xfaa6
leaq 0x1e0(%rsp), %rdi
callq 0x13140
leaq 0xc0(%rsp), %rdi
callq 0xfaa6
leaq 0x7fb7f(%rip), %rsi     # 0x8b6d8
leaq 0x3f8(%rsp), %rdi
leaq 0x960(%rsp), %rdx
callq 0x1a3a6
leaq 0x7fb63(%rip), %rdx     # 0x8b6d8
leaq 0x678(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0x1a2f4
leaq 0x108(%rsp), %rdi
leaq 0x678(%rsp), %rsi
movq %rbx, %rdx
callq 0x13156
leaq 0x678(%rsp), %rdi
callq 0x1330e
leaq 0x3f8(%rsp), %rdi
callq 0x13328
pushq $0x30
popq %rdi
callq 0x5260
movq %rax, %r14
movq 0x8(%rbx), %rax
leaq 0x108(%rsp), %rdi
movq 0x30(%rdi), %rcx
movq %rax, 0x8(%r14)
movl $0x1, 0x10(%r14)
leaq 0x7e60e(%rip), %rax     # 0x8a1f8
movq %rax, (%r14)
movups 0x20(%rdi), %xmm0
movups %xmm0, 0x18(%r14)
movq %rcx, 0x28(%r14)
movl 0x38(%rdi), %ebx
callq 0x5120
leaq 0x960(%rsp), %rdi
callq 0x1333e
movl %ebx, %eax
movq %r14, %rdx
addq $0xb78, %rsp            # imm = 0xB78
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x5120
jmp 0xbc58
movq %rax, %rbx
leaq 0x678(%rsp), %rdi
callq 0x1330e
jmp 0xbc46
movq %rax, %rbx
leaq 0x3f8(%rsp), %rdi
callq 0x13328
jmp 0xbc58
movq %rax, %rbx
leaq 0x960(%rsp), %rdi
callq 0x1333e
jmp 0xbcfa
movq %rax, %rbx
leaq 0x3f8(%rsp), %rdi
callq 0x130f6
jmp 0xbc7f
movq %rax, %rbx
leaq 0x270(%rsp), %rdi
callq 0x1232c
jmp 0xbc91
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x11074
jmp 0xbca0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5120
jmp 0xbcaf
movq %rax, %rbx
leaq 0x678(%rsp), %rdi
callq 0x13110
leaq 0x108(%rsp), %rdi
callq 0x13126
leaq 0x320(%rsp), %rdi
callq 0x13126
leaq 0x78(%rsp), %rdi
callq 0xfaa6
leaq 0x1e0(%rsp), %rdi
callq 0x13140
leaq 0xc0(%rsp), %rdi
callq 0xfaa6
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbx
jmp 0xbcbc
movq %rax, %rbx
jmp 0xbcc9
movq %rax, %rbx
jmp 0xbcd6
movq %rax, %rbx
jmp 0xbce0
movq %rax, %rbx
jmp 0xbced