// File: /workspace/github_cpp_makefile_star2_O1/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 0x17d11(%rip), %rax     # 0x29630
cmpl $0x23, (%rax)
jne 0x11acb
movq %rdi, %rbx
callq 0x19e44
leaq -0x8c(%rbp), %rsi
movq %rbx, %rdi
callq 0x1a8c5
testb %al, %al
je 0x11a07
cmpl $0x1, -0x88(%rbp)
jne 0x11a40
leaq -0x68(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x78(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x11d47
movl -0x20(%rbp), %eax
cmpl -0x84(%rbp), %eax
jne 0x11a79
leaq -0x28(%rbp), %rdi
movl $0x0, (%rdi)
leaq 0x135eb(%rip), %rdx     # 0x24f80
leaq -0x78(%rbp), %rsi
movq %rbx, %rcx
callq 0x151b0
leaq -0x1c(%rbp), %rsi
movl $0x26, (%rsi)
leaq -0x38(%rbp), %rdi
movl $0x1, %edx
callq 0x13eac
movabsq $0x2600000022, %rax     # imm = 0x2600000022
leaq -0x28(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x30(%rbp), %rdi
movl $0x2, %edx
callq 0x13eac
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 0x13eac
callq 0x19e44
jmp 0x11aaf
leaq -0xc0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xaa44(%rip), %rsi      # 0x1c45d
leaq 0xaa5e(%rip), %rdx      # 0x1c47e
leaq -0xd0(%rbp), %rbx
movq %rbx, %rdi
callq 0x14454
movq %rbx, %rdi
callq 0xdcc8
movq -0xd0(%rbp), %rdi
jmp 0x11ab3
leaq -0xa0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xadca(%rip), %rsi      # 0x1c81c
leaq 0xadfd(%rip), %rdx      # 0x1c856
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x14454
movq %rbx, %rdi
callq 0xdcc8
movq -0xb0(%rbp), %rdi
jmp 0x11ab3
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xa997(%rip), %rsi      # 0x1c41f
leaq 0xa99e(%rip), %rdx      # 0x1c42d
leaq -0x58(%rbp), %rdi
callq 0x14454
leaq -0x58(%rbp), %rdi
callq 0xdcc8
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x11aaf
callq 0x32a0
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x11abd
callq 0x32a0
addq $0xb8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0xad0a(%rip), %rdi      # 0x1c7dc
leaq 0xa8b0(%rip), %rsi      # 0x1c389
leaq 0xad0d(%rip), %rcx      # 0x1c7ed
movl $0x1d0, %edx            # imm = 0x1D0
callq 0x31b0
jmp 0x11b13
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x11b16
callq 0x32a0
jmp 0x11b16
jmp 0x11b13
jmp 0x11b13
jmp 0x11b13
jmp 0x11b13
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
jmp 0x11b26
movq %rax, %rbx
movq -0x78(%rbp), %rdi
jmp 0x11b26
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
cmpq %r14, %rdi
je 0x11b30
callq 0x32a0
movq %rbx, %rdi
callq 0x3480