// File: kelwinfc[P]ci4721-Fernandez-Gyomrey/src/AST/check.cpp
// Function: AST_address::fill_and_check(symbol_table*, bool)
void AST_address::fill_and_check(symbol_table* st, bool lval){

    value->fill_and_check(st, true);

    if (typeid(value) == typeid(AST_address)) {
        type = INVALID;
    } else {

        pointer_descriptor* pd = new pointer_descriptor( value->type,
                                                         types.types[
                                                             value->type]->name);

        if ( !types.has_type( pd->name ) ){
            type = types.add_type( pd );
        } else {
            type = types.index_of( pd->name );
            delete pd;
        }
    }
}

// Assembly:
subq $0xd8, %rsp
movb %dl, %al
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
andb $0x1, %al
movb %al, 0xc7(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x48(%rax), %rdi
movq 0xc8(%rsp), %rsi
movq (%rdi), %rax
movl $0x1, %edx
callq *0x10(%rax)
leaq 0x60483(%rip), %rdi     # 0x6cef0
leaq 0x610dc(%rip), %rsi     # 0x6db50
callq 0x20340
testb $0x1, %al
jne 0xca7f
jmp 0xca90
movq 0x40(%rsp), %rax
movl $0x1, 0x10(%rax)
jmp 0xcca1
movl $0x38, %edi
callq 0x6390
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x30(%rsp)
movb $0x1, 0x8b(%rsp)
movq 0x48(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, 0x3c(%rsp)
movslq %eax, %rsi
leaq 0x61a1c(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rsi
addq $0x8, %rsi
leaq 0x98(%rsp), %rdi
callq 0x6170
jmp 0xcadf
movl 0x3c(%rsp), %esi
movq 0x30(%rsp), %rdi
leaq 0x98(%rsp), %rdx
callq 0x2c6d0
jmp 0xcaf7
movb $0x0, 0x8b(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x6778
movq 0x30(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x68(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x6170
movq 0x20(%rsp), %rsi
leaq 0x619a0(%rip), %rdi     # 0x6e4e0
callq 0x2d910
movb %al, 0x2f(%rsp)
jmp 0xcb4b
movb 0x2f(%rsp), %al
xorb $-0x1, %al
movb %al, 0x1f(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x6778
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0xcb6c
jmp 0xcc09
movq 0xb8(%rsp), %rsi
leaq 0x61965(%rip), %rdi     # 0x6e4e0
callq 0x2d850
movl %eax, %ecx
movq 0x40(%rsp), %rax
movl %ecx, 0x10(%rax)
jmp 0xcc9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0xcbc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x98(%rsp), %rdi
callq 0x6778
testb $0x1, 0x8b(%rsp)
jne 0xcbd2
jmp 0xcbe1
movq 0x30(%rsp), %rdi
movl $0x38, %esi
callq 0x63a0
jmp 0xcca9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x6778
jmp 0xcca9
movq 0xb8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x48(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x6170
movq 0x10(%rsp), %rsi
leaq 0x618b0(%rip), %rdi     # 0x6e4e0
callq 0x2da20
movl %eax, 0x18(%rsp)
jmp 0xcc3b
movq 0x40(%rsp), %rax
movl 0x18(%rsp), %ecx
movl %ecx, 0x10(%rax)
leaq 0x48(%rsp), %rdi
callq 0x6778
movq 0xb8(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0xcc7d
movq 0x8(%rsp), %rdi
callq 0x203c0
movq 0x8(%rsp), %rdi
movl $0x38, %esi
callq 0x63a0
jmp 0xcc9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x6778
jmp 0xcca9
jmp 0xcca1
addq $0xd8, %rsp
retq
movq 0x90(%rsp), %rdi
callq 0x66b0
nopw %cs:(%rax,%rax)