// File: /workspace/github_c_makefile_star2_O0/dalnefre[P]kernel_abe/actor.c
// Function: cfg_gather_roots
static CONS*
cfg_gather_roots(CONFIG* cfg)
{
	CONS* root;
	CONS* node;
	CONS* entry;
	int n;

	DBUG_ENTER("cfg_gather_roots");
	root = cfg->gc_root;
	DBUG_PRINT("", ("length(gc_root)=%d", length(root)));
	/* protect pending messages */
	n = 0;
	node = CQ_PEEK(CONFIG_QUEUE(cfg));
	while (!nilp(node)) {
		entry = car(node);					/* entry is a permanent cell */
		root = cons(cdr(entry), root);		/* add message to root list */
		root = cons(car(entry), root);		/* add actor to root list */
		node = cdr(node);
		++n;
	}
	DBUG_PRINT("", ("n=%d q_count=%d", n, cfg->q_count));
	assert(n == cfg->q_count);
	/* protect delayed messages */
	n = 0;
	node = cfg->t_queue;
	while (!nilp(node)) {
		entry = cdr(car(node));				/* entry is a permanent cell */
		root = cons(cdr(entry), root);		/* add message to root list */
		root = cons(car(entry), root);		/* add actor to root list */
		node = cdr(node);
		++n;
	}
	DBUG_PRINT("", ("n=%d t_count=%d", n, cfg->t_count));
	assert(n == cfg->t_count);
	DBUG_RETURN root;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
leaq 0xed02(%rip), %rax      # 0x29fc5
movq %rax, -0x50(%rbp)
leaq 0x14052(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x48(%rbp)
movl $0x104, -0x44(%rbp)     # imm = 0x104
leaq 0xe086(%rip), %rax      # 0x2936f
movq %rax, -0x40(%rbp)
leaq 0x13ea4(%rip), %rax     # 0x2f198
movq %rax, -0x38(%rbp)
leaq 0x14021(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x28490
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x10(%rbp)
leaq 0x145fa(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0x1b383
leaq 0x13fee(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xe02f(%rip), %rcx      # 0x2936f
movq %rcx, 0x10(%rax)
leaq 0xe024(%rip), %rdi      # 0x2936f
callq 0x278a0
cmpl $0x0, %eax
je 0x1b383
leaq 0x13fc4(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x106, 0xc(%rax)       # imm = 0x106
movq -0x10(%rbp), %rdi
callq 0x25a60
movl %eax, %esi
leaq 0xec5a(%rip), %rdi      # 0x29fd6
movb $0x0, %al
callq 0x28540
jmp 0x1b385
movl $0x0, -0x24(%rbp)
movq -0x8(%rbp), %rdi
callq 0x25380
movq %rax, -0x18(%rbp)
leaq 0x13ef0(%rip), %rax     # 0x2f290
cmpq %rax, -0x18(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1b3bd
jmp 0x1b414
movq -0x18(%rbp), %rdi
callq 0x25380
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x25290
movq %rax, -0x10(%rbp)
movq -0x20(%rbp), %rdi
callq 0x25380
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x25290
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rdi
callq 0x25510
movq %rax, -0x18(%rbp)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x1b399
jmp 0x1b416
leaq 0x14503(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0x1b479
leaq 0x13ef7(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xdf38(%rip), %rcx      # 0x2936f
movq %rcx, 0x10(%rax)
leaq 0xdf2d(%rip), %rdi      # 0x2936f
callq 0x278a0
cmpl $0x0, %eax
je 0x1b479
leaq 0x13ecd(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x111, 0xc(%rax)       # imm = 0x111
movl -0x24(%rbp), %esi
movq -0x8(%rbp), %rax
movl 0x28(%rax), %edx
leaq 0xeb77(%rip), %rdi      # 0x29fe9
movb $0x0, %al
callq 0x28540
jmp 0x1b47b
movl -0x24(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jne 0x1b489
jmp 0x1b4a8
leaq 0xeb69(%rip), %rdi      # 0x29ff9
leaq 0xe756(%rip), %rsi      # 0x29bed
movl $0x112, %edx            # imm = 0x112
leaq 0xeb68(%rip), %rcx      # 0x2a00b
callq 0x2100
movl $0x0, -0x24(%rbp)
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x18(%rbp)
leaq 0x13dce(%rip), %rax     # 0x2f290
cmpq %rax, -0x18(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1b4df
jmp 0x1b541
movq -0x18(%rbp), %rdi
callq 0x25380
movq %rax, %rdi
callq 0x25510
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x25510
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x25290
movq %rax, -0x10(%rbp)
movq -0x20(%rbp), %rdi
callq 0x25380
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0x25290
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rdi
callq 0x25510
movq %rax, -0x18(%rbp)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x1b4bb
jmp 0x1b543
leaq 0x143d6(%rip), %rax     # 0x2f920
cmpl $0x0, (%rax)
je 0x1b5a6
leaq 0x13dca(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
leaq 0xde0b(%rip), %rcx      # 0x2936f
movq %rcx, 0x10(%rax)
leaq 0xde00(%rip), %rdi      # 0x2936f
callq 0x278a0
cmpl $0x0, %eax
je 0x1b5a6
leaq 0x13da0(%rip), %rax     # 0x2f320
movq (%rax), %rax
movq 0x50(%rax), %rax
movl $0x11d, 0xc(%rax)       # imm = 0x11D
movl -0x24(%rbp), %esi
movq -0x8(%rbp), %rax
movl 0x68(%rax), %edx
leaq 0xea8d(%rip), %rdi      # 0x2a02c
movb $0x0, %al
callq 0x28540
jmp 0x1b5a8
movl -0x24(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x68(%rcx), %eax
jne 0x1b5b6
jmp 0x1b5d5
leaq 0xea7f(%rip), %rdi      # 0x2a03c
leaq 0xe629(%rip), %rsi      # 0x29bed
movl $0x11e, %edx            # imm = 0x11E
leaq 0xea3b(%rip), %rcx      # 0x2a00b
callq 0x2100
movl $0x11f, -0x44(%rbp)     # imm = 0x11F
leaq -0x50(%rbp), %rdi
callq 0x28660
movq -0x10(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nop