// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/parse/export.c
// Function: tagexports
void
tagexports(int hidelocal)
{
	size_t i, j, n;
	Trait *tr;
	Stab *st;
	void **k;
	Node *s;
	Type *t;

	st = file.globls;

	/* tag the initializers */
	for (i = 0; i < file.ninit; i++)
		tagnode(st, file.init[i], 0, hidelocal);
	for (i = 0; i < file.nfini; i++)
		tagnode(st, file.fini[i], 0, hidelocal);
	if (file.localinit)
		tagnode(st, file.localinit, 0, hidelocal);
	if (file.localfini)
		tagnode(st, file.localfini, 0, hidelocal);

	/* tag the exported nodes */
	k = htkeys(st->dcl, &n);
	for (i = 0; i < n; i++) {
		s = getdcl(st, k[i]);
		if (s->decl.vis == Visexport)
			tagnode(st, s, 0, hidelocal);
	}
	free(k);

	/* get the explicitly exported types */
	k = htkeys(st->ty, &n);
	for (i = 0; i < n; i++) {
		t = gettype(st, k[i]);
		if (!t->isreflect && t->vis != Visexport)
			continue;
		if (hidelocal && t->ispkglocal)
			t->vis = Vishidden;
		tagtype(st, t, 0, hidelocal);
		for (j = 0; j < t->nsub; j++)
			tagtype(st, t->sub[j], 0, hidelocal);
		if (t->type == Tyname) {
			tagreflect(t);
			for (j = 0; j < t->narg; j++)
				tagtype(st, t->arg[j], 0, hidelocal);
		} else if (t->type == Tygeneric) {
			for (j = 0; j < t->ngparam; j++)
				tagtype(st, t->gparam[j], 0, hidelocal);
		}
	}
	free(k);

	/* tag the traits */
	for (i = 0; i < ntraittab; i++) {
		tr = traittab[i];
		if (tr->vis != Visexport)
			continue;
		if (hidelocal && tr->ishidden)
			tr->vis = Vishidden;
		tagtype(st, tr->param, 0, hidelocal);
		tr->param->vis = tr->vis;
		for (j = 0; j < tr->naux; j++) {
			tagtype(st, tr->aux[j], 0, hidelocal);
			tr->aux[j]->vis = tr->vis;
		}
		for (j = 0; j < tr->nproto; j++) {
			tr->proto[j]->decl.vis = tr->vis;
			tagnode(st, tr->proto[j], 0, hidelocal);
		}
	}

	/* tag the impls */
	for (i = 0; i < nimpltab; i++) {
		s = impltab[i];
		if (s->impl.vis != Visexport)
			continue;
		tagnode(st, s, 0, hidelocal);
                tr = s->impl.trait;
		tagtrait(st, tr, 0, hidelocal);
		for (j = 0; j < tr->naux; j++)
			tr->aux[j]->vis = tr->vis;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x4(%rbp)
leaq 0x5e9e6(%rip), %rax     # 0x7cd98
movq 0x90(%rax), %rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0x5e9c8(%rip), %rcx     # 0x7cd98
cmpq 0x58(%rcx), %rax
jae 0x1e405
movq -0x30(%rbp), %rdi
leaq 0x5e9b7(%rip), %rax     # 0x7cd98
movq 0x50(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e3c5
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0x5e980(%rip), %rcx     # 0x7cd98
cmpq 0x68(%rcx), %rax
jae 0x1e44d
movq -0x30(%rbp), %rdi
leaq 0x5e96f(%rip), %rax     # 0x7cd98
movq 0x60(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e40d
leaq 0x5e944(%rip), %rax     # 0x7cd98
cmpq $0x0, 0x80(%rax)
je 0x1e47a
movq -0x30(%rbp), %rdi
leaq 0x5e92f(%rip), %rax     # 0x7cd98
movq 0x80(%rax), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
leaq 0x5e917(%rip), %rax     # 0x7cd98
cmpq $0x0, 0x88(%rax)
je 0x1e4a7
movq -0x30(%rbp), %rdi
leaq 0x5e902(%rip), %rax     # 0x7cd98
movq 0x88(%rax), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x49720
movq %rax, -0x38(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x1e516
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x334b0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movsbl 0x70(%rax), %eax
cmpl $0x1, %eax
jne 0x1e506
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
jmp 0x1e508
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e4c4
movq -0x38(%rbp), %rdi
callq 0x6040
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
leaq -0x20(%rbp), %rsi
callq 0x49720
movq %rax, -0x38(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x1e6ac
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x33750
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpb $0x0, 0x95(%rax)
jne 0x1e57f
movq -0x48(%rbp), %rax
cmpl $0x1, 0x10(%rax)
je 0x1e57f
jmp 0x1e69b
cmpl $0x0, -0x4(%rbp)
je 0x1e5a0
movq -0x48(%rbp), %rax
movsbl 0x93(%rax), %eax
cmpl $0x0, %eax
je 0x1e5a0
movq -0x48(%rbp), %rax
movl $0x2, 0x10(%rax)
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x1e5f4
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e5ba
movq -0x48(%rbp), %rax
cmpl $0x1c, (%rax)
jne 0x1e64a
movq -0x48(%rbp), %rdi
callq 0x1e1b0
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jae 0x1e648
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e60e
jmp 0x1e699
movq -0x48(%rbp), %rax
cmpl $0x1d, (%rax)
jne 0x1e697
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rcx
cmpq 0x38(%rcx), %rax
jae 0x1e695
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e65b
jmp 0x1e697
jmp 0x1e699
jmp 0x1e69b
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e53c
movq -0x38(%rbp), %rdi
callq 0x6040
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0x5f640(%rip), %rcx     # 0x7dd08
cmpq (%rcx), %rax
jae 0x1e809
leaq 0x5f638(%rip), %rax     # 0x7dd10
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpl $0x1, 0xc(%rax)
je 0x1e6f6
jmp 0x1e7f8
cmpl $0x0, -0x4(%rbp)
je 0x1e714
movq -0x28(%rbp), %rax
movsbl 0x49(%rax), %eax
cmpl $0x0, %eax
je 0x1e714
movq -0x28(%rbp), %rax
movl $0x2, 0xc(%rax)
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq -0x28(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x10(%rax)
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jae 0x1e798
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1ede0
movq -0x28(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e744
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x38(%rcx), %rax
jae 0x1e7f6
movq -0x28(%rbp), %rax
movl 0xc(%rax), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movb %cl, 0x70(%rax)
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e7a0
jmp 0x1e7f8
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e6bd
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
leaq 0x5f50c(%rip), %rcx     # 0x7dd28
cmpq (%rcx), %rax
jae 0x1e8c8
leaq 0x5f4f4(%rip), %rax     # 0x7dd20
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpl $0x1, 0x58(%rax)
je 0x1e847
jmp 0x1e8b7
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1e8d0
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
movl -0x4(%rbp), %ecx
xorl %edx, %edx
callq 0x1f140
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jae 0x1e8b5
movq -0x28(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1e87f
jmp 0x1e8b7
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1e811
addq $0x50, %rsp
popq %rbp
retq
nop