// File: /workspace/github_cpp_makefile_star2_O1/Davidc2525[P]Leaf/parser/Parser.cpp
// Function: Parser::Designator(LEAF::AST::NODEU*&)
void Parser::Designator(ASTU&d_ast) {
		Obj*obj = new Obj();  string * ns=new string(""); Obj * oex = new Obj(); 
		if (la->kind == _name) {
			Get();
			LexString(ns); 
			*obj=*symbol_table::find(ns); 
			ASTU nc = ident(ns); 
			set_obj(nc,obj); 
			d_ast=nc;
			//cout<<"; load "<<*get_obj(nc)->name<<", adr "<<get_obj(nc)->adr<<endl; 
			
		} else if (la->kind == _t_pointer) {
			Get();
			Factor(d_ast);
			d_ast = (d_ast); cout<<"; desreferenciar "<<*get_obj(d_ast)->name<<endl; un_pointer(get_obj(d_ast)); dump(get_obj(d_ast)->type,2); 
		} else SynErr(55);
		if (StartOf(3)) {
			while (la->kind == 49 /* "." */) {
				Get();
				Expect(_name);
				LexString(ns); *obj=*symbol_table::findField(ns,obj->type); cout<<"; load "<<*obj->name<<endl; 
			}
		} else if (la->kind == 26 /* "[" */) {
			Get();
			Expr(d_ast);
			Expect(27 /* "]" */);
			un_pointer(obj); 
			while (la->kind == 26 /* "[" */) {
				Get();
				Expr(d_ast);
				Expect(27 /* "]" */);
				un_pointer(obj); 
			}
		} else SynErr(56);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r12
movq %rdi, %rbx
movl $0x48, %edi
callq 0x5290
movq %rax, %r14
movb $0x1, 0x4(%rax)
xorl %ebp, %ebp
movb %bpl, 0x10(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rax)
movb %bpl, 0x28(%rax)
movl $0xffffffff, 0x30(%rax) # imm = 0xFFFFFFFF
movl $0x20, %edi
callq 0x5290
movq %rax, %r15
addq $0x10, %rax
movq %rax, (%r15)
movq $0x0, 0x8(%r15)
movb %bpl, 0x10(%r15)
movq 0x30(%rbx), %rax
movl (%rax), %eax
movq %rbx, %rdi
cmpl $0x1, %eax
je 0xca04
cmpl $0x4, %eax
jne 0xcaa5
callq 0xbde8
movq %rbx, %rdi
movq %r15, %rsi
callq 0xec0a
movq %r15, %rdi
callq 0x110a0
movl $0x9, %ecx
movq %r14, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %r15, %rdi
callq 0x8e19
movq %rax, %r13
movq %rax, %rdi
movq %r14, %rsi
callq 0x8d7b
movq %r13, (%r12)
jmp 0xcaaf
callq 0xbde8
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd3ea
movq 0x195bd(%rip), %r13     # 0x25fd8
leaq 0xd201(%rip), %rsi      # 0x19c23
movl $0x11, %edx
movq %r13, %rdi
callq 0x5300
movq (%r12), %rdi
callq 0x8d76
movq 0x8(%rax), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x5300
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x5260
movsbl %al, %esi
movq %r13, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x51a0
movq (%r12), %rdi
callq 0x8d76
movq %rbx, %rdi
movq %rax, %rsi
callq 0xec90
movq (%r12), %rdi
callq 0x8d76
movq 0x18(%rax), %rsi
movq %rbx, %rdi
movl $0x2, %edx
callq 0xeaf0
jmp 0xcaaf
movl $0x37, %esi
callq 0xba44
movq 0x30(%rbx), %rax
movslq (%rax), %rax
leaq 0xcea3(%rip), %rcx      # 0x19960
cmpb $0x1, 0x9c(%rax,%rcx)
jne 0xcb78
cmpl $0x31, %eax
jne 0xcbb1
movq 0x194fd(%rip), %r12     # 0x25fd8
leaq 0xd153(%rip), %r13      # 0x19c35
movq %rbx, %rdi
callq 0xbde8
movq %rbx, %rdi
movl $0x4, %esi
callq 0xbe68
movq %rbx, %rdi
movq %r15, %rsi
callq 0xec0a
movq 0x18(%r14), %rsi
movq %r15, %rdi
callq 0x11190
movl $0x9, %ecx
movq %r14, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movl $0x7, %edx
movq %r12, %rdi
movq %r13, %rsi
callq 0x5300
movq 0x8(%r14), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x5300
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x5260
movsbl %al, %esi
movq %rbp, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x51a0
movq 0x30(%rbx), %rax
cmpl $0x31, (%rax)
je 0xcae2
jmp 0xcbb1
cmpl $0x1a, %eax
jne 0xcbc0
movq %rbx, %rdi
callq 0xbde8
movq %rbx, %rdi
movq %r12, %rsi
callq 0xe1e2
movq %rbx, %rdi
movl $0x1b, %esi
callq 0xbe68
movq %rbx, %rdi
movq %r14, %rsi
callq 0xec90
movq 0x30(%rbx), %rax
cmpl $0x1a, (%rax)
je 0xcb7d
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movl $0x38, %esi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xba44
nop