// File: /workspace/github_c_makefile_star2_O2/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 0x8f81(%rip), %r15      # 0xddf4
andl $0x0, (%r15)
leaq 0x8f7a(%rip), %r12      # 0xddf8
andl $0x0, (%r12)
leaq 0x8f66(%rip), %rbp      # 0xddf0
andl $0x0, (%rbp)
leaq 0x921b(%rip), %r14      # 0xe0b0
movq (%r14), %r13
movb (%r13), %cl
cmpb $0x3d, %cl
jne 0x4ec1
callq 0x1240
incq %r13
movq %r13, (%r14)
movq (%rax), %rdx
movsbq (%r13), %rcx
incq %r13
testb $0x20, 0x1(%rdx,%rcx,2)
jne 0x4ea9
decq %r13
testb %cl, %cl
je 0x5012
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 0x5012
cmpb $0x7e, %cl
jne 0x4f27
cmpb $0x0, 0x1(%r13)
movq %r13, %rax
jne 0x4f0b
movw $0x20, 0x1(%r13)
movq (%r14), %rax
incq %r13
cmpb $0x0, (%rax)
je 0x5006
movb 0x1(%rax), %cl
movb %cl, (%rax)
movq (%r14), %rax
incq %rax
movq %rax, (%r14)
jmp 0x4f0e
testl %edx, %edx
setne %sil
cmpb $0x27, %cl
setne %dil
orb %sil, %dil
jne 0x4f4b
xorl %esi, %esi
testl %eax, %eax
sete %sil
movl %esi, (%r12)
movb (%r13), %cl
movl %esi, %eax
cmpb $0x22, %cl
jne 0x4f65
testl %eax, %eax
jne 0x4f65
xorl %esi, %esi
testl %edx, %edx
sete %sil
movl %esi, (%r15)
movb (%r13), %cl
movl %esi, %edx
movl (%rbp), %esi
cmpb $0x3c, %cl
jne 0x4f7e
testl %edx, %edx
jne 0x4f7e
testl %eax, %eax
jne 0x4f7e
incl %esi
movl %esi, (%rbp)
movb (%r13), %cl
cmpb $0x3e, %cl
jne 0x4f90
testl %edx, %edx
jne 0x4f90
testl %eax, %eax
jne 0x4f90
decl %esi
movl %esi, (%rbp)
imull %ebx, %esi
orl %esi, %eax
orl %edx, %eax
jne 0x5003
movq %r15, %r12
movq %rbp, %r15
movl %ebx, %ebp
movb (%r13), %bl
cmpb $0x2c, %bl
jne 0x4fdb
movb $0x0, (%r13)
callq 0x1240
movq (%rax), %rdx
movq (%r14), %r13
movsbq 0x1(%r13), %rcx
testb $0x20, 0x1(%rdx,%rcx,2)
je 0x4fe2
addq $0x2, %r13
testb %cl, %cl
je 0x4fb4
movb (%r13), %cl
movb %cl, -0x1(%r13)
incq %r13
jmp 0x4fca
callq 0x1240
jmp 0x4fe6
movb (%r13), %bl
movq (%rax), %rax
movsbq %bl, %rcx
testb $0x20, 0x1(%rax,%rcx,2)
movl %ebp, %ebx
movq %r15, %rbp
movq %r12, %r15
leaq 0x8df7(%rip), %r12      # 0xddf8
jne 0x5012
incq %r13
movq %r13, (%r14)
movb (%r13), %cl
jmp 0x4ec1
leaq 0x1(%r13), %rax
movq %rax, (%r14)
xorl %eax, %eax
movb %al, (%r13)
movq (%r14), %rcx
movb %al, (%rcx)
leaq 0x8ff5(%rip), %rax      # 0xe020
movq %rax, (%r14)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq