// File: /workspace/github_c_makefile_star2_O1/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 0x1bc04
movq %rcx, %r14
movq %rsi, %r12
movq %rdi, %rbx
leaq 0x5425b(%rip), %rax     # 0x6fe38
incl (%rax)
movq 0x64e1a(%rip), %r13     # 0x80a00
testq %r13, %r13
movq %rdx, (%rsp)
je 0x1bc0e
movq 0x8(%r13), %rax
movq %rax, 0x64e06(%rip)     # 0x80a00
movq $0x0, 0x8(%r13)
jmp 0x1bc1b
movl $0x1, %ebp
jmp 0x1c2a1
movl $0x10, %edi
callq 0x61a1
movq %rax, %r13
movq $0x0, (%r13)
movq 0x64dc6(%rip), %rax     # 0x809f0
testq %rax, %rax
je 0x1bc7a
movq (%rax), %r15
testq %r15, %r15
je 0x1bc7a
movswl 0x18(%r15), %ecx
testb $0x4, %cl
jne 0x1bc74
movq (%r15), %rdi
movl 0x20(%r15), %esi
movl 0x1c(%r15), %edx
callq 0x1c41a
movq 0x8(%r15), %rcx
movq %rcx, 0x8(%rax)
movq 0x10(%r15), %rcx
movq %rcx, 0x10(%rax)
movq (%r13), %rcx
movq %rcx, 0x28(%rax)
movl 0x24(%r15), %ecx
movl %ecx, 0x24(%rax)
movq %rax, (%r13)
movq 0x28(%r15), %r15
jmp 0x1bc32
movq 0x64d6f(%rip), %rax     # 0x809f0
movq %rax, 0x8(%r13)
movq %r13, 0x64d64(%rip)     # 0x809f0
testq %r14, %r14
je 0x1bd05
movq (%r14), %r13
testq %r13, %r13
je 0x1bd05
cmpq $0x0, 0x28(%r13)
je 0x1bd05
movq %r13, %rdi
callq 0x79af
testq %rax, %rax
je 0x1bcb6
cmpl $0x118, 0x18(%rax)      # imm = 0x118
je 0x1bd05
movq 0x28(%r13), %rax
movq 0x18(%rax), %rbp
testq %rbp, %rbp
je 0x1bd05
movl $0x501, %r15d           # imm = 0x501
movq 0x8(%rbp), %rdi
cmpw $0x3, 0x20(%rdi)
jl 0x1bcfc
movl 0x4(%rbp), %eax
andl %r15d, %eax
cmpl $0x401, %eax            # imm = 0x401
jne 0x1bcfc
callq 0x13f9a
testl %eax, %eax
jne 0x1bcfc
testb $0x20, 0x4(%rbp)
jne 0x1bcfc
movq 0x8(%rbp), %rdi
movq %r13, %rsi
callq 0x1c497
movq 0x10(%rbp), %rbp
testq %rbp, %rbp
jne 0x1bcc9
testq %r12, %r12
sete %al
movq (%rsp), %r15
testq %r15, %r15
sete %cl
orb %al, %cl
jne 0x1be43
cmpl $0x28, 0x1c(%r12)
jne 0x1bdbc
movq 0x40(%r12), %rax
testq %rax, %rax
je 0x1bdbc
cmpl $0x2d, 0x1c(%rax)
jne 0x1bdbc
movl $0x0, 0x64c41(%rip)     # 0x80988
movq 0x48(%r12), %rdi
xorl %r13d, %r13d
xorl %esi, %esi
callq 0x1b08f
cmpl $0x0, 0x64c2b(%rip)     # 0x80988
jne 0x1bdbf
movq 0x40(%r12), %rcx
movq 0x38(%rcx), %rdi
movl 0x18(%r12), %ecx
leal -0x137(%rcx), %edx
cmpl $0x3, %edx
ja 0x1bd98
leaq 0x14c59(%rip), %rcx     # 0x309d8
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movl %eax, %edx
incl %edx
movl %eax, %esi
movl $0x13, %ecx
jmp 0x1c309
cmpl $0x157, %ecx            # imm = 0x157
je 0x1c2f3
cmpl $0x158, %ecx            # imm = 0x158
jne 0x1bdbc
incl %eax
movl %eax, %esi
xorl %edx, %edx
movl $0x12, %ecx
jmp 0x1c309
xorl %r13d, %r13d
testq %r13, %r13
je 0x1be43
cmpl $0x102, 0x18(%r15)      # imm = 0x102
jne 0x1bdfc
movq 0x40(%r15), %rax
movq 0x8(%rax), %r15
leaq 0x13f9b(%rip), %rsi     # 0x2fd78
movq %r15, %rdi
callq 0x3180
testl %eax, %eax
je 0x1be3b
leaq 0x13f90(%rip), %rsi     # 0x2fd80
movq %r15, %rdi
callq 0x3180
testl %eax, %eax
je 0x1be43
xorl %edi, %edi
cmpq 0x64bcb(%rip), %r13     # 0x809d0
sete %dil
leaq 0x14f71(%rip), %rsi     # 0x30d81
callq 0x13f8c
movq 0x64bb4(%rip), %rax     # 0x809d0
movq 0x28(%rax), %rax
movq %rax, 0x64ba9(%rip)     # 0x809d0
movq 0x64bca(%rip), %rax     # 0x809f8
movq %rax, 0x28(%r13)
movq %r13, 0x64bbf(%rip)     # 0x809f8
jmp 0x1be43
movq %r13, %rdi
callq 0x1c5f4
testq %r14, %r14
je 0x1c018
movq (%r14), %rsi
testq %rsi, %rsi
je 0x1be6a
cmpl $0x1c, 0x1c(%rsi)
jne 0x1be6a
cmpl $0x14b, 0x18(%rsi)      # imm = 0x14B
jne 0x1be6a
xorl %edi, %edi
callq 0x1c4e7
movq (%r14), %rax
testq %rax, %rax
je 0x1be7e
leaq 0x40(%rax), %rcx
cmpl $0x1b, 0x1c(%rax)
cmoveq %rcx, %r14
movq (%r14), %rax
testq %rax, %rax
je 0x1bf51
movq 0x28(%rax), %rax
testq %rax, %rax
je 0x1bf51
movq 0x18(%rax), %r15
testq %r15, %r15
je 0x1bf51
movq 0x64b25(%rip), %r12     # 0x809d0
leaq 0x53f86(%rip), %rax     # 0x6fe38
movl (%rax), %ebp
movq 0x64b35(%rip), %rax     # 0x809f0
movq %rax, (%rsp)
testb $0x1, 0x4(%r15)
je 0x1bf44
testq %r12, %r12
je 0x1bf06
movq 0x8(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %r14
movq %r12, %r13
movq (%r13), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
movq %r14, %rsi
callq 0x3180
testl %eax, %eax
jne 0x1befd
cmpl %ebp, 0x24(%r13)
jge 0x1befd
orb $0x4, 0x18(%r13)
movq 0x28(%r13), %r13
testq %r13, %r13
jne 0x1beda
movq (%rsp), %rax
movq (%rax), %r13
testq %r13, %r13
je 0x1bf44
movq 0x8(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %r14
movq (%r13), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
movq %r14, %rsi
callq 0x3180
testl %eax, %eax
jne 0x1bf3b
orb $0x4, 0x18(%r13)
movq 0x28(%r13), %r13
testq %r13, %r13
jne 0x1bf1e
movq 0x10(%r15), %r15
testq %r15, %r15
jne 0x1bebf
movq 0x64a78(%rip), %r14     # 0x809d0
testq %r14, %r14
je 0x1c001
testb $0xc, 0x18(%r14)
movq 0x64a83(%rip), %rax     # 0x809f0
movq (%rax), %r15
je 0x1bf8f
testq %r15, %r15
je 0x1bfbb
movq (%r14), %rax
cmpq %rax, (%r15)
jne 0x1bf84
orb $0x4, 0x18(%r15)
movq 0x28(%r15), %r15
testq %r15, %r15
jne 0x1bf7a
jmp 0x1bfbb
testq %r15, %r15
je 0x1bfbb
xorl %eax, %eax
movq (%r15), %rcx
cmpq (%r14), %rcx
jne 0x1bfae
movq %r15, %rdi
movq %r14, %rsi
callq 0x1c984
movl $0x1, %eax
movq 0x28(%r15), %r15
testq %r15, %r15
jne 0x1bf96
testl %eax, %eax
jne 0x1bff8
movq (%r14), %rdi
movl 0x20(%r14), %esi
movl 0x1c(%r14), %edx
movswl 0x18(%r14), %ecx
callq 0x1c41a
movq 0x8(%r14), %rcx
movq %rcx, 0x8(%rax)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rax)
movq 0x64a09(%rip), %rcx     # 0x809f0
movq (%rcx), %rdx
movq %rdx, 0x28(%rax)
movl 0x24(%r14), %edx
movl %edx, 0x24(%rax)
movq %rax, (%rcx)
movq 0x28(%r14), %r14
jmp 0x1bf58
movq 0x649c8(%rip), %rdi     # 0x809d0
callq 0x1bb71
movq $0x0, 0x649b8(%rip) # 0x809d0
movq 0x649d1(%rip), %rax     # 0x809f0
movq (%rax), %r14
testq %r14, %r14
je 0x1c163
leaq 0x1c1f6(%rip), %r13     # 0x38228
leaq 0x14d58(%rip), %r12     # 0x30d91
xorps %xmm0, %xmm0
testb $0x20, 0x18(%r14)
je 0x1c10d
movq $0x0, 0x10(%r14)
movq (%r14), %rax
cmpq 0x8(%r14), %rax
jne 0x1c089
cmpl $0x0, (%r13)
je 0x1c07c
leaq 0x14d50(%rip), %rdi     # 0x30db6
callq 0x30a0
movq (%rbx), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x1b2fb
xorps %xmm0, %xmm0
andb $-0x21, 0x18(%r14)
movq $0x0, 0x8(%r14)
leaq 0x8(%r14), %r15
xorl %eax, %eax
movq 0x6495a(%rip), %rcx     # 0x809f0
movq (%rcx), %rbp
testq %rbp, %rbp
je 0x1c0fa
cmpq %r14, %rbp
je 0x1c0ac
movq (%rbp), %rdx
cmpq (%r15), %rdx
je 0x1c0b2
movq 0x28(%rbp), %rbp
jmp 0x1c099
movzwl 0x18(%rbp), %esi
testb $0x4, %sil
jne 0x1c11c
testb $0x20, %sil
je 0x1c15d
movq 0x8(%rbp), %rsi
cmpq %rsi, %rdx
je 0x1c135
movq %rsi, (%r15)
incl %eax
cmpl $0xc, %eax
jne 0x1c096
leaq 0x14cf2(%rip), %rdi     # 0x30dd2
callq 0x30a0
movq (%rbx), %rdx
leaq 0x14caa(%rip), %rdi     # 0x30d99
movq %r14, %rsi
callq 0x1b2fb
xorps %xmm0, %xmm0
movl 0x18(%r14), %eax
andl $-0x25, %eax
orl $0x4, %eax
movw %ax, 0x18(%r14)
movups %xmm0, (%r15)
movq 0x28(%r14), %r14
testq %r14, %r14
jne 0x1c03c
jmp 0x1c163
movl 0x18(%r14), %eax
andl $-0x25, %eax
orl $0x4, %eax
movw %ax, 0x18(%r14)
movq $0x0, 0x8(%r14)
jmp 0x1c10d
leaq 0x14ca0(%rip), %rdi     # 0x30ddc
callq 0x30a0
movq %r12, %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x1b2fb
xorps %xmm0, %xmm0
andb $-0x21, 0x18(%rbp)
movq $0x0, 0x8(%rbp)
movq %rbp, 0x10(%r14)
jmp 0x1c10d
movq 0x64886(%rip), %rax     # 0x809f0
movq (%rax), %r14
testq %r14, %r14
je 0x1c1f8
xorl %ebp, %ebp
movq %r14, %rdi
callq 0x1c670
testl %eax, %eax
jne 0x1c214
movq 0x38(%rbx), %r15
testq %r15, %r15
je 0x1c1a6
movq %r15, %rdi
movq %r14, %rsi
callq 0x1c91f
testl %eax, %eax
jne 0x1c1e3
movq 0x28(%r15), %r15
jmp 0x1c18c
movq (%r14), %rdi
movl 0x20(%r14), %esi
movl 0x1c(%r14), %edx
movswl 0x18(%r14), %ecx
callq 0x1c41a
movq 0x8(%r14), %rcx
movq %rcx, 0x8(%rax)
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rax)
movq 0x38(%rbx), %rcx
movq %rcx, 0x28(%rax)
movl 0x24(%r14), %ecx
movl %ecx, 0x24(%rax)
movq %rax, 0x38(%rbx)
movl $0x1, %ebp
movq 0x28(%r14), %r14
testq %r14, %r14
jne 0x1c178
testl %ebp, %ebp
je 0x1c1f8
leaq 0x4a(%rbx), %rcx
xorl %eax, %eax
jmp 0x1c20d
movl $0x2, %eax
cmpw $0x0, 0x4a(%rbx)
jne 0x1c219
leaq 0x4a(%rbx), %rcx
movl $0x1, %eax
movw $0x1, (%rcx)
jmp 0x1c219
movl $0x3, %eax
cmpl $0x2, %eax
jae 0x1c246
movq %rbx, %rdi
callq 0x1b750
cmpw $0x0, 0x48(%rbx)
je 0x1c2b2
movq (%rbx), %r14
testq %r14, %r14
je 0x1c2b2
cmpl $0x1b, 0x1c(%r14)
jne 0x1c2b5
movq 0x40(%r14), %r14
jmp 0x1c2b5
xorl %ebp, %ebp
cmpl $0x3, %eax
je 0x1c252
movl $0x1, %ebp
xorl %edi, %edi
cmpq $0x0, 0x64794(%rip)     # 0x809f0
setne %dil
leaq 0x14b3a(%rip), %rsi     # 0x30da1
callq 0x13f8c
movq 0x6477d(%rip), %rbx     # 0x809f0
movq (%rbx), %rdi
callq 0x1bb71
movq 0x8(%rbx), %rax
movq %rax, 0x6476a(%rip)     # 0x809f0
movq 0x64773(%rip), %rax     # 0x80a00
movq %rax, 0x8(%rbx)
movq %rbx, 0x64768(%rip)     # 0x80a00
leaq 0x53b99(%rip), %rax     # 0x6fe38
decl (%rax)
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r14d, %r14d
movq 0x50(%rbx), %r15
movl $0x1, %ebp
testq %r15, %r15
je 0x1c252
cmpq $0x0, 0x10(%r15)
je 0x1c252
movq (%r15), %rsi
movq %r14, %rdi
callq 0x14523
testl %eax, %eax
jne 0x1c2eb
movq (%r15), %rdx
movq 0x10(%r15), %rdi
movq %r14, %rsi
movq %rbx, %rcx
callq 0x1bbbd
movq 0x18(%r15), %r15
jmp 0x1c2be
incl %eax
xorl %esi, %esi
movl %eax, %edx
movl $0x11, %ecx
jmp 0x1c309
movl %eax, %edx
incl %edx
movl %eax, %esi
movl $0x53, %ecx
callq 0x1c592
movq %rax, %r13
jmp 0x1bdbf