// File: mhe[P]raytracerframework_cpp/yaml/map.cpp
// Function: YAML::Map::ParseFlow(YAML::Scanner*, YAML::ParserState const&)
void Map::ParseFlow(Scanner *pScanner, const ParserState& state)
	{
		// eat start token
		pScanner->pop();

		while(1) {
			if(pScanner->empty())
				throw ParserException(-1, -1, ErrorMsg::END_OF_MAP_FLOW);

			Token& token = pScanner->peek();
			// first check for end
			if(token.type == TT_FLOW_MAP_END) {
				pScanner->pop();
				break;
			}

			// now it better be a key
			if(token.type != TT_KEY)
				throw ParserException(token.line, token.column, ErrorMsg::END_OF_MAP_FLOW);

			pScanner->pop();

			std::auto_ptr <Node> pKey(new Node), pValue(new Node);

			// grab key
			pKey->Parse(pScanner, state);

			// now grab value (optional)
			if(!pScanner->empty() && pScanner->peek().type == TT_VALUE) {
				pScanner->pop();
				pValue->Parse(pScanner, state);
			}

			// now eat the separator (or could be a map end, which we ignore - but if it's neither, then it's a bad node)
			Token& nextToken = pScanner->peek();
			if(nextToken.type == TT_FLOW_ENTRY)
				pScanner->pop();
			else if(nextToken.type != TT_FLOW_MAP_END)
				throw ParserException(nextToken.line, nextToken.column, ErrorMsg::END_OF_MAP_FLOW);

			// assign the map with the actual pointers
			m_data[pKey.release()] = pValue.release();
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
callq 0x40510
movq -0x10(%rbp), %rdi
callq 0x40460
testb $0x1, %al
jne 0x35117
jmp 0x35171
movl $0x30, %edi
callq 0x51b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x60(%rbp)
leaq 0x350de(%rip), %rcx     # 0x6a210
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %edx, %esi
callq 0x340e0
jmp 0x35140
movq -0x60(%rbp), %rdi
leaq 0x324b5(%rip), %rsi     # 0x67600
leaq -0x1022(%rip), %rdx     # 0x34130
callq 0x5690
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x52c0
jmp 0x3546c
movq -0x10(%rbp), %rdi
callq 0x40550
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpl $0xa, 0x4(%rax)
jne 0x35196
movq -0x10(%rbp), %rdi
callq 0x40510
jmp 0x35463
movq -0x30(%rbp), %rax
cmpl $0xc, 0x4(%rax)
je 0x351fd
movl $0x30, %edi
callq 0x51b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x3504b(%rip), %rcx     # 0x6a210
callq 0x340e0
jmp 0x351cc
movq -0x68(%rbp), %rdi
leaq 0x32429(%rip), %rsi     # 0x67600
leaq -0x10ae(%rip), %rdx     # 0x34130
callq 0x5690
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x52c0
jmp 0x3546c
movq -0x10(%rbp), %rdi
callq 0x40510
movl $0x58, %edi
callq 0x53b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x70(%rbp)
callq 0x379f0
jmp 0x35221
movq -0x70(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x35a80
movl $0x58, %edi
callq 0x53b0
movq %rax, -0x78(%rbp)
jmp 0x3523e
movq -0x78(%rbp), %rdi
callq 0x379f0
jmp 0x35249
movq -0x78(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x35a80
leaq -0x38(%rbp), %rdi
callq 0x35aa0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x37ad0
jmp 0x35271
movq -0x10(%rbp), %rdi
callq 0x40460
movb %al, -0x79(%rbp)
jmp 0x3527f
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x35337
jmp 0x3528c
movq -0x10(%rbp), %rdi
callq 0x40550
movq %rax, -0x88(%rbp)
jmp 0x3529e
movq -0x88(%rbp), %rax
cmpl $0xd, 0x4(%rax)
jne 0x35337
movq -0x10(%rbp), %rdi
callq 0x40510
jmp 0x352ba
leaq -0x40(%rbp), %rdi
callq 0x35aa0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x37ad0
jmp 0x352d5
jmp 0x35337
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x58, %esi
callq 0x53c0
jmp 0x3546c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x35458
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x58, %esi
callq 0x53c0
jmp 0x35458
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x3544f
movq -0x10(%rbp), %rdi
callq 0x40550
movq %rax, -0x90(%rbp)
jmp 0x35349
movq -0x90(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpl $0xb, 0x4(%rax)
jne 0x3536b
movq -0x10(%rbp), %rdi
callq 0x40510
jmp 0x35369
jmp 0x353df
movq -0x48(%rbp), %rax
cmpl $0xa, 0x4(%rax)
je 0x353dd
movl $0x30, %edi
callq 0x51b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq -0x48(%rbp), %rax
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
leaq 0x34e73(%rip), %rcx     # 0x6a210
callq 0x340e0
jmp 0x353a4
movq -0x98(%rbp), %rdi
leaq 0x3224e(%rip), %rsi     # 0x67600
leaq -0x1289(%rip), %rdx     # 0x34130
callq 0x5690
jmp 0x35475
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x52c0
jmp 0x3544f
jmp 0x353df
leaq -0x40(%rbp), %rdi
callq 0x35ac0
movq %rax, %rcx
movq -0x58(%rbp), %rax
movq %rcx, -0xb0(%rbp)
addq $0x8, %rax
movq %rax, -0xa8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x35ac0
movq -0xa8(%rbp), %rdi
movq %rax, -0x50(%rbp)
leaq -0x50(%rbp), %rsi
callq 0x35ae0
movq %rax, -0xa0(%rbp)
jmp 0x35427
movq -0xa0(%rbp), %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x40(%rbp), %rdi
callq 0x35bc0
leaq -0x38(%rbp), %rdi
callq 0x35bc0
jmp 0x35108
leaq -0x40(%rbp), %rdi
callq 0x35bc0
leaq -0x38(%rbp), %rdi
callq 0x35bc0
jmp 0x3546c
addq $0xb0, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x56c0
nopw %cs:(%rax,%rax)