// File: /workspace/github_c_makefile_star2_O0/azhai[P]mlite/mlite.c
// Function: apply_special
cell apply_special(cell x, int *pc, int *ps) {
	cell	sf;

	sf = car(x);
	if (sf == S_quote) return sf_quote(x);
	else if (sf == S_if) return sf_if(x, pc, ps);
	else if (sf == S_also) return sf_also(x, pc, ps);
	else if (sf == S_or) return sf_or(x, pc, ps);
	else if (sf == S_begin) return sf_begin(x, pc, ps);
	else if (sf == S_fn) return sf_fn(x);
	else if (sf == S_setb) return sf_setb(x, pc, ps);
	else if (sf == S_letrec) return sf_letrec(x, pc);
	else if (sf == S_define) return sf_define(0, x, pc, ps);
	else if (sf == S_raise) return sf_raise(x, pc, ps);
	else if (sf == S_from) return sf_redirect(0, x, pc, ps);
	else if (sf == S_to) return sf_redirect(1, x, pc, ps);
	else if (sf == S_define_type) return sf_define_type(x, pc);
	else if (sf == S_define_syntax) return sf_define(1, x, pc, ps);
	else fatal("internal: unknown special form");
	return UNDEFINED;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq 0x13695(%rip), %rax     # 0x28180
movq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq 0x13bb6(%rip), %rax     # 0x286b8
jne 0x14b16
movq -0x10(%rbp), %rdi
callq 0x13830
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13c2f(%rip), %rax     # 0x28750
jne 0x14b3d
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x12db0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13bb0(%rip), %rax     # 0x286f8
jne 0x14b70
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
movl $0x8, %edi
movq $-0x2, %rsi
callq 0x12cd0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13b95(%rip), %rax     # 0x28710
jne 0x14ba3
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
movl $0x9, %edi
movq $-0x3, %rsi
callq 0x12cd0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13bba(%rip), %rax     # 0x28768
jne 0x14bd6
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
movl $0x7, %edi
movq $-0x6, %rsi
callq 0x12cd0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13b37(%rip), %rax     # 0x28718
jne 0x14bf5
movq -0x10(%rbp), %rdi
callq 0x135c0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13b98(%rip), %rax     # 0x28798
jne 0x14c1c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x13900
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13b51(%rip), %rax     # 0x28778
jne 0x14c3f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x13190
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13b26(%rip), %rax     # 0x28770
jne 0x14c68
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
xorl %edi, %edi
callq 0x13bb0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13ad5(%rip), %rax     # 0x28748
jne 0x14c8f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x138c0
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13abe(%rip), %rax     # 0x28758
jne 0x14cb8
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
xorl %edi, %edi
callq 0x14a00
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13a9d(%rip), %rax     # 0x28760
jne 0x14ce1
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0x1, %edi
callq 0x14a00
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13a94(%rip), %rax     # 0x28780
jne 0x14d01
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x14520
movq %rax, -0x8(%rbp)
jmp 0x14d58
movq -0x28(%rbp), %rax
cmpq 0x13a94(%rip), %rax     # 0x287a0
jne 0x14d2a
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0x1, %edi
callq 0x13bb0
movq %rax, -0x8(%rbp)
jmp 0x14d58
leaq 0xbf9b(%rip), %rdi      # 0x20ccc
callq 0x3c70
jmp 0x14d38
jmp 0x14d3a
jmp 0x14d3c
jmp 0x14d3e
jmp 0x14d40
jmp 0x14d42
jmp 0x14d44
jmp 0x14d46
jmp 0x14d48
jmp 0x14d4a
jmp 0x14d4c
jmp 0x14d4e
jmp 0x14d50
movq $-0x5, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)