// File: /workspace/github_c_makefile_star2_O3/mist64[P]cbm6502asm/src/line.c
// Function: parses3
void parses3(int enablang) {
	angleb = squote = dquote = 0;

	if (*s3 == '=') { /* special 4 field case "label symbol = exp" */
		s3++;
		while (isspace(*s3)) s3++; /* 3rd field is "= exp" */
	}
	while (*s3 && (*s3 != ';' || squote || dquote)) {
		char *pnt;
		if (*s3 == '~') { /* special treatment for the tilde char */
			pnt = s3 +
			      1; /* save pointer to char after char after ~ */
			if (!*pnt) { /* if last char is tilde add a space */
				*pnt = ' ';
				*(pnt + 1) = 0;
			}
			while (*s3) { /* shift field */
				*s3 = s3[1];
				s3++;
			}
			s3 = pnt; /* pointing to char after char after ~ */
			continue;
		}
		if (*s3 == '\'' &&
		    !dquote)              /* if sngl quote not in dbl quotes */
			squote = !squote; /* toggle single quote status */
		if (*s3 == '\"' &&
		    !squote)              /* if dbl quote not in sngl quotes */
			dquote = !dquote; /* toggle double quote status */
		if (*s3 == '<' && !dquote &&
		    !squote) /* count angle brackets < */
			angleb++;
		if (*s3 == '>' && !dquote &&
		    !squote) /* count angle brackets > */
			angleb--;
		if (!(enablang * angleb | dquote |
		      squote)) {          /* if delimiters are balanced */
			if (*s3 == ',') { /* if comma - separate subfields */
				*s3 = 0;  /* then terminate sub-field */
				while (isspace(*(pnt = s3 + 1)))
					while (*pnt) {
						*pnt = pnt[1];
						pnt++;
					}
			}
			if (isspace(*s3)) /* end of field */
				break;
		}
		s3++; /* scan next character */
	}
	*s3++ = 0; /* field ends in double null */
	*s3 = 0;
	s3 = p3;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edi, %ebx
leaq 0x8bcc(%rip), %r15      # 0xdde4
xorl %eax, %eax
movl %eax, (%r15)
leaq 0x8bc4(%rip), %r12      # 0xdde8
movl %eax, (%r12)
leaq 0x8bb1(%rip), %r13      # 0xdde0
movl %eax, (%r13)
leaq 0x8e66(%rip), %r14      # 0xe0a0
movq (%r14), %rbp
movb (%rbp), %cl
cmpb $0x3d, %cl
jne 0x53b9
callq 0x1230
incq %rbp
movq %rbp, (%r14)
movq (%rax), %rdx
movsbq (%rbp), %rcx
incq %rbp
testb $0x20, 0x1(%rdx,%rcx,2)
jne 0x5251
decq %rbp
jmp 0x53b9
cmpb $0x3b, %cl
setne %dl
movl (%r12), %eax
testl %eax, %eax
setne %sil
orb %dl, %sil
movl (%r15), %edx
testl %edx, %edx
setne %dil
orb %sil, %dil
cmpb $0x1, %dil
jne 0x53c1
cmpb $0x7e, %cl
jne 0x52d4
leaq 0x1(%rbp), %rax
cmpb $0x0, 0x1(%rbp)
jne 0x52b9
movw $0x20, 0x1(%rbp)
movq (%r14), %rbp
cmpb $0x0, (%rbp)
je 0x53b1
movb 0x1(%rbp), %cl
movb %cl, (%rbp)
movq (%r14), %rcx
leaq 0x1(%rcx), %rbp
movq %rbp, (%r14)
cmpb $0x0, 0x1(%rcx)
jne 0x52b9
jmp 0x53b1
testl %edx, %edx
setne %sil
cmpb $0x27, %cl
setne %dil
orb %sil, %dil
jne 0x52f7
xorl %esi, %esi
testl %eax, %eax
sete %sil
movl %esi, (%r12)
movb (%rbp), %cl
movl %esi, %eax
cmpb $0x22, %cl
jne 0x5310
testl %eax, %eax
jne 0x5310
xorl %esi, %esi
testl %edx, %edx
sete %sil
movl %esi, (%r15)
movb (%rbp), %cl
movl %esi, %edx
movl (%r13), %esi
cmpb $0x3c, %cl
jne 0x532a
testl %edx, %edx
jne 0x532a
testl %eax, %eax
jne 0x532a
incl %esi
movl %esi, (%r13)
movb (%rbp), %cl
cmpb $0x3e, %cl
jne 0x533d
testl %edx, %edx
jne 0x533d
testl %eax, %eax
jne 0x533d
decl %esi
movl %esi, (%r13)
imull %ebx, %esi
orl %esi, %eax
orl %edx, %eax
jne 0x53ab
cmpb $0x2c, (%rbp)
jne 0x5397
movb $0x0, (%rbp)
callq 0x1230
movq (%rax), %rdx
movq (%r14), %rbp
movsbq 0x1(%rbp), %rsi
testb $0x20, 0x1(%rdx,%rsi,2)
je 0x539c
leaq 0x1(%rbp), %rcx
testb %sil, %sil
je 0x5385
incq %rcx
movb (%rcx), %dl
movb %dl, -0x1(%rcx)
incq %rcx
testb %dl, %dl
jne 0x5373
movq (%rax), %rdx
movq (%r14), %rbp
leaq 0x1(%rbp), %rcx
movsbq 0x1(%rbp), %rsi
testb $0x20, 0x1(%rdx,%rsi,2)
jne 0x536b
jmp 0x539c
callq 0x1230
movq (%rax), %rax
movsbq (%rbp), %rcx
testb $0x20, 0x1(%rax,%rcx,2)
jne 0x53c1
incq %rbp
movq %rbp, %rax
movq %rax, (%r14)
movb (%rax), %cl
movq %rax, %rbp
testb %cl, %cl
jne 0x526e
leaq 0x1(%rbp), %rax
movq %rax, (%r14)
xorl %eax, %eax
movb %al, (%rbp)
movq (%r14), %rcx
movb %al, (%rcx)
leaq 0x8c37(%rip), %rax      # 0xe010
movq %rax, (%r14)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq