// File: /workspace/github_c_makefile_star2_O2/nimble-code[P]Uno/Src/uno_bounds.c
// Function: dfs_bound
int
dfs_bound(State *s, treenode *exp_in, treenode *t_cond, State *prev_s)
{	Trans *t;
	treenode *exp;
	int result = 1;

	if (!s) return result;

	depth++;
	if (debug)
	{	printf("%3d: dfs_bound %s:%d <%s>\n",
			depth,
			s->n->hdr.fnm,
			s->n->hdr.line,
			x_stmnt(exp_in));
	}

	switch (bound_push(s, exp_in, t_cond, prev_s)) {
	case 3:	/* unsatisfiable bound */
		result = 0;
		goto done;
	case 2:	
		if (debug) printf("\told state\n");
		goto done;
	case 1:
		if (debug) printf("\tnew state\n");
		break;
	case 0:
		if (debug) printf("\trevisit state\n");
		break;
	}

	uno_index(s);	/* attempt to find out of bound array indices */

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

	for (t = s->succ; t && t->branch; t = t->nxt)
		if (!infeasible(exp, t->cond))	/* e.g. 0 == _true_ */
			dfs_bound(t->branch, exp, t->cond, s);

done:	bound_pop();

	if (debug)
		printf("%3d: dfs_bound up\n", depth);
	depth--;

	return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x1902d
movq %rcx, %r14
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x55e3f(%rip), %rax     # 0x6ee48
incl (%rax)
movq 0x669fe(%rip), %r13     # 0x7fa10
testq %r13, %r13
movq %rdx, (%rsp)
je 0x19035
movq 0x8(%r13), %rax
movq %rax, 0x669ea(%rip)     # 0x7fa10
andq $0x0, 0x8(%r13)
jmp 0x19040
pushq $0x1
popq %rbp
jmp 0x1953d
pushq $0x10
popq %rdi
callq 0x4da5
movq %rax, %r13
andq $0x0, (%r13)
movq 0x669b4(%rip), %r15     # 0x7fa00
testq %r15, %r15
je 0x1909e
movq (%r15), %r15
testq %r15, %r15
je 0x19095
movswl 0x18(%r15), %ecx
testb $0x4, %cl
jne 0x1908f
movq (%r15), %rdi
movl 0x20(%r15), %esi
movl 0x1c(%r15), %edx
callq 0x19816
movups 0x8(%r15), %xmm0
movups %xmm0, 0x8(%rax)
movq (%r13), %rcx
movq %rcx, 0x28(%rax)
movl 0x24(%r15), %ecx
movl %ecx, 0x24(%rax)
movq %rax, (%r13)
addq $0x28, %r15
jmp 0x19051
movq 0x66964(%rip), %rax     # 0x7fa00
jmp 0x190a0
xorl %eax, %eax
movq %rax, 0x8(%r13)
movq %r13, 0x66955(%rip)     # 0x7fa00
testq %r14, %r14
je 0x190dd
movq (%r14), %r13
testq %r13, %r13
je 0x190dd
cmpq $0x0, 0x28(%r13)
je 0x190dd
movq %r13, %rdi
callq 0x6418
testq %rax, %rax
je 0x195a1
cmpl $0x118, 0x18(%rax)      # imm = 0x118
jne 0x195a1
testq %r12, %r12
sete %al
movq (%rsp), %r15
testq %r15, %r15
sete %cl
orb %al, %cl
jne 0x19129
cmpl $0x28, 0x1c(%r12)
jne 0x19129
movq 0x40(%r12), %rax
testq %rax, %rax
je 0x19129
cmpl $0x2d, 0x1c(%rax)
jne 0x19129
andl $0x0, 0x66888(%rip)     # 0x7f998
movq 0x48(%r12), %rdi
xorl %esi, %esi
callq 0x18519
cmpl $0x0, 0x66875(%rip)     # 0x7f998
je 0x195f5
testq %r14, %r14
je 0x192ee
movq (%r14), %rsi
testq %rsi, %rsi
je 0x19233
movl 0x1c(%rsi), %eax
cmpl $0x1c, %eax
jne 0x19165
cmpl $0x14b, 0x18(%rsi)      # imm = 0x14B
jne 0x19170
xorl %edi, %edi
callq 0x198de
movq (%r14), %rsi
testq %rsi, %rsi
je 0x19233
movl 0x1c(%rsi), %eax
addq $0x40, %rsi
cmpl $0x1b, %eax
cmoveq %rsi, %r14
movq (%r14), %rax
testq %rax, %rax
je 0x19233
movq 0x28(%rax), %r14
testq %r14, %r14
je 0x19233
addq $0x18, %r14
leaq 0x55cb4(%rip), %rax     # 0x6ee48
movl (%rax), %ebp
movq 0x66863(%rip), %r15     # 0x7fa00
leaq 0x6683c(%rip), %r12     # 0x7f9e0
movq (%r14), %r14
testq %r14, %r14
je 0x19233
testb $0x1, 0x4(%r14)
jne 0x191bd
addq $0x10, %r14
jmp 0x191a4
movq %r12, %r13
movq (%r13), %r13
testq %r13, %r13
je 0x191fb
movq (%r13), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x8(%r14), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x3190
testl %eax, %eax
jne 0x191f5
cmpl %ebp, 0x24(%r13)
jge 0x191f5
orb $0x4, 0x18(%r13)
addq $0x28, %r13
jmp 0x191c0
movq %r15, %r13
movq (%r13), %r13
testq %r13, %r13
je 0x191b7
movq (%r13), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
movq 0x8(%r14), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
callq 0x3190
testl %eax, %eax
jne 0x1922d
orb $0x4, 0x18(%r13)
addq $0x28, %r13
jmp 0x191fe
leaq 0x667a6(%rip), %r14     # 0x7f9e0
pushq $0x1
popq %rbp
movq (%r14), %r14
testq %r14, %r14
je 0x192da
testb $0xc, 0x18(%r14)
movq 0x667ab(%rip), %r15     # 0x7fa00
je 0x19272
movq (%r15), %r15
testq %r15, %r15
je 0x1929b
movq (%r15), %rax
cmpq (%r14), %rax
jne 0x1926c
orb $0x4, 0x18(%r15)
addq $0x28, %r15
jmp 0x19257
xorl %eax, %eax
movq (%r15), %r15
testq %r15, %r15
je 0x19297
movq (%r15), %rcx
cmpq (%r14), %rcx
jne 0x19291
movq %r15, %rdi
movq %r14, %rsi
callq 0x19d27
movl %ebp, %eax
addq $0x28, %r15
jmp 0x19274
testl %eax, %eax
jne 0x192d1
movq (%r14), %rdi
movl 0x20(%r14), %esi
movl 0x1c(%r14), %edx
movswl 0x18(%r14), %ecx
callq 0x19816
movups 0x8(%r14), %xmm0
movups %xmm0, 0x8(%rax)
movq 0x66740(%rip), %rcx     # 0x7fa00
movq (%rcx), %rdx
movq %rdx, 0x28(%rax)
movl 0x24(%r14), %edx
movl %edx, 0x24(%rax)
movq %rax, (%rcx)
addq $0x28, %r14
jmp 0x1923d
movq 0x666ff(%rip), %rdi     # 0x7f9e0
callq 0x18f9d
andq $0x0, 0x666f2(%rip)     # 0x7f9e0
movq 0x6670b(%rip), %r14     # 0x7fa00
leaq 0x1df3c(%rip), %rbp     # 0x37238
leaq 0x15a9a(%rip), %r12     # 0x2ed9d
xorps %xmm0, %xmm0
movq (%r14), %r14
testq %r14, %r14
je 0x19436
movzwl 0x18(%r14), %eax
testb $0x20, %al
je 0x193ef
andq $0x0, 0x10(%r14)
movq 0x8(%r14), %rcx
cmpq %rcx, (%r14)
jne 0x19366
cmpl $0x0, (%rbp)
je 0x19355
leaq 0x15a88(%rip), %rdi     # 0x2edc2
callq 0x30a0
movq (%rbx), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x18788
xorps %xmm0, %xmm0
movzwl 0x18(%r14), %eax
andl $0xffdf, %eax           # imm = 0xFFDF
movw %ax, 0x18(%r14)
andq $0x0, 0x8(%r14)
xorl %ecx, %ecx
leaq 0x8(%r14), %r15
xorl %edx, %edx
movq 0x6668d(%rip), %rsi     # 0x7fa00
movq %rsi, %r13
movq (%r13), %r13
testq %r13, %r13
je 0x193e0
cmpq %r14, %r13
je 0x1938a
cmpq %rcx, (%r13)
je 0x19390
addq $0x28, %r13
jmp 0x19376
movzwl 0x18(%r13), %edi
testb $0x4, %dil
jne 0x193f8
testb $0x20, %dil
je 0x19430
movq 0x8(%r13), %rdi
cmpq %rdi, %rcx
je 0x1940a
movq %rdi, (%r15)
incl %edx
movq %rdi, %rcx
cmpl $0xc, %edx
jne 0x19373
leaq 0x15a1c(%rip), %rdi     # 0x2edde
callq 0x30a0
movq (%rbx), %rdx
leaq 0x159d4(%rip), %rdi     # 0x2eda5
movq %r14, %rsi
callq 0x18788
xorps %xmm0, %xmm0
movl 0x18(%r14), %eax
andl $-0x25, %eax
orl $0x4, %eax
movw %ax, 0x18(%r14)
movups %xmm0, (%r15)
addq $0x28, %r14
jmp 0x19306
andl $-0x25, %eax
orl $0x4, %eax
movw %ax, 0x18(%r14)
andq $0x0, 0x8(%r14)
jmp 0x193ef
leaq 0x159d7(%rip), %rdi     # 0x2ede8
callq 0x30a0
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x18788
xorps %xmm0, %xmm0
andb $-0x21, 0x18(%r13)
andq $0x0, 0x8(%r13)
movq %r13, 0x10(%r14)
jmp 0x193ef
movq 0x665c3(%rip), %r14     # 0x7fa00
leaq 0x38(%rbx), %r12
xorl %r13d, %r13d
pushq $0x1
popq %rbp
movq (%r14), %r14
testq %r14, %r14
je 0x194b9
movq %r14, %rdi
callq 0x19a5e
testl %eax, %eax
jne 0x194ec
movq %r12, %r15
movq (%r15), %r15
testq %r15, %r15
je 0x1947f
movq %r15, %rdi
movq %r14, %rsi
callq 0x19cc4
addq $0x28, %r15
testl %eax, %eax
je 0x19462
jmp 0x194b3
movq (%r14), %rdi
movl 0x20(%r14), %esi
movl 0x1c(%r14), %edx
movswl 0x18(%r14), %ecx
callq 0x19816
movups 0x8(%r14), %xmm0
movups %xmm0, 0x8(%rax)
movq (%r12), %rcx
movq %rcx, 0x28(%rax)
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rax)
movq %rax, (%r12)
movl %ebp, %r13d
addq $0x28, %r14
jmp 0x19447
testl %r13d, %r13d
je 0x1958e
movw $0x1, 0x4a(%rbx)
movq %rbx, %rdi
callq 0x18bce
cmpw $0x0, 0x48(%rbx)
je 0x1954e
movq (%rbx), %r14
testq %r14, %r14
je 0x1954e
cmpl $0x1b, 0x1c(%r14)
jne 0x19551
movq 0x40(%r14), %r14
jmp 0x19551
xorl %ebp, %ebp
xorl %edi, %edi
cmpq $0x0, 0x66508(%rip)     # 0x7fa00
setne %dil
leaq 0x158aa(%rip), %rsi     # 0x2edad
callq 0x1225f
movq 0x664f1(%rip), %rbx     # 0x7fa00
movq (%rbx), %rdi
callq 0x18f9d
movq 0x8(%rbx), %rax
movq %rax, 0x664de(%rip)     # 0x7fa00
movq 0x664e7(%rip), %rax     # 0x7fa10
movq %rax, 0x8(%rbx)
movq %rbx, 0x664dc(%rip)     # 0x7fa10
leaq 0x5590d(%rip), %rax     # 0x6ee48
decl (%rax)
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r14d, %r14d
leaq 0x50(%rbx), %r15
pushq $0x1
popq %rbp
movq (%r15), %r15
testq %r15, %r15
je 0x194ee
cmpq $0x0, 0x10(%r15)
je 0x194ee
movq (%r15), %rsi
movq %r14, %rdi
callq 0x12791
testl %eax, %eax
jne 0x19588
movq (%r15), %rdx
movq 0x10(%r15), %rdi
movq %r14, %rsi
movq %rbx, %rcx
callq 0x18fe9
addq $0x18, %r15
jmp 0x19558
cmpw $0x0, 0x4a(%rbx)
je 0x194c2
pushq $0x1
popq %rbp
jmp 0x194ee
movq 0x28(%r13), %rbp
addq $0x18, %rbp
movl $0x501, %r15d           # imm = 0x501
movq (%rbp), %rbp
testq %rbp, %rbp
je 0x190dd
movq 0x8(%rbp), %rdi
cmpw $0x3, 0x20(%rdi)
jl 0x195ef
movl 0x4(%rbp), %eax
andl %r15d, %eax
cmpl $0x401, %eax            # imm = 0x401
jne 0x195ef
callq 0x12288
testl %eax, %eax
jne 0x195ef
testb $0x20, 0x4(%rbp)
jne 0x195ef
movq 0x8(%rbp), %rdi
movq %r13, %rsi
callq 0x1988e
addq $0x10, %rbp
jmp 0x195af
movq 0x40(%r12), %rcx
movq 0x38(%rcx), %rdi
movl 0x18(%r12), %ecx
leal -0x137(%rcx), %edx
cmpl $0x3, %edx
ja 0x19626
leaq 0x153cf(%rip), %rcx     # 0x2e9e4
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movl %eax, %edx
incl %edx
pushq $0x13
jmp 0x19656
cmpl $0x157, %ecx            # imm = 0x157
je 0x19647
cmpl $0x158, %ecx            # imm = 0x158
jne 0x19129
incl %eax
pushq $0x12
popq %rcx
movl %eax, %esi
xorl %edx, %edx
jmp 0x19659
incl %eax
pushq $0x11
popq %rcx
xorl %esi, %esi
movl %eax, %edx
jmp 0x19659
movl %eax, %edx
incl %edx
pushq $0x53
popq %rcx
movl %eax, %esi
callq 0x19982
movq %rax, %r12
testq %rax, %rax
je 0x19129
cmpl $0x102, 0x18(%r15)      # imm = 0x102
jne 0x196a6
movq 0x40(%r15), %rax
movq 0x8(%rax), %r15
leaq 0x14706(%rip), %rsi     # 0x2dd89
movq %r15, %rdi
callq 0x3190
testl %eax, %eax
je 0x196e9
leaq 0x146fb(%rip), %rsi     # 0x2dd91
movq %r15, %rdi
callq 0x3190
testl %eax, %eax
je 0x19129
xorl %edi, %edi
cmpq 0x66331(%rip), %r12     # 0x7f9e0
sete %dil
leaq 0x156d3(%rip), %rsi     # 0x2ed8d
callq 0x1225f
movq 0x6631a(%rip), %rax     # 0x7f9e0
movq 0x28(%rax), %rax
movq %rax, 0x6630f(%rip)     # 0x7f9e0
movq 0x66330(%rip), %rax     # 0x7fa08
movq %rax, 0x28(%r12)
movq %r12, 0x66324(%rip)     # 0x7fa08
jmp 0x19129
movq %r12, %rdi
callq 0x199e4
jmp 0x19129