// File: /workspace/github_c_makefile_star2_O0/darwin-on-arm[P]darwin-sdk/developer_cmds/ctags/C.c
// Function: func_entry
static int
func_entry()
{
	int	c;			/* current character */
	int	level = 0;		/* for matching '()' */
	static char attribute[] = "__attribute__";
	char	maybe_attribute[sizeof attribute + 1],
		*anext;

	/*
	 * Find the end of the assumed function declaration.
	 * Note that ANSI C functions can have type definitions so keep
	 * track of the parentheses nesting level.
	 */
	while (GETC(!=, EOF)) {
		switch (c) {
		case '\'':
		case '"':
			/* skip strings and character constants */
			skip_string(c);
			break;
		case '/':
			/* skip comments */
			if (GETC(==, '*'))
				skip_comment();
			break;
		case '(':
			level++;
			break;
		case ')':
			if (level == 0)
				goto fnd;
			level--;
			break;
		case '\n':
			SETLINE;
		}
	}
	return (NO);
fnd:
	/*
	 * we assume that the character after a function's right paren
	 * is a token character if it's a function and a non-token
	 * character if it's a declaration.  Comments don't count...
	 */
	for (anext = maybe_attribute;;) {
		while (GETC(!=, EOF) && iswhite(c))
			if (c == '\n')
				SETLINE;
		if (c == EOF)
			return NO;
		/*
		 * Recognize the gnu __attribute__ extension, which would
		 * otherwise make the heuristic test DTWT
		 */
		if (anext == maybe_attribute) {
			if (intoken(c)) {
				*anext++ = c;
				continue;
			}
		} else {
			if (intoken(c)) {
				if (anext - maybe_attribute 
				 < (int)(sizeof attribute - 1))
					*anext++ = c;
				else	break;
				continue;
			} else {
				*anext++ = '\0';
				if (strcmp(maybe_attribute, attribute) == 0) {
					(void)ungetc(c, inf);
					return NO;
				}
				break;
			}
		}
		if (intoken(c) || c == '{')
			break;
		if (c == '/' && GETC(==, '*'))
			skip_comment();
		else {				/* don't ever "read" '/' */
			(void)ungetc(c, inf);
			return (NO);
		}
	}
	if (c != '{')
		(void)skip_key('{');
	return (YES);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl $0x0, -0xc(%rbp)
leaq 0x472a(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x11b0
movl %eax, -0x8(%rbp)
cmpl $-0x1, %eax
je 0x1acf
movl -0x8(%rbp), %eax
addl $-0xa, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x25, %eax
ja 0x1aca
movq -0x30(%rbp), %rax
leaq 0x25ba(%rip), %rcx      # 0x4004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x8(%rbp), %edi
callq 0x1700
jmp 0x1aca
leaq 0x46dc(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x11b0
movl %eax, -0x8(%rbp)
cmpl $0x2a, %eax
jne 0x1a79
callq 0x17b0
jmp 0x1aca
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1aca
cmpl $0x0, -0xc(%rbp)
jne 0x1a8e
jmp 0x1adb
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1aca
leaq 0x4bc0(%rip), %rax      # 0x6660
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x4bb4(%rip), %rax      # 0x6660
movl %ecx, (%rax)
leaq 0x468b(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x1110
movq %rax, %rcx
leaq 0x53a9(%rip), %rax      # 0x6e70
movq %rcx, (%rax)
jmp 0x1a0f
movl $0x0, -0x4(%rbp)
jmp 0x1cb0
leaq -0x1b(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x1ae5
leaq 0x4654(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x11b0
movl %eax, %ecx
movl %ecx, -0x8(%rbp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, -0x31(%rbp)
je 0x1b1c
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x4951(%rip), %rax      # 0x6460
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x1b25
jmp 0x1b5e
cmpl $0xa, -0x8(%rbp)
jne 0x1b5c
leaq 0x4b2e(%rip), %rax      # 0x6660
movl (%rax), %ecx
addl $0x1, %ecx
leaq 0x4b22(%rip), %rax      # 0x6660
movl %ecx, (%rax)
leaq 0x45f9(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x1110
movq %rax, %rcx
leaq 0x5317(%rip), %rax      # 0x6e70
movq %rcx, (%rax)
jmp 0x1ae5
cmpl $-0x1, -0x8(%rbp)
jne 0x1b70
movl $0x0, -0x4(%rbp)
jmp 0x1cb0
movq -0x28(%rbp), %rax
leaq -0x1b(%rbp), %rcx
cmpq %rcx, %rax
jne 0x1baf
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x46d7(%rip), %rax      # 0x6260
cmpb $0x0, (%rax,%rcx)
je 0x1baa
movl -0x8(%rbp), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x28(%rbp)
movb %cl, (%rax)
jmp 0x1ae3
jmp 0x1c38
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x46a5(%rip), %rax      # 0x6260
cmpb $0x0, (%rax,%rcx)
je 0x1bf4
movq -0x28(%rbp), %rax
leaq -0x1b(%rbp), %rcx
subq %rcx, %rax
cmpq $0xd, %rax
jge 0x1bea
movl -0x8(%rbp), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x28(%rbp)
movb %cl, (%rax)
jmp 0x1bef
jmp 0x1c99
jmp 0x1ae3
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x0, (%rax)
leaq -0x1b(%rbp), %rdi
leaq 0x44e7(%rip), %rsi      # 0x60f8
callq 0x10f0
cmpl $0x0, %eax
jne 0x1c36
movl -0x8(%rbp), %edi
leaq 0x451b(%rip), %rax      # 0x6140
movq (%rax), %rsi
callq 0x1140
movl $0x0, -0x4(%rbp)
jmp 0x1cb0
jmp 0x1c99
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x461c(%rip), %rax      # 0x6260
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
jne 0x1c53
cmpl $0x7b, -0x8(%rbp)
jne 0x1c55
jmp 0x1c99
cmpl $0x2f, -0x8(%rbp)
jne 0x1c79
leaq 0x44de(%rip), %rax      # 0x6140
movq (%rax), %rdi
callq 0x11b0
movl %eax, -0x8(%rbp)
cmpl $0x2a, %eax
jne 0x1c79
callq 0x17b0
jmp 0x1c94
movl -0x8(%rbp), %edi
leaq 0x44bd(%rip), %rax      # 0x6140
movq (%rax), %rsi
callq 0x1140
movl $0x0, -0x4(%rbp)
jmp 0x1cb0
jmp 0x1ae3
cmpl $0x7b, -0x8(%rbp)
je 0x1ca9
movl $0x7b, %edi
callq 0x1f00
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)