// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/schemer.c
// Function: eval_beh
BEH_DECL(eval_beh)
{
	CONS* p;
	CONS* state;
	CONS* msg;
	CONS* a;

	DBUG_ENTER("eval_beh");
	if (is_pair(WHAT) && is_pair(p = pr_tail(WHAT))) {
		CONS* to = pr_head(WHAT);
		CONS* expr = pr_head(p);
		CONS* env = pr_tail(p);

		DBUG_PRINT("", ("expr = %s", cons_to_str(expr)));
		if (is_const(expr)) {
			DBUG_PRINT("", ("constant"));
			SEND(to, expr);
		} else if (is_actor(expr)) {
			DBUG_PRINT("", ("actor"));
			SEND(to, expr);
		} else if (is_symbol(expr)) {
			DBUG_PRINT("", ("symbol"));
			msg = mk_empty();
			msg = mk_list(expr, msg);
			msg = mk_list(ATOM("get"), msg);
			msg = mk_pair(msg, env);
			msg = mk_pair(to, msg);
			SEND(env, msg);
		} else if (is_pair(expr)) {
			DBUG_PRINT("", ("combination"));
			state = mk_pair(pr_tail(expr), env);
			state = mk_pair(to, state);
			a = ACTOR(apply_beh, state);
			msg = mk_pair(pr_head(expr), env);
			msg = mk_pair(a, msg);
			SEND(SELF, msg);
		} else {
			DBUG_PRINT("", ("unknown"));
			msg = mk_list(expr, mk_empty());
			msg = mk_list(ATOM("unknown-expr"), msg);
			FAIL(env, msg);
		}
	} else {
		DBUG_PRINT("", ("Ignored! %s", cons_to_str(WHAT)));
		abort();
	}
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x1b0a8(%rip), %rax     # 0x2039e
movq %rax, -0x50(%rbp)
leaq 0x2100f(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x48(%rbp)
movl $0x2a0, -0x44(%rbp)     # imm = 0x2A0
leaq 0x1d870(%rip), %rax     # 0x22b8c
movq %rax, -0x40(%rbp)
leaq 0x20e09(%rip), %rax     # 0x26130
movq %rax, -0x38(%rbp)
leaq 0x20fde(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x1f2c0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x69(%rbp)
je 0x537c
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5a3d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
leaq 0x20edc(%rip), %rcx     # 0x26280
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x5a3d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rdi
callq 0x1c340
movq %rax, %rcx
movq %rcx, -0x10(%rbp)
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x6a(%rbp)
je 0x5409
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rdi
callq 0x1c340
movq %rax, -0x10(%rbp)
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x6a(%rbp)
movb -0x6a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5a3d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rdi
callq 0x1c340
movq %rax, -0x10(%rbp)
leaq 0x20e43(%rip), %rcx     # 0x26280
cmpq %rcx, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x5a3d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rdi
callq 0x1c1b0
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c1b0
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c340
movq %rax, -0x68(%rbp)
leaq 0x21452(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x54ec
leaq 0x20e76(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d6e4(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d6d9(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x54ec
leaq 0x20e4c(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2a6, 0xc(%rax)       # imm = 0x2A6
movq -0x60(%rbp), %rdi
callq 0x14080
movq %rax, %rsi
leaq 0x1ac07(%rip), %rdi     # 0x200ec
movb $0x0, %al
callq 0x1f370
jmp 0x54ee
leaq 0x20d8b(%rip), %rax     # 0x26280
cmpq %rax, -0x60(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x557f
movq -0x60(%rbp), %rax
andq $0x3, %rax
cmpq $0x3, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x557f
movq -0x60(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x1, %edi
callq 0x4350
movq %rax, %rcx
movq -0x78(%rbp), %rax
cmpq %rcx, %rax
je 0x557f
movq -0x60(%rbp), %rax
movq %rax, -0x80(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x4350
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
je 0x557f
movq -0x60(%rbp), %rax
movq %rax, -0x88(%rbp)
callq 0x11360
movq %rax, %rcx
movq -0x88(%rbp), %rax
cmpq %rcx, %rax
jne 0x55f2
jmp 0x5581
leaq 0x21358(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x55da
leaq 0x20d7c(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d5ea(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d5df(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x55da
leaq 0x20d52(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2a8, 0xc(%rax)       # imm = 0x2A8
leaq 0x1ac29(%rip), %rdi     # 0x201fc
movb $0x0, %al
callq 0x1f370
jmp 0x55dc
movq -0x8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x12640
jmp 0x5a3b
movq -0x60(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5681
jmp 0x5610
leaq 0x212c9(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x5669
leaq 0x20ced(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d55b(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d550(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x5669
leaq 0x20cc3(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2ab, 0xc(%rax)       # imm = 0x2AB
leaq 0x1c828(%rip), %rdi     # 0x21e8a
movb $0x0, %al
callq 0x1f370
jmp 0x566b
movq -0x8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x12640
jmp 0x5a39
movq -0x60(%rbp), %rax
andq $0x3, %rax
cmpq $0x2, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x57bd
movq -0x60(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x1, %edi
callq 0x4350
movq %rax, %rcx
movq -0x90(%rbp), %rax
cmpq %rcx, %rax
je 0x57bd
movq -0x60(%rbp), %rax
movq %rax, -0x98(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x4350
movq %rax, %rcx
movq -0x98(%rbp), %rax
cmpq %rcx, %rax
je 0x57bd
jmp 0x56f2
leaq 0x211e7(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x574b
leaq 0x20c0b(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d479(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d46e(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x574b
leaq 0x20be1(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2ae, 0xc(%rax)       # imm = 0x2AE
leaq 0x1a9c2(%rip), %rdi     # 0x20106
movb $0x0, %al
callq 0x1f370
jmp 0x574d
leaq 0x20b2c(%rip), %rax     # 0x26280
movq %rax, -0x20(%rbp)
movq -0x60(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
leaq 0x1a91a(%rip), %rdi     # 0x2008a
callq 0x18510
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x68(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x58(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x12640
jmp 0x5a37
xorl %eax, %eax
cmpq $0x0, -0x60(%rbp)
movb %al, -0x99(%rbp)
je 0x57e1
movq -0x60(%rbp), %rax
andq $0x3, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x99(%rbp)
movb -0x99(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x5910
leaq 0x20a81(%rip), %rax     # 0x26280
cmpq %rax, -0x60(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
jne 0x5910
jmp 0x5819
leaq 0x210c0(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x5872
leaq 0x20ae4(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d352(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d347(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x5872
leaq 0x20aba(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2b6, 0xc(%rax)       # imm = 0x2B6
leaq 0x1a99a(%rip), %rdi     # 0x20205
movb $0x0, %al
callq 0x1f370
jmp 0x5874
movq -0x60(%rbp), %rdi
callq 0x1c340
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x18(%rbp)
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x2fbd(%rip), %rsi     # 0x28f0
callq 0x12520
movq %rax, -0x28(%rbp)
movq -0x60(%rbp), %rdi
callq 0x1c1b0
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c1b0
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x12640
jmp 0x5a35
jmp 0x5912
leaq 0x20fc7(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x596b
leaq 0x209eb(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d259(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d24e(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x596b
leaq 0x209c1(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2be, 0xc(%rax)       # imm = 0x2BE
leaq 0x1a792(%rip), %rdi     # 0x200f6
movb $0x0, %al
callq 0x1f370
jmp 0x596d
movq -0x60(%rbp), %rdi
leaq 0x20908(%rip), %rsi     # 0x26280
callq 0x1c0c0
movq %rax, -0x20(%rbp)
leaq 0x1a889(%rip), %rdi     # 0x20211
callq 0x18510
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0x1c0c0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x3232(%rip), %rsi     # 0x2790
callq 0x12520
movq %rax, -0xc0(%rbp)
leaq 0x1a6b5(%rip), %rdi     # 0x2008a
callq 0x18510
movq %rax, -0xc8(%rbp)
callq 0x11360
movq %rax, %rdi
leaq 0x20890(%rip), %rsi     # 0x26280
callq 0x1c0c0
movq -0xc8(%rbp), %rdi
movq %rax, %rsi
callq 0x1c0c0
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0x1c0c0
movq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x1c0c0
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movq %rax, %rdx
callq 0x12640
jmp 0x5a37
jmp 0x5a39
jmp 0x5a3b
jmp 0x5ab7
jmp 0x5a3f
leaq 0x20e9a(%rip), %rax     # 0x268e0
cmpl $0x0, (%rax)
je 0x5ab0
leaq 0x208be(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1d12c(%rip), %rcx     # 0x22b8c
movq %rcx, 0x10(%rax)
leaq 0x1d121(%rip), %rdi     # 0x22b8c
callq 0x1e6d0
cmpl $0x0, %eax
je 0x5ab0
leaq 0x20894(%rip), %rax     # 0x26310
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x2c4, 0xc(%rax)       # imm = 0x2C4
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x1c340
movq %rax, %rdi
callq 0x14080
movq %rax, %rsi
leaq 0x1a5b7(%rip), %rdi     # 0x20060
movb $0x0, %al
callq 0x1f370
jmp 0x5ab2
callq 0x2050
movl $0x2c7, -0x44(%rbp)     # imm = 0x2C7
leaq -0x50(%rbp), %rdi
callq 0x1f490
addq $0xd0, %rsp
popq %rbp
retq