// File: /workspace/github_cpp_makefile_star2_O1/jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::impl::(anonymous namespace)::xml_parser::parse_doctype_group(char*, char)
char_t* parse_doctype_group(char_t* s, char_t endch)
		{
			size_t depth = 0;

			assert((s[0] == '<' || s[0] == 0) && s[1] == '!');
			s += 2;

			while (*s)
			{
				if (s[0] == '<' && s[1] == '!' && s[2] != '-')
				{
					if (s[2] == '[')
					{
						// ignore
						s = parse_doctype_ignore(s);
						if (!s) return s;
					}
					else
					{
						// some control group
						s += 2;
						depth++;
					}
				}
				else if (s[0] == '<' || s[0] == '"' || s[0] == '\'')
				{
					// unknown tag (forbidden), or some primitive group
					s = parse_doctype_primitive(s);
					if (!s) return s;
				}
				else if (*s == '>')
				{
					if (depth == 0)
						return s;

					depth--;
					s++;
				}
				else s++;
			}

			if (depth != 0 || endch != '>') PUGI__THROW_ERROR(status_bad_doctype, s);

			return s;
		}

// Assembly:
pushq %rax
movzbl (%rsi), %eax
cmpl $0x3c, %eax
je 0x2973f
testl %eax, %eax
jne 0x29938
cmpb $0x21, 0x1(%rsi)
jne 0x29938
addq $0x2, %rsi
xorl %eax, %eax
movzbl (%rsi), %ecx
cmpl $0x26, %ecx
jle 0x297fe
cmpl $0x27, %ecx
je 0x29803
cmpl $0x3c, %ecx
jne 0x29866
cmpb $0x21, 0x1(%rsi)
jne 0x29820
movzbl 0x2(%rsi), %r8d
cmpl $0x2d, %r8d
je 0x29820
cmpl $0x5b, %r8d
jne 0x298e1
cmpl $0x3c, %ecx
jne 0x29919
cmpb $0x5b, %r8b
jne 0x29919
addq $0x3, %rsi
xorl %ecx, %ecx
addq $0x3, %rsi
movzbl -0x3(%rsi), %r8d
cmpl $0x3c, %r8d
je 0x297c8
cmpl $0x5d, %r8d
je 0x297da
testl %r8d, %r8d
jne 0x297e6
jmp 0x29873
cmpb $0x21, -0x2(%rsi)
jne 0x297d4
cmpb $0x5b, -0x1(%rsi)
je 0x297f9
cmpb $0x5d, %r8b
jne 0x297e6
cmpb $0x5d, -0x2(%rsi)
jne 0x297e6
cmpb $0x3e, -0x1(%rsi)
je 0x297eb
incq %rsi
jmp 0x297ad
testq %rcx, %rcx
je 0x29884
decq %rcx
jmp 0x297a9
incq %rcx
jmp 0x297a9
cmpl $0x22, %ecx
jne 0x29831
incq %rsi
movb (%rsi), %r8b
incq %rsi
testb %r8b, %r8b
je 0x29816
cmpb %cl, %r8b
jne 0x29806
testb %r8b, %r8b
jne 0x29884
decq %rsi
jmp 0x29877
cmpl $0x3b, %ecx
jg 0x2983a
cmpl $0x22, %ecx
je 0x29803
cmpl $0x27, %ecx
je 0x29803
jmp 0x2986b
testl %ecx, %ecx
jne 0x2986b
jmp 0x298f7
cmpl $0x3c, %ecx
jne 0x29866
movb 0x1(%rsi), %r8b
cmpb $0x3f, %r8b
jne 0x29892
addq $0x2, %rsi
movzbl (%rsi), %ecx
cmpl $0x3f, %ecx
je 0x2985b
testl %ecx, %ecx
jne 0x29861
jmp 0x29877
cmpb $0x3e, 0x1(%rsi)
je 0x298cd
incq %rsi
jmp 0x2984d
cmpl $0x3e, %ecx
je 0x298d7
incq %rsi
jmp 0x2974f
addq $-0x3, %rsi
movq %rsi, 0x8(%rdi)
movl $0x9, 0x10(%rdi)
xorl %esi, %esi
testq %rsi, %rsi
jne 0x2974f
jmp 0x29912
xorb $0x3c, %cl
xorb $0x21, %r8b
orb %cl, %r8b
jne 0x29877
cmpb $0x2d, 0x2(%rsi)
jne 0x29877
cmpb $0x2d, 0x3(%rsi)
jne 0x29877
addq $0x4, %rsi
movzbl (%rsi), %ecx
cmpl $0x2d, %ecx
je 0x298bc
testl %ecx, %ecx
jne 0x298c8
jmp 0x29877
cmpb $0x2d, 0x1(%rsi)
jne 0x298c8
cmpb $0x3e, 0x2(%rsi)
je 0x298ed
incq %rsi
jmp 0x298ae
testb %cl, %cl
je 0x29877
addq $0x2, %rsi
jmp 0x29884
testq %rax, %rax
je 0x29914
decq %rax
jmp 0x2986b
addq $0x2, %rsi
incq %rax
jmp 0x2974f
testb %cl, %cl
je 0x29877
addq $0x3, %rsi
jmp 0x29884
testq %rax, %rax
sete %al
cmpb $0x3e, %dl
sete %cl
testb %al, %cl
jne 0x29914
movq %rsi, 0x8(%rdi)
movl $0x9, 0x10(%rdi)
xorl %esi, %esi
movq %rsi, %rax
popq %rcx
retq
leaq 0xabc6(%rip), %rdi      # 0x344e6
leaq 0x95ce(%rip), %rsi      # 0x32ef5
leaq 0xabe2(%rip), %rcx      # 0x34510
movl $0xb96, %edx            # imm = 0xB96
callq 0x6120
leaq 0xab20(%rip), %rdi      # 0x3445f
leaq 0x95af(%rip), %rsi      # 0x32ef5
leaq 0xab3c(%rip), %rcx      # 0x34489
movl $0xbb5, %edx            # imm = 0xBB5
callq 0x6120