// File: /workspace/github_c_makefile_star2_O1/darwin-on-arm[P]darwin-sdk/developer_cmds/ctags/C.c
// Function: c_entries
void
c_entries()
{
	int	c;			/* current character */
	int	level;			/* brace level */
	int	token;			/* if reading a token */
	int	t_def;			/* if reading a typedef */
	int	t_level;		/* typedef's brace level */
	char	*sp;			/* buffer pointer */
	char	tok[MAXTOKEN];		/* token buffer */

	lineftell = ftell(inf);
	sp = tok; token = t_def = NO; t_level = -1; level = 0; lineno = 1;
	while (GETC(!=, EOF)) {
		switch (c) {
		/*
		 * Here's where it DOESN'T handle: {
		 *	foo(a)
		 *	{
		 *	#ifdef notdef
		 *		}
		 *	#endif
		 *		if (a)
		 *			puts("hello, world");
		 *	}
		 */
		case '{':
			++level;
			goto endtok;
		case '}':
			/*
			 * if level goes below zero, try and fix
			 * it, even though we've already messed up
			 */
			if (--level < 0)
				level = 0;
			goto endtok;

		case '\n':
			SETLINE;
			/*
			 * the above 3 cases are similar in that they
			 * are special characters that also end tokens.
			 */
	endtok:			if (sp > tok) {
				*sp = EOS;
				token = YES;
				sp = tok;
			}
			else
				token = NO;
			continue;

		/*
		 * We ignore quoted strings and character constants
		 * completely.
		 */
		case '"':
		case '\'':
			(void)skip_string(c);
			break;

		/*
		 * comments can be fun; note the state is unchanged after
		 * return, in case we found:
		 *	"foo() XX comment XX { int bar; }"
		 */
		case '/':
			if (GETC(==, '*')) {
				skip_comment();
				continue;
			}
			(void)ungetc(c, inf);
			c = '/';
			goto storec;

		/* hash marks flag #define's. */
		case '#':
			if (sp == tok) {
				hash_entry();
				break;
			}
			goto storec;

		/*
		 * if we have a current token, parenthesis on
		 * level zero indicates a function.
		 */
		case '(':
			if (!level && token) {
				int	curline;

				if (sp != tok)
					*sp = EOS;
				/*
				 * grab the line immediately, we may
				 * already be wrong, for example,
				 *	foo\n
				 *	(arg1,
				 */
				ct_getline();
				curline = lineno;
				if (func_entry()) {
					++level;
					pfnote(tok, curline);
				}
				break;
			}
			goto storec;

		/*
		 * semi-colons indicate the end of a typedef; if we find a
		 * typedef we search for the next semi-colon of the same
		 * level as the typedef.  Ignoring "structs", they are
		 * tricky, since you can find:
		 *
		 *	"typedef long time_t;"
		 *	"typedef unsigned int u_int;"
		 *	"typedef unsigned int u_int [10];"
		 *
		 * If looking at a typedef, we save a copy of the last token
		 * found.  Then, when we find the ';' we take the current
		 * token if it starts with a valid token name, else we take
		 * the one we saved.  There's probably some reasonable
		 * alternative to this...
		 */
		case ';':
			if (t_def && level == t_level) {
				t_def = NO;
				ct_getline();
				if (sp != tok)
					*sp = EOS;
				pfnote(tok, lineno);
				break;
			}
			goto storec;

		/*
		 * store characters until one that can't be part of a token
		 * comes along; check the current token against certain
		 * reserved words.
		 */
		default:
	storec:		if (!intoken(c)) {
				if (sp == tok)
					break;
				*sp = EOS;
				if (tflag) {
					/* no typedefs inside typedefs */
					if (!t_def &&
						   !memcmp(tok, "typedef",8)) {
						t_def = YES;
						t_level = level;
						break;
					}
					/* catch "typedef struct" */
					if ((!t_def || t_level < level)
					    && (!memcmp(tok, "struct", 7)
					    || !memcmp(tok, "union", 6)
					    || !memcmp(tok, "enum", 5))) {
						/*
						 * get line immediately;
						 * may change before '{'
						 */
						ct_getline();
						if (str_entry(c))
							++level;
						break;
						/* } */
					}
				}
				sp = tok;
			}
			else if (sp != tok || begtoken(c)) {
				*sp++ = c;
				token = YES;
			}
			continue;
		}

		sp = tok;
		token = NO;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x918, %rsp            # imm = 0x918
leaq 0x4e4c(%rip), %r13      # 0x6150
movq (%r13), %rdi
callq 0x1120
leaq 0x5b6c(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
leaq 0x5352(%rip), %rax      # 0x6670
movl $0x1, (%rax)
movl $0xffffffff, 0x8(%rsp)  # imm = 0xFFFFFFFF
xorl %ebp, %ebp
leaq 0x10(%rsp), %r14
movl $0x0, 0x4(%rsp)
xorl %eax, %eax
movq %r14, %rbx
cmpl $0x0, 0x4(%rsp)
sete %cl
setne %dl
movl 0x8(%rsp), %esi
cmpl %esi, %ebp
sete %r14b
andb %dl, %r14b
cmpl %ebp, %esi
setl %r15b
orb %cl, %r15b
testl %eax, %eax
setne %al
movl %ebp, (%rsp)
testl %ebp, %ebp
sete %bpl
andb %al, %bpl
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2f, %eax
jne 0x1395
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2a, %eax
jne 0x140c
callq 0x1a96
jmp 0x1372
movl %eax, %r12d
cmpl $0x3a, %eax
jg 0x13c6
leal -0x22(%r12), %eax
cmpl $0x6, %eax
ja 0x13e2
leaq 0x2c56(%rip), %rcx      # 0x4004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rsp), %rax
cmpq %rax, %rbx
jne 0x141d
jmp 0x1575
cmpl $0x3b, %r12d
je 0x1402
cmpl $0x7d, %r12d
je 0x1505
cmpl $0x7b, %r12d
je 0x1517
jmp 0x141d
cmpl $-0x1, %r12d
je 0x1a12
cmpl $0xa, %r12d
je 0x151e
jmp 0x141d
testb %bpl, %bpl
je 0x141d
jmp 0x15ca
testb %r14b, %r14b
je 0x141d
jmp 0x1674
movq (%r13), %rsi
movl %eax, %edi
callq 0x1150
movl $0x2f, %r12d
movl %r12d, %eax
leaq 0x4e49(%rip), %rcx      # 0x6270
cmpb $0x0, (%rcx,%rax)
je 0x1451
leaq 0x10(%rsp), %rcx
cmpq %rcx, %rbx
jne 0x14f5
leaq 0x4d2e(%rip), %rcx      # 0x6170
cmpb $0x0, (%rcx,%rax)
je 0x1372
jmp 0x14f5
leaq 0x10(%rsp), %rax
cmpq %rax, %rbx
je 0x1784
movb $0x0, (%rbx)
leaq 0x4caf(%rip), %rcx      # 0x6118
cmpl $0x0, (%rcx)
movq %rax, %rbx
je 0x1372
cmpl $0x0, 0x4(%rsp)
jne 0x1491
movabsq $0x66656465707974, %rax # imm = 0x66656465707974
cmpq %rax, 0x10(%rsp)
je 0x17c0
leaq 0x10(%rsp), %rbx
testb %r15b, %r15b
je 0x1372
movl 0x10(%rsp), %eax
movl $0x75727473, %ecx       # imm = 0x75727473
xorl %ecx, %eax
movl 0x13(%rsp), %ecx
movl $0x746375, %edx         # imm = 0x746375
xorl %edx, %ecx
orl %eax, %ecx
je 0x178c
movl 0x10(%rsp), %eax
movl $0x6f696e75, %ecx       # imm = 0x6F696E75
xorl %ecx, %eax
movzwl 0x14(%rsp), %ecx
xorl $0x6e, %ecx
orl %eax, %ecx
je 0x178c
movl 0x10(%rsp), %eax
movl $0x6d756e65, %ecx       # imm = 0x6D756E65
xorl %ecx, %eax
movzbl 0x14(%rsp), %ecx
orl %eax, %ecx
jne 0x1372
jmp 0x178c
movb %r12b, (%rbx)
incq %rbx
movb $0x1, %al
movl (%rsp), %ebp
jmp 0x1369
movl (%rsp), %ebp
cmpl $0x2, %ebp
movl $0x1, %eax
cmovll %eax, %ebp
decl %ebp
jmp 0x153d
movl (%rsp), %ebp
incl %ebp
jmp 0x153d
leaq 0x514b(%rip), %rax      # 0x6670
incl (%rax)
movq (%r13), %rdi
callq 0x1120
leaq 0x5949(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
movl (%rsp), %ebp
movl $0x0, %eax
leaq 0x10(%rsp), %rcx
cmpq %rcx, %rbx
jbe 0x1340
movb $0x0, (%rbx)
movl $0x1, %eax
movq %rcx, %rbx
jmp 0x1340
movl %r12d, %edi
callq 0x1a24
leaq 0x10(%rsp), %r14
movl (%rsp), %ebp
jmp 0x133b
leaq 0x50f4(%rip), %rax      # 0x6670
movl (%rax), %ebp
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
leaq 0x10(%rsp), %r14
leaq 0x4eda(%rip), %r15      # 0x6470
je 0x156d
movl %eax, %r12d
leaq 0x110(%rsp), %rbx
movl %r12d, %eax
cmpb $0x0, (%r15,%rax)
jne 0x16a4
movb %r12b, (%rbx)
incq %rbx
movq (%r13), %rdi
callq 0x11d0
movl %eax, %r12d
cmpl $-0x1, %eax
jne 0x15a3
jmp 0x156d
leaq 0x10(%rsp), %r14
cmpq %r14, %rbx
leaq 0x2a47(%rip), %r12      # 0x4020
je 0x15de
movb $0x0, (%rbx)
callq 0x2990
leaq 0x5086(%rip), %rax      # 0x6670
movl (%rax), %ebp
xorl %ebx, %ebx
leaq 0x4e7b(%rip), %r15      # 0x6470
movq (%r13), %rdi
callq 0x11d0
cmpl $0x26, %eax
jle 0x1629
leal -0x27(%rax), %ecx
cmpl $0x8, %ecx
ja 0x15f5
movslq (%r12,%rcx,4), %rcx
addq %r12, %rcx
jmpq *%rcx
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2a, %eax
jne 0x15f5
callq 0x1a96
jmp 0x15f5
cmpl $0xa, %eax
je 0x163c
cmpl $0x22, %eax
jne 0x165a
movl %eax, %edi
callq 0x1a24
jmp 0x15f5
leaq 0x502d(%rip), %rax      # 0x6670
incl (%rax)
movq (%r13), %rdi
callq 0x1120
leaq 0x582b(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
jmp 0x15f5
cmpl $-0x1, %eax
jne 0x15f5
jmp 0x19a4
incl %ebx
jmp 0x15f5
testl %ebx, %ebx
je 0x184e
decl %ebx
jmp 0x15f5
callq 0x2990
leaq 0x10(%rsp), %r14
cmpq %r14, %rbx
je 0x1686
movb $0x0, (%rbx)
leaq 0x4fe3(%rip), %rax      # 0x6670
movl (%rax), %esi
movq %r14, %rdi
callq 0x2b70
movl $0x0, 0x4(%rsp)
jmp 0x156d
movb $0x0, (%rbx)
movl 0x110(%rsp), %eax
movl $0x69666564, %ecx       # imm = 0x69666564
xorl %ecx, %eax
movzwl 0x114(%rsp), %ecx
xorl $0x656e, %ecx           # imm = 0x656E
orl %eax, %ecx
je 0x1702
cmpl $0xa, %r12d
jne 0x16f3
leaq 0x4f9c(%rip), %rax      # 0x6670
incl (%rax)
movq (%r13), %rdi
callq 0x1120
leaq 0x579a(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
cmpb $0x5c, -0x1(%rbx)
jne 0x156d
movl $0xa, %edi
callq 0x1b02
jmp 0x156d
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x156d
movl %eax, %r12d
movl %eax, %eax
cmpb $0x0, (%r15,%rax)
jne 0x1702
leaq 0x110(%rsp), %rbx
movb %r12b, (%rbx)
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x156d
movl %eax, %r12d
incq %rbx
movl %eax, %eax
leaq 0x4b24(%rip), %rcx      # 0x6270
cmpb $0x0, (%rcx,%rax)
jne 0x1728
movb $0x0, (%rbx)
cmpl $0x28, %r12d
je 0x176b
leaq 0x49de(%rip), %rax      # 0x6140
cmpl $0x0, (%rax)
je 0x16c7
callq 0x2990
leaq 0x110(%rsp), %rdi
movl %ebp, %esi
callq 0x2b70
jmp 0x16c7
movq %rax, %r14
jmp 0x156d
callq 0x2990
leaq 0x4ed8(%rip), %rax      # 0x6670
movl (%rax), %ebp
leaq 0x4ccf(%rip), %r15      # 0x6470
movl %r12d, %eax
cmpb $0x0, (%r15,%rax)
je 0x17d9
movq (%r13), %rdi
callq 0x11d0
movl %eax, %r12d
cmpl $-0x1, %eax
jne 0x17a1
xorl %ebx, %ebx
jmp 0x17e4
movl $0x1, 0x4(%rsp)
movl (%rsp), %ebp
movl %ebp, 0x8(%rsp)
leaq 0x10(%rsp), %r14
jmp 0x133b
movl $0x1, %ebx
cmpl $0x7b, %r12d
jne 0x17f3
leaq 0x10(%rsp), %r14
movl (%rsp), %ebp
addl %ebx, %ebp
jmp 0x133b
leaq 0x110(%rsp), %r14
movb %r12b, (%r14)
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x17bc
movl %eax, %r12d
incq %r14
movl %eax, %eax
leaq 0x4a55(%rip), %rcx      # 0x6270
cmpb $0x0, (%rcx,%rax)
jne 0x17fb
cmpl $0xa, %r12d
movl %ebp, 0xc(%rsp)
je 0x1922
cmpl $0x2f, %r12d
je 0x194c
cmpl $0x7b, %r12d
movl (%rsp), %ebp
jne 0x1962
decq %r14
jmp 0x197e
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x19a4
movl %eax, %r12d
leaq 0x110(%rsp), %rbx
movl %r12d, %ecx
cmpb $0x0, (%r15,%rcx)
je 0x1899
cmpl $0xa, %r12d
jne 0x18d4
leaq 0x4dee(%rip), %rax      # 0x6670
incl (%rax)
movq (%r13), %rdi
callq 0x1120
leaq 0x55ec(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
jmp 0x18d4
movq %rbx, %rax
leaq 0x49cd(%rip), %rdx      # 0x6270
movb (%rdx,%rcx), %cl
leaq 0x110(%rsp), %rdx
subq %rdx, %rax
jne 0x18ea
testb %cl, %cl
jne 0x18fc
cmpl $0x2f, %r12d
jne 0x1904
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2a, %eax
jne 0x1995
callq 0x1a96
movq (%r13), %rdi
callq 0x11d0
movl %eax, %r12d
cmpl $-0x1, %eax
jne 0x186b
jmp 0x19a4
testb %cl, %cl
je 0x19de
cmpq $0xd, %rax
jge 0x19f9
movb %r12b, (%rbx)
incq %rbx
jmp 0x18d4
cmpl $0x7b, %r12d
jne 0x1998
movq %r14, %rdi
movl %ebp, %esi
callq 0x2b70
movl $0x1, %ebp
jmp 0x133b
leaq 0x4d47(%rip), %rax      # 0x6670
incl (%rax)
movq (%r13), %rdi
callq 0x1120
leaq 0x5545(%rip), %rcx      # 0x6e80
movq %rax, (%rcx)
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2f, %eax
jne 0x19ab
movq (%r13), %rdi
callq 0x11d0
cmpl $0x2a, %eax
movl (%rsp), %ebp
jne 0x1962
callq 0x1a96
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x19c7
movl %eax, %ecx
cmpb $0x0, (%r15,%rcx)
jne 0x1962
cmpl $0x7b, %eax
jne 0x19c7
movb $0x0, (%r14)
leaq 0x110(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x2b70
jmp 0x19d4
movl %eax, %r12d
movq (%r13), %rsi
movl %r12d, %edi
callq 0x1150
xorl %ebp, %ebp
jmp 0x133b
movl (%rsp), %ebp
movq (%r13), %rdi
callq 0x11d0
cmpl $-0x1, %eax
je 0x19c7
movl %eax, %ecx
cmpb $0x0, (%r15,%rcx)
jne 0x19ae
jmp 0x1979
movq (%r13), %rsi
movl %eax, %edi
callq 0x1150
xorl %ebx, %ebx
leaq 0x10(%rsp), %r14
jmp 0x17ec
movb $0x0, (%rbx)
leaq 0x110(%rsp), %rdi
leaq 0x4718(%rip), %rsi      # 0x6108
callq 0x1100
testl %eax, %eax
je 0x1998
cmpl $0x7b, %r12d
je 0x190e
movl $0x7b, %edi
callq 0x1b02
jmp 0x190e
addq $0x918, %rsp            # imm = 0x918
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq