// File: /workspace/github_cpp_makefile_star2_O3/smallmuou[P]tinyhtml/tinyxmlparser.cpp
// Function: TiXmlDeclaration::Parse(char const*, TiXmlParsingData*, TiXmlEncoding)
const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding )
{
	p = SkipWhiteSpace( p, _encoding );
	// Find the beginning, find the end, and look for
	// the stuff in-between.
	TiXmlDocument* document = GetDocument();
	if ( !p || !*p || !StringEqual( p, "<?xml", true, _encoding ) )
	{
		if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding );
		return 0;
	}
	if ( data )
	{
		data->Stamp( p, _encoding );
		location = data->Cursor();
	}
	p += 5;

	version = "";
	encoding = "";
	standalone = "";

	while ( p && *p )
	{
		if ( *p == '>' )
		{
			++p;
			return p;
		}

		p = SkipWhiteSpace( p, _encoding );
		if ( StringEqual( p, "version", true, _encoding ) )
		{
			TiXmlAttribute attrib;
			p = attrib.Parse( p, data, _encoding );		
			version = attrib.Value();
		}
		else if ( StringEqual( p, "encoding", true, _encoding ) )
		{
			TiXmlAttribute attrib;
			p = attrib.Parse( p, data, _encoding );		
			encoding = attrib.Value();
		}
		else if ( StringEqual( p, "standalone", true, _encoding ) )
		{
			TiXmlAttribute attrib;
			p = attrib.Parse( p, data, _encoding );		
			standalone = attrib.Value();
		}
		else
		{
			// Read over whatever it is.
			while( p && *p && *p != '>' && !IsWhiteSpace( *p ) )
				++p;
		}
	}
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %ecx, %ebx
movq %rdx, %r14
movq %rdi, %r15
movq %rsi, %rdi
movl %ecx, %esi
callq 0x6d4c
movq %rax, %r13
movq %r15, %rdi
callq 0x3fac
movq %rax, %rbp
testq %r13, %r13
je 0x8665
cmpb $0x0, (%r13)
je 0x8665
leaq 0x2483(%rip), %rsi      # 0xa856
movq %r13, %rdi
movl $0x1, %edx
callq 0x70e8
testb %al, %al
je 0x8665
testq %r14, %r14
je 0x8401
movq %r14, %rdi
movq %r13, %rsi
movl %ebx, %edx
callq 0x6bae
movq (%r14), %rax
movq %rax, 0x8(%r15)
addq $0x5, %r13
leaq 0x50(%r15), %rdi
leaq 0x1fd5(%rip), %rbp      # 0xa3e5
movq %rdi, 0x50(%rsp)
movq %rbp, %rsi
xorl %edx, %edx
callq 0x890e
leaq 0x58(%r15), %rdi
movq %rdi, 0x48(%rsp)
movq %rbp, %rsi
xorl %edx, %edx
callq 0x890e
addq $0x60, %r15
movq %r15, %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x890e
leaq 0x7e0e(%rip), %r12      # 0x10258
movzbl (%r13), %eax
testl %eax, %eax
je 0x8683
cmpl $0x3e, %eax
je 0x8698
movq %r13, %rdi
movl %ebx, %esi
callq 0x6d4c
movq %rax, %r13
movq %rax, %rdi
leaq 0x23e8(%rip), %rsi      # 0xa85f
movl $0x1, %edx
callq 0x70e8
testb %al, %al
je 0x84ef
movq $-0x1, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rsp)
leaq 0x77d3(%rip), %rax      # 0xfc70
movq %rax, 0x8(%rsp)
movq %r12, 0x28(%rsp)
movq %r12, 0x30(%rsp)
leaq 0x38(%rsp), %rax
movups %xmm0, (%rax)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
movl %ebx, %ecx
callq 0x802c
movq %rax, %r13
movq 0x30(%rsp), %rbp
addq $0x10, %rbp
movq %rbp, %rdi
callq 0x30a0
movq 0x50(%rsp), %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x890e
jmp 0x85ed
movq %r13, %rdi
leaq 0x236e(%rip), %rsi      # 0xa867
movl $0x1, %edx
callq 0x70e8
testb %al, %al
je 0x856e
movq $-0x1, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rsp)
leaq 0x7751(%rip), %rax      # 0xfc70
movq %rax, 0x8(%rsp)
movq %r12, 0x28(%rsp)
movq %r12, 0x30(%rsp)
leaq 0x38(%rsp), %rax
movups %xmm0, (%rax)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
movl %ebx, %ecx
callq 0x802c
movq %rax, %r13
movq 0x30(%rsp), %rbp
addq $0x10, %rbp
movq %rbp, %rdi
callq 0x30a0
movq 0x48(%rsp), %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x890e
jmp 0x85ed
movq %r13, %rdi
leaq 0x22f8(%rip), %rsi      # 0xa870
movl $0x1, %edx
callq 0x70e8
testb %al, %al
je 0x8638
movq $-0x1, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rsp)
leaq 0x76ce(%rip), %rax      # 0xfc70
movq %rax, 0x8(%rsp)
movq %r12, 0x28(%rsp)
movq %r12, 0x30(%rsp)
leaq 0x38(%rsp), %rax
movups %xmm0, (%rax)
leaq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
movl %ebx, %ecx
callq 0x802c
movq %rax, %r13
movq 0x30(%rsp), %rbp
addq $0x10, %rbp
movq %rbp, %rdi
callq 0x30a0
movq %r15, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x890e
leaq 0x767c(%rip), %rax      # 0xfc70
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
sete %al
testq %rdi, %rdi
sete %cl
orb %al, %cl
jne 0x8613
callq 0x31d0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
sete %al
testq %rdi, %rdi
sete %cl
orb %al, %cl
jne 0x862d
callq 0x31d0
testq %r13, %r13
jne 0x844a
jmp 0x8683
testq %r13, %r13
je 0x8683
movzbl (%r13), %ebp
testl %ebp, %ebp
je 0x862d
cmpl $0x3e, %ebp
je 0x862d
movl %ebp, %edi
callq 0x3060
testl %eax, %eax
jne 0x862d
cmpl $0xa, %ebp
je 0x862d
cmpl $0xd, %ebp
je 0x862d
incq %r13
jmp 0x863d
testq %rbp, %rbp
je 0x8683
xorl %r13d, %r13d
movq %rbp, %rdi
movl $0xb, %esi
xorl %edx, %edx
xorl %ecx, %ecx
movl %ebx, %r8d
callq 0x768c
jmp 0x8686
xorl %r13d, %r13d
movq %r13, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
incq %r13
jmp 0x8686
jmp 0x86a1
jmp 0x86a1
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x86b6
movq %rbx, %rdi
callq 0x3280