// File: /workspace/github_c_makefile_star2_O3/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 0x2bc48(%rip), %rax     # 0x389d8
cmpl $0x0, (%rax)
je 0xcf31
movq %rsi, %r14
movb 0x2e635(%rip), %bpl     # 0x3b3d8
xorl %r15d, %r15d
movb %r15b, 0x2e62b(%rip)    # 0x3b3d8
movb %r15b, 0x2e62c(%rip)    # 0x3b3e0
leaq 0x2e625(%rip), %rbx     # 0x3b3e0
xorl %esi, %esi
xorl %edx, %edx
callq 0xcf43
movq %rbx, %rdi
callq 0xcba1
movb %r15b, 0x2e60d(%rip)    # 0x3b3e0
movb %bpl, 0x2e5fe(%rip)     # 0x3b3d8
testq %rax, %rax
je 0xcf31
movq %rax, %rbx
cmpb $0x0, (%rax)
je 0xcf31
leaq 0x2e7ea(%rip), %rdi     # 0x3b5e0
leaq 0x2c583(%rip), %rsi     # 0x39380
callq 0x40b0
movb $0x0, 0x2c577(%rip)     # 0x39380
movq %r14, %rdi
callq 0xaca3
callq 0x42e0
movq (%rax), %rax
movsbq 0x2c55f(%rip), %rcx     # 0x39380
testb $0x8, 0x1(%rax,%rcx,2)
je 0xce93
movsbq (%rbx), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0xce93
leaq 0x2c546(%rip), %rdi     # 0x39380
callq 0x4280
movl %eax, %ebp
movq %rbx, %rdi
callq 0x4280
movl %eax, %r14d
leaq 0x2bc29(%rip), %rax     # 0x38a7c
testb $0x2, (%rax)
je 0xce8a
leaq 0x29341(%rip), %rax     # 0x361a0
movq (%rax), %rsi
cmpl %r14d, %ebp
leaq 0x1716c(%rip), %rax     # 0x23fd8
leaq 0x172b5(%rip), %r8      # 0x24128
cmovlq %rax, %r8
leaq 0x17288(%rip), %rdi     # 0x24106
movl %ebp, %edx
movl %r14d, %ecx
xorl %eax, %eax
callq 0x4140
cmpl %r14d, %ebp
jl 0xcf14
cmpb $0x0, 0x2f746(%rip)     # 0x3c5e0
je 0xceb9
leaq 0x2f73d(%rip), %r14     # 0x3c5e0
movq %r14, %rdi
callq 0x4110
movl $0x20262620, (%rax,%r14) # imm = 0x20262620
movb $0x0, 0x4(%rax,%r14)
leaq 0x2f720(%rip), %r14     # 0x3c5e0
movq %r14, %rdi
callq 0x4110
movw $0x28, (%rax,%r14)
leaq 0x2c4aa(%rip), %rsi     # 0x39380
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 0x2bb6d(%rip), %rax     # 0x38a7c
testb $0x2, (%rax)
jne 0xcf3c
leaq 0x2c465(%rip), %rdi     # 0x39380
leaq 0x2e6be(%rip), %rsi     # 0x3b5e0
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
callq 0x468a
jmp 0xcf14