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

	if (strlen(s) == 0
	||  strlen(t) == 0)
		return;

if (0)	printf("addfullglobal <%s> <%s> derived %d, ln %d\n", s, t, derived, ln);

tryagain:
	for (g = modex_globals; g; g = g->nxt)
		if (	/* strcmp(g->dt, s) == 0 &&	*/
		   (z = strstr(t, g->nm)))
		{
			if ((z == t
			&&  (*(z+strlen(g->nm)) == '['
			||   *(z+strlen(g->nm)) == ']'
			||   *(z+strlen(g->nm)) == '\0'
			||   *(z+strlen(g->nm)) == ' '))
			||  (*(z-2) == '*' && *(z-1) == ' '))
			{
				if (g->full
				&&  strcmp(g->full, t) == 0)
					return;

				if (Verbose&2)
					printf("add_full_global %s %s (%s)\n",
					s, t, g->full);

				g->full = (char *) e_malloc(strlen(t)+1);
				strcpy(g->full, t);

				if  (g->full[strlen(g->nm)] == ']')
				{	g->full[strlen(g->nm)] = '\0';
				}
				return;
			}
		}

if (0)	printf("%s: add_full_global not-found: <%s> <%s> <%d>\n", progname, s, t, cntr);

	if (cntr++ == 0)
	{	add_global(s, t, derived, ln);
		goto tryagain;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
callq 0x40f0
cmpq $0x0, %rax
je 0xd72b
movq -0x10(%rbp), %rdi
callq 0x40f0
cmpq $0x0, %rax
jne 0xd730
jmp 0xd939
jmp 0xd732
movq 0x3ce5f(%rip), %rax     # 0x4a598
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0xd911
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
callq 0x4280
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0xd8fe
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jne 0xd808
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x38(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x5b, %eax
je 0xd82a
movq -0x28(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x40(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x5d, %eax
je 0xd82a
movq -0x28(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x48(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0xd82a
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x50(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
je 0xd82a
movq -0x28(%rbp), %rax
movsbl -0x2(%rax), %eax
cmpl $0x2a, %eax
jne 0xd8fc
movq -0x28(%rbp), %rax
movsbl -0x1(%rax), %eax
cmpl $0x20, %eax
jne 0xd8fc
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xd850
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x4180
cmpl $0x0, %eax
jne 0xd850
jmp 0xd939
leaq 0x3a3f5(%rip), %rax     # 0x47c4c
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xd87f
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x27af7(%rip), %rdi     # 0x3536f
movb $0x0, %al
callq 0x4120
movq -0x10(%rbp), %rdi
callq 0x40f0
addq $0x1, %rax
movl %eax, %edi
callq 0x4a70
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x40a0
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x58(%rbp), %rax
movsbl (%rax,%rcx), %eax
cmpl $0x5d, %eax
jne 0xd8fa
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x40f0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movb $0x0, (%rax,%rcx)
jmp 0xd939
jmp 0xd8fe
jmp 0xd900
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0xd73d
movl -0x2c(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x2c(%rbp)
cmpl $0x0, %eax
jne 0xd939
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
callq 0xd440
jmp 0xd732
addq $0x60, %rsp
popq %rbp
retq
nop