// File: 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
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x55b0
leaq -0x78(%rbp), %rdi
callq 0x47280
jmp 0x46ace
movq -0x110(%rbp), %rdi
movl $0x1, -0x44(%rbp)
movb $0x1, -0x40(%rbp)
movl 0x8(%rdi), %eax
movl %eax, -0x88(%rbp)
movl 0xc(%rdi), %eax
movl %eax, -0x8c(%rbp)
callq 0x4a890
movb %al, -0x111(%rbp)
jmp 0x46aff
movq -0x110(%rbp), %rsi
movb -0x111(%rbp), %al
movb %al, -0x8d(%rbp)
movb -0x8d(%rbp), %al
subb $0x3e, %al
sete -0x3d(%rbp)
leaq 0x271fb(%rip), %rdi     # 0x6dd20
callq 0x3c580
movl %eax, -0x118(%rbp)
jmp 0x46b32
movl -0x118(%rbp), %eax
movl %eax, -0x94(%rbp)
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
cmpl -0x94(%rbp), %eax
jge 0x46ca4
movq -0x110(%rbp), %rdi
callq 0x4a890
movb %al, -0x119(%rbp)
jmp 0x46b6e
movb -0x119(%rbp), %al
movb %al, -0x99(%rbp)
movsbl -0x99(%rbp), %eax
cmpl $0x2b, %eax
jne 0x46bba
movl $0x1, -0x38(%rbp)
jmp 0x46c8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x46f79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x46f70
movsbl -0x99(%rbp), %eax
cmpl $0x2d, %eax
jne 0x46bd2
movl $0xffffffff, -0x38(%rbp) # imm = 0xFFFFFFFF
jmp 0x46c8c
movsbl -0x99(%rbp), %esi
leaq 0x26d50(%rip), %rdi     # 0x6d930
callq 0x3c370
movb %al, -0x11a(%rbp)
jmp 0x46bed
movb -0x11a(%rbp), %al
testb $0x1, %al
jne 0x46bfc
jmp 0x46c8a
movsbl -0x99(%rbp), %eax
cmpl $0x30, %eax
jne 0x46c79
movl $0x30, %edi
callq 0x51b0
movq %rax, %rdi
movq -0x110(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x128(%rbp)
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x26bcd(%rip), %rcx     # 0x6d800
callq 0x340e0
jmp 0x46c3a
movq -0x128(%rbp), %rdi
leaq 0x209b8(%rip), %rsi     # 0x67600
leaq -0x12b1f(%rip), %rdx    # 0x34130
callq 0x5690
jmp 0x46f8b
movq -0x128(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
callq 0x52c0
jmp 0x46f70
movsbl -0x99(%rbp), %eax
subl $0x30, %eax
movl %eax, -0x44(%rbp)
movb $0x0, -0x40(%rbp)
jmp 0x46c8c
jmp 0x46c8e
jmp 0x46c90
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x46b48
jmp 0x46ca6
movq -0x110(%rbp), %rsi
leaq 0x26bec(%rip), %rdi     # 0x6d8a0
callq 0x3c550
movb %al, -0x129(%rbp)
jmp 0x46cc1
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x46ccd
jmp 0x46ce2
movq -0x110(%rbp), %rdi
movl $0x1, %esi
callq 0x4a9a0
jmp 0x46ce0
jmp 0x46ca6
movq -0x110(%rbp), %rsi
leaq 0x26e80(%rip), %rdi     # 0x6db70
callq 0x3c550
movb %al, -0x12a(%rbp)
jmp 0x46cfd
movb -0x12a(%rbp), %al
testb $0x1, %al
jne 0x46d09
jmp 0x46d80
jmp 0x46d0b
movq -0x110(%rbp), %rdi
callq 0x4a860
movb %al, -0x12b(%rbp)
jmp 0x46d1f
movb -0x12b(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x12c(%rbp)
jne 0x46d34
jmp 0x46d5d
movq -0x110(%rbp), %rsi
leaq 0x26b8e(%rip), %rdi     # 0x6d8d0
callq 0x3c550
movb %al, -0x12d(%rbp)
jmp 0x46d4f
movb -0x12d(%rbp), %al
xorb $-0x1, %al
movb %al, -0x12c(%rbp)
movb -0x12c(%rbp), %al
testb $0x1, %al
jne 0x46d69
jmp 0x46d7e
movq -0x110(%rbp), %rdi
movl $0x1, %esi
callq 0x4a9a0
jmp 0x46d7c
jmp 0x46d0b
jmp 0x46d80
movq -0x110(%rbp), %rdi
callq 0x4a860
movb %al, -0x12e(%rbp)
jmp 0x46d94
movb -0x12e(%rbp), %al
testb $0x1, %al
jne 0x46da3
jmp 0x46e3b
movq -0x110(%rbp), %rsi
leaq 0x26b1f(%rip), %rdi     # 0x6d8d0
callq 0x3c550
movb %al, -0x12f(%rbp)
jmp 0x46dbe
movb -0x12f(%rbp), %al
testb $0x1, %al
jne 0x46e3b
jmp 0x46dca
movl $0x30, %edi
callq 0x51b0
movq %rax, %rdi
movq -0x110(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x138(%rbp)
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x26a2b(%rip), %rcx     # 0x6d820
callq 0x340e0
jmp 0x46dfc
movq -0x138(%rbp), %rdi
leaq 0x207f6(%rip), %rsi     # 0x67600
leaq -0x12ce1(%rip), %rdx    # 0x34130
callq 0x5690
jmp 0x46f8b
movq -0x138(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
callq 0x52c0
jmp 0x46f70
movq -0x110(%rbp), %rdi
addq $0xc0, %rdi
callq 0x40f80
movq %rax, -0x140(%rbp)
jmp 0x46e57
movq -0x140(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x46e8e
movq -0x110(%rbp), %rdi
addq $0xc0, %rdi
callq 0x40f80
movq %rax, -0x148(%rbp)
jmp 0x46e7f
movq -0x148(%rbp), %rax
movl (%rax), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movq -0x110(%rbp), %rsi
movb $0x0, -0x3f(%rbp)
movb $0x0, -0x3c(%rbp)
movl $0x2, -0x30(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x44ad0
jmp 0x46eb6
leaq -0x28(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
movq %rsi, -0x150(%rbp)
callq 0x54e0
movq -0x150(%rbp), %rdi
callq 0x5788
movq -0x110(%rbp), %rax
movb $0x1, 0x62(%rax)
movl -0x88(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq -0x108(%rbp), %rdi
movl $0x11, %esi
callq 0x41000
jmp 0x46f03
leaq -0xf8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5080
jmp 0x46f15
movq -0x110(%rbp), %rdi
addq $0x10, %rdi
leaq -0x108(%rbp), %rsi
callq 0x47250
jmp 0x46f2e
leaq -0x108(%rbp), %rdi
callq 0x35c00
leaq -0x78(%rbp), %rdi
callq 0x472e0
leaq -0x28(%rbp), %rdi
callq 0x5788
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x35c00
leaq -0x78(%rbp), %rdi
callq 0x472e0
leaq -0x28(%rbp), %rdi
callq 0x5788
movq -0x80(%rbp), %rdi
callq 0x56c0
nopl (%rax,%rax)