// File: /workspace/github_cpp_makefile_star2_O2/mhe[P]raytracerframework_cpp/yaml/scanner.cpp
// Function: YAML::Scanner::ScanNextToken()
void Scanner::ScanNextToken()
	{
		if(m_endedStream)
			return;

		if(!m_startedStream)
			return StartStream();

		// get rid of whitespace, etc. (in between tokens it should be irrelevent)
		ScanToNextToken();

		// check the latest simple key
		VerifySimpleKey();

		// maybe need to end some blocks
		PopIndentTo(INPUT.column);

		// *****
		// And now branch based on the next few characters!
		// *****

		// end of stream
		if(INPUT.peek() == EOF)
			return EndStream();

		if(INPUT.column == 0 && INPUT.peek() == Keys::Directive)
			return ScanDirective();

		// document token
		if(INPUT.column == 0 && Exp::DocStart.Matches(INPUT))
			return ScanDocStart();

		if(INPUT.column == 0 && Exp::DocEnd.Matches(INPUT))
			return ScanDocEnd();

		// flow start/end/entry
		if(INPUT.peek() == Keys::FlowSeqStart || INPUT.peek() == Keys::FlowMapStart)
			return ScanFlowStart();

		if(INPUT.peek() == Keys::FlowSeqEnd || INPUT.peek() == Keys::FlowMapEnd)
			return ScanFlowEnd();
	
		if(INPUT.peek() == Keys::FlowEntry)
			return ScanFlowEntry();

		// block/map stuff
		if(Exp::BlockEntry.Matches(INPUT))
			return ScanBlockEntry();

		if((m_flowLevel == 0 ? Exp::Key : Exp::KeyInFlow).Matches(INPUT))
			return ScanKey();

		if((m_flowLevel == 0 ? Exp::Value : Exp::ValueInFlow).Matches(INPUT))
			return ScanValue();

		// alias/anchor
		if(INPUT.peek() == Keys::Alias || INPUT.peek() == Keys::Anchor)
			return ScanAnchorOrAlias();

		// tag
		if(INPUT.peek() == Keys::Tag)
			return ScanTag();

		// special scalars
		if(m_flowLevel == 0 && (INPUT.peek() == Keys::LiteralScalar || INPUT.peek() == Keys::FoldedScalar))
			return ScanBlockScalar();

		if(INPUT.peek() == '\'' || INPUT.peek() == '\"')
			return ScanQuotedScalar();

		// plain scalars
		if((m_flowLevel == 0 ? Exp::PlainScalar : Exp::PlainScalarInFlow).Matches(INPUT))
			return ScanPlainScalar();

		// don't know what it is!
		throw ParserException(INPUT.line, INPUT.column, ErrorMsg::UNKNOWN_TOKEN);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
cmpb $0x0, 0x61(%rdi)
je 0x1d596
popq %rbx
popq %r14
popq %rbp
retq
movq %rdi, %rbx
cmpb $0x0, 0x60(%rdi)
je 0x1d5f2
movq %rbx, %rdi
callq 0x1d856
movq %rbx, %rdi
xorl %esi, %esi
callq 0x212dc
movl 0xc(%rbx), %esi
movq %rbx, %rdi
callq 0x1d91c
movq %rbx, %rdi
callq 0x21716
cmpb $-0x1, %al
je 0x1d5fe
cmpl $0x0, 0xc(%rbx)
je 0x1d60a
movq %rbx, %rdi
callq 0x21716
cmpb $0x5b, %al
je 0x1d5e6
movq %rbx, %rdi
callq 0x21716
cmpb $0x7b, %al
jne 0x1d622
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f374
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1d82c
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1d9f2
movq %rbx, %rdi
callq 0x21716
cmpb $0x25, %al
jne 0x1d646
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1efec
movq %rbx, %rdi
callq 0x21716
cmpb $0x5d, %al
je 0x1d63a
movq %rbx, %rdi
callq 0x21716
cmpb $0x7d, %al
jne 0x1d66b
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f402
cmpl $0x0, 0xc(%rbx)
jne 0x1d5ce
leaq 0x14cad(%rip), %rdi     # 0x32300
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d683
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f23c
movq %rbx, %rdi
callq 0x21716
cmpb $0x2c, %al
jne 0x1d6b0
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f4de
cmpl $0x0, 0xc(%rbx)
jne 0x1d5ce
leaq 0x14c9c(%rip), %rdi     # 0x32330
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d5ce
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f2d8
leaq 0x14cd9(%rip), %rdi     # 0x32390
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d6cf
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f560
cmpl $0x0, 0x64(%rbx)
leaq 0x14ce6(%rip), %rax     # 0x323c0
leaq 0x14d0f(%rip), %rdi     # 0x323f0
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d6fd
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f676
cmpl $0x0, 0x64(%rbx)
leaq 0x14d18(%rip), %rax     # 0x32420
leaq 0x14d41(%rip), %rdi     # 0x32450
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d72b
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f764
movq %rbx, %rdi
callq 0x21716
cmpb $0x2a, %al
je 0x1d743
movq %rbx, %rdi
callq 0x21716
cmpb $0x26, %al
jne 0x1d74f
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1f858
movq %rbx, %rdi
callq 0x21716
cmpb $0x21, %al
jne 0x1d767
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1fa2e
cmpl $0x0, 0x64(%rbx)
je 0x1d791
movq %rbx, %rdi
callq 0x21716
cmpb $0x27, %al
je 0x1d785
movq %rbx, %rdi
callq 0x21716
cmpb $0x22, %al
jne 0x1d7b5
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1fe66
movq %rbx, %rdi
callq 0x21716
cmpb $0x7c, %al
je 0x1d7a9
movq %rbx, %rdi
callq 0x21716
cmpb $0x3e, %al
jne 0x1d76d
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x2009c
cmpl $0x0, 0x64(%rbx)
leaq 0x14d20(%rip), %rax     # 0x324e0
leaq 0x14d49(%rip), %rdi     # 0x32510
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x1d7e3
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1fc42
pushq $0x30
popq %rdi
callq 0x4130
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x14775(%rip), %rcx     # 0x31f70
movq %rax, %rdi
callq 0x18be0
leaq 0xfe36(%rip), %rsi      # 0x2d640
leaq -0xdc3f(%rip), %rdx     # 0xfbd2
movq %r14, %rdi
callq 0x44f0
movq %rax, %rbx
movq %r14, %rdi
callq 0x4210
movq %rbx, %rdi
callq 0x4530