// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/kernel.c
// Function: symbol_type
static
BEH_DECL(symbol_type)
{
	CONS* name = MINE;
	CONS* msg = WHAT;
	CONS* cust;
	CONS* req;

	DBUG_ENTER("symbol_type");
	ENSURE(is_pr(msg));
	cust = hd(msg);
	ENSURE(actorp(cust));
	req = tl(msg);

	DBUG_PRINT("name", ("%s", cons_to_str(name)));
	DBUG_PRINT("cust", ("%s", cons_to_str(cust)));
	DBUG_PRINT("req", ("%s", cons_to_str(req)));
	if (is_pr(req)
	&& (hd(req) == ATOM("type_eq"))) {
		SEND(cust, ((tl(req) == MK_REF(symbol_type)) ? a_true : a_false));
	} else if (is_pr(req)
	&& (hd(req) == ATOM("eval"))) {
		CONS* env = tl(req);

		SEND(env, pr(cust, pr(ATOM("lookup"), name)));
	} else if (is_pr(req) && is_pr(tl(req))
	&& (hd(req) == ATOM("match"))) {
		CONS* value = hd(tl(req));
		CONS* env = tl(tl(req));

		SEND(env, pr(cust, pr(ATOM("bind"), pr(name, value))));
	} else if (req == ATOM("write")) {
		SINK* sink = current_sink;
		char* s = printable(name);
		SEND(cust, (sink->put_cstr)(sink, s));
		FREE(s);
	} else {
		object_type(CFG);  /* DELEGATE BEHAVIOR */
	}
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25380
movq %rax, %rdi
callq 0x1a600
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x25510
movq %rax, -0x18(%rbp)
leaq 0x1ea7e(%rip), %rax     # 0x297ee
movq %rax, -0x50(%rbp)
leaq 0x245a5(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x48(%rbp)
movl $0x59d, -0x44(%rbp)     # imm = 0x59D
leaq 0x1e5d9(%rip), %rax     # 0x2936f
movq %rax, -0x40(%rbp)
leaq 0x2439f(%rip), %rax     # 0x2f140
movq %rax, -0x38(%rbp)
leaq 0x24574(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x28490
xorl %eax, %eax
cmpq $0x0, -0x18(%rbp)
movb %al, -0x79(%rbp)
je 0xadde
movq -0x18(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xae29
leaq 0x2449b(%rip), %rax     # 0x2f290
cmpq %rax, -0x18(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xae29
movq -0x18(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xaeb8
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x52ef(%rip), %rsi     # 0x5b50
leaq 0x2444a(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x88(%rbp)
leaq 0x1e6ff(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0x98(%rbp)
leaq 0x1e1b0(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0x167b, %esi           # imm = 0x167B
callq 0x25290
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x59e, -0x44(%rbp)     # imm = 0x59E
leaq -0x50(%rbp), %rdi
callq 0x28660
jmp 0xb576
movq -0x18(%rbp), %rdi
callq 0x25380
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xaf74
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x53ab(%rip), %rsi     # 0x5b50
leaq 0x2438e(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0xa0(%rbp)
leaq 0x1e643(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0xb0(%rbp)
leaq 0x1e0f4(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0x1683, %esi           # imm = 0x1683
callq 0x25290
movq -0xb0(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x5a0, -0x44(%rbp)     # imm = 0x5A0
leaq -0x50(%rbp), %rdi
callq 0x28660
jmp 0xb576
movq -0x18(%rbp), %rdi
callq 0x25510
movq %rax, -0x28(%rbp)
leaq 0x24998(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xafe6
leaq 0x2438c(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1e847(%rip), %rcx     # 0x297e9
movq %rcx, 0x10(%rax)
leaq 0x1e83c(%rip), %rdi     # 0x297e9
callq 0x278a0
cmpl $0x0, %eax
je 0xafe6
leaq 0x24362(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x5a3, 0xc(%rax)       # imm = 0x5A3
movq -0x10(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1f586(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xafe8
jmp 0xafea
leaq 0x2492f(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xb04f
leaq 0x24323(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1e550(%rip), %rcx     # 0x2955b
movq %rcx, 0x10(%rax)
leaq 0x1e545(%rip), %rdi     # 0x2955b
callq 0x278a0
cmpl $0x0, %eax
je 0xb04f
leaq 0x242f9(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x5a4, 0xc(%rax)       # imm = 0x5A4
movq -0x20(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1f51d(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xb051
jmp 0xb053
leaq 0x248c6(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xb0b8
leaq 0x242ba(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1e4ec(%rip), %rcx     # 0x29560
movq %rcx, 0x10(%rax)
leaq 0x1e4e1(%rip), %rdi     # 0x29560
callq 0x278a0
cmpl $0x0, %eax
je 0xb0b8
leaq 0x24290(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x5a5, 0xc(%rax)       # imm = 0x5A5
movq -0x28(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1f4b4(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xb0ba
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0xb1(%rbp)
je 0xb0de
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xb1(%rbp)
movb -0xb1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xb1cf
leaq 0x24194(%rip), %rax     # 0x2f290
cmpq %rax, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb1cf
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb1cf
movq -0x28(%rbp), %rdi
callq 0x25380
movq %rax, -0xc0(%rbp)
leaq 0x1e46b(%rip), %rdi     # 0x295b6
callq 0x216e0
movq %rax, %rcx
movq -0xc0(%rbp), %rax
cmpq %rcx, %rax
jne 0xb1cf
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x28(%rbp), %rdi
callq 0x25510
leaq -0x455(%rip), %rcx      # 0xad30
shlq $0x2, %rcx
orq $0x3, %rcx
cmpq %rcx, %rax
jne 0xb1a2
movq 0x241df(%rip), %rax     # 0x2f378
movq %rax, -0xd8(%rbp)
jmp 0xb1b0
movq 0x241c7(%rip), %rax     # 0x2f370
movq %rax, -0xd8(%rbp)
movq -0xc8(%rbp), %rsi
movq -0xd0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
callq 0x1b810
jmp 0xb566
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0xd9(%rbp)
je 0xb1f3
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xd9(%rbp)
movb -0xd9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xb2e4
leaq 0x2407f(%rip), %rax     # 0x2f290
cmpq %rax, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb2e4
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb2e4
movq -0x28(%rbp), %rdi
callq 0x25380
movq %rax, -0xe8(%rbp)
leaq 0x1e35e(%rip), %rdi     # 0x295be
callq 0x216e0
movq %rax, %rcx
movq -0xe8(%rbp), %rax
cmpq %rcx, %rax
jne 0xb2e4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq 0x1e551(%rip), %rdi     # 0x297fa
callq 0x216e0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x25290
movq -0x100(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xf8(%rbp), %rdi
movq -0xf0(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0xb564
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0x101(%rbp)
je 0xb308
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x101(%rbp)
movb -0x101(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xb4c8
leaq 0x23f6a(%rip), %rax     # 0x2f290
cmpq %rax, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb4c8
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb4c8
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x102(%rbp)
je 0xb392
movq -0x28(%rbp), %rdi
callq 0x25510
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x102(%rbp)
movb -0x102(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xb4c8
movq -0x28(%rbp), %rdi
callq 0x25510
leaq 0x23ed7(%rip), %rcx     # 0x2f290
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb4c8
movq -0x28(%rbp), %rdi
callq 0x25510
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xb4c8
movq -0x28(%rbp), %rdi
callq 0x25380
movq %rax, -0x110(%rbp)
leaq 0x1e1cd(%rip), %rdi     # 0x295d9
callq 0x216e0
movq %rax, %rcx
movq -0x110(%rbp), %rax
cmpq %rcx, %rax
jne 0xb4c8
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25380
movq %rax, -0x60(%rbp)
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25510
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x128(%rbp)
leaq 0x1e38b(%rip), %rdi     # 0x29801
callq 0x216e0
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x25290
movq -0x130(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x128(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0xb562
movq -0x28(%rbp), %rax
movq %rax, -0x138(%rbp)
leaq 0x1e11b(%rip), %rdi     # 0x295f5
callq 0x216e0
movq %rax, %rcx
movq -0x138(%rbp), %rax
cmpq %rcx, %rax
jne 0xb557
movq 0x23eb3(%rip), %rax     # 0x2f3a8
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa2e0
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq *%rax
movq -0x148(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movq -0x78(%rbp), %rdi
callq 0x2030
movq $0x0, -0x78(%rbp)
jmp 0xb560
movq -0x8(%rbp), %rdi
callq 0xa360
jmp 0xb562
jmp 0xb564
jmp 0xb566
movl $0x5bc, -0x44(%rbp)     # imm = 0x5BC
leaq -0x50(%rbp), %rdi
callq 0x28660
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nop