// File: /workspace/github_c_makefile_star2_O1/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 0x17eda
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
incl 0x58429(%rip)           # 0x6fe38
movq 0x58522(%rip), %r14     # 0x6ff38
testq %r14, %r14
je 0x17a37
movq 0x18(%r14), %rax
movq %rax, 0x58512(%rip)     # 0x6ff38
movq $0x0, 0x18(%r14)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
jmp 0x17a44
movl $0x20, %edi
callq 0x61a1
movq %rax, %r14
movq 0x584cd(%rip), %rax     # 0x6ff18
testq %rax, %rax
je 0x17ac5
movq (%rax), %r15
testq %r15, %r15
je 0x17acd
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r15, %rsi
callq 0x14498
testl %eax, %eax
je 0x17ab3
movq (%r15), %r12
movq 0x583dd(%rip), %rax     # 0x6fe50
testq %rax, %rax
je 0x17a8f
movq 0x18(%rax), %rcx
movq %rcx, 0x583cd(%rip)     # 0x6fe50
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
jmp 0x17a99
movl $0x20, %edi
callq 0x61a1
movq %r12, (%rax)
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rcx
movq %rcx, 0x18(%rax)
movq %rax, (%r14)
movl $0x1, %ebp
movq 0x18(%r15), %r15
testq %r15, %r15
jne 0x17a5a
testl %ebp, %ebp
sete 0x7(%rsp)
jmp 0x17ad2
movb $0x1, %bpl
jmp 0x17d16
movb $0x1, 0x7(%rsp)
movq 0x5843f(%rip), %rax     # 0x6ff18
movq 0x8(%rax), %r15
testq %r15, %r15
je 0x17b96
cmpq $0x0, 0x10(%rbx)
je 0x17ba8
xorl %r13d, %r13d
movq %r15, %r12
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x17b1f
movq (%r12), %rcx
cmpq %rcx, (%rax)
jne 0x17b16
movl 0x10(%rax), %edx
xorl 0x10(%r12), %edx
testb $0x1, %dl
je 0x17b36
movq 0x18(%rax), %rax
testq %rax, %rax
jne 0x17b04
movq %r12, %rdi
callq 0x143d2
movq 0x10(%rbx), %rcx
movq %rcx, 0x18(%rax)
movq %rax, 0x10(%rbx)
incl %r13d
movq 0x18(%r12), %r12
testq %r12, %r12
jne 0x17af7
movq 0x18(%rbx), %rax
testq %rax, %rax
je 0x17bc6
leaq 0x18(%rbx), %rcx
xorl %edx, %edx
movq (%rax), %rsi
movq %r15, %rdi
cmpq %rsi, (%rdi)
jne 0x17b68
movl 0x10(%rax), %r8d
xorl 0x10(%rdi), %r8d
testb $0x1, %r8b
je 0x17b88
movq 0x18(%rdi), %rdi
testq %rdi, %rdi
jne 0x17b55
leaq 0x18(%rdx), %rsi
testq %rdx, %rdx
movq 0x18(%rax), %rdi
cmoveq %rcx, %rsi
movq %rdi, (%rsi)
incl %r13d
jmp 0x17b8b
movq %rax, %rdx
movq 0x18(%rax), %rax
testq %rax, %rax
jne 0x17b4f
jmp 0x17bc6
xorl %r13d, %r13d
cmpw $0x0, 0x30(%rbx)
jne 0x17bc6
movw $0x1, 0x30(%rbx)
jmp 0x17bc0
movq %r15, %rdi
callq 0x18245
movq %rax, 0x10(%rbx)
movq %r15, %rdi
callq 0x18245
movq %rax, 0x18(%rbx)
movl $0x1, %r13d
movq 0x58353(%rip), %r15     # 0x6ff20
testq %r15, %r15
je 0x17cdd
cmpq $0x0, 0x20(%rbx)
je 0x17cb9
xorl %ebp, %ebp
movq (%r15), %r12
movq %r12, %rdi
callq 0x1832d
testl %eax, %eax
je 0x17c4f
movq 0x20(%rbx), %rax
testq %rax, %rax
je 0x17c10
cmpq %r12, (%rax)
jne 0x17c0a
movq 0x8(%rax), %rcx
cmpq 0x8(%r15), %rcx
je 0x17c4f
movq 0x10(%rax), %rax
jmp 0x17bf6
movq 0x58311(%rip), %rax     # 0x6ff28
testq %rax, %rax
je 0x17c29
movq 0x10(%rax), %rcx
movq %rcx, 0x58301(%rip)     # 0x6ff28
jmp 0x17c33
movl $0x18, %edi
callq 0x61a1
movq (%r15), %rcx
movq %rcx, (%rax)
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq 0x20(%rbx), %rcx
movq %rcx, 0x10(%rax)
movq %rax, 0x20(%rbx)
incl %ebp
movq 0x10(%r15), %r15
testq %r15, %r15
jne 0x17be3
movq 0x28(%rbx), %rax
testq %rax, %rax
je 0x17cf1
leaq 0x28(%rbx), %rcx
movq 0x582b0(%rip), %rdx     # 0x6ff20
xorl %esi, %esi
testq %rdx, %rdx
je 0x17c95
movq (%rax), %rdi
movq %rdx, %r8
cmpq %rdi, (%r8)
jne 0x17c8c
movq 0x8(%r8), %r9
cmpq 0x8(%rax), %r9
je 0x17cb4
movq 0x10(%r8), %r8
testq %r8, %r8
jne 0x17c7d
leaq 0x10(%rsi), %rdi
testq %rsi, %rsi
movq 0x10(%rax), %r8
cmoveq %rcx, %rdi
movq %r8, (%rdi)
incl %ebp
movq 0x10(%rax), %rax
testq %rax, %rax
jne 0x17c72
jmp 0x17cf1
movq %rax, %rsi
jmp 0x17ca9
movq %r15, %rdi
callq 0x182b8
movq %rax, 0x20(%rbx)
movq %rax, %rdi
callq 0x182b8
movq %rax, 0x28(%rbx)
movl $0x1, %ebp
cmpq $0x0, 0x20(%rbx)
jne 0x17cf1
xorl %ebp, %ebp
cmpw $0x0, 0x32(%rbx)
jne 0x17cf1
movw $0x1, 0x32(%rbx)
movl $0x1, %ebp
orl %r13d, %ebp
sete %al
movb $0x1, %bpl
testb %al, 0x7(%rsp)
jne 0x17d16
movq 0x58211(%rip), %rax     # 0x6ff18
movq 0x8(%rax), %rdi
callq 0x18245
movq %rax, 0x8(%r14)
xorl %ebp, %ebp
movq 0x581fb(%rip), %rax     # 0x6ff18
movq %rax, 0x18(%r14)
movq %r14, 0x581f0(%rip)     # 0x6ff18
movq 0x58209(%rip), %r14     # 0x6ff38
testq %r14, %r14
je 0x17d50
movq 0x18(%r14), %rax
movq %rax, 0x581f9(%rip)     # 0x6ff38
movq $0x0, 0x18(%r14)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
jmp 0x17d5d
movl $0x20, %edi
callq 0x61a1
movq %rax, %r14
movq 0x581cc(%rip), %rax     # 0x6ff30
testq %rax, %rax
je 0x17dbc
movq (%rax), %r15
testq %r15, %r15
je 0x17dbc
movq (%r15), %r12
movq 0x580d5(%rip), %rax     # 0x6fe50
testq %rax, %rax
je 0x17d97
movq 0x18(%rax), %rcx
movq %rcx, 0x580c5(%rip)     # 0x6fe50
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
jmp 0x17da1
movl $0x20, %edi
callq 0x61a1
movq %r12, (%rax)
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq (%r14), %rcx
movq %rcx, 0x18(%rax)
movq %rax, (%r14)
movq 0x18(%r15), %r15
jmp 0x17d6c
movq 0x5816d(%rip), %rax     # 0x6ff30
movq %rax, 0x18(%r14)
movq %r14, 0x58162(%rip)     # 0x6ff30
testb %bpl, %bpl
je 0x17edb
cmpw $0x0, 0x4a(%rbx)
je 0x17edb
decl 0x58050(%rip)           # 0x6fe38
cmpq $0x0, 0x58128(%rip)     # 0x6ff18
setne %al
cmpq $0x0, 0x58135(%rip)     # 0x6ff30
setne %cl
andb %al, %cl
movzbl %cl, %edi
leaq 0x183d6(%rip), %rsi     # 0x301e0
callq 0x13f8c
movq 0x58102(%rip), %rax     # 0x6ff18
movq (%rax), %rcx
testq %rcx, %rcx
je 0x17e3f
movq 0x5802b(%rip), %rdx     # 0x6fe50
movq %rdx, %rsi
movq %rcx, %rdx
movq 0x18(%rcx), %rcx
movq %rsi, 0x18(%rdx)
testq %rcx, %rcx
jne 0x17e25
movq %rdx, 0x58011(%rip)     # 0x6fe50
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0x17e69
movq 0x58001(%rip), %rdx     # 0x6fe50
movq %rdx, %rsi
movq %rcx, %rdx
movq 0x18(%rcx), %rcx
movq %rsi, 0x18(%rdx)
testq %rcx, %rcx
jne 0x17e4f
movq %rdx, 0x57fe7(%rip)     # 0x6fe50
movq 0x18(%rax), %rcx
movq %rcx, 0x580a4(%rip)     # 0x6ff18
movq 0x580bd(%rip), %rcx     # 0x6ff38
movq %rcx, 0x18(%rax)
movq %rax, 0x580b2(%rip)     # 0x6ff38
movq 0x580a3(%rip), %rcx     # 0x6ff30
movq (%rcx), %rdx
testq %rdx, %rdx
je 0x17eb6
movq 0x57fb4(%rip), %rsi     # 0x6fe50
movq %rsi, %rdi
movq %rdx, %rsi
movq 0x18(%rdx), %rdx
movq %rdi, 0x18(%rsi)
testq %rdx, %rdx
jne 0x17e9c
movq %rsi, 0x57f9a(%rip)     # 0x6fe50
movq 0x18(%rcx), %rdx
movq %rdx, 0x5806f(%rip)     # 0x6ff30
movq %rax, 0x18(%rcx)
movq %rcx, 0x5806c(%rip)     # 0x6ff38
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movw $0x1, 0x4a(%rbx)
movq (%rbx), %r14
testq %r14, %r14
je 0x17fd4
cmpl $0x1b, 0x1c(%r14)
jne 0x17fbc
movq 0x40(%r14), %rax
movq 0x28(%rax), %r15
leaq 0x2034d(%rip), %rax     # 0x38254
cmpl $0x0, (%rax)
je 0x17fc0
testq %r15, %r15
je 0x17fc0
movq 0x8(%r14), %rdi
movl 0x10(%r14), %esi
callq 0x13ef9
testl %eax, %eax
jne 0x17fc0
movq 0x40(%r14), %rdi
movl $0x1c, %esi
callq 0x1b04a
testl %eax, %eax
je 0x17f5d
movq 0x40(%r14), %rdi
callq 0x1afe0
testl %eax, %eax
jne 0x17f5d
movq %r14, %rdi
callq 0x1b2c4
testl %eax, %eax
je 0x181af
movq 0x18(%r15), %r13
testq %r13, %r13
je 0x17fc0
movl $0x2001, %ebp           # imm = 0x2001
leaq 0x18163(%rip), %r12     # 0x300d5
movl 0x4(%r13), %eax
andl %ebp, %eax
cmpl $0x1, %eax
jne 0x17fb1
movq %r14, %rdi
callq 0x1b2c4
testl %eax, %eax
jne 0x17fb1
movq 0x20040(%rip), %rax     # 0x37fd0
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 0x3190
movq 0x10(%r13), %r13
testq %r13, %r13
jne 0x17f72
jmp 0x17fc0
movq 0x28(%r14), %r15
testq %r15, %r15
je 0x17fd4
movq 0x18(%r15), %rsi
movq %r15, %rdi
movq %r14, %rdx
callq 0x1839f
cmpw $0x0, 0x48(%rbx)
je 0x17ff0
movq (%rbx), %r14
testq %r14, %r14
je 0x17ff0
cmpl $0x1b, 0x1c(%r14)
jne 0x17ff3
movq 0x40(%r14), %r14
jmp 0x17ff3
xorl %r14d, %r14d
movq 0x50(%rbx), %r13
testq %r13, %r13
je 0x17de2
cmpq $0x0, 0x10(%r13)
je 0x17de2
testq %r14, %r14
je 0x18040
movq (%r13), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x14523
testl %eax, %eax
jne 0x18116
movq 0x57efa(%rip), %r15     # 0x6ff28
testq %r15, %r15
je 0x1807e
movq 0x10(%r15), %rax
movq %rax, 0x57eea(%rip)     # 0x6ff28
jmp 0x1808b
movq 0x57ee1(%rip), %rax     # 0x6ff28
testq %rax, %rax
je 0x18059
movq 0x10(%rax), %rcx
movq %rcx, 0x57ed1(%rip)     # 0x6ff28
jmp 0x18063
movl $0x18, %edi
callq 0x61a1
movq 0x57eae(%rip), %rcx     # 0x6ff18
movq %rax, 0x10(%rcx)
movq (%rbx), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
jmp 0x180bd
movl $0x18, %edi
callq 0x61a1
movq %rax, %r15
movq %r14, (%r15)
movq %r12, 0x8(%r15)
movq 0x57e87(%rip), %rax     # 0x6ff20
movq %rax, 0x10(%r15)
movq %r15, 0x57e7c(%rip)     # 0x6ff20
cmpq $0x0, 0x8(%r13)
je 0x1811f
movq 0x57e6e(%rip), %rax     # 0x6ff20
movq 0x57e5f(%rip), %rcx     # 0x6ff18
movq %rax, 0x10(%rcx)
movq 0x10(%r13), %rdi
callq 0x179f2
testq %r14, %r14
je 0x180f1
movq 0x57e4e(%rip), %rax     # 0x6ff20
movq 0x10(%rax), %rcx
movq %rcx, 0x57e43(%rip)     # 0x6ff20
movq 0x57e44(%rip), %rcx     # 0x6ff28
movq %rcx, 0x10(%rax)
movq %rax, 0x57e39(%rip)     # 0x6ff28
jmp 0x18116
movq 0x57e30(%rip), %rax     # 0x6ff28
movq 0x57e19(%rip), %rcx     # 0x6ff18
movq 0x10(%rcx), %rdx
movq %rax, 0x10(%rdx)
movq %rdx, 0x57e1a(%rip)     # 0x6ff28
movq $0x0, 0x10(%rcx)
movq 0x18(%r13), %r13
jmp 0x17ff7
movq (%rbx), %rax
testq %rax, %rax
je 0x180ab
cmpl $0x1b, 0x1c(%rax)
jne 0x18131
movq 0x40(%rax), %rax
movq 0x28(%rax), %rax
testq %rax, %rax
je 0x180ab
movq 0x18(%rax), %rbp
testq %rbp, %rbp
je 0x180ab
movq 0x8(%rbp), %r12
cmpw $0x2, 0x20(%r12)
jg 0x181a9
testb $0x4, 0x4(%rbp)
je 0x181a9
movq %r12, %rdi
movq %r15, %rsi
callq 0x19419
testl %eax, %eax
je 0x181a9
movq 0x57cdc(%rip), %rax     # 0x6fe50
testq %rax, %rax
je 0x18190
movq 0x18(%rax), %rcx
movq %rcx, 0x57ccc(%rip)     # 0x6fe50
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
jmp 0x1819a
movl $0x20, %edi
callq 0x61a1
movq %r12, (%rax)
movq 0x8(%r13), %rcx
movq %rcx, 0x18(%rax)
movq %rax, 0x8(%r13)
movq 0x10(%rbp), %rbp
jmp 0x18142
movq 0x1fe1a(%rip), %rax     # 0x37fd0
movq (%rax), %r12
movq 0x8(%r14), %r13
movl 0x10(%r14), %ebp
movq 0x40(%r14), %rdi
callq 0x5e8a
leaq 0x17ed1(%rip), %rsi     # 0x300a2
movq %r12, %rdi
movq %r13, %rdx
movl %ebp, %ecx
movq %rax, %r8
xorl %eax, %eax
callq 0x3190
jmp 0x17fc0