// File: /workspace/github_c_makefile_star2_O3/dalnefre[P]kernel_abe/schemer.c
// Function: init_schemer
static CONS*
init_schemer(CONFIG* cfg)
{
	CONS* env;
	CONS* a;
	
	DBUG_ENTER("init_schemer");
	if (initial__environment == NULL) {
		eval__actor = CFG_ACTOR(cfg, eval_beh, NIL);
		eval_list__actor = CFG_ACTOR(cfg, eval_list_beh, NIL);
		eval_par__actor = CFG_ACTOR(cfg, eval_par_beh, NIL);
		eval_seq__actor = CFG_ACTOR(cfg, eval_seq_beh, NIL);
		env = CFG_ACTOR(cfg, frame_beh, NIL);

		a = CFG_ACTOR(cfg, eval_fail_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("fail!"), a);	/* WARNING: non-standard exception signal */
		a = CFG_ACTOR(cfg, fail_beh, CFG_ACTOR(cfg, abort_beh, NIL));
		env = init_add_binding(cfg, env, UNDEFINED, a);		/* default exception handler */
		env = init_add_binding(cfg, env, ATOM("false"), FALSE_SYMBOL);
		env = init_add_binding(cfg, env, ATOM("true"), TRUE_SYMBOL);
/*		env = init_add_binding(cfg, env, ATOM("eval"), eval__actor); */
		a = CFG_ACTOR(cfg, eval_quote_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("quote"), a);
		env = init_add_binding(cfg, env, ATOM("literal"), a);	/* FIXME: non-standard alias */
		a = CFG_ACTOR(cfg, eval_spawn_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("spawn"), a);	/* non-standard extension */
		a = CFG_ACTOR(cfg, eval_time_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("time"), a);		/* non-standard extension */
		env = init_add_binding(cfg, env, ATOM("list"), eval_list__actor);
		env = init_add_binding(cfg, env, ATOM("par"), eval_par__actor);	/* non-standard extension */
		env = init_add_binding(cfg, env, ATOM("begin"), eval_seq__actor);
		a = CFG_ACTOR(cfg, eval_lambda_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("lambda"), a);
		a = CFG_ACTOR(cfg, eval_form_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("form"), a);		/* non-standard extension */
		a = CFG_ACTOR(cfg, eval_define_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("define"), a);
		a = CFG_ACTOR(cfg, eval_set_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("set!"), a);
		a = CFG_ACTOR(cfg, eval_and_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("and"), a);
		a = CFG_ACTOR(cfg, eval_or_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("or"), a);
		a = CFG_ACTOR(cfg, eval_cond_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("cond"), a);
#if 0  /* replaced by "form" definition in library.scm */
		a = CFG_ACTOR(cfg, eval_if_beh, NIL);
		env = init_add_binding(cfg, env, ATOM("if"), a);
#endif
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_cons_beh));
		env = init_add_binding(cfg, env, ATOM("cons"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_car_beh));
		env = init_add_binding(cfg, env, ATOM("car"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_cdr_beh));
		env = init_add_binding(cfg, env, ATOM("cdr"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_is_pair_beh));
		env = init_add_binding(cfg, env, ATOM("pair?"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_is_symbol_beh));
		env = init_add_binding(cfg, env, ATOM("symbol?"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_is_boolean_beh));
		env = init_add_binding(cfg, env, ATOM("boolean?"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_is_number_beh));
		env = init_add_binding(cfg, env, ATOM("number?"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_is_eq_beh));
		env = init_add_binding(cfg, env, ATOM("eq?"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_plus_beh));
		env = init_add_binding(cfg, env, ATOM("+"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_minus_beh));
		env = init_add_binding(cfg, env, ATOM("-"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_times_beh));
		env = init_add_binding(cfg, env, ATOM("*"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_less_beh));
		env = init_add_binding(cfg, env, ATOM("<"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_greater_beh));
		env = init_add_binding(cfg, env, ATOM(">"), a);
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_sleep_beh));
		env = init_add_binding(cfg, env, ATOM("sleep"), a);		/* non-standard extension */
		a = CFG_ACTOR(cfg, fn_eval_beh, MK_FUNC(apply_call_cc_beh));
		env = init_add_binding(cfg, env, ATOM("call/cc"), a);

		cfg_add_gc_root(cfg, env);
		initial__environment = env;
	}
	DBUG_RETURN initial__environment;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0xd386(%rip), %rax      # 0x18d5a
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x1393f(%rip), %rax     # 0x1f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x989, 0xc(%rdi)       # imm = 0x989
leaq 0xefe4(%rip), %rcx      # 0x1a9e0
movq %rcx, 0x10(%rdi)
leaq 0x13739(%rip), %rcx     # 0x1f140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x16ea2
cmpq $0x0, 0x13984(%rip)     # 0x1f3a0
jne 0xc1b8
leaq -0x7239(%rip), %rsi     # 0x47f0
leaq 0x13860(%rip), %r14     # 0x1f290
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, 0x13936(%rip)     # 0x1f378
leaq -0x550b(%rip), %rsi     # 0x653e
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, 0x13925(%rip)     # 0x1f380
leaq -0x4d72(%rip), %rsi     # 0x6cf0
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, 0x138fc(%rip)     # 0x1f370
leaq -0x48f7(%rip), %rsi     # 0x7184
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, 0x138db(%rip)     # 0x1f368
leaq -0x8808(%rip), %rsi     # 0x328c
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r15
leaq -0x56e(%rip), %rsi      # 0xb53b
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xd2a9(%rip), %rdi      # 0x18d67
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x93e2(%rip), %rsi     # 0x26fc
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
leaq -0x822(%rip), %rsi      # 0xb2ce
movq %rbx, %rdi
movq %rax, %rdx
callq 0xdd3a
movq %rax, %r12
callq 0xd160
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq 0xc844(%rip), %rdi      # 0x18362
callq 0x1257b
movq %rax, %r12
xorl %edi, %edi
callq 0x3c98
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rax, %rcx
callq 0xc1da
movq %rax, %r15
leaq 0xc820(%rip), %rdi      # 0x18368
callq 0x1257b
movq %rax, %r12
movl $0x1, %edi
callq 0x3c98
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rax, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x6eb6(%rip), %rsi     # 0x4cbf
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc6a9(%rip), %rdi      # 0x18233
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq 0xd1c3(%rip), %rdi      # 0x18d6d
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x6bf0(%rip), %rsi     # 0x4fda
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xd196(%rip), %rdi      # 0x18d75
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x69f6(%rip), %rsi     # 0x5209
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xd167(%rip), %rdi      # 0x18d7b
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq 0xe628(%rip), %rdi      # 0x1a25c
callq 0x1257b
movq 0x13740(%rip), %rcx     # 0x1f380
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xc1da
movq %rax, %r15
leaq 0xc6a7(%rip), %rdi      # 0x182ff
callq 0x1257b
movq 0x1370c(%rip), %rcx     # 0x1f370
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xc1da
movq %rax, %r15
leaq 0xd104(%rip), %rdi      # 0x18d80
callq 0x1257b
movq 0x136e0(%rip), %rcx     # 0x1f368
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xc1da
movq %rax, %r15
leaq -0x7cbd(%rip), %rsi     # 0x3fe3
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc5cb(%rip), %rdi      # 0x18280
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x76e4(%rip), %rsi     # 0x45f1
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc4c1(%rip), %rdi      # 0x181ab
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x676e(%rip), %rsi     # 0x559c
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc390(%rip), %rdi      # 0x180af
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x5fdb(%rip), %rsi     # 0x5d64
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc362(%rip), %rdi      # 0x180b6
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x4763(%rip), %rsi     # 0x7611
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xc5ae(%rip), %rdi      # 0x18337
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x42f6(%rip), %rsi     # 0x7ab3
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r12
leaq 0xdd51(%rip), %rdi      # 0x19b0f
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x3e4e(%rip), %rsi     # 0x7f90
movq %rbx, %rdi
movq %r14, %rdx
callq 0xdd3a
movq %rax, %r14
leaq 0xc5a3(%rip), %rdi      # 0x18396
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r14, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x376b(%rip), %rax     # 0x86a8
leaq 0x3(,%rax,4), %rdx
leaq -0x3a3a(%rip), %r14     # 0x83e8
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xdb60(%rip), %rdi      # 0x19997
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x3550(%rip), %rax     # 0x8907
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc589(%rip), %rdi      # 0x183fd
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x3316(%rip), %rax     # 0x8b7e
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc55e(%rip), %rdi      # 0x1840f
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x2e78(%rip), %rax     # 0x9059
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc54b(%rip), %rdi      # 0x18439
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x2c40(%rip), %rax     # 0x92ce
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc528(%rip), %rdi      # 0x18453
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x29f8(%rip), %rax     # 0x9553
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc508(%rip), %rdi      # 0x18470
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x27c0(%rip), %rax     # 0x97c8
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc4e8(%rip), %rdi      # 0x1848d
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x31d0(%rip), %rax     # 0x8df5
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc441(%rip), %rdi      # 0x18423
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x25e8(%rip), %rax     # 0x9a1a
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc485(%rip), %rdi      # 0x184a4
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x235e(%rip), %rax     # 0x9ce1
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xe3c8(%rip), %rdi      # 0x1a424
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x1fb9(%rip), %rax     # 0xa0c3
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc42d(%rip), %rdi      # 0x184c6
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x1d2b(%rip), %rax     # 0xa38e
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc401(%rip), %rdi      # 0x184d7
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x1a5a(%rip), %rax     # 0xa69c
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xd473(%rip), %rdi      # 0x19586
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x1789(%rip), %rax     # 0xa9aa
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r12
leaq 0xc3b6(%rip), %rdi      # 0x18506
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq %rax, %r15
leaq -0x10ed(%rip), %rax     # 0xb083
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xdd3a
movq %rax, %r14
leaq 0xc3b1(%rip), %rdi      # 0x1853e
callq 0x1257b
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r14, %rcx
callq 0xc1da
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd84f
movq %r14, 0x131e8(%rip)     # 0x1f3a0
movq %rsp, %rdi
movl $0x9d6, 0xc(%rdi)       # imm = 0x9D6
callq 0x17027
movq 0x131d2(%rip), %rax     # 0x1f3a0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq