// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/parse/type.c
// Function: hasparamsrec
int
hasparamsrec(Type *t, Bitset *visited)
{
	size_t i;

	if (bshas(visited, t->tid))
		return 0;
	bsput(visited, t->tid);
	switch (t->type) {
	case Typaram:	return 1;
	case Tygeneric: return 1;
	case Tyname:
		for (i = 0; i < t->narg; i++)
			if (hasparamsrec(t->arg[i], visited))
				return 1;
		return hasparamsrec(t->sub[0], visited);
	case Tyunres:
		for (i = 0; i < t->narg; i++)
			if (hasparamsrec(t->arg[i], visited))
				return 1;
		break;
	case Tystruct:
		for (i = 0; i < t->nmemb; i++)
			if (hasparamsrec(t->sdecls[i]->decl.type, visited))
				return 1;
		break;
	case Tyunion:
		for (i = 0; i < t->nmemb; i++)
			if (t->udecls[i]->etype && hasparamsrec(t->udecls[i]->etype, visited))
				return 1;
		break;
	default:
		for (i = 0; i < t->nsub; i++)
			if (hasparamsrec(t->sub[i], visited))
				return 1;
		break;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
callq 0x37c60
cmpl $0x0, %eax
je 0x37a13
movl $0x0, -0x4(%rbp)
jmp 0x37c4c
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
callq 0x48a50
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $-0x17, %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x6, %eax
ja 0x37bf6
movq -0x28(%rbp), %rax
leaq 0x1c4c8(%rip), %rcx     # 0x53f10
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jae 0x37ab9
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
cmpl $0x0, %eax
je 0x37aa9
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
jmp 0x37aab
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x37a71
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
movl %eax, -0x4(%rbp)
jmp 0x37c4c
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jae 0x37b25
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
cmpl $0x0, %eax
je 0x37b15
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
jmp 0x37b17
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x37add
jmp 0x37c45
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x78(%rcx), %rax
jae 0x37b81
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x28(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
cmpl $0x0, %eax
je 0x37b71
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
jmp 0x37b73
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x37b32
jmp 0x37c45
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x78(%rcx), %rax
jae 0x37bf4
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq $0x0, 0x28(%rax)
je 0x37be4
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x28(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
cmpl $0x0, %eax
je 0x37be4
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
jmp 0x37be6
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x37b8e
jmp 0x37c45
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x37c43
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x18(%rbp), %rsi
callq 0x379e0
cmpl $0x0, %eax
je 0x37c33
movl $0x1, -0x4(%rbp)
jmp 0x37c4c
jmp 0x37c35
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x37bfe
jmp 0x37c45
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)