// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_fcts.c
// Function: same_state
static int
same_state(Arc *in)
{	Stack	*s;
	Var	*e, *f;
	BSym	*x, *y;
	Node	*sys = in->to;

	if (!sys->vis)
		sys->vis = (Vis *) emalloc(sizeof(Vis));

	if (same_unostate(sys->vis)
	&&  same_callpts(sys->vis)
	&&  same_markings(sys->vis))
		return 1;			/* been here before with that state */

	if (free_stack)
	{	s = free_stack;
		free_stack = s->nxt;
		memset(s, 0, sizeof(Stack));
	} else
		s = (Stack *) emalloc(sizeof(Stack));
	s->move = in;
	s->uno_state = stack->uno_state;

	for (e = stack->sels; e; e = e->nxt)		/* copy marked vars forward */
	{	f = new_var(e->s);
		f->loc = e->loc;
		f->sel = 0;
		f->stat = e->stat;
		f->mark = e->mark;
		f->nxt = s->sels;
		s->sels = f;
	}
	for (x = stack->knz; x; x = x->nxt)
	{	y = new_sym(x->s);
		y->nxt = s->knz;
		s->knz = y;
	}

	s->nxt = stack;
	stack = s;					/* stack trace for error reports */

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x49a7
movl $0x20, %edi
callq 0x1270
movq %rax, %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5180
cmpl $0x0, %eax
je 0x49e9
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x51f0
cmpl $0x0, %eax
je 0x49e9
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5340
cmpl $0x0, %eax
je 0x49e9
movl $0x1, -0x4(%rbp)
jmp 0x4b43
cmpq $0x0, 0x7a67(%rip)      # 0xc458
je 0x4a1f
movq 0x7a5e(%rip), %rax      # 0xc458
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x7a4b(%rip)      # 0xc458
movq -0x18(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x10a0
jmp 0x4a2d
movl $0x40, %edi
callq 0x1270
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq 0x6979(%rip), %rax      # 0xb3b8
movw 0x8(%rax), %cx
movq -0x18(%rbp), %rax
movw %cx, 0x8(%rax)
movq 0x6966(%rip), %rax      # 0xb3b8
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x4ad2
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x3810
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x20(%rbp), %rax
movl 0x14(%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x20(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x4a5a
movq 0x68df(%rip), %rax      # 0xb3b8
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x4b22
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x54d0
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x38(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x4ae1
movq 0x688f(%rip), %rcx      # 0xb3b8
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x18(%rbp), %rax
movq %rax, 0x687c(%rip)      # 0xb3b8
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)