// File: 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 %rbp
movq %rsp, %rbp
subq $0xe70, %rsp            # imm = 0xE70
movq %rdi, -0x18(%rbp)
movb $0x5b, -0x5d9(%rbp)
leaq -0x5d8(%rbp), %rdi
movq %rdi, -0xe18(%rbp)
leaq -0x5d9(%rbp), %rsi
callq 0xa240
movq -0xe18(%rbp), %rsi
leaq 0x14f072(%rip), %rdx    # 0x160130
leaq -0x590(%rbp), %rdi
callq 0x23350
jmp 0x110cc
movb $0x5d, -0x639(%rbp)
leaq -0x638(%rbp), %rdi
leaq -0x639(%rbp), %rsi
callq 0xa240
jmp 0x110e8
leaq -0x500(%rbp), %rdi
leaq -0x590(%rbp), %rsi
leaq -0x638(%rbp), %rdx
callq 0x23310
jmp 0x11104
leaq -0x428(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x232e0
jmp 0x11119
leaq 0x14eb90(%rip), %rsi    # 0x15fcb0
leaq -0x350(%rbp), %rdi
leaq -0x428(%rbp), %rdx
callq 0x232a0
jmp 0x11135
leaq -0x851(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x55d0
movq -0xe20(%rbp), %rdx
leaq 0xde2c5(%rip), %rsi     # 0xef41b
leaq -0x850(%rbp), %rdi
callq 0x19840
jmp 0x11164
leaq -0x830(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0xa6a0
jmp 0x11179
leaq 0x14e650(%rip), %rsi    # 0x15f7d0
leaq -0x7e8(%rbp), %rdi
leaq -0x830(%rbp), %rdx
callq 0x20710
jmp 0x11195
leaq 0x14ef94(%rip), %rdx    # 0x160130
leaq -0x738(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x23390
jmp 0x111b1
leaq -0x230(%rbp), %rdi
leaq -0x350(%rbp), %rsi
leaq -0x738(%rbp), %rdx
callq 0x23260
jmp 0x111cd
leaq -0x738(%rbp), %rdi
callq 0x233d0
leaq -0x7e8(%rbp), %rdi
callq 0x20b00
leaq -0x830(%rbp), %rdi
callq 0x1d950
leaq -0x850(%rbp), %rdi
callq 0x5200
leaq -0x851(%rbp), %rdi
callq 0x53c0
leaq -0x350(%rbp), %rdi
callq 0x23400
leaq -0x428(%rbp), %rdi
callq 0x23430
leaq -0x500(%rbp), %rdi
callq 0x23450
leaq -0x638(%rbp), %rdi
callq 0x19a20
leaq -0x590(%rbp), %rdi
callq 0x23480
leaq -0x5d8(%rbp), %rdi
callq 0x19a20
leaq 0x14e578(%rip), %rsi    # 0x15f7d0
leaq -0xe00(%rbp), %rdi
leaq -0x230(%rbp), %rdx
callq 0x234f0
jmp 0x1126d
leaq 0x14e55c(%rip), %rdx    # 0x15f7d0
leaq -0xb80(%rbp), %rdi
leaq -0xe00(%rbp), %rsi
callq 0x234b0
jmp 0x11289
movq -0x18(%rbp), %rdx
leaq -0x898(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x23530
jmp 0x112a2
leaq -0xb80(%rbp), %rdi
callq 0x238a0
leaq -0xe00(%rbp), %rdi
callq 0x238d0
testb $0x1, 0x14e577(%rip)    # 0x15f838
je 0x114cc
movq 0x14dd0a(%rip), %rdi    # 0x15efd8
leaq 0xde149(%rip), %rsi     # 0xef41e
callq 0x5330
movq %rax, -0xe28(%rbp)
jmp 0x112e3
movq -0xe28(%rbp), %rdi
movq 0x14dccf(%rip), %rsi    # 0x15efc0
callq 0x53a0
jmp 0x112f8
jmp 0x114cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x1144a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x1143e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x11432
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x11426
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x1141a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x11402
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x113f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x113ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x113de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x233d0
leaq -0x7e8(%rbp), %rdi
callq 0x20b00
leaq -0x830(%rbp), %rdi
callq 0x1d950
leaq -0x850(%rbp), %rdi
callq 0x5200
leaq -0x851(%rbp), %rdi
callq 0x53c0
leaq -0x350(%rbp), %rdi
callq 0x23400
leaq -0x428(%rbp), %rdi
callq 0x23430
leaq -0x500(%rbp), %rdi
callq 0x23450
leaq -0x638(%rbp), %rdi
callq 0x19a20
leaq -0x590(%rbp), %rdi
callq 0x23480
leaq -0x5d8(%rbp), %rdi
callq 0x19a20
jmp 0x11620
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x11614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x114a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0x238a0
leaq -0xe00(%rbp), %rdi
callq 0x238d0
jmp 0x11614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
jmp 0x11608
leaq -0x898(%rbp), %rdi
callq 0x23930
movq %rax, -0xe38(%rbp)
movl $0x30, %edi
callq 0x5340
movq %rax, -0xe30(%rbp)
jmp 0x114f2
movq -0x18(%rbp), %rdi
callq 0x1a350
movq %rax, -0xe40(%rbp)
jmp 0x11504
movq -0xe40(%rbp), %rax
movq %rax, -0xe10(%rbp)
leaq -0x898(%rbp), %rdi
movq %rdi, -0xe58(%rbp)
callq 0x23950
movq -0xe58(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xe50(%rbp)
callq 0x23950
movq -0xe58(%rbp), %rdi
movq 0x8(%rax), %rax
movq %rax, -0xe48(%rbp)
callq 0x23950
movq -0xe30(%rbp), %rdi
movq -0xe50(%rbp), %rdx
movq -0xe48(%rbp), %rcx
movq 0x10(%rax), %r8
movq -0xe10(%rbp), %rsi
callq 0x23970
jmp 0x11579
movq -0xe38(%rbp), %rdi
movq -0xe30(%rbp), %rax
movq %rax, -0xe08(%rbp)
leaq -0xe08(%rbp), %rsi
callq 0x23900
movq %rdx, -0xe68(%rbp)
movl %eax, -0xe5c(%rbp)
jmp 0x115a9
movq -0xe68(%rbp), %rax
movl -0xe5c(%rbp), %ecx
movl %ecx, -0x10(%rbp)
movq %rax, -0x8(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x239e0
leaq -0x230(%rbp), %rdi
callq 0x23a00
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rdx
addq $0xe70, %rsp            # imm = 0xE70
popq %rbp
retq
movq -0xe30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x5e8(%rbp)
movl %eax, -0x5ec(%rbp)
movl $0x30, %esi
callq 0x5350
leaq -0x898(%rbp), %rdi
callq 0x239e0
leaq -0x230(%rbp), %rdi
callq 0x23a00
movq -0x5e8(%rbp), %rdi
callq 0x55b0
nopl (%rax)