// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: sf_define_type
cell sf_define_type(cell x, int *pc) {
	cell	p, t, n, a, defs, type, new;

	if (!tuple_p(cdr(x)) || !tuple_p(cddr(x)))
		return error("define_type: syntax error", x);
	if (!symbol_p(cadr(x)))
		return error("define_type: expected id, got", cadr(x));
	a = node(NIL, NIL);
	save(a);
	for (p = cddr(x); p != NIL; p = cdr(p)) {
		t = car(p);
		if (symbol_p(t)) {		/* (name 'name) */
			n = node(t, NIL);
			n = node(S_quote, n);
			n = node(n, NIL);
			n = node(t, n);
		}
		else {				/* (name (fn (x y))) */
			n = make_constructor(t);
			n = node(n, NIL);
			n = node(car(t), n);
		}
		n = node(S_define, n);
		car(a) = n;
		if (cdr(p) != NIL) {
			set(cdr(a), node(NIL, NIL));
			a = cdr(a);
		}
	}
	type = cadr(x);			/* (define T '(T cons ...)) */
	type = node(type, cddr(x));
	type = node(type, NIL);
	type = node(S_quote, type);
	type = node(type, NIL);
	type = node(cadr(x), type);
	type = node(S_define, type);
	defs = unsave(1);		/* (begin type-def cons-def ...) */
	defs = node(type, defs);
	defs = node(S_begin, defs);
	*pc = 1;
	return defs;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq 0x14099(%rip), %rax     # 0x285d0
movq -0x10(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x14660
movq 0x140a3(%rip), %rax     # 0x285f0
movq 0x1407c(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x14660
movq 0x1407d(%rip), %rax     # 0x285f0
movq 0x14056(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
jne 0x14660
movq 0x14057(%rip), %rax     # 0x285f0
movq 0x14030(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x14660
movq 0x14011(%rip), %rax     # 0x285d0
movq 0x1400a(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x14660
movq 0x14010(%rip), %rax     # 0x285f0
movq 0x13fe9(%rip), %rcx     # 0x285d0
movq 0x13fe2(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x14660
movq 0x13fe3(%rip), %rax     # 0x285f0
movq 0x13fbc(%rip), %rcx     # 0x285d0
movq 0x13fb5(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
jne 0x14660
movq 0x13fb6(%rip), %rax     # 0x285f0
movq 0x13f8f(%rip), %rcx     # 0x285d0
movq 0x13f88(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x14679
movq -0x10(%rbp), %rsi
leaq 0xc629(%rip), %rdi      # 0x20c94
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x149f1
movq 0x13b00(%rip), %rax     # 0x28180
movq 0x13f49(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $0x0, (%rax,%rcx,8)
jl 0x146eb
movq 0x13f53(%rip), %rax     # 0x285f0
movq 0x13adc(%rip), %rcx     # 0x28180
movq 0x13f25(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x146eb
movq 0x13ab6(%rip), %rax     # 0x28180
movq 0x13aaf(%rip), %rcx     # 0x28180
movq 0x13ef8(%rip), %rdx     # 0x285d0
movq -0x10(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq (%rcx,%rdx,8), %rcx
cmpq $-0x22, (%rax,%rcx,8)
je 0x1471a
movq 0x13a8e(%rip), %rax     # 0x28180
movq 0x13ed7(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0xc5a2(%rip), %rdi      # 0x20cae
callq 0x34b0
movq %rax, -0x8(%rbp)
jmp 0x149f1
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq 0x139fe(%rip), %rsi     # 0x28138
xorl %edx, %edx
callq 0x3780
movq %rax, 0x139f0(%rip)     # 0x28138
movq 0x13e81(%rip), %rax     # 0x285d0
movq 0x13e7a(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
cmpq $-0x1, -0x20(%rbp)
je 0x148e0
movq 0x13a08(%rip), %rax     # 0x28180
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jl 0x1480f
movq 0x13e5a(%rip), %rax     # 0x285f0
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x1480f
movq 0x139d3(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
cmpq $-0x22, (%rax,%rcx,8)
jne 0x1480f
movq -0x28(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq 0x13ee3(%rip), %rdi     # 0x286b8
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
jmp 0x14850
movq -0x28(%rbp), %rdi
callq 0x13ef0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq 0x13947(%rip), %rax     # 0x28180
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq 0x13f19(%rip), %rdi     # 0x28770
movq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdx
movq 0x1390f(%rip), %rax     # 0x28180
movq -0x38(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x13d50(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
je 0x148c6
movq $-0x1, %rsi
xorl %edx, %edx
movq %rsi, %rdi
callq 0x3780
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdx
movq 0x13d25(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x13d16(%rip), %rax     # 0x285d0
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
jmp 0x148c8
movq 0x13d01(%rip), %rax     # 0x285d0
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
jmp 0x14766
movq 0x13899(%rip), %rax     # 0x28180
movq 0x13ce2(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq 0x13cc7(%rip), %rax     # 0x285d0
movq 0x13cc0(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq 0x13d74(%rip), %rdi     # 0x286b8
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq 0x13810(%rip), %rax     # 0x28180
movq 0x13c59(%rip), %rcx     # 0x285d0
movq -0x10(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movq 0x13dd7(%rip), %rdi     # 0x28770
movq -0x48(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x48(%rbp)
movl $0x1, %edi
callq 0x3950
movq %rax, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x40(%rbp)
movq 0x13d98(%rip), %rdi     # 0x28768
movq -0x40(%rbp), %rsi
xorl %edx, %edx
callq 0x3780
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movl $0x1, (%rax)
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)