// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/kernel.c
// Function: bool_type
static
BEH_DECL(bool_type)
{
	CONS* value = MINE;
	CONS* msg = WHAT;
	CONS* cust;
	CONS* req;

	DBUG_ENTER("bool_type");
	ENSURE(is_pr(msg));
	cust = hd(msg);
	ENSURE(actorp(cust));
	req = tl(msg);

	DBUG_PRINT("value", ("%s", cons_to_str(value)));
	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(bool_type)) ? a_true : a_false));
	} else if (is_pr(req) && is_pr(tl(req)) && is_pr(tl(tl(req)))
	&& (hd(req) == ATOM("if"))) {
		CONS* cnsq = hd(tl(req));
		CONS* altn = hd(tl(tl(req)));
		CONS* env = tl(tl(tl(req)));

		SEND((value ? cnsq : altn), pr(cust, pr(ATOM("eval"), env)));
	} else if (req == ATOM("write")) {
		SINK* sink = current_sink;
		SEND(cust, (sink->put_cstr)(sink, (value ? "#t" : "#f")));
	} else {
		object_type(CFG);  /* DELEGATE BEHAVIOR */
	}
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
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 0x1cab9(%rip), %rax     # 0x29969
movq %rax, -0x50(%rbp)
leaq 0x22465(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x48(%rbp)
movl $0x361, -0x44(%rbp)     # imm = 0x361
leaq 0x1c499(%rip), %rax     # 0x2936f
movq %rax, -0x40(%rbp)
leaq 0x2225f(%rip), %rax     # 0x2f140
movq %rax, -0x38(%rbp)
leaq 0x22434(%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, -0x71(%rbp)
je 0xcf1e
movq -0x18(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xcf69
leaq 0x2235b(%rip), %rax     # 0x2f290
cmpq %rax, -0x18(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xcf69
movq -0x18(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xcff2
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x742f(%rip), %rsi     # 0x5b50
leaq 0x2230a(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x80(%rbp)
leaq 0x1c5c2(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0x90(%rbp)
leaq 0x1c073(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0xd8b, %esi            # imm = 0xD8B
callq 0x25290
movq -0x90(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x362, -0x44(%rbp)     # imm = 0x362
leaq -0x50(%rbp), %rdi
callq 0x28660
jmp 0xd678
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 0xd0ae
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x74e5(%rip), %rsi     # 0x5b50
leaq 0x22254(%rip), %rdx     # 0x2f290
callq 0x1b6f0
movq %rax, -0x98(%rbp)
leaq 0x1c509(%rip), %rdi     # 0x29558
callq 0x216e0
movq %rax, -0xa8(%rbp)
leaq 0x1bfba(%rip), %rdi     # 0x2901c
callq 0x216e0
movq %rax, %rdi
movl $0xd93, %esi            # imm = 0xD93
callq 0x25290
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
movl $0x364, -0x44(%rbp)     # imm = 0x364
leaq -0x50(%rbp), %rdi
callq 0x28660
jmp 0xd678
movq -0x18(%rbp), %rdi
callq 0x25510
movq %rax, -0x28(%rbp)
leaq 0x2285e(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xd120
leaq 0x22252(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1dff8(%rip), %rcx     # 0x2b0d4
movq %rcx, 0x10(%rax)
leaq 0x1dfed(%rip), %rdi     # 0x2b0d4
callq 0x278a0
cmpl $0x0, %eax
je 0xd120
leaq 0x22228(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x367, 0xc(%rax)       # imm = 0x367
movq -0x10(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1d44c(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xd122
jmp 0xd124
leaq 0x227f5(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xd189
leaq 0x221e9(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1c416(%rip), %rcx     # 0x2955b
movq %rcx, 0x10(%rax)
leaq 0x1c40b(%rip), %rdi     # 0x2955b
callq 0x278a0
cmpl $0x0, %eax
je 0xd189
leaq 0x221bf(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x368, 0xc(%rax)       # imm = 0x368
movq -0x20(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1d3e3(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xd18b
jmp 0xd18d
leaq 0x2278c(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0xd1f2
leaq 0x22180(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1c3b2(%rip), %rcx     # 0x29560
movq %rcx, 0x10(%rax)
leaq 0x1c3a7(%rip), %rdi     # 0x29560
callq 0x278a0
cmpl $0x0, %eax
je 0xd1f2
leaq 0x22156(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x369, 0xc(%rax)       # imm = 0x369
movq -0x28(%rbp), %rdi
callq 0x1d250
movq %rax, %rsi
leaq 0x1d37a(%rip), %rdi     # 0x2a565
movb $0x0, %al
callq 0x28540
jmp 0xd1f4
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0xa9(%rbp)
je 0xd218
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xd309
leaq 0x2205a(%rip), %rax     # 0x2f290
cmpq %rax, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd309
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd309
movq -0x28(%rbp), %rdi
callq 0x25380
movq %rax, -0xb8(%rbp)
leaq 0x1c331(%rip), %rdi     # 0x295b6
callq 0x216e0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
cmpq %rcx, %rax
jne 0xd309
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x28(%rbp), %rdi
callq 0x25510
leaq -0x44f(%rip), %rcx      # 0xce70
shlq $0x2, %rcx
orq $0x3, %rcx
cmpq %rcx, %rax
jne 0xd2dc
movq 0x220a5(%rip), %rax     # 0x2f378
movq %rax, -0xd0(%rbp)
jmp 0xd2ea
movq 0x2208d(%rip), %rax     # 0x2f370
movq %rax, -0xd0(%rbp)
movq -0xc0(%rbp), %rsi
movq -0xc8(%rbp), %rdi
movq -0xd0(%rbp), %rdx
callq 0x1b810
jmp 0xd668
xorl %eax, %eax
cmpq $0x0, -0x28(%rbp)
movb %al, -0xd1(%rbp)
je 0xd32d
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xd1(%rbp)
movb -0xd1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xd5d4
leaq 0x21f45(%rip), %rax     # 0x2f290
cmpq %rax, -0x28(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd5d4
movq -0x28(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0xd2(%rbp)
je 0xd3b7
movq -0x28(%rbp), %rdi
callq 0x25510
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xd2(%rbp)
movb -0xd2(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
leaq 0x21eb2(%rip), %rcx     # 0x2f290
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd5d4
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 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25510
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0xd3(%rbp)
je 0xd45e
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25510
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0xd3(%rbp)
movb -0xd3(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25510
leaq 0x21e03(%rip), %rcx     # 0x2f290
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25510
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25380
movq %rax, -0xe0(%rbp)
leaq 0x1c409(%rip), %rdi     # 0x298f1
callq 0x216e0
movq %rax, %rcx
movq -0xe0(%rbp), %rax
cmpq %rcx, %rax
jne 0xd5d4
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
callq 0x25380
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rdi
callq 0x25510
movq %rax, %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, %rdi
callq 0x25510
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xd56e
movq -0x58(%rbp), %rax
movq %rax, -0xf0(%rbp)
jmp 0xd579
movq -0x60(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x100(%rbp)
leaq 0x1c025(%rip), %rdi     # 0x295be
callq 0x216e0
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0x25290
movq -0x100(%rbp), %rdi
movq %rax, %rsi
callq 0x25290
movq -0xe8(%rbp), %rdi
movq -0xf8(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0xd666
movq -0x28(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq 0x1c00f(%rip), %rdi     # 0x295f5
callq 0x216e0
movq %rax, %rcx
movq -0x108(%rbp), %rax
cmpq %rcx, %rax
jne 0xd65b
movq 0x21da7(%rip), %rax     # 0x2f3a8
movq %rax, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x70(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq 0x1bb38(%rip), %rsi     # 0x2916a
leaq 0x1bb2e(%rip), %rcx     # 0x29167
cmpq $0x0, %rdx
cmovneq %rcx, %rsi
callq *%rax
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rsi
movq %rax, %rdx
callq 0x1b810
jmp 0xd664
movq -0x8(%rbp), %rdi
callq 0xa360
jmp 0xd666
jmp 0xd668
movl $0x37a, -0x44(%rbp)     # imm = 0x37A
leaq -0x50(%rbp), %rdi
callq 0x28660
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw %cs:(%rax,%rax)