// File: /workspace/github_c_makefile_star2_O2/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 $0x38, %rsp
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbx
leaq 0xc23b(%rip), %rax      # 0x17597
leaq 0x10(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x12fb5(%rip), %r15     # 0x1e320
movq (%r15), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%rdi)
movl $0x9e2, 0xc(%rdi)       # imm = 0x9E2
leaq 0xe636(%rip), %r14      # 0x199bc
movq %r14, 0x10(%rdi)
leaq 0x12daf(%rip), %rcx     # 0x1e140
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
callq 0x16679
movl %r12d, %eax
andl $0x3, %eax
cmpl $0x1, %eax
jne 0xb576
leaq -0x8e70(%rip), %rsi     # 0x2544
movq %rbx, %rdi
movq %r12, %rdx
callq 0xd9b7
movq %rax, %rbp
leaq 0x13527(%rip), %r12     # 0x1e8f0
cmpl $0x0, (%r12)
je 0xb406
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x15df4
testl %eax, %eax
je 0xb406
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9e5, 0xc(%rax)       # imm = 0x9E5
leaq 0xc1df(%rip), %rdi      # 0x175db
movq %r13, %rsi
xorl %eax, %eax
callq 0x166f0
movq %r13, %rdi
callq 0x10502
testq %rax, %rax
je 0xb552
movq %rbx, %rdi
movq %rax, 0x8(%rsp)
callq 0xb595
movq %rax, (%rsp)
leaq -0x585(%rip), %rsi      # 0xaeaa
movq %rbx, %rdi
movq %rbp, %rdx
callq 0xd9b7
movq %rax, %r13
callq 0xccde
movq %rbx, %rdi
movq (%rsp), %rsi
movq %rax, %rdx
movq %r13, %rcx
callq 0xbdae
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x14764
movq %rbp, %rdi
movq %rax, %rsi
callq 0x14764
movq 0x12f05(%rip), %rsi     # 0x1e378
movq %rbx, %rdi
movq %rax, %rdx
callq 0xda94
pushq $0x1
popq %rbp
xorl %r13d, %r13d
testl %r13d, %r13d
jne 0xb523
movq %rbx, %rdi
movl $0x186a0, %esi          # imm = 0x186A0
callq 0xe0e7
movl %eax, %r13d
cmpl $0x0, (%r12)
je 0xb4d7
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x15df4
testl %eax, %eax
je 0xb4d7
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9fb, 0xc(%rax)       # imm = 0x9FB
leaq 0xc125(%rip), %rdi      # 0x175f5
xorl %eax, %eax
callq 0x166f0
cmpl $0x0, 0x68(%rbx)
jle 0xb484
cmpl $0x0, (%r12)
je 0xb517
movq (%r15), %rax
movq 0x50(%rax), %rax
movq %r14, 0x10(%rax)
movq %r14, %rdi
callq 0x15df4
testl %eax, %eax
je 0xb517
movq (%r15), %rax
movq 0x50(%rax), %rax
movl $0x9fd, 0xc(%rax)       # imm = 0x9FD
leaq 0xc0ec(%rip), %rdi      # 0x175fc
xorl %eax, %eax
callq 0x166f0
movl %ebp, %edi
callq 0x2240
jmp 0xb481
movq %rbx, %rdi
callq 0xd5ab
pushq $0x1
popq %rbx
movl $0xa08, %eax            # imm = 0xA08
leaq 0x10(%rsp), %rdi
movl %eax, 0xc(%rdi)
callq 0x167f2
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x12a9f(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
leaq 0xc080(%rip), %rsi      # 0x175e3
xorl %ebx, %ebx
movq %r13, %rdx
xorl %eax, %eax
callq 0x2170
movl $0x9e9, %eax            # imm = 0x9E9
jmp 0xb533
leaq 0xc026(%rip), %rdi      # 0x175a3
leaq 0xbe37(%rip), %rsi      # 0x173bb
leaq 0xc025(%rip), %rcx      # 0x175b0
movl $0x9e3, %edx            # imm = 0x9E3
callq 0x2100