// File: mhe[P]raytracerframework_cpp/yaml/scantoken.cpp
// Function: YAML::Scanner::ScanTag()
void Scanner::ScanTag()
	{
		std::string handle, suffix;

		// insert a potential simple key
		if(m_simpleKeyAllowed)
			InsertSimpleKey();
		m_simpleKeyAllowed = false;

		// eat the indicator
		int line = INPUT.line, column = INPUT.column;
		handle += INPUT.get();

		// read the handle
		while(INPUT.peek() != EOF && INPUT.peek() != Keys::Tag && !Exp::BlankOrBreak.Matches(INPUT))
			handle += INPUT.get();

		// is there a suffix?
		if(INPUT.peek() == Keys::Tag) {
			// eat the indicator
			handle += INPUT.get();

			// then read it
			while(INPUT.peek() != EOF && !Exp::BlankOrBreak.Matches(INPUT))
				suffix += INPUT.get();
		} else {
			// this is a bit weird: we keep just the '!' as the handle and move the rest to the suffix
			suffix = handle.substr(1);
			handle = "!";
		}

		Token token(TT_TAG, line, column);
		token.value = handle;
		token.params.push_back(suffix);
		m_tokens.push(token);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x55b0
leaq -0x48(%rbp), %rdi
callq 0x55b0
movq -0xd0(%rbp), %rax
testb $0x1, 0x62(%rax)
je 0x461ca
movq -0xd0(%rbp), %rdi
callq 0x49a90
jmp 0x461b7
jmp 0x461ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x4647c
movq -0xd0(%rbp), %rdi
movb $0x0, 0x62(%rdi)
movl 0x8(%rdi), %eax
movl %eax, -0x58(%rbp)
movl 0xc(%rdi), %eax
movl %eax, -0x5c(%rbp)
callq 0x4a890
movb %al, -0xd1(%rbp)
jmp 0x461ee
movb -0xd1(%rbp), %al
movsbl %al, %esi
leaq -0x28(%rbp), %rdi
callq 0x5220
jmp 0x46202
jmp 0x46204
movq -0xd0(%rbp), %rdi
callq 0x4a840
movb %al, -0xd2(%rbp)
jmp 0x46218
movb -0xd2(%rbp), %al
movsbl %al, %ecx
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, -0xd3(%rbp)
je 0x46281
movq -0xd0(%rbp), %rdi
callq 0x4a840
movb %al, -0xd4(%rbp)
jmp 0x46242
movb -0xd4(%rbp), %al
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x21, %ecx
movb %al, -0xd3(%rbp)
je 0x46281
movq -0xd0(%rbp), %rsi
leaq 0x2769a(%rip), %rdi     # 0x6d900
callq 0x3c550
movb %al, -0xd5(%rbp)
jmp 0x46273
movb -0xd5(%rbp), %al
xorb $-0x1, %al
movb %al, -0xd3(%rbp)
movb -0xd3(%rbp), %al
testb $0x1, %al
jne 0x4628d
jmp 0x462ba
movq -0xd0(%rbp), %rdi
callq 0x4a890
movb %al, -0xd6(%rbp)
jmp 0x462a1
movb -0xd6(%rbp), %al
movsbl %al, %esi
leaq -0x28(%rbp), %rdi
callq 0x5220
jmp 0x462b5
jmp 0x46204
movq -0xd0(%rbp), %rdi
callq 0x4a840
movb %al, -0xd7(%rbp)
jmp 0x462ce
movb -0xd7(%rbp), %al
movsbl %al, %eax
cmpl $0x21, %eax
jne 0x46398
movq -0xd0(%rbp), %rdi
callq 0x4a890
movb %al, -0xd8(%rbp)
jmp 0x462f4
movb -0xd8(%rbp), %al
movsbl %al, %esi
leaq -0x28(%rbp), %rdi
callq 0x5220
jmp 0x46308
jmp 0x4630a
movq -0xd0(%rbp), %rdi
callq 0x4a840
movb %al, -0xd9(%rbp)
jmp 0x4631e
movb -0xd9(%rbp), %al
movsbl %al, %ecx
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, -0xda(%rbp)
je 0x4635d
movq -0xd0(%rbp), %rsi
leaq 0x275be(%rip), %rdi     # 0x6d900
callq 0x3c550
movb %al, -0xdb(%rbp)
jmp 0x4634f
movb -0xdb(%rbp), %al
xorb $-0x1, %al
movb %al, -0xda(%rbp)
movb -0xda(%rbp), %al
testb $0x1, %al
jne 0x46369
jmp 0x46396
movq -0xd0(%rbp), %rdi
callq 0x4a890
movb %al, -0xdc(%rbp)
jmp 0x4637d
movb -0xdc(%rbp), %al
movsbl %al, %esi
leaq -0x48(%rbp), %rdi
callq 0x5220
jmp 0x46391
jmp 0x4630a
jmp 0x463e7
leaq -0x80(%rbp), %rdi
leaq -0x28(%rbp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x53d0
jmp 0x463b3
leaq -0x48(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
callq 0x54e0
movq -0xe8(%rbp), %rdi
callq 0x5788
leaq 0x5adb(%rip), %rsi      # 0x4beb5
leaq -0x28(%rbp), %rdi
callq 0x55a0
jmp 0x463e5
jmp 0x463e7
movl -0x58(%rbp), %edx
movl -0x5c(%rbp), %ecx
leaq -0xc8(%rbp), %rdi
movl $0x10, %esi
callq 0x41000
jmp 0x46400
leaq -0xb8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5080
jmp 0x46412
leaq -0x98(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x46f90
jmp 0x46424
movq -0xd0(%rbp), %rdi
addq $0x10, %rdi
leaq -0xc8(%rbp), %rsi
callq 0x47250
jmp 0x4643d
leaq -0xc8(%rbp), %rdi
callq 0x35c00
leaq -0x48(%rbp), %rdi
callq 0x5788
leaq -0x28(%rbp), %rdi
callq 0x5788
addq $0xf0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x35c00
leaq -0x48(%rbp), %rdi
callq 0x5788
leaq -0x28(%rbp), %rdi
callq 0x5788
movq -0x50(%rbp), %rdi
callq 0x56c0
nopw (%rax,%rax)