// File: /workspace/github_c_makefile_star2_O2/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:
testq %rdi, %rdi
je 0x15981
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
incl 0x59b1a(%rip)           # 0x6ee48
callq 0x15a35
movq %rax, %r14
movq 0x59beb(%rip), %r15     # 0x6ef28
movb $0x1, %r12b
testq %r15, %r15
je 0x155b9
xorl %r13d, %r13d
pushq $0x1
popq %rbp
movq (%r15), %r15
testq %r15, %r15
je 0x15389
movq %rbx, %rdi
movq %r15, %rsi
callq 0x12731
testl %eax, %eax
je 0x15383
movq (%r15), %rdi
callq 0x12673
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rcx
movq %rcx, 0x18(%rax)
movq %rax, (%r14)
movl %ebp, %r13d
addq $0x18, %r15
jmp 0x1534f
movq 0x59b98(%rip), %rax     # 0x6ef28
movq 0x8(%rax), %r15
testq %r15, %r15
je 0x15461
cmpq $0x0, 0x10(%rbx)
je 0x15470
movl %r13d, 0x4(%rsp)
leaq 0x10(%rbx), %r13
xorl %ebp, %ebp
movq %r15, %r12
testq %r12, %r12
je 0x153ff
movq %r13, %rax
movq (%rax), %rax
testq %rax, %rax
je 0x153e2
movq (%rax), %rcx
cmpq (%r12), %rcx
jne 0x153dc
movl 0x10(%rax), %ecx
xorl 0x10(%r12), %ecx
testb $0x1, %cl
je 0x153f8
addq $0x18, %rax
jmp 0x153be
movq %r12, %rdi
callq 0x126a7
movq (%r13), %rcx
movq %rcx, 0x18(%rax)
movq %rax, (%r13)
incl %ebp
movq 0x18(%r12), %r12
jmp 0x153b6
leaq 0x18(%rbx), %rax
xorl %ecx, %ecx
movq %rax, %rdx
movb $0x1, %r12b
movl 0x4(%rsp), %r13d
movq (%rdx), %rdx
testq %rdx, %rdx
je 0x1545b
movq (%rdx), %rsi
movq %r15, %rdi
testq %rdi, %rdi
je 0x1543c
cmpq %rsi, (%rdi)
jne 0x15436
movl 0x10(%rdx), %r8d
xorl 0x10(%rdi), %r8d
testb $0x1, %r8b
je 0x15452
movq 0x18(%rdi), %rdi
jmp 0x1541e
leaq 0x18(%rcx), %rsi
testq %rcx, %rcx
movq 0x18(%rdx), %rdi
cmoveq %rax, %rsi
movq %rdi, (%rsi)
incl %ebp
jmp 0x15455
movq %rdx, %rcx
addq $0x18, %rdx
jmp 0x15410
testl %ebp, %ebp
jne 0x15488
jmp 0x1548c
cmpw $0x0, 0x30(%rbx)
jne 0x1548c
movw $0x1, 0x30(%rbx)
jmp 0x15488
movq %r15, %rdi
callq 0x15a60
movq %rax, 0x10(%rbx)
movq %r15, %rdi
callq 0x15a60
movq %rax, 0x18(%rbx)
pushq $0x1
popq %r13
movq 0x59a9d(%rip), %r15     # 0x6ef30
testq %r15, %r15
je 0x1558e
cmpq $0x0, 0x20(%rbx)
je 0x1556f
movl %r13d, 0x4(%rsp)
leaq 0x20(%rbx), %r13
xorl %ebp, %ebp
testq %r15, %r15
je 0x15506
movq (%r15), %r12
movq %r12, %rdi
callq 0x15aea
testl %eax, %eax
je 0x15500
movq %r13, %rax
movq (%rax), %rax
testq %rax, %rax
je 0x154e6
cmpq %r12, (%rax)
jne 0x154e0
movq 0x8(%rax), %rcx
cmpq 0x8(%r15), %rcx
je 0x15500
addq $0x10, %rax
jmp 0x154c9
callq 0x15a15
movups (%r15), %xmm0
movups %xmm0, (%rax)
movq (%r13), %rcx
movq %rcx, 0x10(%rax)
movq %rax, (%r13)
incl %ebp
movq 0x10(%r15), %r15
jmp 0x154b2
leaq 0x28(%rbx), %rax
xorl %ecx, %ecx
leaq 0x59a1d(%rip), %rdx     # 0x6ef30
movq %rax, %rsi
movb $0x1, %r12b
movl 0x4(%rsp), %r9d
movq (%rsi), %rsi
testq %rsi, %rsi
je 0x15568
movq %rdx, %rdi
movq (%rdi), %rdi
testq %rdi, %rdi
je 0x15549
movq (%rdi), %r8
cmpq (%rsi), %r8
jne 0x15543
movq 0x8(%rdi), %r8
cmpq 0x8(%rsi), %r8
je 0x1555f
addq $0x10, %rdi
jmp 0x15529
leaq 0x10(%rcx), %rdi
testq %rcx, %rcx
movq 0x10(%rsi), %r8
cmoveq %rax, %rdi
movq %r8, (%rdi)
incl %ebp
jmp 0x15562
movq %rsi, %rcx
addq $0x10, %rsi
jmp 0x1551e
orl %r9d, %ebp
jne 0x155a2
jmp 0x155b9
movq %r15, %rdi
callq 0x15aa3
movq %rax, 0x20(%rbx)
movq %rax, %rdi
callq 0x15aa3
movq %rax, 0x28(%rbx)
cmpq $0x0, 0x20(%rbx)
jne 0x155a2
cmpw $0x0, 0x32(%rbx)
je 0x1559c
testl %r13d, %r13d
jne 0x155a2
jmp 0x155b9
movw $0x1, 0x32(%rbx)
movq 0x5997f(%rip), %rax     # 0x6ef28
movq 0x8(%rax), %rdi
callq 0x15a60
movq %rax, 0x8(%r14)
xorl %r12d, %r12d
movq 0x59968(%rip), %rax     # 0x6ef28
movq %rax, 0x18(%r14)
movq %r14, 0x5995d(%rip)     # 0x6ef28
callq 0x15a35
movq %rax, %r14
movq 0x59966(%rip), %r15     # 0x6ef40
testq %r15, %r15
je 0x15610
movq (%r15), %r15
testq %r15, %r15
je 0x15607
movq (%r15), %rdi
callq 0x12673
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rcx
movq %rcx, 0x18(%rax)
movq %rax, (%r14)
addq $0x18, %r15
jmp 0x155df
movq 0x59932(%rip), %rax     # 0x6ef40
jmp 0x15612
xorl %eax, %eax
movq %rax, 0x18(%r14)
movq %r14, 0x59923(%rip)     # 0x6ef40
testb %r12b, %r12b
je 0x1562d
cmpw $0x0, 0x4a(%rbx)
jne 0x158ac
movw $0x1, 0x4a(%rbx)
movq (%rbx), %r14
testq %r14, %r14
je 0x15723
cmpl $0x1b, 0x1c(%r14)
jne 0x1570b
movq 0x40(%r14), %rax
movq 0x28(%rax), %r15
leaq 0x21c0b(%rip), %rax     # 0x37264
cmpl $0x0, (%rax)
je 0x1570f
testq %r15, %r15
je 0x1570f
movq 0x8(%r14), %rdi
movl 0x10(%r14), %esi
callq 0x121e1
testl %eax, %eax
jne 0x15714
movq 0x40(%r14), %rdi
pushq $0x1c
popq %rsi
callq 0x184de
testl %eax, %eax
je 0x156ad
movq 0x40(%r14), %rdi
callq 0x18470
testl %eax, %eax
jne 0x156ad
movq %r14, %rdi
callq 0x18755
testl %eax, %eax
je 0x15982
leaq 0x18(%r15), %r13
movl $0x2001, %ebp           # imm = 0x2001
leaq 0x18a26(%rip), %r12     # 0x2e0e3
movq (%r13), %r13
testq %r13, %r13
je 0x1570f
movl 0x4(%r13), %eax
andl %ebp, %eax
cmpl $0x1, %eax
jne 0x15705
movq %r14, %rdi
callq 0x18755
testl %eax, %eax
jne 0x15705
movq 0x218ec(%rip), %rax     # 0x36fd0
movq (%rax), %rdi
movq 0x8(%r14), %rdx
movl 0x10(%r14), %ecx
movq 0x8(%r13), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %r8
movq %r12, %rsi
xorl %eax, %eax
callq 0x31a0
addq $0x10, %r13
jmp 0x156bd
movq 0x28(%r14), %r15
testq %r15, %r15
je 0x15723
movq 0x18(%r15), %rsi
movq %r15, %rdi
movq %r14, %rdx
callq 0x15b97
cmpw $0x0, 0x48(%rbx)
je 0x1573f
movq (%rbx), %r14
testq %r14, %r14
je 0x1573f
cmpl $0x1b, 0x1c(%r14)
jne 0x15742
movq 0x40(%r14), %r14
jmp 0x15742
xorl %r14d, %r14d
leaq 0x50(%rbx), %r13
movq (%r13), %r13
testq %r13, %r13
je 0x158a5
cmpq $0x0, 0x10(%r13)
je 0x158a5
testq %r14, %r14
je 0x157b3
movq (%r13), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x12791
testl %eax, %eax
jne 0x15824
callq 0x15a15
movq %rax, %r15
movq %r14, (%rax)
movq %r12, 0x8(%rax)
movq 0x597a0(%rip), %rax     # 0x6ef30
movq %rax, 0x10(%r15)
movq %r15, 0x59795(%rip)     # 0x6ef30
cmpq $0x0, 0x8(%r13)
je 0x1582d
movq 0x5977b(%rip), %rax     # 0x6ef28
movq %r15, 0x10(%rax)
jmp 0x157ce
callq 0x15a15
movq 0x59769(%rip), %rcx     # 0x6ef28
movq %rax, 0x10(%rcx)
movq (%rbx), %rcx
movq %rcx, (%rax)
andq $0x0, 0x8(%rax)
movq 0x10(%r13), %rdi
callq 0x15311
testq %r14, %r14
je 0x15802
movq 0x5974d(%rip), %rax     # 0x6ef30
movq 0x10(%rax), %rcx
movq %rcx, 0x59742(%rip)     # 0x6ef30
movq 0x59743(%rip), %rcx     # 0x6ef38
movq %rcx, 0x10(%rax)
movq %rax, 0x59738(%rip)     # 0x6ef38
jmp 0x15824
movq 0x5972f(%rip), %rax     # 0x6ef38
movq 0x59718(%rip), %rcx     # 0x6ef28
movq 0x10(%rcx), %rdx
movq %rax, 0x10(%rdx)
movq %rdx, 0x59719(%rip)     # 0x6ef38
andq $0x0, 0x10(%rcx)
addq $0x18, %r13
jmp 0x15746
movq (%rbx), %rax
testq %rax, %rax
je 0x157a6
cmpl $0x1b, 0x1c(%rax)
jne 0x15843
movq 0x40(%rax), %rax
movq 0x28(%rax), %rbp
testq %rbp, %rbp
je 0x157a6
addq $0x18, %rbp
movq (%rbp), %rbp
testq %rbp, %rbp
je 0x15899
movq 0x8(%rbp), %r12
cmpw $0x2, 0x20(%r12)
jg 0x15893
testb $0x4, 0x4(%rbp)
je 0x15893
movq %r12, %rdi
movq %r15, %rsi
callq 0x16922
testl %eax, %eax
je 0x15893
movq %r12, %rdi
callq 0x12673
movq 0x8(%r13), %rcx
movq %rcx, 0x18(%rax)
movq %rax, 0x8(%r13)
addq $0x10, %rbp
jmp 0x15854
movq 0x59690(%rip), %r15     # 0x6ef30
jmp 0x157a6
movq 0x59694(%rip), %r14     # 0x6ef40
decl 0x59596(%rip)           # 0x6ee48
cmpq $0x0, 0x5966e(%rip)     # 0x6ef28
setne %al
testq %r14, %r14
setne %cl
andb %al, %cl
movzbl %cl, %edi
leaq 0x1891f(%rip), %rsi     # 0x2e1ee
callq 0x1225f
movq 0x5964d(%rip), %rax     # 0x6ef28
movq (%rax), %rdx
movq 0x5957b(%rip), %rcx     # 0x6ee60
testq %rdx, %rdx
je 0x15901
movq 0x18(%rdx), %rsi
movq %rcx, 0x18(%rdx)
movq %rdx, 0x59567(%rip)     # 0x6ee60
movq %rdx, %rcx
movq %rsi, %rdx
jmp 0x158e5
movq 0x8(%rax), %rdx
testq %rdx, %rdx
je 0x15921
movq 0x18(%rdx), %rsi
movq %rcx, 0x18(%rdx)
movq %rdx, 0x59547(%rip)     # 0x6ee60
movq %rdx, %rcx
movq %rsi, %rdx
jmp 0x15905
movq 0x18(%rax), %rdx
movq %rdx, 0x595fc(%rip)     # 0x6ef28
movq 0x59615(%rip), %rdx     # 0x6ef48
movq %rdx, 0x18(%rax)
movq 0x59602(%rip), %rdx     # 0x6ef40
movq (%rdx), %rsi
testq %rsi, %rsi
je 0x1595d
movq 0x18(%rsi), %rdi
movq %rcx, 0x18(%rsi)
movq %rsi, 0x5950b(%rip)     # 0x6ee60
movq %rsi, %rcx
movq %rdi, %rsi
jmp 0x15941
movq 0x18(%rdx), %rcx
movq %rcx, 0x595d8(%rip)     # 0x6ef40
movq %rax, 0x18(%rdx)
movq %rdx, 0x595d5(%rip)     # 0x6ef48
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x21647(%rip), %rax     # 0x36fd0
movq (%rax), %r12
movq 0x8(%r14), %r13
movl 0x10(%r14), %ebp
movq 0x40(%r14), %rdi
callq 0x4ac7
leaq 0x1870c(%rip), %rsi     # 0x2e0b0
movq %r12, %rdi
movq %r13, %rdx
movl %ebp, %ecx
movq %rax, %r8
xorl %eax, %eax
callq 0x31a0
jmp 0x15714