// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/parse/stab.c
// Function: mergedecl
static int
mergedecl(Node *old, Node *new)
{
	Node *e, *g;

	if (old->decl.isimport && new->decl.isimport) {
		old->decl.ishidden = old->decl.ishidden && new->decl.ishidden;
		return 1;
	}
	if (old->decl.isextern || new->decl.isextern) {
		old->decl.isextern = old->decl.isextern && new->decl.isextern;
		return 1;
	}
	if (old->decl.vis == Visexport && new->decl.vis != Visexport) {
		e = old;
		g = new;
	} else if (new->decl.vis == Visexport && old->decl.vis != Visexport) {
		e = new;
		g = old;
	} else {
		return 0;
	}
	old->decl.vis = Visexport;

	if (e->decl.init && g->decl.init)
		fatal(e, "export %s double initialized on %s:%d", declname(e), fname(g->loc),
				lnum(g->loc));
	if (e->decl.isgeneric != g->decl.isgeneric)
		fatal(e, "export %s declared with different genericness on %s:%d", declname(e),
				fname(g->loc), lnum(g->loc));
	if (e->decl.isconst != g->decl.isconst)
		fatal(e, "export %s declared with different constness on %s:%d", declname(e),
				fname(g->loc), lnum(g->loc));
	if (e->decl.isextern != g->decl.isextern)
		fatal(e, "export %s declared with different externness on %s:%d", declname(e),
				fname(g->loc), lnum(g->loc));

	setns(old->decl.name, new->decl.name->name.ns);
	if (e->decl.type->type == Tyvar)
		e->decl.type = g->decl.type;
	else if (g->decl.type->type == Tyvar)
		g->decl.type = e->decl.type;
	else
		fatal(e, "FIXME: types on both prototype and decl not yet allowed\n");

	if (!e->decl.init)
		e->decl.init = g->decl.init;
	else if (!g->decl.init)
		g->decl.init = e->decl.init;
	if (old->decl.env || e->decl.env) {
		if (!old->decl.env)
			old->decl.env = e->decl.env;
		if (!e->decl.env)
			e->decl.env = old->decl.env;
		bindtype(e->decl.env, old->decl.type);
		bindtype(old->decl.env, e->decl.type);
	}

	/* FIXME: check compatible typing */
	old->decl.ishidden = e->decl.ishidden || g->decl.ishidden;
	old->decl.isimport = e->decl.isimport || g->decl.isimport;
	old->decl.isnoret = e->decl.isnoret || g->decl.isnoret;
	old->decl.isexportval = e->decl.isexportval || g->decl.isexportval;
	old->decl.isglobl = e->decl.isglobl || g->decl.isglobl;
	old->decl.ispkglocal = e->decl.ispkglocal || g->decl.ispkglocal;
	old->decl.isextern = e->decl.isextern || g->decl.isextern;
	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movsbl 0x77(%rax), %eax
cmpl $0x0, %eax
je 0x33a9d
movq -0x18(%rbp), %rax
movsbl 0x77(%rax), %eax
cmpl $0x0, %eax
je 0x33a9d
movq -0x10(%rbp), %rax
movsbl 0x76(%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x29(%rbp)
je 0x33a80
movq -0x18(%rbp), %rax
movsbl 0x76(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x76(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x33fc8
movq -0x10(%rbp), %rax
movsbl 0x74(%rax), %eax
cmpl $0x0, %eax
jne 0x33ab7
movq -0x18(%rbp), %rax
movsbl 0x74(%rax), %eax
cmpl $0x0, %eax
je 0x33af7
movq -0x10(%rbp), %rax
movsbl 0x74(%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x2a(%rbp)
je 0x33ada
movq -0x18(%rbp), %rax
movsbl 0x74(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x2a(%rbp)
movb -0x2a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x74(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x33fc8
movq -0x10(%rbp), %rax
movsbl 0x70(%rax), %eax
cmpl $0x1, %eax
jne 0x33b23
movq -0x18(%rbp), %rax
movsbl 0x70(%rax), %eax
cmpl $0x1, %eax
je 0x33b23
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x33b5d
movq -0x18(%rbp), %rax
movsbl 0x70(%rax), %eax
cmpl $0x1, %eax
jne 0x33b4f
movq -0x10(%rbp), %rax
movsbl 0x70(%rax), %eax
cmpl $0x1, %eax
je 0x33b4f
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x33b5b
movl $0x0, -0x4(%rbp)
jmp 0x33fc8
jmp 0x33b5d
movq -0x10(%rbp), %rax
movb $0x1, 0x70(%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x33bc9
movq -0x28(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x33bc9
movq -0x20(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
callq 0x30200
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f090
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f0b0
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rcx
movl %eax, %r8d
leaq 0x1fa4c(%rip), %rsi     # 0x5360e
movb $0x0, %al
callq 0x1dfe0
movq -0x20(%rbp), %rax
movsbl 0x73(%rax), %eax
movq -0x28(%rbp), %rcx
movsbl 0x73(%rcx), %ecx
cmpl %ecx, %eax
je 0x33c2b
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rdi
callq 0x30200
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f090
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f0b0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rcx
movl %eax, %r8d
leaq 0x1fa10(%rip), %rsi     # 0x53634
movb $0x0, %al
callq 0x1dfe0
movq -0x20(%rbp), %rax
movsbl 0x72(%rax), %eax
movq -0x28(%rbp), %rcx
movsbl 0x72(%rcx), %ecx
cmpl %ecx, %eax
je 0x33c8d
movq -0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rdi
callq 0x30200
movq %rax, -0x70(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f090
movq %rax, -0x68(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f0b0
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
movl %eax, %r8d
leaq 0x1f9e5(%rip), %rsi     # 0x5366b
movb $0x0, %al
callq 0x1dfe0
movq -0x20(%rbp), %rax
movsbl 0x74(%rax), %eax
movq -0x28(%rbp), %rcx
movsbl 0x74(%rcx), %ecx
cmpl %ecx, %eax
je 0x33cfb
movq -0x20(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x20(%rbp), %rdi
callq 0x30200
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f090
movq %rax, -0x80(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x2f0b0
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rdx
movq -0x80(%rbp), %rcx
movl %eax, %r8d
leaq 0x1f9ac(%rip), %rsi     # 0x536a0
movb $0x0, %al
callq 0x1dfe0
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x18(%rax), %rsi
callq 0x2fb60
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x19, (%rax)
jne 0x33d33
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
jmp 0x33d66
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x19, (%rax)
jne 0x33d52
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x28(%rax)
jmp 0x33d64
movq -0x20(%rbp), %rdi
leaq 0x1f979(%rip), %rsi     # 0x536d6
movb $0x0, %al
callq 0x1dfe0
jmp 0x33d66
movq -0x20(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x33d83
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x33da0
movq -0x28(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x33d9e
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x33da0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x33db6
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x33e16
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x33dd1
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x33dec
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x348e0
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x348e0
movq -0x20(%rbp), %rax
movsbl 0x76(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x91(%rbp)
jne 0x33e3f
movq -0x28(%rbp), %rax
movsbl 0x76(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x91(%rbp)
movb -0x91(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x76(%rax)
movq -0x20(%rbp), %rax
movsbl 0x77(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x92(%rbp)
jne 0x33e7c
movq -0x28(%rbp), %rax
movsbl 0x77(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x92(%rbp)
movb -0x92(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x77(%rax)
movq -0x20(%rbp), %rax
movsbl 0x78(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x93(%rbp)
jne 0x33eb9
movq -0x28(%rbp), %rax
movsbl 0x78(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x93(%rbp)
movb -0x93(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x78(%rax)
movq -0x20(%rbp), %rax
movsbl 0x79(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x94(%rbp)
jne 0x33ef6
movq -0x28(%rbp), %rax
movsbl 0x79(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x94(%rbp)
movb -0x94(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x79(%rax)
movq -0x20(%rbp), %rax
movsbl 0x71(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x95(%rbp)
jne 0x33f33
movq -0x28(%rbp), %rax
movsbl 0x71(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x95(%rbp)
movb -0x95(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x71(%rax)
movq -0x20(%rbp), %rax
movsbl 0x75(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x96(%rbp)
jne 0x33f70
movq -0x28(%rbp), %rax
movsbl 0x75(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x96(%rbp)
movb -0x96(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x75(%rax)
movq -0x20(%rbp), %rax
movsbl 0x74(%rax), %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x97(%rbp)
jne 0x33fad
movq -0x28(%rbp), %rax
movsbl 0x74(%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x97(%rbp)
movb -0x97(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x74(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)