// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/reduce.c
// Function: eval_actor
BEH_DECL(eval_actor)
{
	CONS* msg = WHAT;
	CONS* expr = map_get(msg, expr_symbol);
	CONS* state = MINE;
	CONS* cont = map_get(state, cont_symbol);
	CONS* env = map_get(state, env_symbol);
	CONS* binding;
	CONS* beh;
	
	DBUG_ENTER("eval_actor");
	binding = map_find(env, self_symbol);
	DBUG_PRINT("", ("binding=%s", cons_to_str(binding)));
	beh = car(expr);
	DBUG_PRINT("", ("beh=%s", cons_to_str(beh)));
	if ((cdr(binding) == undefined_symbol) && actorp(beh)) {
		state = NIL;
		state = map_put(state, env_symbol, env);
		state = map_put(state, beh_symbol, beh);
		expr = ACTOR(invoke_actor, state);
		rplacd(binding, expr);
		DBUG_PRINT("", ("env=%s", cons_to_str(env)));
		DBUG_PRINT("", ("actor=%s", cons_to_str(expr)));
	} else {	/* error */
		SEND(an_error, ATOM("actor: behavior required"));
		expr = undefined_symbol;
	}
	SEND(cont, map_put(NIL, expr_symbol, expr));
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x16990
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq 0x18a5d(%rip), %rsi     # 0x20148
xorl %eax, %eax
movl %eax, %edx
callq 0x171b0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x16800
movq %rax, %rdi
callq 0xba80
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq 0x18a24(%rip), %rsi     # 0x20140
xorl %eax, %eax
movl %eax, %edx
callq 0x171b0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movq 0x18a24(%rip), %rsi     # 0x20158
xorl %eax, %eax
movl %eax, %edx
callq 0x171b0
movq %rax, -0x30(%rbp)
leaq 0x12d0a(%rip), %rax     # 0x1a452
movq %rax, -0x68(%rbp)
leaq 0x18c35(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x60(%rbp)
movl $0x44a, -0x5c(%rbp)     # imm = 0x44A
leaq 0x15542(%rip), %rax     # 0x1ccb0
movq %rax, -0x58(%rbp)
leaq 0x189b7(%rip), %rax     # 0x20130
movq %rax, -0x50(%rbp)
leaq 0x18c04(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x48(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x19910
movq -0x30(%rbp), %rdi
movq 0x189fd(%rip), %rsi     # 0x201a0
callq 0x17080
movq %rax, -0x38(%rbp)
leaq 0x1917d(%rip), %rax     # 0x20930
cmpl $0x0, (%rax)
je 0x7811
leaq 0x18bc9(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x154e3(%rip), %rcx     # 0x1ccb0
movq %rcx, 0x10(%rax)
leaq 0x154d8(%rip), %rdi     # 0x1ccb0
callq 0x18d20
cmpl $0x0, %eax
je 0x7811
leaq 0x18b9f(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x44c, 0xc(%rax)       # imm = 0x44C
movq -0x38(%rbp), %rdi
callq 0xe6d0
movq %rax, %rsi
leaq 0x12c53(%rip), %rdi     # 0x1a45d
movb $0x0, %al
callq 0x199c0
jmp 0x7813
movq -0x18(%rbp), %rdi
callq 0x16800
movq %rax, -0x40(%rbp)
leaq 0x19109(%rip), %rax     # 0x20930
cmpl $0x0, (%rax)
je 0x7885
leaq 0x18b55(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x1546f(%rip), %rcx     # 0x1ccb0
movq %rcx, 0x10(%rax)
leaq 0x15464(%rip), %rdi     # 0x1ccb0
callq 0x18d20
cmpl $0x0, %eax
je 0x7885
leaq 0x18b2b(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x44e, 0xc(%rax)       # imm = 0x44E
movq -0x40(%rbp), %rdi
callq 0xe6d0
movq %rax, %rsi
leaq 0x12bcd(%rip), %rdi     # 0x1a44b
movb $0x0, %al
callq 0x199c0
jmp 0x7887
movq -0x38(%rbp), %rdi
callq 0x16990
cmpq 0x188d1(%rip), %rax     # 0x20168
jne 0x79ef
movq -0x40(%rbp), %rax
andq $0x3, %rax
cmpq $0x1, %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x79ef
leaq 0x18a34(%rip), %rax     # 0x202f8
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq 0x18885(%rip), %rsi     # 0x20158
movq -0x30(%rbp), %rdx
callq 0x172a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq 0x1889d(%rip), %rsi     # 0x20188
movq -0x40(%rbp), %rdx
callq 0x172a0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x5f7(%rip), %rsi      # 0x7310
callq 0xcb70
movq %rax, -0x18(%rbp)
movq -0x38(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x16b50
leaq 0x1900c(%rip), %rax     # 0x20930
cmpl $0x0, (%rax)
je 0x7982
leaq 0x18a58(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x15372(%rip), %rcx     # 0x1ccb0
movq %rcx, 0x10(%rax)
leaq 0x15367(%rip), %rdi     # 0x1ccb0
callq 0x18d20
cmpl $0x0, %eax
je 0x7982
leaq 0x18a2e(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x455, 0xc(%rax)       # imm = 0x455
movq -0x30(%rbp), %rdi
callq 0xe6d0
movq %rax, %rsi
leaq 0x12764(%rip), %rdi     # 0x1a0df
movb $0x0, %al
callq 0x199c0
jmp 0x7984
jmp 0x7986
leaq 0x18fa3(%rip), %rax     # 0x20930
cmpl $0x0, (%rax)
je 0x79eb
leaq 0x189ef(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0x15309(%rip), %rcx     # 0x1ccb0
movq %rcx, 0x10(%rax)
leaq 0x152fe(%rip), %rdi     # 0x1ccb0
callq 0x18d20
cmpl $0x0, %eax
je 0x79eb
leaq 0x189c5(%rip), %rax     # 0x20388
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x456, 0xc(%rax)       # imm = 0x456
movq -0x18(%rbp), %rdi
callq 0xe6d0
movq %rax, %rsi
leaq 0x12a35(%rip), %rdi     # 0x1a419
movb $0x0, %al
callq 0x199c0
jmp 0x79ed
jmp 0x7a29
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq 0x18762(%rip), %rax     # 0x20160
movq %rax, -0x70(%rbp)
leaq 0x12a5f(%rip), %rdi     # 0x1a468
callq 0x12b60
movq -0x78(%rbp), %rdi
movq -0x70(%rbp), %rsi
movq %rax, %rdx
callq 0xcc90
movq 0x18743(%rip), %rax     # 0x20168
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x80(%rbp)
movq 0x18705(%rip), %rsi     # 0x20148
movq -0x18(%rbp), %rdx
leaq 0x188aa(%rip), %rdi     # 0x202f8
callq 0x172a0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq %rax, %rdx
callq 0xcc90
movl $0x45c, -0x5c(%rbp)     # imm = 0x45C
leaq -0x68(%rbp), %rdi
callq 0x19ae0
addq $0x90, %rsp
popq %rbp
retq
nop