// File: /workspace/github_cpp_makefile_star2_O3/fondoger[P]C0-Compiler/src/grammar.cpp
// Function: pAssignmentStatement(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
static void pAssignmentStatement(const std::string &id)
{
    TabEntry entry;

    assert(g_sym == BECOMES);
    readSymbol();
    if (!tabFind(id, entry)) {
        error(ERR_UNDEFINED_IDENTIFIER);
        return;
    }
    if (entry.itype != IT_VARIABLE) {
        // entry.itype might be IT_ARRAY
        error(ERR_LEFT_VALUE_NOT_VARIABLE);
        return;
    }
    std::string rvalue;     // right value
    DataType rvalue_dtype;  // right value's data type
    pExpression(rvalue, rvalue_dtype);
    if (rvalue_dtype != entry.dtype) {
        error(ERR_TYPE_NOT_MATCH);
        return;
    }
    genMidCode(ASSIGN, rvalue, NONE, id);
    test3(Symset({ SEMICOLON }));
    readSymbol();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xb8, %rsp
leaq 0x17dd6(%rip), %rax     # 0x29630
cmpl $0x23, (%rax)
jne 0x11a06
movq %rdi, %rbx
callq 0x19d18
leaq -0x8c(%rbp), %rsi
movq %rbx, %rdi
callq 0x1a77d
testb %al, %al
je 0x11942
cmpl $0x1, -0x88(%rbp)
jne 0x1197b
leaq -0x68(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x78(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x11c82
movl -0x20(%rbp), %eax
cmpl -0x84(%rbp), %eax
jne 0x119b4
leaq -0x28(%rbp), %rdi
movl $0x0, (%rdi)
leaq 0x136b0(%rip), %rdx     # 0x24f80
leaq -0x78(%rbp), %rsi
movq %rbx, %rcx
callq 0x150ec
leaq -0x1c(%rbp), %rsi
movl $0x26, (%rsi)
leaq -0x38(%rbp), %rdi
movl $0x1, %edx
callq 0x13dee
movabsq $0x2600000022, %rax     # imm = 0x2600000022
leaq -0x28(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x30(%rbp), %rdi
movl $0x2, %edx
callq 0x13dee
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0xd8a2
leaq -0x1c(%rbp), %rsi
movl $0x26, (%rsi)
leaq -0x28(%rbp), %rdi
movl $0x1, %edx
callq 0x13dee
callq 0x19d18
jmp 0x119ea
leaq -0xc0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xaac4(%rip), %rsi      # 0x1c418
leaq 0xaade(%rip), %rdx      # 0x1c439
leaq -0xd0(%rbp), %rbx
movq %rbx, %rdi
callq 0x14396
movq %rbx, %rdi
callq 0xdccb
movq -0xd0(%rbp), %rdi
jmp 0x119ee
leaq -0xa0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xae4a(%rip), %rsi      # 0x1c7d7
leaq 0xae7d(%rip), %rdx      # 0x1c811
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x14396
movq %rbx, %rdi
callq 0xdccb
movq -0xb0(%rbp), %rdi
jmp 0x119ee
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xaa17(%rip), %rsi      # 0x1c3da
leaq 0xaa1e(%rip), %rdx      # 0x1c3e8
leaq -0x58(%rbp), %rdi
callq 0x14396
leaq -0x58(%rbp), %rdi
callq 0xdccb
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x119ea
callq 0x32a0
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x119f8
callq 0x32a0
addq $0xb8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0xad8a(%rip), %rdi      # 0x1c797
leaq 0xa975(%rip), %rsi      # 0x1c389
leaq 0xad8d(%rip), %rcx      # 0x1c7a8
movl $0x1d0, %edx            # imm = 0x1D0
callq 0x31b0
jmp 0x11a4e
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x11a51
callq 0x32a0
jmp 0x11a51
jmp 0x11a4e
jmp 0x11a4e
jmp 0x11a4e
jmp 0x11a4e
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
jmp 0x11a61
movq %rax, %rbx
movq -0x78(%rbp), %rdi
jmp 0x11a61
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
cmpq %r14, %rdi
je 0x11a6b
callq 0x32a0
movq %rbx, %rdi
callq 0x3480