// File: /workspace/github_c_makefile_star2_O2/nimble-code[P]Modex/Src/xtract.c
// Function: array_bound
void
array_bound(treenode *bnm, treenode *indx)
{	int ov = with_decorations;
	char *z;

	if (!visu) return;

	with_decorations = 0;
	strcpy(dername, "");

	dotree(bnm, 0, 0);

	z = which_var(dername);

	strcpy(dername, "");
	with_decorations = ov;

	if (!z || strlen(z) == 0) return;	/* can't find the bound */

	strcpy(Rem4, OutBuf);		/* save */
	strcpy(OutBuf, "");

	modex_recur(indx);

	if (isdigit((int) OutBuf[0])		/* 2 < 100 */
	&&  isdigit((int) z[0]))
	{	int n1, n2;
		n1 = atoi(OutBuf);
		n2 = atoi(z);
		if (Verbose&2)
		printf("%s: precondition (%d < %d == %s)\n",
			progname, n1, n2, (n1 < n2)?"true":"false");
		if (n1 < n2) goto notfound;
	}

	if (strlen(Bounds) > 0)
		strcat(Bounds, " && ");
	strcat(Bounds, "(");
	strcat(Bounds, OutBuf);
	strcat(Bounds, " < ");
	strcat(Bounds, z);
	strcat(Bounds, ")");

	if (Verbose&2) fprintf(stderr, "	Bound %s\n", Bounds);

notfound:
	strcpy(OutBuf, Rem4);		/* restore */
	return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
leaq 0x2b8f1(%rip), %rax     # 0x369d8
cmpl $0x0, (%rax)
je 0xb288
movq %rsi, %r14
movb 0x2e2de(%rip), %bpl     # 0x393d8
xorl %r15d, %r15d
movb %r15b, 0x2e2d4(%rip)    # 0x393d8
movb %r15b, 0x2e2d5(%rip)    # 0x393e0
leaq 0x2e2ce(%rip), %rbx     # 0x393e0
xorl %esi, %esi
xorl %edx, %edx
callq 0xb2b4
movq %rbx, %rdi
callq 0xaefb
movb %r15b, 0x2e2b6(%rip)    # 0x393e0
movb %bpl, 0x2e2a7(%rip)     # 0x393d8
testq %rax, %rax
je 0xb288
movq %rax, %rbx
cmpb $0x0, (%rax)
je 0xb288
leaq 0x2e493(%rip), %rdi     # 0x395e0
leaq 0x2c22c(%rip), %rsi     # 0x37380
callq 0x40b0
movb $0x0, 0x2c220(%rip)     # 0x37380
movq %r14, %rdi
callq 0x8cbf
callq 0x42e0
movq (%rax), %rax
movsbq 0x2c208(%rip), %rcx     # 0x37380
testb $0x8, 0x1(%rax,%rcx,2)
je 0xb1ea
movsbq (%rbx), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0xb1ea
leaq 0x2c1ef(%rip), %rdi     # 0x37380
callq 0x4280
movl %eax, %ebp
movq %rbx, %rdi
callq 0x4280
movl %eax, %r14d
leaq 0x2b8d2(%rip), %rax     # 0x36a7c
testb $0x2, (%rax)
je 0xb1e1
leaq 0x28fea(%rip), %rax     # 0x341a0
movq (%rax), %rsi
cmpl %r14d, %ebp
leaq 0x16d15(%rip), %rax     # 0x21ed8
leaq 0x16e5e(%rip), %r8      # 0x22028
cmovlq %rax, %r8
leaq 0x16e31(%rip), %rdi     # 0x22006
movl %ebp, %edx
movl %r14d, %ecx
xorl %eax, %eax
callq 0x4140
cmpl %r14d, %ebp
jl 0xb26b
cmpb $0x0, 0x2f3ef(%rip)     # 0x3a5e0
je 0xb210
leaq 0x2f3e6(%rip), %r14     # 0x3a5e0
movq %r14, %rdi
callq 0x4110
movl $0x20262620, (%rax,%r14) # imm = 0x20262620
movb $0x0, 0x4(%rax,%r14)
leaq 0x2f3c9(%rip), %r14     # 0x3a5e0
movq %r14, %rdi
callq 0x4110
movw $0x28, (%rax,%r14)
leaq 0x2c153(%rip), %rsi     # 0x37380
movq %r14, %rdi
callq 0x4290
movq %r14, %rdi
callq 0x4110
movl $0x203c20, (%rax,%r14)  # imm = 0x203C20
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4290
movq %r14, %rdi
callq 0x4110
movw $0x29, (%rax,%r14)
leaq 0x2b816(%rip), %rax     # 0x36a7c
testb $0x2, (%rax)
jne 0xb293
leaq 0x2c10e(%rip), %rdi     # 0x37380
leaq 0x2e367(%rip), %rsi     # 0x395e0
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x40b0
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x28d5e(%rip), %rax     # 0x33ff8
movq (%rax), %rdi
leaq 0x16d8f(%rip), %rsi     # 0x22033
leaq 0x2f335(%rip), %rdx     # 0x3a5e0
xorl %eax, %eax
callq 0x41c0
jmp 0xb26b