// File: /workspace/github_cpp_makefile_star2_O2/mhe[P]raytracerframework_cpp/yaml/scantoken.cpp
// Function: YAML::Scanner::ScanBlockScalar()
void Scanner::ScanBlockScalar()
	{
		std::string scalar;

		ScanScalarParams params;
		params.indent = 1;
		params.detectIndent = true;

		// eat block indicator ('|' or '>')
		int line = INPUT.line, column = INPUT.column;
		char indicator = INPUT.get();
		params.fold = (indicator == Keys::FoldedScalar);

		// eat chomping/indentation indicators
		int n = Exp::Chomp.Match(INPUT);
		for(int i=0;i<n;i++) {
			char ch = INPUT.get();
			if(ch == '+')
				params.chomp = KEEP;
			else if(ch == '-')
				params.chomp = STRIP;
			else if(Exp::Digit.Matches(ch)) {
				if(ch == '0')
					throw ParserException(INPUT.line, INPUT.column, ErrorMsg::ZERO_INDENT_IN_BLOCK);

				params.indent = ch - '0';
				params.detectIndent = false;
			}
		}

		// now eat whitespace
		while(Exp::Blank.Matches(INPUT))
			INPUT.eat(1);

		// and comments to the end of the line
		if(Exp::Comment.Matches(INPUT))
			while(INPUT && !Exp::Break.Matches(INPUT))
				INPUT.eat(1);

		// if it's not a line break, then we ran into a bad character inline
		if(INPUT && !Exp::Break.Matches(INPUT))
			throw ParserException(INPUT.line, INPUT.column, ErrorMsg::CHAR_IN_BLOCK);

		// set the initial indentation
		if(m_indents.top() >= 0)
			params.indent += m_indents.top();

		params.eatLeadingWhitespace = false;
		params.trimTrailingSpaces = false;
		params.onTabInIndentation = THROW;

		scalar = ScanScalar(INPUT, params);

		// simple keys always ok after block scalars (since we're gonna start a new line anyways)
		m_simpleKeyAllowed = true;

		Token token(TT_SCALAR, line, column);
		token.value = scalar;
		m_tokens.push(token);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rdi, %rbx
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x80(%rbp), %rdi
callq 0x204ce
movl $0x1, -0x4c(%rbp)
movb $0x1, -0x48(%rbp)
movl 0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
movl 0xc(%rbx), %eax
movl %eax, -0x2c(%rbp)
movq %rbx, %rdi
callq 0x2173c
cmpb $0x3e, %al
sete -0x45(%rbp)
leaq 0x13b55(%rip), %rdi     # 0x33c50
movq %rbx, %rsi
callq 0x1befe
xorl %r13d, %r13d
testl %eax, %eax
cmovgl %eax, %r13d
leaq 0x1374d(%rip), %r14     # 0x33860
subl $0x1, %r13d
jb 0x2016b
movq %rbx, %rdi
callq 0x2173c
movl %eax, %r15d
cmpb $0x2d, %al
je 0x2013a
movzbl %r15b, %eax
cmpl $0x2b, %eax
jne 0x20140
movl $0x1, -0x40(%rbp)
jmp 0x20113
orl $-0x1, -0x40(%rbp)
jmp 0x20113
movsbl %r15b, %r12d
movq %r14, %rdi
movl %r12d, %esi
callq 0x1bdf0
testb %al, %al
je 0x20113
cmpb $0x30, %r15b
je 0x202fe
addl $-0x30, %r12d
movl %r12d, -0x4c(%rbp)
movb $0x0, -0x48(%rbp)
jmp 0x20113
leaq 0x1365e(%rip), %r14     # 0x337d0
pushq $0x1
popq %r15
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x20192
movq %rbx, %rdi
movl %r15d, %esi
callq 0x217c8
jmp 0x20176
leaq 0x13907(%rip), %rdi     # 0x33aa0
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x201d8
leaq 0x13654(%rip), %r14     # 0x33800
pushq $0x1
popq %r15
movq %rbx, %rdi
callq 0x21724
testb %al, %al
je 0x201d8
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
jne 0x201d8
movq %rbx, %rdi
movl %r15d, %esi
callq 0x217c8
jmp 0x201b0
movq %rbx, %rdi
callq 0x21724
testb %al, %al
je 0x201fb
leaq 0x13615(%rip), %rdi     # 0x33800
movq %rbx, %rsi
callq 0x1beee
testb %al, %al
je 0x20336
movq 0xf0(%rbx), %rax
cmpq 0xf8(%rbx), %rax
je 0x20210
movl -0x4(%rax), %eax
jmp 0x20221
movq 0x108(%rbx), %rax
movq -0x8(%rax), %rax
movl 0x1fc(%rax), %eax
testl %eax, %eax
js 0x20228
addl %eax, -0x4c(%rbp)
xorl %eax, %eax
leaq -0x80(%rbp), %rdx
movb %al, 0x39(%rdx)
movb %al, 0x3c(%rdx)
movl $0x2, 0x48(%rdx)
leaq -0xe8(%rbp), %rdi
movq %rbx, %rsi
callq 0x1eb4c
leaq -0xa0(%rbp), %r14
leaq -0xe8(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x4380
movq %r15, %rdi
callq 0x45d8
movb $0x1, 0x62(%rbx)
movabsq $0x1100000000, %rax     # imm = 0x1100000000
movq %rax, (%r15)
movl -0x30(%rbp), %eax
movl %eax, 0x8(%r15)
movl -0x2c(%rbp), %eax
movl %eax, 0xc(%r15)
leaq -0xc8(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq -0xd8(%rbp), %rdi
movb $0x0, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
andq $0x0, 0x20(%rax)
movq %r14, %rsi
callq 0x4150
addq $0x10, %rbx
leaq -0xe8(%rbp), %rsi
movq %rbx, %rdi
callq 0x20848
leaq -0xe8(%rbp), %rdi
callq 0x19892
leaq -0x80(%rbp), %rdi
callq 0x1bd72
leaq -0xa0(%rbp), %rdi
callq 0x45d8
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x30
popq %rdi
callq 0x4130
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x1341a(%rip), %rcx     # 0x33730
movq %rax, %rdi
callq 0x18be0
leaq 0xd31b(%rip), %rsi      # 0x2d640
leaq -0x1075a(%rip), %rdx    # 0xfbd2
movq %r14, %rdi
callq 0x44f0
jmp 0x2036c
pushq $0x30
popq %rdi
callq 0x4130
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x13402(%rip), %rcx     # 0x33750
movq %rax, %rdi
callq 0x18be0
leaq 0xd2e3(%rip), %rsi      # 0x2d640
leaq -0x10792(%rip), %rdx    # 0xfbd2
movq %r14, %rdi
callq 0x44f0
jmp 0x2038a
jmp 0x2039d
jmp 0x2039d
movq %rax, %rbx
jmp 0x203a9
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x19892
jmp 0x203a0
jmp 0x2039d
movq %rax, %rbx
movq %r14, %rdi
callq 0x4210
jmp 0x203a0
jmp 0x2039d
jmp 0x2039d
jmp 0x2039d
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x1bd72
leaq -0xa0(%rbp), %rdi
callq 0x45d8
movq %rbx, %rdi
callq 0x4530
nop