// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_fcts.c
// Function: check_prop
static void
check_prop(Arc	*in)
{	Stack	*os;
	BFct	*f;
	Label	*n;
	Arc	*a;
	Node	*sys;
	int	hit;

	if (!in || !in->to)
	{	end_of_path();	/* find continuations in callstack */
		return;
	}

	sys = in->to;

	if (same_state(in))
	{	if (debug)
		printf("\tREVISIT nid %d state_bits %lu - callpt %d\n",
			sys->nid,
			sys->vis->uno_state,	/* bit mask */
			(rstack && rstack->n)?rstack->n->nid:-1);
		return;
	}

	depth++;

	if (debug)
	printf("%3d: [%d, %d] callpt %d -- %s\n", depth, sys?sys->nid:0,
		stack->uno_state,
		(rstack && rstack->n)?rstack->n->nid:-1,
		(sys && sys->lab)?(char *) sys->lab->label:"--");

	if (debug) printf("%3d: evalprop starts (%p)\n", depth, prop_start);

	if (!eval_prop(sys, prop_start))		/* complains on errors */
		goto done;

	if (debug) printf("%3d: evalprop ended\n", depth);

	hit = 0;
	for (n = sys->lab; n; n = n->nxt)		/* check tags on current state */
	{	f = fct_in_lab((char *) n->label);		/* to find all fct calls */
		if (f && !f->visited)			/* effect not already in call chain */
		{	if (debug) printf("%3d:\tCALL to %s [%d]\n", depth, f->fnm, sys->nid);
			do_fct_call(f, sys);
			if (debug) printf("%3d:\tUN_CALL %s [%d]\n", depth, f->fnm, sys->nid);
			hit++;	/* continuation is explored on return from fct */
	}	}
	if (hit) goto done;

	if (!sys->succ) end_of_path();

	for (a = sys->succ; a; a = a->nxt)		/* explore all next states */
	{	if (debug)
		{ printf("%3d:\tDOWN (uno_state=%d)\n", depth, stack->uno_state); list_sel(); }
		check_prop(a);	/* are explored */
		if (debug)
		{ printf("%3d:\tUP (uno_state=%d)\n", depth, stack->uno_state); list_sel(); }
	}
done:
	depth--;
	os = stack;
	stack->sels = rev_release(stack->sels);
	stack->knz  = rev_symrel(stack->knz);
	stack = stack->nxt;
	os->nxt = free_stack;
	free_stack = os;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x433d
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x4347
callq 0x4700
jmp 0x46eb
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4970
cmpl $0x0, %eax
je 0x43d3
cmpl $0x0, 0x7059(%rip)      # 0xb3c0
je 0x43ce
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, 0x80be(%rip)      # 0xc448
je 0x43ac
movq 0x80b5(%rip), %rax      # 0xc448
cmpq $0x0, 0x8(%rax)
je 0x43ac
movq 0x80a7(%rip), %rax      # 0xc448
movq 0x8(%rax), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
jmp 0x43b6
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x48(%rbp)
jmp 0x43b6
movq -0x40(%rbp), %rdx
movl -0x44(%rbp), %esi
movl -0x48(%rbp), %ecx
leaq 0x382b(%rip), %rdi      # 0x7bf2
movb $0x0, %al
callq 0x1080
jmp 0x46eb
movl 0x8077(%rip), %eax      # 0xc450
addl $0x1, %eax
movl %eax, 0x806e(%rip)      # 0xc450
cmpl $0x0, 0x6fd7(%rip)      # 0xb3c0
je 0x44ae
movl 0x805b(%rip), %eax      # 0xc450
movl %eax, -0x4c(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x440a
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x50(%rbp)
jmp 0x4411
xorl %eax, %eax
movl %eax, -0x50(%rbp)
jmp 0x4411
movl -0x50(%rbp), %eax
movl %eax, -0x58(%rbp)
movq 0x6f9a(%rip), %rax      # 0xb3b8
movswl 0x8(%rax), %eax
movl %eax, -0x54(%rbp)
cmpq $0x0, 0x801b(%rip)      # 0xc448
je 0x444f
movq 0x8012(%rip), %rax      # 0xc448
cmpq $0x0, 0x8(%rax)
je 0x444f
movq 0x8004(%rip), %rax      # 0xc448
movq 0x8(%rax), %rax
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
jmp 0x4459
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x5c(%rbp)
jmp 0x4459
movl -0x5c(%rbp), %eax
movl %eax, -0x60(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x4482
movq -0x30(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x4482
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x448f
leaq 0x313b(%rip), %rax      # 0x75c4
movq %rax, -0x68(%rbp)
jmp 0x448f
movl -0x60(%rbp), %r8d
movl -0x54(%rbp), %ecx
movl -0x58(%rbp), %edx
movl -0x4c(%rbp), %esi
movq -0x68(%rbp), %r9
leaq 0x3777(%rip), %rdi      # 0x7c1e
movb $0x0, %al
callq 0x1080
cmpl $0x0, 0x6f0b(%rip)      # 0xb3c0
je 0x44d2
movl 0x7f93(%rip), %esi      # 0xc450
movq 0x7f74(%rip), %rdx      # 0xc438
leaq 0x3772(%rip), %rdi      # 0x7c3d
movb $0x0, %al
callq 0x1080
movq -0x30(%rbp), %rdi
movq 0x7f5b(%rip), %rsi      # 0xc438
callq 0x4b50
cmpl $0x0, %eax
jne 0x44ec
jmp 0x4669
cmpl $0x0, 0x6ecd(%rip)      # 0xb3c0
je 0x4509
movl 0x7f55(%rip), %esi      # 0xc450
leaq 0x3756(%rip), %rdi      # 0x7c58
movb $0x0, %al
callq 0x1080
movl $0x0, -0x34(%rbp)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x45c6
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4e50
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x45b3
movq -0x18(%rbp), %rax
cmpw $0x0, 0x18(%rax)
jne 0x45b3
cmpl $0x0, 0x6e70(%rip)      # 0xb3c0
je 0x4573
movl 0x7ef8(%rip), %esi      # 0xc450
movq -0x18(%rbp), %rax
movq (%rax), %rdx
movq -0x30(%rbp), %rax
movl (%rax), %ecx
leaq 0x3701(%rip), %rdi      # 0x7c6d
movb $0x0, %al
callq 0x1080
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x3aa0
cmpl $0x0, 0x6e39(%rip)      # 0xb3c0
je 0x45aa
movl 0x7ec1(%rip), %esi      # 0xc450
movq -0x18(%rbp), %rax
movq (%rax), %rdx
movq -0x30(%rbp), %rax
movl (%rax), %ecx
leaq 0x36e0(%rip), %rdi      # 0x7c83
movb $0x0, %al
callq 0x1080
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x45b5
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x451c
cmpl $0x0, -0x34(%rbp)
je 0x45d1
jmp 0x4669
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x45e1
callq 0x4700
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x4667
cmpl $0x0, 0x6dc5(%rip)      # 0xb3c0
je 0x4621
movl 0x7e4d(%rip), %esi      # 0xc450
movq 0x6dae(%rip), %rax      # 0xb3b8
movswl 0x8(%rax), %edx
leaq 0x3684(%rip), %rdi      # 0x7c99
movb $0x0, %al
callq 0x1080
callq 0x4ee0
movq -0x28(%rbp), %rdi
callq 0x4320
cmpl $0x0, 0x6d8f(%rip)      # 0xb3c0
je 0x4657
movl 0x7e17(%rip), %esi      # 0xc450
movq 0x6d78(%rip), %rax      # 0xb3b8
movswl 0x8(%rax), %edx
leaq 0x3668(%rip), %rdi      # 0x7cb3
movb $0x0, %al
callq 0x1080
callq 0x4ee0
jmp 0x4659
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x45ed
jmp 0x4669
movl 0x7de1(%rip), %eax      # 0xc450
addl $-0x1, %eax
movl %eax, 0x7dd8(%rip)      # 0xc450
movq 0x6d39(%rip), %rax      # 0xb3b8
movq %rax, -0x10(%rbp)
movq 0x6d2e(%rip), %rax      # 0xb3b8
movq 0x10(%rax), %rdi
callq 0x4f60
movq %rax, %rcx
movq 0x6d1b(%rip), %rax      # 0xb3b8
movq %rcx, 0x10(%rax)
movq 0x6d10(%rip), %rax      # 0xb3b8
movq 0x18(%rax), %rdi
callq 0x5070
movq %rax, %rcx
movq 0x6cfd(%rip), %rax      # 0xb3b8
movq %rcx, 0x18(%rax)
movq 0x6cf2(%rip), %rax      # 0xb3b8
movq 0x38(%rax), %rax
movq %rax, 0x6ce7(%rip)      # 0xb3b8
movq 0x7d80(%rip), %rcx      # 0xc458
movq -0x10(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rbp), %rax
movq %rax, 0x7d6d(%rip)      # 0xc458
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)