// File: /workspace/github_c_makefile_star2_O1/azhai[P]mlite/mlite.c
// Function: type_decl
cell type_decl(void) {
	cell	n, t, new;

	Token = scan();
	if (Token != TOK_ID || !consname_p(Attr))
		return error("constructor name expected at", Attr);
	save(Attr);
	Token = scan();
	if (Token != TOK_ID || Attr != S_equal) {
		unsave(1);
		return error("missing '=' after 'type'", NOEXPR);
	}
	Token = scan();
	t = node(NIL, NIL);
	save(t);
	for (;;) {
		if (Token != TOK_ID) {
			unsave(2);
			return error("constructor expected", NOEXPR);
		}
		save(Attr);
		Token = scan();
		if (Token == TOK_LPAREN) {
			Token = scan();
			n = node(NIL, NIL);
			save(n);
			while (Token == TOK_ID || Token == TOK_CONS) {
				if (Token == TOK_CONS)
					Attr = S_cons;
				car(n) = Attr;
				Token = scan();
				if (Token != TOK_COMMA)
					break;
				Token = scan();
				set(cdr(n), node(NIL, NIL));
				n = cdr(n);
			}
			if (Token != TOK_RPAREN) {
				unsave(4);
				return error("missing ')' in constructor",
						NOEXPR);
			}
			Token = scan();
			n = unsave(1);
			n = node(unsave(1), n);
			save(n);
		}
		car(t) = unsave(1);
		if (Token != TOK_PIPE)
			break;
		Token = scan();
		set(cdr(t), node(NIL, NIL));
		t = cdr(t);
	}
	n = unsave(1);
	n = node(unsave(1), n);
	n = node(S_define_type, n);
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
callq 0x9c07
movl %eax, 0x119e0(%rip)     # 0x1e6d0
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
jne 0xcf4c
movq 0x118e6(%rip), %rax     # 0x1e5e8
movq 0x118b7(%rip), %rcx     # 0x1e5c0
movq 0x11448(%rip), %rdi     # 0x1e158
movq (%rcx,%rdi,8), %rcx
cmpb $0x3a, (%rax,%rcx,8)
jne 0xcf4c
movq 0x11403(%rip), %rsi     # 0x1e128
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x113f5(%rip)     # 0x1e128
callq 0x9c07
movl %eax, 0x11992(%rip)     # 0x1e6d0
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
jne 0xcf5c
movq 0x11408(%rip), %rax     # 0x1e158
cmpq 0x119a1(%rip), %rax     # 0x1e6f8
jne 0xcf5c
callq 0x9c07
movl %eax, 0x11968(%rip)     # 0x1e6d0
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %rbx
movq 0x113a1(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x11390(%rip)     # 0x1e128
cmpl $0xfffffed1, 0x1192e(%rip) # imm = 0xFFFFFED1
jne 0xcf39
movq 0x113a9(%rip), %rdi     # 0x1e158
movq 0x11372(%rip), %rsi     # 0x1e128
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x11364(%rip)     # 0x1e128
callq 0x9c07
movl %eax, 0x11901(%rip)     # 0x1e6d0
cmpl $-0x68, %eax
jne 0xced9
callq 0x9c07
movl %eax, 0x118ed(%rip)     # 0x1e6d0
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, %r14
movq 0x11326(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x11315(%rip)     # 0x1e128
movl 0x118b7(%rip), %eax     # 0x1e6d0
cmpl $0xfffffed1, %eax       # imm = 0xFFFFFED1
je 0xce33
cmpl $-0x67, %eax
jne 0xce85
movq 0x11864(%rip), %rax     # 0x1e690
movq %rax, 0x11325(%rip)     # 0x1e158
movq 0x1131e(%rip), %rax     # 0x1e158
movq 0x1132f(%rip), %rcx     # 0x1e170
movq %rax, (%rcx,%r14,8)
callq 0x9c07
movl %eax, 0x11880(%rip)     # 0x1e6d0
cmpl $-0x64, %eax
jne 0xce85
callq 0x9c07
movl %eax, 0x11870(%rip)     # 0x1e6d0
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x11744(%rip), %rcx     # 0x1e5c0
movq %rax, (%rcx,%r14,8)
movq %rax, %r14
jmp 0xce13
cmpl $-0x69, 0x11844(%rip)   # 0x1e6d0
jne 0xcfbe
callq 0x9c07
movl %eax, 0x11833(%rip)     # 0x1e6d0
movl $0x1, %edi
callq 0x3851
movq %rax, %r14
movl $0x1, %edi
callq 0x3851
movq %rax, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x11260(%rip), %rsi     # 0x1e128
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0x1124f(%rip)     # 0x1e128
movl $0x1, %edi
callq 0x3851
movq 0x11286(%rip), %rcx     # 0x1e170
movq %rax, (%rcx,%rbx,8)
cmpl $-0x66, 0x117db(%rip)   # 0x1e6d0
jne 0xcf85
callq 0x9c07
movl %eax, 0x117ca(%rip)     # 0x1e6d0
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x1169e(%rip), %rcx     # 0x1e5c0
movq %rax, (%rcx,%rbx,8)
cmpl $0xfffffed1, 0x117a0(%rip) # imm = 0xFFFFFED1
movq %rax, %rbx
je 0xcda8
movl $0x2, %edi
callq 0x3851
leaq 0x99d1(%rip), %rdi      # 0x1691b
jmp 0xcf6d
movq 0x11205(%rip), %rsi     # 0x1e158
leaq 0x998b(%rip), %rdi      # 0x168e5
jmp 0xcf74
movl $0x1, %edi
callq 0x3851
leaq 0x9995(%rip), %rdi      # 0x16902
movq $-0x8, %rsi
callq 0x33eb
movq $-0x5, %rax
popq %rbx
popq %r14
popq %rbp
retq
movl $0x1, %edi
callq 0x3851
movq %rax, %rbx
movl $0x1, %edi
callq 0x3851
movq %rax, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0x117c0(%rip), %rdi     # 0x1e770
movq %rax, %rsi
xorl %edx, %edx
popq %rbx
popq %r14
popq %rbp
jmp 0x36e8
movl $0x4, %edi
callq 0x3851
leaq 0x9961(%rip), %rdi      # 0x16930
jmp 0xcf6d