// File: /workspace/github_c_makefile_star2_O3/dxwc[P]sfeed/sfeed.c
// Function: xmltagstart
static void
xmltagstart(XMLParser *p, const char *t, size_t tl)
{
	enum TagId tagid;

	if (ISINCONTENT(ctx)) {
		ctx.attrcount = 0;
		if (ctx.contenttype == ContentTypeHTML) {
			xmldata(p, "<", 1);
			xmldata(p, t, tl);
		}
		return;
	}

	/* start of RSS or Atom item / entry */
	if (ctx.feedtype == FeedTypeNone) {
		if (istag(t, tl, STRP("entry")))
			ctx.feedtype = FeedTypeAtom;
		else if (istag(t, tl, STRP("item")))
			ctx.feedtype = FeedTypeRSS;
		return;
	}

	/* field tagid already set, nested tags are not allowed: return */
	if (ctx.tagid)
		return;

	/* in item */
	tagid = gettag(ctx.feedtype, t, tl);
	ctx.tagid = tagid;

	/* without a rel attribute the default link type is "alternate" */
	if (tagid == AtomTagLink) {
		atomlinktype = AtomTagLinkAlternate;
		string_clear(&atomlink); /* reuse and clear temporary link */
	} else if (tagid == RSSTagGuid) {
		/* without a ispermalink attribute the default value is "true" */
		rssidpermalink = 1;
	}

	/* map tag type to field: unknown or lesser priority is ignored,
	   when tags of the same type are repeated only the first is used. */
	if (fieldmap[tagid] == -1 || tagid <= ctx.fields[fieldmap[tagid]].tagid) {
		ctx.field = NULL;
		return;
	}

	if (fieldmap[ctx.tagid] == FeedFieldContent) {
		/* handle default content-type per tag, Atom, RSS, MRSS. */
		switch (tagid) {
		case RSSTagContentEncoded:
		case RSSTagDescription:
			ctx.contenttype = ContentTypeHTML;
			break;
		default:
			ctx.contenttype = ContentTypePlain;
		}
		ctx.iscontenttag = 1;
	} else {
		ctx.iscontenttag = 0;
	}

	ctx.field = &(ctx.fields[fieldmap[ctx.tagid]].str);
	ctx.fields[fieldmap[ctx.tagid]].tagid = tagid;
	/* clear field */
	string_clear(ctx.field);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movq %rsi, %rbx
cmpl $0x0, 0x72b1(%rip)      # 0x9c84
je 0x2a1c
cmpl $0x0, 0x72ac(%rip)      # 0x9c88
jne 0x2a1c
movl $0x0, 0x72ac(%rip)      # 0x9c94
cmpl $0x2, 0x729d(%rip)      # 0x9c8c
jne 0x2b6f
movq %rdi, %r15
leaq 0x284d(%rip), %rsi      # 0x524c
movl $0x1, %edx
callq 0x270b
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
popq %rbx
popq %r14
popq %r15
jmp 0x270b
movl 0x726e(%rip), %edi      # 0x9c90
testl %edi, %edi
je 0x2a84
cmpl $0x0, 0x7253(%rip)      # 0x9c80
jne 0x2b6f
movq %rbx, %rsi
callq 0x2c69
movl %eax, 0x723f(%rip)      # 0x9c80
testl %eax, %eax
je 0x2b64
cmpl $0x7, %eax
je 0x2ae0
cmpl $0x13, %eax
jne 0x2ae7
movl $0x14, 0x7237(%rip)     # 0x9c9c
movq 0x7234(%rip), %rax      # 0x9ca0
testq %rax, %rax
je 0x2a74
movb $0x0, (%rax)
movq $0x0, 0x7229(%rip) # 0x9ca8
jmp 0x2b64
cmpq $0x4, %r14
je 0x2aba
cmpq $0x5, %r14
jne 0x2b6f
leaq 0x26a6(%rip), %rsi      # 0x5141
movq %rbx, %rdi
callq 0x2040
testl %eax, %eax
jne 0x2b6f
movl $0x2, 0x71db(%rip)      # 0x9c90
jmp 0x2b6f
leaq 0x2686(%rip), %rsi      # 0x5147
movq %rbx, %rdi
callq 0x2040
testl %eax, %eax
jne 0x2b6f
movl $0x1, 0x71b5(%rip)      # 0x9c90
jmp 0x2b6f
movb $0x1, 0x71b1(%rip)      # 0x9c98
movl %eax, %edi
leaq 0x2540(%rip), %rcx      # 0x5030
movslq (%rcx,%rdi,4), %rcx
shlq $0x5, %rcx
leaq 0x7099(%rip), %rdx      # 0x9b98
cmpl 0x20(%rcx,%rdx), %eax
jbe 0x2b64
leaq (%rcx,%rdx), %rsi
addq $0x20, %rsi
xorl %r8d, %r8d
movl $0x38070, %r9d          # imm = 0x38070
btq %rdi, %r9
jae 0x2b38
movl %eax, %edi
addl $-0x5, %edi
xorl %r8d, %r8d
cmpl $0x2, %edi
adcl $0x1, %r8d
movl %r8d, 0x715a(%rip)      # 0x9c8c
movl $0x1, %r8d
movl %r8d, 0x7149(%rip)      # 0x9c88
addq %rdx, %rcx
addq $0x8, %rcx
movq %rcx, 0x704b(%rip)      # 0x9b98
movl %eax, (%rsi)
movq (%rcx), %rax
testq %rax, %rax
je 0x2b5a
movb $0x0, (%rax)
movq $0x0, 0x8(%rcx)
jmp 0x2b6f
movq $0x0, 0x7029(%rip) # 0x9b98
popq %rbx
popq %r14
popq %r15
retq