// File: /workspace/github_c_makefile_star2_O2/dalnefre[P]kernel_abe/reduce.c
// Function: invoke_actor
BEH_DECL(invoke_actor)
{
	CONS* msg = WHAT;
	CONS* state = MINE;
	CONS* beh = map_get(state, beh_symbol);
	CONS* env = map_get(state, env_symbol);
	CONS* expr = NIL;

	DBUG_ENTER("invoke_actor");
	DBUG_PRINT("", ("beh=%s", cons_to_str(beh)));
	DBUG_PRINT("", ("msg=%s", cons_to_str(msg)));
	while (consp(msg) && !nilp(msg)) {			/* quote already-evaluated arguments */
		expr = cons(cons(ATOM("literal"), cons(car(msg), NIL)), expr);
		/* FIXME: consider using CQ macros for faster list construction */
		msg = cdr(msg);
	}
	expr = reverse(expr);
	DBUG_PRINT("", ("env=%s", cons_to_str(env)));
	DBUG_PRINT("", ("expr=%s", cons_to_str(expr)));
	msg = NIL;
	msg = map_put(msg, env_symbol, env);
	msg = map_put(msg, cont_symbol, a_sink);	/* actors do not return a value */
	msg = map_put(msg, expr_symbol, expr);
	SEND(beh, msg);
	DBUG_RETURN;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
movq 0x30(%rdi), %rdi
callq 0x10e46
movq %rax, %r13
movq %rbx, 0x8(%rsp)
movq 0x30(%rbx), %rdi
callq 0x10d3b
movq %rax, %rdi
callq 0x929b
movq %rax, %r14
movq 0x143d1(%rip), %rsi     # 0x1a198
movq %rax, %rdi
xorl %edx, %edx
callq 0x112c7
movq %rax, %rbx
movq 0x1438d(%rip), %rsi     # 0x1a168
movq %r14, %rdi
xorl %edx, %edx
callq 0x112c7
movq %rax, %r14
leaq 0xd64f(%rip), %rax      # 0x1343e
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x1459a(%rip), %r15     # 0x1a398
movq (%r15), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x423, 0xc(%rdi)       # imm = 0x423
leaq 0xfccb(%rip), %r12      # 0x15ae4
movq %r12, 0x10(%rdi)
leaq 0x1431c(%rip), %rcx     # 0x1a140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x12bb9
leaq 0x14b08(%rip), %rbp     # 0x1a940
cmpl $0x0, (%rbp)
je 0x5ec4
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r12, 0x10(%rax)
movq %r12, %rdi
callq 0x12334
testl %eax, %eax
je 0x5e80
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x424, 0xc(%rax)       # imm = 0x424
movq %rbx, %rdi
callq 0xb248
leaq 0xd5d5(%rip), %rdi      # 0x1344b
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
cmpl $0x0, (%rbp)
je 0x5ec4
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r12, 0x10(%rax)
movq %r12, %rdi
callq 0x12334
testl %eax, %eax
je 0x5ec4
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x425, 0xc(%rax)       # imm = 0x425
movq %r13, %rdi
callq 0xb248
leaq 0xd568(%rip), %rdi      # 0x13422
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
movq %r14, (%rsp)
movq %rbx, %r12
leaq 0x14436(%rip), %r15     # 0x1a308
leaq 0xd29d(%rip), %r14      # 0x13176
movq %r15, %rbp
cmpq %r15, %r13
je 0x5f32
testq %r13, %r13
je 0x5f32
movl %r13d, %eax
andl $0x3, %eax
jne 0x5f32
movq %r14, %rdi
callq 0xe45f
movq %rax, %rbx
movq %r13, %rdi
callq 0x10d3b
movq %rax, %rdi
movq %r15, %rsi
callq 0x10ca4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10ca4
movq %rax, %rdi
movq %rbp, %rsi
callq 0x10ca4
movq %rax, %rbp
movq %r13, %rdi
callq 0x10e46
movq %rax, %r13
jmp 0x5edc
movq %rbp, %rdi
callq 0x110d2
movq %rax, %r13
leaq 0x149fc(%rip), %rbp     # 0x1a940
cmpl $0x0, (%rbp)
movq %r12, %rbx
movq (%rsp), %r14
leaq 0x14442(%rip), %r15     # 0x1a398
leaq 0xfb87(%rip), %r12      # 0x15ae4
je 0x5fe5
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r12, 0x10(%rax)
movq %r12, %rdi
callq 0x12334
testl %eax, %eax
je 0x5fa1
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x42c, 0xc(%rax)       # imm = 0x42C
movq %r14, %rdi
callq 0xb248
leaq 0xd148(%rip), %rdi      # 0x130df
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
cmpl $0x0, (%rbp)
je 0x5fe5
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r12, 0x10(%rax)
movq %r12, %rdi
callq 0x12334
testl %eax, %eax
je 0x5fe5
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x42d, 0xc(%rax)       # imm = 0x42D
movq %r13, %rdi
callq 0xb248
leaq 0xd5ba(%rip), %rdi      # 0x13595
movq %rax, %rsi
xorl %eax, %eax
callq 0x12c30
movq 0x1417c(%rip), %rsi     # 0x1a168
leaq 0x14315(%rip), %rdi     # 0x1a308
movq %r14, %rdx
callq 0x11339
movq 0x1414e(%rip), %rsi     # 0x1a150
movq 0x1419f(%rip), %rdx     # 0x1a1a8
movq %rax, %rdi
callq 0x11339
movq 0x14140(%rip), %rsi     # 0x1a158
movq %rax, %rdi
movq %r13, %rdx
callq 0x11339
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x9fd4
leaq 0x10(%rsp), %rdi
movl $0x433, 0xc(%rdi)       # imm = 0x433
callq 0x12d32
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq