// File: /workspace/github_cpp_makefile_star2_O3/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 -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0xa0(%rbp), %rdi
callq 0x28b4e
xorl %eax, %eax
movb %al, -0x70(%rbp)
movb %al, -0x64(%rbp)
movq %rax, -0x60(%rbp)
movq %rax, -0x5b(%rbp)
movq $0x1, -0x6c(%rbp)
movb $0x1, -0x68(%rbp)
movl 0x8(%rbx), %eax
movl %eax, -0x30(%rbp)
movl 0xc(%rbx), %eax
movl %eax, -0x2c(%rbp)
movq %rbx, %rdi
callq 0x2f2dc
cmpb $0x3e, %al
sete -0x65(%rbp)
leaq 0x1324d(%rip), %rdi     # 0x40c50
movq %rbx, %rsi
callq 0x28ebc
movl %eax, %r14d
testl %eax, %eax
jle 0x2da71
leaq 0x12e47(%rip), %r15     # 0x40860
movq %rbx, %rdi
callq 0x2f2dc
movl %eax, %r12d
cmpb $0x2d, %al
je 0x2da3a
movzbl %r12b, %eax
cmpl $0x2b, %eax
jne 0x2da43
movl $0x1, -0x60(%rbp)
jmp 0x2da6c
movl $0xffffffff, -0x60(%rbp) # imm = 0xFFFFFFFF
jmp 0x2da6c
movsbl %r12b, %r13d
movq %r15, %rdi
movl %r13d, %esi
callq 0x28d68
testb %al, %al
je 0x2da6c
cmpb $0x30, %r12b
je 0x2dc40
addl $-0x30, %r13d
movl %r13d, -0x6c(%rbp)
movb $0x0, -0x68(%rbp)
decl %r14d
jne 0x2da19
leaq 0x12d58(%rip), %r14     # 0x407d0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x28ea8
testb %al, %al
je 0x2da96
movq %rbx, %rdi
movl $0x1, %esi
callq 0x2f374
jmp 0x2da78
leaq 0x13003(%rip), %rdi     # 0x40aa0
movq %rbx, %rsi
callq 0x28ea8
testb %al, %al
je 0x2dada
leaq 0x12d50(%rip), %r14     # 0x40800
movq %rbx, %rdi
callq 0x2f2c4
testb %al, %al
je 0x2dada
movq %r14, %rdi
movq %rbx, %rsi
callq 0x28ea8
testb %al, %al
jne 0x2dada
movq %rbx, %rdi
movl $0x1, %esi
callq 0x2f374
jmp 0x2dab0
movq %rbx, %rdi
callq 0x2f2c4
testb %al, %al
je 0x2dafd
leaq 0x12d13(%rip), %rdi     # 0x40800
movq %rbx, %rsi
callq 0x28ea8
testb %al, %al
je 0x2dc84
movq 0xf0(%rbx), %rax
cmpq 0xf8(%rbx), %rax
je 0x2db12
movl -0x4(%rax), %eax
jmp 0x2db23
movq 0x108(%rbx), %rax
movq -0x8(%rax), %rax
movl 0x1fc(%rax), %eax
testl %eax, %eax
js 0x2db2a
addl %eax, -0x6c(%rbp)
xorl %eax, %eax
leaq -0xa0(%rbp), %rdx
movb %al, 0x39(%rdx)
movb %al, 0x3c(%rdx)
movl $0x2, 0x48(%rdx)
leaq -0xe8(%rbp), %rdi
movq %rbx, %rsi
callq 0x2c05c
leaq -0x50(%rbp), %rdi
leaq -0xe8(%rbp), %r14
movq %r14, %rsi
callq 0x43b0
movq (%r14), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x2db80
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x42d0
movb $0x1, 0x62(%rbx)
movabsq $0x1100000000, %rax     # imm = 0x1100000000
leaq -0xd8(%rbp), %rdi
movq %rax, -0x10(%rdi)
movl -0x30(%rbp), %eax
movl %eax, -0x8(%rdi)
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rdi)
leaq -0xc8(%rbp), %r14
movq %r14, -0x10(%r14)
xorl %eax, %eax
movq %rax, -0x8(%r14)
movb $0x0, (%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r14)
movq %rax, 0x20(%r14)
leaq -0x50(%rbp), %rsi
callq 0x4160
addq $0x10, %rbx
leaq -0xe8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e22e
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x2670a
movq -0x20(%rbx), %rdi
cmpq %r14, %rdi
je 0x2dc09
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x42d0
leaq -0xa0(%rbp), %rdi
callq 0x28ce6
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x2dc2e
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x30, %edi
callq 0x4140
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x12ad6(%rip), %rcx     # 0x40730
movq %rax, %rdi
callq 0x1960e
leaq 0xcc57(%rip), %rax      # 0x3a8c0
movq %rax, (%r14)
leaq 0xc9e5(%rip), %rsi      # 0x3a658
leaq -0x14478(%rip), %rdx    # 0x19802
movq %r14, %rdi
callq 0x4510
jmp 0x2dcc6
movl $0x30, %edi
callq 0x4140
movq %rax, %r14
movl 0x8(%rbx), %esi
movl 0xc(%rbx), %edx
leaq 0x12ab2(%rip), %rcx     # 0x40750
movq %rax, %rdi
callq 0x1960e
leaq 0xcc13(%rip), %rax      # 0x3a8c0
movq %rax, (%r14)
leaq 0xc9a1(%rip), %rsi      # 0x3a658
leaq -0x144bc(%rip), %rdx    # 0x19802
movq %r14, %rdi
callq 0x4510
jmp 0x2dcd3
jmp 0x2dcf7
jmp 0x2dcf7
movq %rax, %rbx
jmp 0x2dd06
jmp 0x2dcf7
movq %rax, %rbx
movq %r14, %rdi
callq 0x4230
jmp 0x2dcfa
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x264de
jmp 0x2dcfa
jmp 0x2dcf7
jmp 0x2dcf7
jmp 0x2dcf7
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x28ce6
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x2dd1f
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x4550
nop