// File: /workspace/github_cpp_makefile_star2_O3/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 0xc9d2
cmpl $0x4, %eax
jne 0xca73
callq 0xbdc0
movq %rbx, %rdi
movq %r15, %rsi
callq 0xee9c
movq %r15, %rdi
callq 0x1107a
movl $0x9, %ecx
movq %r14, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %r15, %rdi
callq 0x8e05
movq %rax, %r13
movq %rax, %rdi
movq %r14, %rsi
callq 0x8d67
movq %r13, (%r12)
jmp 0xca7d
callq 0xbdc0
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd486
movq 0x195ef(%rip), %r13     # 0x25fd8
leaq 0xd283(%rip), %rsi      # 0x19c73
movl $0x11, %edx
movq %r13, %rdi
callq 0x5300
movq (%r12), %rdi
callq 0x8d62
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 0x8d62
movq %rbx, %rdi
movq %rax, %rsi
callq 0xef04
movq (%r12), %rdi
callq 0x8d62
movq 0x18(%rax), %rsi
movq %rbx, %rdi
movl $0x2, %edx
callq 0xed84
jmp 0xca7d
movl $0x37, %esi
callq 0xba20
movq 0x30(%rbx), %rax
movslq (%rax), %rax
leaq 0xcf25(%rip), %rcx      # 0x199b0
cmpb $0x1, 0x9c(%rax,%rcx)
jne 0xcb46
cmpl $0x31, %eax
jne 0xcb7f
movq 0x1952f(%rip), %r12     # 0x25fd8
leaq 0xd1d5(%rip), %r13      # 0x19c85
movq %rbx, %rdi
callq 0xbdc0
movq %rbx, %rdi
movl $0x4, %esi
callq 0xbe34
movq %rbx, %rdi
movq %r15, %rsi
callq 0xee9c
movq 0x18(%r14), %rsi
movq %r15, %rdi
callq 0x11152
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 0xcab0
jmp 0xcb7f
cmpl $0x1a, %eax
jne 0xcb8e
movq %rbx, %rdi
callq 0xbdc0
movq %rbx, %rdi
movq %r12, %rsi
callq 0xe47c
movq %rbx, %rdi
movl $0x1b, %esi
callq 0xbe34
movq %rbx, %rdi
movq %r14, %rsi
callq 0xef04
movq 0x30(%rbx), %rax
cmpl $0x1a, (%rax)
je 0xcb4b
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 0xba20
nop