// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Uno/Src/uno_global.c
// Function: handle_glb
static void
handle_glb(char *buf, char *f)
{	static	char *curfct = (char *) 0;
	char	Code, Name[512], Filename[512], *nm = NULL, *other;
	Place	*n = (Place *) 0;
	int	Linenr, ostat;

	memset(Name, 0, sizeof(Name));
	memset(Filename, 0, sizeof(Filename));

	if (sscanf(buf, "%c\t%s\t%s\t%d\n",
		&Code, Name, Filename, &Linenr) == 4)
	{
		if (Code != 'q')
		{	n = (Place *) emalloc(sizeof(Place));
			n->fnm = mknm(Filename);
			n->line = Linenr;
			nm = mknm(Name);
		}

		switch (Code) {
		case 'F': curfct = nm; new_fct(n, nm, 0); add_fct(nm); break; /* extern function */
		case 'f': curfct = nm; new_fct(n, nm, 1); add_fct(nm); break; /* static function */
		case 'X': retval(curfct, Linenr); break;	 /* return value status of last function */

		case 'D': glob_def(n, curfct, nm); break;	/* global is defined in fct */
		case 'U': glob_use(n, curfct, nm); break;	/* poss useb4def   in fct */
		case 'R': glob_deref(n, curfct, nm); break;	/* poss derefb4def in fct */

		case 'C': loc_fcall(n, curfct, nm, DEF); break;	/* fct call made, retval used */
		case 'c': loc_fcall(n, curfct, nm, USE); break;	/* fct call made, retval not used */
		case 'b': loc_fcall(n, curfct, nm, USE|DEF); break;

		case 'h': loc_fcall(n, curfct, nm, DEF|HIDE); break; /* probably can't happen */
		case 'i': loc_fcall(n, curfct, nm, USE|HIDE); break; /* can't tell when or how called */
		case 'j': loc_fcall(n, curfct, nm, USE|DEF|HIDE); break;

		case 'G': glob_def(n, "_global_", nm); break;	 /* global defined in declaration */
		case 'a': glob_mark(n, nm, ALIAS); break;	/* global var's address taken at least once */
		case 'v': glob_mark(n, nm, 0); break;		/* global var   declared but not used */
		case 's': glob_mark(n, nm, DEF); break;		/* global var   set  at least once    */
		case 'u': glob_mark(n, nm, USE); break;		/* global var   used at least once    */
		case 't': glob_mark(n, nm, DEF|USE); break;	/* global var   set and used at least once  */

		case 'y': struct_flds(n, nm, 1); break;	/* report only matching results across all files */
		case 'z': struct_flds(n, nm, 0); break;	/* report only matching results across all files */

		case 'p': /* fct 'Name' could call fct 'Filename' via a fct pointer */
			other = n->fnm; n->fnm = "---"; ostat = n->line; n->line = 0;
			loc_fcall(n, nm, other, ostat);
			break;

		case 'q': get_indirect(Name, Linenr); break;

		default : fprintf(stderr, "uno:global: bad code (%c) in %s\n", Code, f); break;
	}	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x450, %rsp            # imm = 0x450
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x428(%rbp)
movq $0x0, -0x438(%rbp)
leaq -0x220(%rbp), %rdi
xorl %esi, %esi
movl $0x200, %edx            # imm = 0x200
callq 0x10a0
leaq -0x420(%rbp), %rdi
xorl %esi, %esi
movl $0x200, %edx            # imm = 0x200
callq 0x10a0
movq -0x8(%rbp), %rdi
leaq -0x220(%rbp), %rcx
leaq -0x420(%rbp), %r8
leaq 0x4c0e(%rip), %rsi      # 0x75b6
leaq -0x11(%rbp), %rdx
leaq -0x43c(%rbp), %r9
movb $0x0, %al
callq 0x1100
cmpl $0x4, %eax
jne 0x2d7c
movsbl -0x11(%rbp), %eax
cmpl $0x71, %eax
je 0x2a19
movl $0x10, %edi
callq 0x1270
movq %rax, -0x438(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x2d90
movq %rax, %rcx
movq -0x438(%rbp), %rax
movq %rcx, (%rax)
movl -0x43c(%rbp), %ecx
movq -0x438(%rbp), %rax
movl %ecx, 0x8(%rax)
leaq -0x220(%rbp), %rdi
callq 0x2d90
movq %rax, -0x428(%rbp)
movsbl -0x11(%rbp), %eax
addl $-0x43, %eax
movl %eax, %ecx
movq %rcx, -0x448(%rbp)
subl $0x37, %eax
ja 0x2d5a
movq -0x448(%rbp), %rax
leaq 0x45c4(%rip), %rcx      # 0x7004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x428(%rbp), %rax
movq %rax, 0x8951(%rip)      # 0xb3a8
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
xorl %edx, %edx
callq 0x2780
movq -0x428(%rbp), %rdi
callq 0x3330
jmp 0x2d7a
movq -0x428(%rbp), %rax
movq %rax, 0x891d(%rip)      # 0xb3a8
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x1, %edx
callq 0x2780
movq -0x428(%rbp), %rdi
callq 0x3330
jmp 0x2d7a
movq 0x88ed(%rip), %rdi      # 0xb3a8
movl -0x43c(%rbp), %esi
callq 0x2dd0
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x88cf(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
callq 0x2e10
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x88b0(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
callq 0x2e80
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x8891(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
callq 0x2ef0
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x8872(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x1, %ecx
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x884e(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x4, %ecx
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x882a(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x5, %ecx
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x8806(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x201, %ecx            # imm = 0x201
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x87e2(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x204, %ecx            # imm = 0x204
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq 0x87be(%rip), %rsi      # 0xb3a8
movq -0x428(%rbp), %rdx
movl $0x205, %ecx            # imm = 0x205
callq 0x2f60
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rdx
leaq 0x4706(%rip), %rsi      # 0x731b
callq 0x2e10
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x80, %edx
callq 0x3030
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
xorl %edx, %edx
callq 0x3030
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x1, %edx
callq 0x3030
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x4, %edx
callq 0x3030
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x5, %edx
callq 0x3030
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x1, %edx
callq 0x30e0
jmp 0x2d7a
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
xorl %edx, %edx
callq 0x30e0
jmp 0x2d7a
movq -0x438(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x430(%rbp)
movq -0x438(%rbp), %rax
leaq 0x48c0(%rip), %rcx      # 0x75c3
movq %rcx, (%rax)
movq -0x438(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x440(%rbp)
movq -0x438(%rbp), %rax
movl $0x0, 0x8(%rax)
movq -0x438(%rbp), %rdi
movq -0x428(%rbp), %rsi
movq -0x430(%rbp), %rdx
movl -0x440(%rbp), %ecx
callq 0x2f60
jmp 0x2d7a
leaq -0x220(%rbp), %rdi
movl -0x43c(%rbp), %esi
callq 0x31c0
jmp 0x2d7a
movq 0x8297(%rip), %rax      # 0xaff8
movq (%rax), %rdi
movsbl -0x11(%rbp), %edx
movq -0x10(%rbp), %rcx
leaq 0x4854(%rip), %rsi      # 0x75c7
movb $0x0, %al
callq 0x10d0
jmp 0x2d7c
addq $0x450, %rsp            # imm = 0x450
popq %rbp
retq
nopw %cs:(%rax,%rax)