// File: /workspace/github_c_makefile_star2_O1/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 0x8c5f(%rip), %r15      # 0xdde4
xorl %eax, %eax
movl %eax, (%r15)
leaq 0x8c57(%rip), %r12      # 0xdde8
movl %eax, (%r12)
leaq 0x8c44(%rip), %r13      # 0xdde0
movl %eax, (%r13)
leaq 0x8ef9(%rip), %r14      # 0xe0a0
movq (%r14), %rbp
cmpb $0x3d, (%rbp)
jne 0x51cd
callq 0x1230
incq %rbp
movq %rbp, (%r14)
movq (%rax), %rcx
movsbq (%rbp), %rdx
incq %rbp
testb $0x20, 0x1(%rcx,%rdx,2)
jne 0x51b8
movq (%r14), %rax
movb (%rax), %cl
testb %cl, %cl
je 0x5337
cmpb $0x3b, %cl
setne %dl
movl (%r12), %esi
testl %esi, %esi
setne %dil
orb %dl, %dil
movl (%r15), %edx
testl %edx, %edx
setne %r8b
orb %dil, %r8b
cmpb $0x1, %r8b
jne 0x5337
cmpb $0x7e, %cl
jne 0x523d
cmpb $0x0, 0x1(%rax)
jne 0x5214
movw $0x20, 0x1(%rax)
incq %rax
movq (%r14), %rcx
cmpb $0x0, (%rcx)
je 0x532f
movb 0x1(%rcx), %dl
movb %dl, (%rcx)
movq (%r14), %rdx
leaq 0x1(%rdx), %rcx
movq %rcx, (%r14)
cmpb $0x0, 0x1(%rdx)
jne 0x5223
jmp 0x532f
testl %edx, %edx
setne %dil
cmpb $0x27, %cl
setne %cl
orb %dil, %cl
jne 0x5259
xorl %ecx, %ecx
testl %esi, %esi
sete %cl
movl %ecx, (%r12)
cmpb $0x22, (%rax)
setne %sil
movl (%r12), %ecx
testl %ecx, %ecx
setne %dil
orb %sil, %dil
jne 0x527a
xorl %esi, %esi
testl %edx, %edx
sete %sil
movl %esi, (%r15)
testl %ecx, %ecx
setne %sil
cmpb $0x3c, (%rax)
setne %dil
movl (%r15), %edx
testl %edx, %edx
setne %r8b
orb %dil, %r8b
orb %sil, %r8b
jne 0x529c
incl (%r13)
testl %edx, %edx
setne %sil
testl %ecx, %ecx
setne %dil
cmpb $0x3e, (%rax)
setne %r8b
orb %sil, %r8b
orb %dil, %r8b
jne 0x52bb
decl (%r13)
movl (%r13), %esi
imull %ebx, %esi
orl %esi, %ecx
orl %edx, %ecx
jne 0x5329
cmpb $0x2c, (%rax)
jne 0x5313
movb $0x0, (%rax)
callq 0x1230
movq (%rax), %rdx
movq (%r14), %rcx
movsbq 0x1(%rcx), %rsi
testb $0x20, 0x1(%rdx,%rsi,2)
je 0x5313
incq %rcx
cmpb $0x0, (%rcx)
je 0x52fe
incq %rcx
movb (%rcx), %dl
movb %dl, -0x1(%rcx)
incq %rcx
testb %dl, %dl
jne 0x52f2
movq (%rax), %rdx
movq (%r14), %rcx
movsbq 0x1(%rcx), %rsi
incq %rcx
testb $0x20, 0x1(%rdx,%rsi,2)
jne 0x52ea
callq 0x1230
movq (%rax), %rax
movq (%r14), %rcx
movsbq (%rcx), %rcx
testb $0x20, 0x1(%rax,%rcx,2)
jne 0x5337
movq (%r14), %rax
incq %rax
movq %rax, (%r14)
jmp 0x51d0
movq (%r14), %rax
leaq 0x1(%rax), %rcx
movq %rcx, (%r14)
xorl %ecx, %ecx
movb %cl, (%rax)
movq (%r14), %rax
movb %cl, (%rax)
leaq 0x8cbf(%rip), %rax      # 0xe010
movq %rax, (%r14)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq