// File: /workspace/github_c_makefile_star2_O2/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 0xc7b0(%rip), %rax      # 0x17d5a
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x12d69(%rip), %rax     # 0x1e320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x989, 0xc(%rdi)       # imm = 0x989
leaq 0xe3ea(%rip), %rcx      # 0x199bc
movq %rcx, 0x10(%rdi)
leaq 0x12b63(%rip), %rcx     # 0x1e140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x16679
cmpq $0x0, 0x12dae(%rip)     # 0x1e3a0
jne 0xbd8c
leaq -0x71b3(%rip), %rsi     # 0x444c
leaq 0x12c8a(%rip), %r14     # 0x1e290
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, 0x12d60(%rip)     # 0x1e378
leaq -0x5494(%rip), %rsi     # 0x618b
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, 0x12d4f(%rip)     # 0x1e380
leaq -0x4cfb(%rip), %rsi     # 0x693d
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, 0x12d26(%rip)     # 0x1e370
leaq -0x4880(%rip), %rsi     # 0x6dd1
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, 0x12d05(%rip)     # 0x1e368
leaq -0x877e(%rip), %rsi     # 0x2eec
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r15
leaq -0x568(%rip), %rsi      # 0xb117
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xc6d3(%rip), %rdi      # 0x17d67
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x9358(%rip), %rsi     # 0x235c
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
leaq -0x81c(%rip), %rsi      # 0xaeaa
movq %rbx, %rdi
movq %rax, %rdx
callq 0xd9b7
movq %rax, %r12
callq 0xccde
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq 0xbc6e(%rip), %rdi      # 0x17362
callq 0x11f1f
movq %rax, %r12
xorl %edi, %edi
callq 0x38f6
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rax, %rcx
callq 0xbdae
movq %rax, %r15
leaq 0xbc4a(%rip), %rdi      # 0x17368
callq 0x11f1f
movq %rax, %r12
pushq $0x1
popq %rdi
callq 0x38f6
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rax, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x6e32(%rip), %rsi     # 0x4917
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xbad5(%rip), %rdi      # 0x17233
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq 0xc5ef(%rip), %rdi      # 0x17d6d
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x6b75(%rip), %rsi     # 0x4c29
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xc5c2(%rip), %rdi      # 0x17d75
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x697b(%rip), %rsi     # 0x4e58
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xc593(%rip), %rdi      # 0x17d7b
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq 0xda30(%rip), %rdi      # 0x19238
callq 0x11f1f
movq 0x12b6c(%rip), %rcx     # 0x1e380
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xbdae
movq %rax, %r15
leaq 0xbad3(%rip), %rdi      # 0x172ff
callq 0x11f1f
movq 0x12b38(%rip), %rcx     # 0x1e370
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xbdae
movq %rax, %r15
leaq 0xc530(%rip), %rdi      # 0x17d80
callq 0x11f1f
movq 0x12b0c(%rip), %rcx     # 0x1e368
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xbdae
movq %rax, %r15
leaq -0x7c35(%rip), %rsi     # 0x3c3f
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xb9f7(%rip), %rdi      # 0x17280
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x765c(%rip), %rsi     # 0x424d
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xb8ed(%rip), %rdi      # 0x171ab
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x66f3(%rip), %rsi     # 0x51eb
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xb7bc(%rip), %rdi      # 0x170af
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x5f60(%rip), %rsi     # 0x59b3
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xb78e(%rip), %rdi      # 0x170b6
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x46ea(%rip), %rsi     # 0x725e
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xb9da(%rip), %rdi      # 0x17337
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x427f(%rip), %rsi     # 0x76fe
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r12
leaq 0xd159(%rip), %rdi      # 0x18aeb
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x3dd7(%rip), %rsi     # 0x7bdb
movq %rbx, %rdi
movq %r14, %rdx
callq 0xd9b7
movq %rax, %r14
leaq 0xb9cf(%rip), %rdi      # 0x17396
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r14, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x36f6(%rip), %rax     # 0x82f1
leaq 0x3(,%rax,4), %rdx
leaq -0x39c5(%rip), %r14     # 0x8031
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xcf68(%rip), %rdi      # 0x18973
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x34dd(%rip), %rax     # 0x854e
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb9b5(%rip), %rdi      # 0x173fd
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x32a5(%rip), %rax     # 0x87c3
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb98a(%rip), %rdi      # 0x1740f
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x2e0d(%rip), %rax     # 0x8c98
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb977(%rip), %rdi      # 0x17439
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x2bd9(%rip), %rax     # 0x8f09
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb954(%rip), %rdi      # 0x17453
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x2997(%rip), %rax     # 0x9188
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb934(%rip), %rdi      # 0x17470
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x2765(%rip), %rax     # 0x93f7
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb914(%rip), %rdi      # 0x1748d
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x3161(%rip), %rax     # 0x8a38
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb86d(%rip), %rdi      # 0x17423
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x2591(%rip), %rax     # 0x9645
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb8b1(%rip), %rdi      # 0x174a4
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x232d(%rip), %rax     # 0x98e6
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xd7d0(%rip), %rdi      # 0x19400
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x1f7f(%rip), %rax     # 0x9cd1
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb859(%rip), %rdi      # 0x174c6
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x1d19(%rip), %rax     # 0x9f74
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb82d(%rip), %rdi      # 0x174d7
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x1a4a(%rip), %rax     # 0xa280
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xc87b(%rip), %rdi      # 0x18562
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x177b(%rip), %rax     # 0xa58c
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r12
leaq 0xb7e2(%rip), %rdi      # 0x17506
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xbdae
movq %rax, %r15
leaq -0x10e3(%rip), %rax     # 0xac61
leaq 0x3(,%rax,4), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd9b7
movq %rax, %r14
leaq 0xb7dd(%rip), %rdi      # 0x1753e
callq 0x11f1f
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
movq %r14, %rcx
callq 0xbdae
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd4e3
movq %r14, 0x12614(%rip)     # 0x1e3a0
movq %rsp, %rdi
movl $0x9d6, 0xc(%rdi)       # imm = 0x9D6
callq 0x167f2
movq 0x125fe(%rip), %rax     # 0x1e3a0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq