// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: make_constructor
cell make_constructor(cell x) {
	cell	n, m, v, a, p, an, new;
	int	id = 0;

	if (!symbol_p(car(x)) || !consname_p(car(x)))
		return error("define_type: expected constructor, got",
				car(x));
	if (!tuple_p(cdr(x)))
		return error("constructor syntax error", x);
	a = node(NIL, NIL);
	save(a);
	for (p = cdr(x); p != NIL; p = cdr(p)) {
		if (!symbol_p(car(p))) {
			return error("non-symbol in constructor", car(p));
		}
		if (consname_p(car(p))) {
			set(car(a), a_name(car(p), id++));
		}
		else {
			car(a) = car(p);
		}
		if (cdr(p) != NIL) {
			set(cdr(a), node(NIL, NIL));
			a = cdr(a);
		}
	}
	a = node(NIL, NIL);
	save(a);
	id = 0;
	for (p = x; p != NIL; p = cdr(p)) {
		if (p == x) {			/* ':constructor */
			n = node(car(p), NIL);
			n = node(S_quote, n);
		}
		else if (consname_p(car(p))) {	/* (type-check c-name a-name */
						/*	       type) */
			if (car(p) == S_cons)
				n = node(S_primlist, NIL);
			else
				n = node(car(p), NIL);
			save(n);
			an = a_name(car(p), id++);
			unsave(1);
			n = node(an, n);
			save(n);
			m = node(car(x), NIL);	/* ':name */
			m = node(S_quote, m);
			unsave(1);
			n = node(m, n);
			n = node(S_typecheck, n);
		}
		else {				/* name */
			n = car(p);
		}
		car(a) = n;
		if (cdr(p) != NIL) {
			set(cdr(a), node(NIL, NIL));
			a = cdr(a);
		}
	}
	n = unsave(1);
	n = node(S_tuple, n);
	n = node(n, NIL);
	v = unsave(1);
	if (cdr(v) == NIL)
		v = car(v);
	n = node(v, n);
	n = node(n, NIL);
	n = node(S_fn, n);
	return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x4c(%rbp)
movq 0x14276(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x13f7e
movq 0x146d4(%rip), %rax     # 0x285f0
movq 0x1425d(%rip), %rcx     # 0x28180
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x13f7e
movq 0x14242(%rip), %rax     # 0x28180
movq 0x1423b(%rip), %rcx     # 0x28180
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x22, (%rax,%rcx,8)
jne 0x13f7e
movq 0x1469d(%rip), %rax     # 0x285f8
movq 0x1466e(%rip), %rcx     # 0x285d0
movq 0x14217(%rip), %rdx     # 0x28180
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx,8), %eax
cmpl $0x3a, %eax
je 0x13fa2
movq 0x141fb(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xcca6(%rip), %rdi      # 0x20c3a
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x1450c
movq 0x14627(%rip), %rax     # 0x285d0
movq -0x10(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x1401a
movq 0x14635(%rip), %rax     # 0x285f0
movq 0x1460e(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x1401a
movq 0x14613(%rip), %rax     # 0x285f0
movq 0x145ec(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
jne 0x1401a
movq 0x145f1(%rip), %rax     # 0x285f0
movq 0x145ca(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x14033
movq -0x10(%rbp), %rsi
leaq 0xcc3c(%rip), %rdi      # 0x20c61
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x1450c
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq 0x140e5(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x140d7(%rip)     # 0x28138
movq 0x14568(%rip), %rax     # 0x285d0
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
cmpq $-0x1, -0x38(%rbp)
je 0x141db
movq 0x140fa(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x140d0
movq 0x14558(%rip), %rax     # 0x285f0
movq 0x140e1(%rip), %rcx     # 0x28180
movq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x140d0
movq 0x140c6(%rip), %rax     # 0x28180
movq 0x140bf(%rip), %rcx     # 0x28180
movq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x22, (%rax,%rcx,8)
je 0x140f4
movq 0x140a9(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xcb94(%rip), %rdi      # 0x20c7a
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x1450c
movq 0x144fd(%rip), %rax     # 0x285f8
movq 0x144ce(%rip), %rcx     # 0x285d0
movq 0x14077(%rip), %rdx     # 0x28180
movq -0x38(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx,8), %eax
cmpl $0x3a, %eax
jne 0x14156
movq 0x1405b(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0x4c(%rbp), %esi
movl %esi, %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
callq 0x13e30
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdx
movq 0x14034(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x14174
movq 0x14023(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x14014(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x14455(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x141c1
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdx
movq 0x1442a(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1441b(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
jmp 0x141c3
movq 0x14406(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
jmp 0x14074
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq 0x13f3d(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x13f2f(%rip)     # 0x28138
movl $0x0, -0x4c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $-0x1, -0x38(%rbp)
je 0x14458
movq -0x38(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0x14269
movq 0x13f4c(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x14463(%rip), %rdi     # 0x286b8
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
jmp 0x143de
movq 0x14388(%rip), %rax     # 0x285f8
movq 0x14359(%rip), %rcx     # 0x285d0
movq 0x13f02(%rip), %rdx     # 0x28180
movq -0x38(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx,8), %eax
cmpl $0x3a, %eax
jne 0x143c9
movq 0x13ee2(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq 0x143f3(%rip), %rax     # 0x286a0
jne 0x142ca
movq 0x144f2(%rip), %rdi     # 0x287a8
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
jmp 0x142eb
movq 0x13eaf(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq 0x13e42(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x13e34(%rip)     # 0x28138
movq 0x13e75(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0x4c(%rbp), %esi
movl %esi, %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
callq 0x13e30
movq %rax, -0x40(%rbp)
movl $0x1, %edi
callq 0x3950
movq -0x40(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq 0x13de9(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x13ddb(%rip)     # 0x28138
movq 0x13e1c(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x20(%rbp)
movq 0x14333(%rip), %rdi     # 0x286b8
movq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x20(%rbp)
movl $0x1, %edi
callq 0x3950
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x143f8(%rip), %rdi     # 0x287b0
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
jmp 0x143dc
movq 0x13db0(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x18(%rbp)
jmp 0x143de
movq -0x18(%rbp), %rdx
movq 0x13d97(%rip), %rax     # 0x28180
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x141d8(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x1443e
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdx
movq 0x141ad(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x1419e(%rip), %rax     # 0x285d0
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
jmp 0x14440
movq 0x14189(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
jmp 0x14218
movl $0x1, %edi
callq 0x3950
movq %rax, -0x18(%rbp)
movq 0x14293(%rip), %rdi     # 0x28700
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, -0x28(%rbp)
movq 0x14129(%rip), %rax     # 0x285d0
movq -0x28(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x144c5
movq 0x13cc7(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq 0x14223(%rip), %rdi     # 0x28718
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)