// File: /workspace/github_c_makefile_star2_O3/dalnefre[P]kernel_abe/schemer.c
// Function: reduce_line
BOOL
reduce_line(CONFIG* cfg, char* line, CONS* cont)
{
	CONS* expr;
	CONS* env;
	CONS* msg;
	CONS* a;
	int n;

	DBUG_ENTER("reduce_line");
	assert(actorp(cont));
	cont = CFG_ACTOR(cfg, one_shot_beh, cont);
	DBUG_PRINT("", ("line=%s", line));
	expr = str_to_cons(line);
	if (expr == NULL) {
		fprintf(stderr, "Syntax Error: %s\n", line);
		DBUG_RETURN FALSE;
	}
	env = init_schemer(cfg);
#if 1
#if 0
	env = CFG_ACTOR(cfg, frame_beh, env);	/* create a new frame to protect the global environment */
#endif
	a = CFG_ACTOR(cfg, fail_beh, cont);
	env = init_add_binding(cfg, env, UNDEFINED, a);		/* install exception handler */
#endif
	msg = mk_pair(cont, mk_pair(expr, env));
	CFG_SEND(cfg, eval__actor, msg);
#if 0
	cfg_start_gc(cfg);
#endif
	n = 0;
	while (n == 0) {
		n = run_configuration(cfg, 100000);
		DBUG_PRINT("", ("n = %d"));
		if (cfg->t_count > 0) {
			DBUG_PRINT("", ("waiting for timed event..."));
			sleep(1);
#if 0
			cfg_start_gc(cfg);
#endif
			n = 0;		/* reset */
		}
	}
#if 1
	cfg_force_gc(cfg);
#endif
	DBUG_RETURN TRUE;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r12
movq %rsi, %rbp
movq %rdi, %rbx
leaq 0xce17(%rip), %rax      # 0x18597
leaq 0x20(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x13b91(%rip), %r15     # 0x1f320
movq (%r15), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x9e2, 0xc(%rdi)       # imm = 0x9E2
leaq 0xf236(%rip), %r14      # 0x1a9e0
movq %r14, 0x10(%rdi)
leaq 0x1398b(%rip), %rcx     # 0x1f140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x16ea2
movl %r12d, %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0xb9a0
leaq -0x8ef4(%rip), %rsi     # 0x28e4
movq %rbx, %rdi
movq %r12, %rdx
callq 0xdd3a
movq %rax, 0x18(%rsp)
leaq 0x14101(%rip), %r13     # 0x1f8f0
cmpl $0x0, (%r13)
je 0xb82c
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x16604
testl %eax, %eax
je 0xb82c
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9e5, 0xc(%rax)       # imm = 0x9E5
leaq 0xcdb9(%rip), %rdi      # 0x185db
movq %rbp, %rsi
xorl %eax, %eax
callq 0x16f13
movq %rbp, %rdi
callq 0x10ae2
testq %rax, %rax
je 0xb97c
movq %rbx, %rdi
movq %rax, 0x10(%rsp)
callq 0xb9bf
movq %rax, 0x8(%rsp)
leaq -0x588(%rip), %rsi      # 0xb2ce
movq %rbx, %rdi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
callq 0xdd3a
movq %rax, %r12
callq 0xd160
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0xc1da
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x150cc
movq %rbp, %rdi
movq %rax, %rsi
callq 0x150cc
movq 0x13ad8(%rip), %rsi     # 0x1f378
movq %rbx, %rdi
movq %rax, %rdx
callq 0xde17
leaq 0xcd43(%rip), %r12      # 0x185f5
movq %rbx, %rdi
movl $0x186a0, %esi          # imm = 0x186A0
callq 0xe48b
movl %eax, %ebp
cmpl $0x0, (%r13)
je 0xb8f7
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x16604
testl %eax, %eax
je 0xb8f7
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9fb, 0xc(%rax)       # imm = 0x9FB
movq %r12, %rdi
xorl %eax, %eax
callq 0x16f13
cmpl $0x0, 0x68(%rbx)
jle 0xb943
cmpl $0x0, (%r13)
je 0xb937
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x16604
testl %eax, %eax
je 0xb937
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9fd, 0xc(%rax)       # imm = 0x9FD
leaq 0xcccc(%rip), %rdi      # 0x185fc
xorl %eax, %eax
callq 0x16f13
movl $0x1, %edi
callq 0x2230
xorl %ebp, %ebp
testl %ebp, %ebp
je 0xb8b2
movq %rbx, %rdi
callq 0xd917
movl $0x1, %ebx
movl $0xa08, %eax            # imm = 0xA08
leaq 0x20(%rsp), %rdi
movl %eax, 0xc(%rdi)
callq 0x17027
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x13675(%rip), %rax     # 0x1eff8
movq (%rax), %rdi
leaq 0xcc56(%rip), %rsi      # 0x185e3
xorl %ebx, %ebx
movq %rbp, %rdx
xorl %eax, %eax
callq 0x2170
movl $0x9e9, %eax            # imm = 0x9E9
jmp 0xb95d
leaq 0xcbfc(%rip), %rdi      # 0x185a3
leaq 0xca0d(%rip), %rsi      # 0x183bb
leaq 0xcbfb(%rip), %rcx      # 0x185b0
movl $0x9e3, %edx            # imm = 0x9E3
callq 0x2100