// File: /workspace/github_c_makefile_star2_O0/darwin-on-arm[P]darwin-sdk/developer_cmds/unifdef/unifdef.c
// Function: parseline
static Linetype
parseline(void)
{
	const char *cp;
	int cursym;
	int kwlen;
	Linetype retval;
	Comment_state wascomment;

	linenum++;
	if (fgets(tline, MAXLINE, input) == NULL) {
		if (ferror(input))
			error(strerror(errno));
		else
			return (LT_EOF);
	}
	if (newline == NULL) {
		if (strrchr(tline, '\n') == strrchr(tline, '\r') + 1)
			newline = newline_crlf;
		else
			newline = newline_unix;
	}
	retval = LT_PLAIN;
	wascomment = incomment;
	cp = skipcomment(tline);
	if (linestate == LS_START) {
		if (*cp == '#') {
			linestate = LS_HASH;
			firstsym = true;
			cp = skipcomment(cp + 1);
		} else if (*cp != '\0')
			linestate = LS_DIRTY;
	}
	if (!incomment && linestate == LS_HASH) {
		keyword = tline + (cp - tline);
		cp = skipsym(cp);
		kwlen = cp - keyword;
		/* no way can we deal with a continuation inside a keyword */
		if (strncmp(cp, "\\\r\n", 3) == 0 ||
		    strncmp(cp, "\\\n", 2) == 0)
			Eioccc();
		if (strlcmp("ifdef", keyword, kwlen) == 0 ||
		    strlcmp("ifndef", keyword, kwlen) == 0) {
			cp = skipcomment(cp);
			if ((cursym = findsym(cp)) < 0)
				retval = LT_IF;
			else {
				retval = (keyword[2] == 'n')
				    ? LT_FALSE : LT_TRUE;
				if (value[cursym] == NULL)
					retval = (retval == LT_TRUE)
					    ? LT_FALSE : LT_TRUE;
				if (ignore[cursym])
					retval = (retval == LT_TRUE)
					    ? LT_TRUEI : LT_FALSEI;
			}
			cp = skipsym(cp);
		} else if (strlcmp("if", keyword, kwlen) == 0)
			retval = ifeval(&cp);
		else if (strlcmp("elif", keyword, kwlen) == 0)
			retval = ifeval(&cp) - LT_IF + LT_ELIF;
		else if (strlcmp("else", keyword, kwlen) == 0)
			retval = LT_ELSE;
		else if (strlcmp("endif", keyword, kwlen) == 0)
			retval = LT_ENDIF;
		else {
			linestate = LS_DIRTY;
			retval = LT_PLAIN;
		}
		cp = skipcomment(cp);
		if (*cp != '\0') {
			linestate = LS_DIRTY;
			if (retval == LT_TRUE || retval == LT_FALSE ||
			    retval == LT_TRUEI || retval == LT_FALSEI)
				retval = LT_IF;
			if (retval == LT_ELTRUE || retval == LT_ELFALSE)
				retval = LT_ELIF;
		}
		if (retval != LT_PLAIN && (wascomment || incomment)) {
			retval += LT_DODGY;
			if (incomment)
				linestate = LS_DIRTY;
		}
		/* skipcomment normally changes the state, except
		   if the last line of the file lacks a newline, or
		   if there is too much whitespace in a directive */
		if (linestate == LS_HASH) {
			size_t len = cp - tline;
			if (fgets(tline + len, MAXLINE - len, input) == NULL) {
				if (ferror(input))
					error(strerror(errno));
				/* append the missing newline at eof */
				strcpy(tline + len, newline);
				cp += strlen(newline);
				linestate = LS_START;
			} else {
				linestate = LS_DIRTY;
			}
		}
	}
	if (linestate == LS_DIRTY) {
		while (*cp != '\0')
			cp = skipcomment(cp + 1);
	}
	debug("parser line %d state %s comment %s line", linenum,
	    comment_name[incomment], linestate_name[linestate]);
	return (retval);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl 0x67b6(%rip), %eax      # 0xa2c4
addl $0x1, %eax
movl %eax, 0x67ad(%rip)      # 0xa2c4
movq 0x5672(%rip), %rdx      # 0x9190
leaq 0x67ab(%rip), %rdi      # 0xa2d0
movl $0x1000, %esi           # imm = 0x1000
callq 0x3160
cmpq $0x0, %rax
jne 0x3b6a
movq 0x5654(%rip), %rdi      # 0x9190
callq 0x30a0
cmpl $0x0, %eax
je 0x3b5c
callq 0x3040
movl (%rax), %edi
callq 0x3260
movq %rax, %rdi
callq 0x40d0
jmp 0x3b68
movl $0x15, -0x4(%rbp)
jmp 0x4015
jmp 0x3b6a
cmpq $0x0, 0x776e(%rip)      # 0xb2e0
jne 0x3bca
leaq 0x6755(%rip), %rdi      # 0xa2d0
movl $0xa, %esi
callq 0x3130
movq %rax, -0x30(%rbp)
leaq 0x6740(%rip), %rdi      # 0xa2d0
movl $0xd, %esi
callq 0x3130
movq %rax, %rcx
movq -0x30(%rbp), %rax
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x3bba
leaq 0x261e(%rip), %rax      # 0x61cf
movq %rax, 0x7728(%rip)      # 0xb2e0
jmp 0x3bc8
leaq 0x2611(%rip), %rax      # 0x61d2
movq %rax, 0x7718(%rip)      # 0xb2e0
jmp 0x3bca
movl $0x14, -0x1c(%rbp)
movl 0x7711(%rip), %eax      # 0xb2e8
movl %eax, -0x20(%rbp)
leaq 0x66ef(%rip), %rdi      # 0xa2d0
callq 0x4160
movq %rax, -0x10(%rbp)
cmpl $0x0, 0x76fb(%rip)      # 0xb2ec
jne 0x3c3d
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x3c23
movl $0x1, 0x76e3(%rip)      # 0xb2ec
movb $0x1, 0x76e0(%rip)      # 0xb2f0
movq -0x10(%rbp), %rdi
addq $0x1, %rdi
callq 0x4160
movq %rax, -0x10(%rbp)
jmp 0x3c3b
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x3c39
movl $0x2, 0x76b3(%rip)      # 0xb2ec
jmp 0x3c3b
jmp 0x3c3d
cmpl $0x0, 0x76a4(%rip)      # 0xb2e8
jne 0x3fa9
cmpl $0x1, 0x769b(%rip)      # 0xb2ec
jne 0x3fa9
movq -0x10(%rbp), %rcx
leaq 0x666e(%rip), %rax      # 0xa2d0
subq %rax, %rcx
leaq 0x6664(%rip), %rax      # 0xa2d0
addq %rcx, %rax
movq %rax, 0x7682(%rip)      # 0xb2f8
movq -0x10(%rbp), %rdi
callq 0x46b0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x766a(%rip), %rcx      # 0xb2f8
subq %rcx, %rax
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x276d(%rip), %rsi      # 0x640c
movl $0x3, %edx
callq 0x3070
cmpl $0x0, %eax
je 0x3cc8
movq -0x10(%rbp), %rdi
leaq 0x2758(%rip), %rsi      # 0x6411
movl $0x2, %edx
callq 0x3070
cmpl $0x0, %eax
jne 0x3ccd
callq 0x4720
movq 0x7624(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x2622(%rip), %rdi      # 0x6301
callq 0x4740
cmpl $0x0, %eax
je 0x3d09
movq 0x7608(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x260c(%rip), %rdi      # 0x6307
callq 0x4740
cmpl $0x0, %eax
jne 0x3dae
movq -0x10(%rbp), %rdi
callq 0x4160
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x47e0
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
jge 0x3d30
movl $0x2, -0x1c(%rbp)
jmp 0x3d9c
movq 0x75c1(%rip), %rax      # 0xb2f8
movsbl 0x2(%rax), %edx
movl $0x3, %eax
movl $0x4, %ecx
cmpl $0x6e, %edx
cmovel %ecx, %eax
movl %eax, -0x1c(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x75a7(%rip), %rax      # 0xb300
cmpq $0x0, (%rax,%rcx,8)
jne 0x3d76
movl -0x1c(%rbp), %edx
movl $0x3, %eax
movl $0x4, %ecx
cmpl $0x3, %edx
cmovel %ecx, %eax
movl %eax, -0x1c(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0xf57f(%rip), %rax      # 0x13300
testb $0x1, (%rax,%rcx)
je 0x3d9a
movl -0x1c(%rbp), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x3, %edx
cmovel %ecx, %eax
movl %eax, -0x1c(%rbp)
jmp 0x3d9c
movq -0x10(%rbp), %rdi
callq 0x46b0
movq %rax, -0x10(%rbp)
jmp 0x3e6e
movq 0x7543(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x27c8(%rip), %rdi      # 0x6588
callq 0x4740
cmpl $0x0, %eax
jne 0x3ddb
leaq -0x10(%rbp), %rdi
callq 0x49a0
movl %eax, -0x1c(%rbp)
jmp 0x3e6c
movq 0x7516(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x2770(%rip), %rdi      # 0x655d
callq 0x4740
cmpl $0x0, %eax
jne 0x3e0b
leaq -0x10(%rbp), %rdi
callq 0x49a0
subl $0x2, %eax
addl $0x5, %eax
movl %eax, -0x1c(%rbp)
jmp 0x3e6a
movq 0x74e6(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x2754(%rip), %rdi      # 0x6571
callq 0x4740
cmpl $0x0, %eax
jne 0x3e30
movl $0x8, -0x1c(%rbp)
jmp 0x3e68
movq 0x74c1(%rip), %rsi      # 0xb2f8
movslq -0x18(%rbp), %rdx
leaq 0x2743(%rip), %rdi      # 0x6585
callq 0x4740
cmpl $0x0, %eax
jne 0x3e55
movl $0x9, -0x1c(%rbp)
jmp 0x3e66
movl $0x2, 0x748d(%rip)      # 0xb2ec
movl $0x14, -0x1c(%rbp)
jmp 0x3e68
jmp 0x3e6a
jmp 0x3e6c
jmp 0x3e6e
movq -0x10(%rbp), %rdi
callq 0x4160
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x3ec5
movl $0x2, 0x745b(%rip)      # 0xb2ec
cmpl $0x3, -0x1c(%rbp)
je 0x3ea9
cmpl $0x4, -0x1c(%rbp)
je 0x3ea9
cmpl $0x0, -0x1c(%rbp)
je 0x3ea9
cmpl $0x1, -0x1c(%rbp)
jne 0x3eb0
movl $0x2, -0x1c(%rbp)
cmpl $0x6, -0x1c(%rbp)
je 0x3ebc
cmpl $0x7, -0x1c(%rbp)
jne 0x3ec3
movl $0x5, -0x1c(%rbp)
jmp 0x3ec5
cmpl $0x14, -0x1c(%rbp)
je 0x3ef8
cmpl $0x0, -0x20(%rbp)
jne 0x3eda
cmpl $0x0, 0x7410(%rip)      # 0xb2e8
je 0x3ef8
movl -0x1c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, 0x73fe(%rip)      # 0xb2e8
je 0x3ef6
movl $0x2, 0x73f6(%rip)      # 0xb2ec
jmp 0x3ef8
cmpl $0x1, 0x73ed(%rip)      # 0xb2ec
jne 0x3fa7
movq -0x10(%rbp), %rax
leaq 0x63c0(%rip), %rcx      # 0xa2d0
subq %rcx, %rax
movq %rax, -0x28(%rbp)
leaq 0x63b2(%rip), %rdi      # 0xa2d0
addq -0x28(%rbp), %rdi
movl $0x1000, %eax           # imm = 0x1000
subq -0x28(%rbp), %rax
movl %eax, %esi
movq 0x525c(%rip), %rdx      # 0x9190
callq 0x3160
cmpq $0x0, %rax
jne 0x3f9b
movq 0x524a(%rip), %rdi      # 0x9190
callq 0x30a0
cmpl $0x0, %eax
je 0x3f64
callq 0x3040
movl (%rax), %edi
callq 0x3260
movq %rax, %rdi
callq 0x40d0
leaq 0x6365(%rip), %rdi      # 0xa2d0
addq -0x28(%rbp), %rdi
movq 0x736a(%rip), %rsi      # 0xb2e0
callq 0x3080
movq 0x735e(%rip), %rdi      # 0xb2e0
callq 0x30d0
addq -0x10(%rbp), %rax
movq %rax, -0x10(%rbp)
movl $0x0, 0x7353(%rip)      # 0xb2ec
jmp 0x3fa5
movl $0x2, 0x7347(%rip)      # 0xb2ec
jmp 0x3fa7
jmp 0x3fa9
cmpl $0x2, 0x733c(%rip)      # 0xb2ec
jne 0x3fd5
jmp 0x3fb4
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x3fd3
movq -0x10(%rbp), %rdi
addq $0x1, %rdi
callq 0x4160
movq %rax, -0x10(%rbp)
jmp 0x3fb4
jmp 0x3fd5
movl 0x62e9(%rip), %esi      # 0xa2c4
movl 0x7307(%rip), %eax      # 0xb2e8
movl %eax, %ecx
leaq 0x4c26(%rip), %rax      # 0x8c10
movq (%rax,%rcx,8), %rdx
movl 0x72f8(%rip), %eax      # 0xb2ec
movl %eax, %ecx
leaq 0x4c53(%rip), %rax      # 0x8c50
movq (%rax,%rcx,8), %rcx
leaq 0x2306(%rip), %rdi      # 0x630e
movb $0x0, %al
callq 0x4020
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nop