// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Modex/Src/xtract.c
// Function: add_full_local
void
add_full_local(char *s, char *t, char *r, int derived, int ln)
{	Fcts *g;
	char *z;
	char cntr = 0;

	if (strlen(s) == 0
	||  strlen(t) == 0
	||  strcmp(r, "-") == 0)
		return;

if (0) printf("add_full_local <%s> %s %s\n", s, t, r);
	if (strcmp(s, "unsigned unsigned ") == 0)
	{	s += strlen("unsigned ");
	}


tryagain:
	for (g = modex_locals; g; g = g->nxt)
		if (strcmp(g->dt, s) == 0 && strlen(g->dt) == strlen(s)
		&&  strcmp(g->tg, r) == 0 && strlen(g->tg) == strlen(r)
		&& (z = strstr(t, g->nm)))
		{
			if (allprocs
			||  strcmp(r, want) == 0)
				g->wanted = 1;

if (0)			fprintf(stderr, "consider add_full_local <s=%s t=%s r=%s> g->full=%s g->nm=%s {%d} %d\n",
					s, t, r, g->full, g->nm, *(z+strlen(g->nm)), z==t);

			if ((z == t
			&&  (*(z+strlen(g->nm)) == '['
			||   *(z+strlen(g->nm)) == '\0'
			||   *(z+strlen(g->nm)) == ' '))	/* asgn, ival */
			||  (*(z-2) == '*' && *(z-1) == ' '))
			{
				if (isalnum((int) *(z+strlen(g->nm))))
					continue;

				if (g->full
				&&  (strcmp(g->full, t) == 0
				||   strlen(g->full) >= strlen(t)))
					return;
#if 0
			if (g->full)
				fprintf(stderr, "override add_full_local <%s> <with:%s> <%s> (is:%s) nm=%s {%d} %d\n",
					s, t, r, g->full, g->nm, *(z+strlen(g->nm)), z==t);
			else
				fprintf(stderr, "fillin add_full_local <s=%s (%s) t=%s r=%s (%s)> g->nm=%s {%d} %d\n",
					s, g->dt, t, r, g->tg, g->nm, *(z+strlen(g->nm)), z==t);
#endif
				g->full = (char *) e_malloc(strlen(t)+1);
				strcpy(g->full, t);
				return;
			}
		}

if (debug)		fprintf(stderr, "%s: add_full_local not-found: %s %s %s\n", progname, s, t, r);

	if (++cntr == 1)
	{	add_local(s, t, r, derived, ln, 10);
		goto tryagain;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %r8d, -0x20(%rbp)
movb $0x0, -0x31(%rbp)
movq -0x8(%rbp), %rdi
callq 0x40f0
cmpq $0x0, %rax
je 0xf5b5
movq -0x10(%rbp), %rdi
callq 0x40f0
cmpq $0x0, %rax
je 0xf5b5
movq -0x18(%rbp), %rdi
leaq 0x256a9(%rip), %rsi     # 0x34c54
callq 0x4180
cmpl $0x0, %eax
jne 0xf5ba
jmp 0xf8a0
movq -0x8(%rbp), %rdi
leaq 0x25d97(%rip), %rsi     # 0x3535c
callq 0x4180
cmpl $0x0, %eax
jne 0xf5db
movq -0x8(%rbp), %rax
addq $0x9, %rax
movq %rax, -0x8(%rbp)
jmp 0xf5dd
movq 0x3afbc(%rip), %rax     # 0x4a5a0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0xf836
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x8(%rbp), %rsi
callq 0x4180
cmpl $0x0, %eax
jne 0xf823
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x40f0
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x40(%rbp), %rax
cmpq %rcx, %rax
jne 0xf823
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x4180
cmpl $0x0, %eax
jne 0xf823
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x40f0
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x48(%rbp), %rax
cmpq %rcx, %rax
jne 0xf823
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rax
movq (%rax), %rsi
callq 0x4280
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0xf823
leaq 0x38598(%rip), %rax     # 0x47c38
cmpl $0x0, (%rax)
jne 0xf6bd
movq -0x18(%rbp), %rdi
leaq 0x35ac8(%rip), %rax     # 0x45178
movq (%rax), %rsi
callq 0x4180
cmpl $0x0, %eax
jne 0xf6c8
movq -0x28(%rbp), %rax
movl $0x1, 0x28(%rax)
movq -0x30(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0xf73e
movq -0x30(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x50(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x5b, %eax
je 0xf760
movq -0x30(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x58(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0xf760
movq -0x30(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
je 0xf760
movq -0x30(%rbp), %rax
movsbl -0x2(%rax), %eax
cmpl $0x2a, %eax
jne 0xf821
movq -0x30(%rbp), %rax
movsbl -0x1(%rax), %eax
cmpl $0x20, %eax
jne 0xf821
callq 0x4290
movq (%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq -0x70(%rbp), %rcx
movq %rax, %rdx
movq -0x68(%rbp), %rax
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xf7a3
jmp 0xf825
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xf7ef
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x4180
cmpl $0x0, %eax
je 0xf7ea
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x40f0
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x78(%rbp), %rax
cmpq %rcx, %rax
jb 0xf7ef
jmp 0xf8a0
movq -0x10(%rbp), %rdi
callq 0x40f0
addq $0x1, %rax
movl %eax, %edi
callq 0x4a70
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x40a0
jmp 0xf8a0
jmp 0xf823
jmp 0xf825
movq -0x28(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0xf5e8
cmpl $0x0, 0x3ad4b(%rip)     # 0x4a588
je 0xf86d
movq 0x357b2(%rip), %rax     # 0x44ff8
movq (%rax), %rdi
leaq 0x35920(%rip), %rax     # 0x45170
movq (%rax), %rdx
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %r8
movq -0x18(%rbp), %r9
leaq 0x25bd3(%rip), %rsi     # 0x35439
movb $0x0, %al
callq 0x4190
movb -0x31(%rbp), %al
addb $0x1, %al
movb %al, -0x31(%rbp)
movsbl %al, %eax
cmpl $0x1, %eax
jne 0xf8a0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
movl -0x20(%rbp), %r8d
movl $0xa, %r9d
callq 0xf1c0
jmp 0xf5dd
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)