// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_lts.c
// Function: ana_locs
static void
ana_locs(Graphs *g)
{	SymRef *r;

	if (uno_p != 4) return;

	if (g)
	for (r = g->locs; r; r = r->nxt)
	{
#if 0
		if ((r->status & PARAM) && (r->status & (REF0|DEREF)))
		{	if (r->n)
			fprintf(stderr, "%s:%d: parameter %s: ",
				r->n->hdr.fnm, r->n->hdr.line, r->sm->nme->str);
			else
			fprintf(stderr, "%s:%d: parameter %s: ",
				r->sm->fn, r->sm->ln, r->sm->nme->str);
			dflow_mark(stderr, r->status);
			fprintf(stderr, "\n");
		}
#endif
		if (r->status & ALIAS)
			continue;	/* can't tell */

		if (r->status & USEbeforedef)	/* at least one use before def */
		{
			if (r->status & DEREF)	/* a local ptr, zero/non_zero test is ok */
			{	treenode *rn = r->n;
				if (r->n->hdr.type == TN_IF)
					rn = ((if_node *)r->n)->cond;
				if (simple_zero(r->sm, rn)
				|| simple_nonzero(r->sm, rn))
				{	if (debug)
						uno_warn("[non-]zero test of uninit ptr",
							r->n, r->sm);
					continue;
			}	}

			if (r->status & PARAM)
			{	/* check if this is a fct name, if so mark g->status |= 4 */
				could_be_fct(r->sm->nme->str);
				continue;
			}

			if ((r->status & IN_SIZEOF)
			|| ((r->status & ISTATIC) && !lintlike))
				continue;

			saw_a_typedef_name = 0;
			buf_recur(r->sm->node);	/* intercept typedefs of structs only */

			if ((r->status & DEF) || saw_a_typedef_name)	/* at least one def before use */
				uno_warn("possibly uninitialized variable", r->n, r->sm);
			else
			{	if (debug) printf("status: %d\n", r->status);
				uno_warn("uninitialized variable", r->n, r->sm);
			}
			continue;
		}

		/* printf("status %d name %s fcall %d\n", r->status, r->sm->nme->str, not_fcall(r->sm)); */

		if (usecheck
		&&  strncmp(r->sm->nme->str, "unused", strlen("unused")) != 0
		&&  not_fcall(r->sm)
		&& !(r->status & USE))
			uno_warn("local variable never used (evaluated)", r->n, r->sm);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x25b0d(%rip), %rax     # 0x4e140
cmpl $0x4, (%rax)
je 0x2863d
jmp 0x28880
cmpq $0x0, -0x8(%rbp)
je 0x28880
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x2887e
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x28675
jmp 0x2886d
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x287ff
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x28718
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x1b, 0x1c(%rax)
jne 0x286c3
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x40(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x27d90
cmpl $0x0, %eax
jne 0x286ed
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x27950
cmpl $0x0, %eax
je 0x28716
cmpl $0x0, 0x5d8dc(%rip)     # 0x85fd0
je 0x28711
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x1d338(%rip), %rdi     # 0x45a44
callq 0x1fe80
jmp 0x2886d
jmp 0x28718
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x28742
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x20590
jmp 0x2886d
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
jne 0x28770
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x10000, %eax          # imm = 0x10000
cmpl $0x0, %eax
je 0x28775
leaq 0x25c39(%rip), %rax     # 0x4e3a4
cmpl $0x0, (%rax)
jne 0x28775
jmp 0x2886d
movl $0x0, 0x5d899(%rip)     # 0x86018
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rdi
callq 0x1e010
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x287a7
cmpl $0x0, 0x5d873(%rip)     # 0x86018
je 0x287c4
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x1d2a5(%rip), %rdi     # 0x45a62
callq 0x1fe80
jmp 0x287fd
cmpl $0x0, 0x5d805(%rip)     # 0x85fd0
je 0x287e2
movq -0x10(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0x1d2a7(%rip), %rdi     # 0x45a82
movb $0x0, %al
callq 0x30f0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x1d273(%rip), %rdi     # 0x45a6b
callq 0x1fe80
jmp 0x2886d
leaq 0x25ba2(%rip), %rax     # 0x4e3a8
cmpl $0x0, (%rax)
je 0x2886b
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0xc5cd(%rip), %rsi      # 0x34dee
movl $0x6, %edx
callq 0x3070
cmpl $0x0, %eax
je 0x2886b
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x28b80
cmpl $0x0, %eax
je 0x2886b
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x2886b
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x1d228(%rip), %rdi     # 0x45a8e
callq 0x1fe80
jmp 0x2886d
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x28654
jmp 0x28880
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)