// File: /workspace/github_cpp_makefile_star2_O1/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
subq $0x10, %rsp
cmpb $0x0, 0x61(%rdi)
jne 0x2c1fa
movq %rdi, %rbx
cmpb $0x0, 0x60(%rdi)
je 0x2c1d9
movq %rbx, %rdi
callq 0x2c49c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x304f4
movl 0xc(%rbx), %esi
movq %rbx, %rdi
callq 0x2c56c
movq %rbx, %rdi
callq 0x308de
cmpb $-0x1, %al
je 0x2c255
cmpl $0x0, 0xc(%rbx)
jne 0x2c203
movq %rbx, %rdi
callq 0x308de
cmpb $0x25, %al
jne 0x2c203
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2db90
movb $0x1, %al
movb %al, 0x60(%rbx)
movb %al, 0x62(%rbx)
addq $0xc0, %rbx
leaq -0x14(%rbp), %rsi
movl $0xffffffff, (%rsi)     # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x2cfb0
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
cmpl $0x0, 0xc(%rbx)
jne 0x2c22c
leaq 0x14100(%rip), %rdi     # 0x40310
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c22c
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2de44
cmpl $0x0, 0xc(%rbx)
jne 0x2c265
leaq 0x14107(%rip), %rdi     # 0x40340
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c265
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2defe
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2c674
movq %rbx, %rdi
callq 0x308de
cmpb $0x5b, %al
je 0x2c27d
movq %rbx, %rdi
callq 0x308de
cmpb $0x7b, %al
jne 0x2c28d
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2dfba
movq %rbx, %rdi
callq 0x308de
cmpb $0x5d, %al
je 0x2c2a5
movq %rbx, %rdi
callq 0x308de
cmpb $0x7d, %al
jne 0x2c2b5
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e06a
movq %rbx, %rdi
callq 0x308de
cmpb $0x2c, %al
jne 0x2c2d1
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e16c
leaq 0x140c8(%rip), %rdi     # 0x403a0
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c2f4
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e20e
cmpl $0x0, 0x64(%rbx)
leaq 0x140d1(%rip), %rax     # 0x403d0
leaq 0x140fa(%rip), %rdi     # 0x40400
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c326
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e342
cmpl $0x0, 0x64(%rbx)
leaq 0x140ff(%rip), %rax     # 0x40430
leaq 0x14128(%rip), %rdi     # 0x40460
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c358
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e44e
movq %rbx, %rdi
callq 0x308de
cmpb $0x2a, %al
je 0x2c370
movq %rbx, %rdi
callq 0x308de
cmpb $0x26, %al
jne 0x2c380
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e56e
movq %rbx, %rdi
callq 0x308de
cmpb $0x21, %al
jne 0x2c39c
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2e790
cmpl $0x0, 0x64(%rbx)
je 0x2c3ca
movq %rbx, %rdi
callq 0x308de
cmpb $0x27, %al
je 0x2c3ba
movq %rbx, %rdi
callq 0x308de
cmpb $0x22, %al
jne 0x2c3f2
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2ecb8
movq %rbx, %rdi
callq 0x308de
cmpb $0x7c, %al
je 0x2c3e2
movq %rbx, %rdi
callq 0x308de
cmpb $0x3e, %al
jne 0x2c3a2
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2ef7c
cmpl $0x0, 0x64(%rbx)
leaq 0x140f3(%rip), %rax     # 0x404f0
leaq 0x1411c(%rip), %rdi     # 0x40520
cmoveq %rax, %rdi
movq %rbx, %rsi
callq 0x2a482
testb %al, %al
je 0x2c424
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2ea2a
movl $0x30, %edi
callq 0x5140
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x13b42(%rip), %rcx     # 0x3ff80
movq %rax, %rdi
callq 0x26d60
leaq 0xf20b(%rip), %rsi      # 0x3b658
leaq -0x11c20(%rip), %rdx    # 0x1a834
movq %r14, %rdi
callq 0x5520
movq %rax, %rbx
movq %r14, %rdi
callq 0x5230
movq %rbx, %rdi
callq 0x5560
nop