// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/parse/type.c
// Function: tyidfmt
size_t
tyidfmt(char *buf, size_t sz, Type *ty)
{
	size_t i;
	char *p, *end;

	ty = tysearch(ty);
	p = buf;
	end = buf + sz;
	switch (ty->type) {
	case Ntypes:
	case Tybad:	die("invalid type");	break;
	case Tyvar:	die("tyvar has no idstr");	break;
	case Tyvoid:	p += bprintf(p, end - p, "v");	break;
	case Tychar:	p += bprintf(p, end - p, "c");	break;
	case Tybool:	p += bprintf(p, end - p, "t");	break;
	case Tyint8:	p += bprintf(p, end - p, "b");	break;
	case Tyint16:	p += bprintf(p, end - p, "s");	break;
	case Tyint:	p += bprintf(p, end - p, "i");	break;
	case Tyint32:	p += bprintf(p, end - p, "w");	break;
	case Tyint64:	p += bprintf(p, end - p, "q");	break;

	case Tybyte:	p += bprintf(p, end - p, "H");	break;
	case Tyuint8:	p += bprintf(p, end - p, "B");	break;
	case Tyuint16:	p += bprintf(p, end - p, "S");	break;
	case Tyuint:	p += bprintf(p, end - p, "I");	break;
	case Tyuint32:	p += bprintf(p, end - p, "W");	break;
	case Tyuint64:	p += bprintf(p, end - p, "Q");	break;
	case Tyflt32:	p += bprintf(p, end - p, "f");	break;
	case Tyflt64:	p += bprintf(p, end - p, "d");	break;
	case Tyvalist:	p += bprintf(p, end - p, "V");	break;
	case Typtr:
		p += bprintf(p, end - p, "$p");
		p += tyidfmt(p, end - p, ty->sub[0]);
		break;
	case Tyarray:
		p += bprintf(p, end - p, "$a%lld", (vlong)arraysz(ty->asize));
		p += tyidfmt(p, end - p, ty->sub[0]);
		break;
	case Tyslice:
		p += bprintf(p, end - p, "$s");
		p += tyidfmt(p, end - p, ty->sub[0]);
		break;
	case Tycode:
		p += bprintf(p, end - p, "$F");
		for (i = 0; i < ty->nsub; i++) {
			p += tyidfmt(p, end - p, ty->sub[i]);
			p += bprintf(p, end - p, "$");
		}
		break;
	case Tyfunc:
		p += bprintf(p, end - p, "$f");
		for (i = 0; i < ty->nsub; i++) {
			p += tyidfmt(p, end - p, ty->sub[i]);
			p += bprintf(p, end - p, "$");
		}
		break;
	case Tytuple:
		p += bprintf(p, end - p, "$e");
		for (i = 0; i < ty->nsub; i++) {
			p += tyidfmt(p, end - p, ty->sub[i]);
		}
		p += bprintf(p, end - p, "$");
		break;
	case Tystruct:	p += bprintf(p, end - p, "$t%lld", ty->tid);	break;
	case Tyunion:	p += bprintf(p, end - p, "$u%lld", ty->tid);	break;
	case Typaram:	p += bprintf(p, end - p, "$r%s", ty->pname);	break;
	case Tyunres:
	case Tyname:
		p += bprintf(p, end - p, "$n");
		if (ty->name->name.ns)
			p += bprintf(p, end - p, "%s", ty->name->name.ns);
		p += bprintf(p, end - p, "$%s", ty->name->name.name);
		if (ty->arg)
			for (i = 0; i < ty->narg; i++)
				p += tyidfmt(p, end - p, ty->arg[i]);
		else if (ty->gparam)
			for (i = 0; i < ty->ngparam; i++)
				p += tyidfmt(p, end - p, ty->gparam[i]);
		break;
	case Tygeneric:
		break;
	}
	return p - buf;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x25450
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x38(%rbp)
subq $0x1f, %rax
ja 0x39c0f
movq -0x38(%rbp), %rax
leaq 0x1abb1(%rip), %rcx     # 0x53fe8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1ac71(%rip), %rdi     # 0x540b8
movb $0x0, %al
callq 0x1df20
leaq 0x1ac70(%rip), %rdi     # 0x540c5
movb $0x0, %al
callq 0x1df20
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x18088(%rip), %rdx     # 0x514fa
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a699(%rip), %rdx     # 0x53b35
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x18cca(%rip), %rdx     # 0x52190
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x120f1(%rip), %rdx     # 0x4b5e1
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1abcb(%rip), %rdx     # 0x540e5
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x154b1(%rip), %rdx     # 0x4e9f5
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x120d1(%rip), %rdx     # 0x4b63f
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x195d3(%rip), %rdx     # 0x52b6b
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x12ca5(%rip), %rdx     # 0x4c267
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x12c5c(%rip), %rdx     # 0x4c248
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1be87(%rip), %rdx     # 0x5549d
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x12c42(%rip), %rdx     # 0x4c282
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x12c6a(%rip), %rdx     # 0x4c2d4
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x12c42(%rip), %rdx     # 0x4c2d6
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1aa2d(%rip), %rdx     # 0x540eb
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1302a(%rip), %rdx     # 0x4c712
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a9c6(%rip), %rdx     # 0x540d8
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a99e(%rip), %rdx     # 0x540da
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq 0x88(%rax), %rdi
callq 0x2f180
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq %rax, %rcx
leaq 0x1a92d(%rip), %rdx     # 0x540dd
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a8e3(%rip), %rdx     # 0x540e4
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq (%rax), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a895(%rip), %rdx     # 0x540e7
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x398d6
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x119c0(%rip), %rdx     # 0x4b279
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x39869
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a7f9(%rip), %rdx     # 0x540ea
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x39975
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x11921(%rip), %rdx     # 0x4b279
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x39908
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a75d(%rip), %rdx     # 0x540ed
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x70(%rcx), %rax
jae 0x399ef
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x399a7
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x11874(%rip), %rdx     # 0x4b279
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
leaq 0x1a6ba(%rip), %rdx     # 0x540f0
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
leaq 0x1a690(%rip), %rdx     # 0x540f7
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x88(%rax), %rcx
leaq 0x1a662(%rip), %rdx     # 0x540fe
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x39c0f
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
leaq 0x1a63d(%rip), %rdx     # 0x54103
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq 0x88(%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0x39b1b
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x88(%rax), %rax
movq 0x18(%rax), %rcx
leaq 0x18f8f(%rip), %rdx     # 0x52a9b
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x88(%rax), %rax
movq 0x20(%rax), %rcx
leaq 0x17c92(%rip), %rdx     # 0x517d2
movb $0x0, %al
callq 0x4a230
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x39bac
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jae 0x39baa
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x39b62
jmp 0x39c0b
movq -0x18(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x39c09
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x38(%rcx), %rax
jae 0x39c07
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rax
subq %rax, %rsi
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
callq 0x393e0
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x39bbf
jmp 0x39c09
jmp 0x39c0b
jmp 0x39c0f
jmp 0x39c0f
movq -0x28(%rbp), %rax
movq -0x8(%rbp), %rcx
subq %rcx, %rax
addq $0x50, %rsp
popq %rbp
retq