// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_lts.c
// Function: dfs_uno
static void
dfs_uno(State *s)
{	Trans *t;
	treenode *exp = ZT;

	if (!s) return;

	depth++;
	if (debug)
	{	if (s->n && s->n->hdr.which == LEAF_T)
			printf("%3d: Down <%s> %p <%d: %s>\n",
			depth,
			name_of_node(s->n->hdr.type),
			(s->n->hdr.defuse),
			s->n->hdr.line,
			x_stmnt(s->n));
		else
			printf("%3d: Down <%s:%s:%s> %p <%d: %s>\n",
			depth,
			s->n?name_of_node(s->n->hdr.type):"",
			(s->n && s->n->lnode)?name_of_node(s->n->lnode->hdr.type):"",
			(s->n && s->n->rnode)?name_of_node(s->n->rnode->hdr.type):"",
			(s->n?(s->n->hdr.defuse):0),
			s->n?s->n->hdr.line:-1,
			s->n?x_stmnt(s->n):"--");
		if (s->n->hdr.defuse) dump_defuse(s->n->hdr.defuse, stdout);
		fflush(stdout);
	}

	if (!dfs_push(s)	/* nothing new to track */
	&&   s->visited)	/* been here before     */
	{	if (debug)
			printf("	old\n");
		goto done;
	}
	if (debug)
	{	if (s->visited)
			printf("	revisit\n");
		else
			printf("	new\n");
	}
	s->visited = 1;

	ana_defuse(s->n);	/* uninitialized var analysis */

	if (s->iscond && s->n)
	{	if (s->n->hdr.type == TN_IF)
			exp = ((if_node *)s->n)->cond;
		else
			exp = s->n;
	}

	for (t = s->succ; t && t->branch; t = t->nxt)
	{	if (exp)
		{	if (debug)
			{	printf("Feasible?: %s", x_stmnt(exp));
				printf(" <==> %s\n", x_stmnt(t->cond));
			}
			if (infeasible(exp, t->cond))
			{	if (debug) printf("infeasible path\n");
				continue;	/* e.g. 0 == _true_ */
			}
			newpathcond(exp, t->cond);
#if 0
			if (inconsistent(s->n, pathcond))
			{	/*
				 * s->n has symbols that are known nonzero from previous pathconds
				 * and known zero from the current pathcond -- or vice versa
				 */
				prevpathcond();
				continue;
			}
#endif
			if (!t->knz) setknownzeros(s->n, t, pathcond);

			if (debug) dumknow(s->n, t);

			dfstack->state = pathcond;
		} else
		{	dfstack->state = getpathframe();
			dfstack->state->exp = s->n;
			dfstack->state->val = ZT;
		}
		dfs_uno(t->branch);

		if (exp)
		{	prevpathcond();
		} else
		{	dfstack->state->nxt = pathfree;
			pathfree = dfstack->state;
			dfstack->state = (PathCond *) 0;
		}
	}
done:
	if (debug) printf("%3d: Up\n", depth);
	depth--;
	dfs_pop();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x24653
jmp 0x24b53
movl 0x6193f(%rip), %eax     # 0x85f98
addl $0x1, %eax
movl %eax, 0x61936(%rip)     # 0x85f98
cmpl $0x0, 0x61967(%rip)     # 0x85fd0
je 0x248a6
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x246ee
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpl $0x1, (%rax)
jne 0x246ee
movl 0x6190d(%rip), %eax     # 0x85f98
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x4ec0
movl -0x34(%rbp), %esi
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movl -0x1c(%rbp), %r8d
movq %rax, %r9
leaq 0x20dbc(%rip), %rdi     # 0x4549e
movb $0x0, %al
callq 0x30f0
jmp 0x2486f
movl 0x618a4(%rip), %eax     # 0x85f98
movl %eax, -0x38(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x24716
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x40(%rbp)
jmp 0x24723
leaq 0x10698(%rip), %rax     # 0x34db5
movq %rax, -0x40(%rbp)
jmp 0x24723
movq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2475c
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x40(%rax)
je 0x2475c
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x50(%rbp)
jmp 0x24769
leaq 0x10652(%rip), %rax     # 0x34db5
movq %rax, -0x50(%rbp)
jmp 0x24769
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x247a2
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x48(%rax)
je 0x247a2
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x48(%rax), %rax
movl 0x1c(%rax), %edi
callq 0x8270
movq %rax, -0x60(%rbp)
jmp 0x247af
leaq 0x1060c(%rip), %rax     # 0x34db5
movq %rax, -0x60(%rbp)
jmp 0x247af
movq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x247d2
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x247da
xorl %eax, %eax
movq %rax, -0x70(%rbp)
jmp 0x247da
movq -0x70(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x247fb
movq -0x8(%rbp), %rax
movq (%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x7c(%rbp)
jmp 0x24805
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x7c(%rbp)
jmp 0x24805
movl -0x7c(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2482a
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x4ec0
movq %rax, -0x88(%rbp)
jmp 0x2483a
leaq 0x109da(%rip), %rax     # 0x3520b
movq %rax, -0x88(%rbp)
jmp 0x2483a
movl -0x80(%rbp), %r10d
movq -0x78(%rbp), %r9
movq -0x68(%rbp), %r8
movq -0x58(%rbp), %rcx
movq -0x48(%rbp), %rdx
movl -0x38(%rbp), %esi
movq -0x88(%rbp), %rax
leaq 0x20c5b(%rip), %rdi     # 0x454ba
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x30f0
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x24897
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rdi
movq 0x29741(%rip), %rax     # 0x4dfd0
movq (%rax), %rsi
callq 0x1a7b0
movq 0x29732(%rip), %rax     # 0x4dfd0
movq (%rax), %rdi
callq 0x31b0
movq -0x8(%rbp), %rdi
callq 0x24e20
cmpl $0x0, %eax
jne 0x248dd
movq -0x8(%rbp), %rax
movswl 0x4a(%rax), %eax
cmpl $0x0, %eax
je 0x248dd
cmpl $0x0, 0x61708(%rip)     # 0x85fd0
je 0x248d8
leaq 0x20c0b(%rip), %rdi     # 0x454dc
movb $0x0, %al
callq 0x30f0
jmp 0x24b22
cmpl $0x0, 0x616ec(%rip)     # 0x85fd0
je 0x24911
movq -0x8(%rbp), %rax
cmpw $0x0, 0x4a(%rax)
je 0x24901
leaq 0x20bea(%rip), %rdi     # 0x454e2
movb $0x0, %al
callq 0x30f0
jmp 0x2490f
leaq 0x20be4(%rip), %rdi     # 0x454ec
movb $0x0, %al
callq 0x30f0
jmp 0x24911
movq -0x8(%rbp), %rax
movw $0x1, 0x4a(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x25020
movq -0x8(%rbp), %rax
movswl 0x48(%rax), %eax
cmpl $0x0, %eax
je 0x24969
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x24969
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpl $0x1b, 0x1c(%rax)
jne 0x2495c
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x24967
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x24969
movq -0x8(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x10(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x10(%rbp)
movb %al, -0x89(%rbp)
je 0x24996
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
setne %al
movb %al, -0x89(%rbp)
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0x249a5
jmp 0x24b20
cmpq $0x0, -0x18(%rbp)
je 0x24a80
cmpl $0x0, 0x61619(%rip)     # 0x85fd0
je 0x249f0
movq -0x18(%rbp), %rdi
callq 0x4ec0
movq %rax, %rsi
leaq 0x20b26(%rip), %rdi     # 0x454f2
movb $0x0, %al
callq 0x30f0
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4ec0
movq %rax, %rsi
leaq 0x20b17(%rip), %rdi     # 0x45500
movb $0x0, %al
callq 0x30f0
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x206d0
cmpl $0x0, %eax
je 0x24a21
cmpl $0x0, 0x615c4(%rip)     # 0x85fd0
je 0x24a1c
leaq 0x20af5(%rip), %rdi     # 0x4550a
movb $0x0, %al
callq 0x30f0
jmp 0x24b0f
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
callq 0x25220
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x24a53
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movq 0x6164a(%rip), %rdx     # 0x86098
callq 0x252a0
cmpl $0x0, 0x61576(%rip)     # 0x85fd0
je 0x24a6c
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x25390
movq 0x61625(%rip), %rcx     # 0x86098
movq 0x61616(%rip), %rax     # 0x86090
movq %rcx, 0x10(%rax)
jmp 0x24abb
callq 0x25450
movq %rax, %rcx
movq 0x61601(%rip), %rax     # 0x86090
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rcx
movq 0x615ef(%rip), %rax     # 0x86090
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq 0x615e1(%rip), %rax     # 0x86090
movq 0x10(%rax), %rax
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x24630
cmpq $0x0, -0x18(%rbp)
je 0x24ad6
callq 0x254a0
jmp 0x24b0d
movq 0x615c3(%rip), %rcx     # 0x860a0
movq 0x615ac(%rip), %rax     # 0x86090
movq 0x10(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x6159d(%rip), %rax     # 0x86090
movq 0x10(%rax), %rax
movq %rax, 0x615a2(%rip)     # 0x860a0
movq 0x6158b(%rip), %rax     # 0x86090
movq $0x0, 0x10(%rax)
jmp 0x24b0f
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x24975
jmp 0x24b22
cmpl $0x0, 0x614a7(%rip)     # 0x85fd0
je 0x24b3f
movl 0x61467(%rip), %esi     # 0x85f98
leaq 0x209e3(%rip), %rdi     # 0x4551b
movb $0x0, %al
callq 0x30f0
movl 0x61453(%rip), %eax     # 0x85f98
addl $-0x1, %eax
movl %eax, 0x6144a(%rip)     # 0x85f98
callq 0x254e0
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax)