// File: /workspace/github_cpp_makefile_star2_O2/Nallantli[P]Rossa/main/rossa/node_parser/node_parser.cpp
// Function: node_parser_t::parseMapNode(std::vector<node_scope_t, std::allocator<node_scope_t>>*)
ptr_node_t node_parser_t::parseMapNode(std::vector<node_scope_t> *scopes)
{
	nextToken();
	std::vector<std::pair<std::string, ptr_node_t>> args;
	int i = 0;
	while (currentToken.type != NULL_TOK && currentToken.type != '}')
	{
		if (i > 0)
		{
			if (currentToken.type != ',')
				return logErrorN(util::format(_EXPECTED_ERROR_, {","}), currentToken);
			nextToken();
		}
		i++;
		if (currentToken.type != TOK_STR_LIT)
			return logErrorN(_VALUE_KEY_PAIR_ERROR_, currentToken);
		auto key = currentToken.valueString;
		nextToken();
		if (currentToken.type != ':')
			return logErrorN(util::format(_EXPECTED_ERROR_, {":"}), currentToken);
		nextToken();
		if (auto b = parseEquNode(scopes))
		{
			std::pair<std::string, ptr_node_t> p = {key, b};
			args.push_back(p);
		}
		else
			return nullptr;
		if (currentToken.type == NULL_TOK)
			return logErrorN(util::format(_EXPECTED_ERROR_, {"}"}), currentToken);
	}
	nextToken();
	return std::make_shared<MapNode>(*scopes, args, currentToken);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %rdx, 0x38(%rsp)
movq %rsi, %rbx
movq %rdi, 0x10(%rsp)
movq %rsi, %rdi
callq 0x22e24
leaq 0xd0(%rsp), %rax
andq $0x0, 0x10(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
leaq 0xb0(%rbx), %rbp
xorl %r14d, %r14d
leaq 0xb0(%rsp), %r13
leaq 0x40(%rsp), %r12
movl 0xd0(%rbx), %eax
testl %eax, %eax
je 0x29f93
cmpl $0x7d, %eax
je 0x29f93
subl $0x1, %r14d
jb 0x29ee8
cmpl $0x2c, %eax
jne 0x2a114
movq %rbx, %rdi
callq 0x22e24
movl 0xd0(%rbx), %eax
cmpl $-0x12, %eax
jne 0x2a00e
movq %r13, %rdi
movq %rbp, %rsi
callq 0x10550
movq %rbx, %rdi
callq 0x22e24
cmpl $0x3a, 0xd0(%rbx)
jne 0x2a038
movq %rbx, %rdi
callq 0x22e24
leaq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq 0x38(%rsp), %rdx
callq 0x25798
movq 0x18(%rsp), %r15
testq %r15, %r15
je 0x29f5f
movq %r12, %rdi
movq %r13, %rsi
leaq 0x18(%rsp), %rdx
callq 0x2ef3a
leaq 0xd0(%rsp), %rdi
movq %r12, %rsi
callq 0x2ef60
movq %r12, %rdi
callq 0x2ef8c
jmp 0x29f6a
movq 0x10(%rsp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
leaq 0x20(%rsp), %rdi
callq 0x1d786
testq %r15, %r15
je 0x29fda
cmpl $0x0, 0xd0(%rbx)
je 0x2a0a6
movq %r13, %rdi
callq 0x101d0
jmp 0x29eb4
movq %rbx, %rdi
callq 0x22e24
addq $0x58, %rbx
leaq 0x40(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
movq 0x38(%rsp), %rsi
movq %rbx, %rcx
callq 0x2efa2
leaq 0x48(%rsp), %rdi
movaps -0x8(%rdi), %xmm0
andq $0x0, (%rdi)
movq 0x10(%rsp), %rbx
movups %xmm0, (%rbx)
andq $0x0, -0x8(%rdi)
callq 0x1d786
jmp 0x29fec
leaq 0xb0(%rsp), %rdi
callq 0x101d0
movq 0x10(%rsp), %rbx
leaq 0xd0(%rsp), %rdi
callq 0x2efc6
movq %rbx, %rax
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4c9ea(%rip), %rsi     # 0x769ff
leaq 0x40(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x1c814
leaq 0x58(%rbx), %rcx
leaq 0x40(%rsp), %rdx
movq %rbx, %rsi
callq 0x25932
leaq 0x4c865(%rip), %rsi     # 0x768a4
leaq 0x18(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1c814
leaq 0x50761(%rip), %rsi     # 0x7a7b6
leaq 0x90(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x90(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x1f298
leaq 0x40(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x58(%rbx), %rcx
leaq 0x40(%rsp), %rdx
movq %rbx, %rsi
callq 0x25932
leaq 0x4c7f7(%rip), %rsi     # 0x768a4
leaq 0x18(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1c814
leaq 0x507fe(%rip), %rsi     # 0x7a8c1
leaq 0x90(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x1c814
leaq 0x78(%rsp), %rdi
leaq 0x90(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xf(%rsp), %rcx
callq 0x1f298
leaq 0x40(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x3f724
leaq 0x58(%rbx), %rcx
leaq 0x40(%rsp), %rdx
movq %rbx, %rsi
callq 0x25932
leaq 0x4c789(%rip), %rsi     # 0x768a4
leaq 0xb0(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x1c814
leaq 0x4c9d0(%rip), %rsi     # 0x76b04
leaq 0x18(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1c814
leaq 0x90(%rsp), %rdi
leaq 0x18(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0xd(%rsp), %rcx
callq 0x1f298
leaq 0x40(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x3f724
leaq 0x58(%rbx), %rcx
leaq 0x40(%rsp), %rdx
movq %rbx, %rsi
callq 0x25932
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x2a19a
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x1cea0
jmp 0x2a1ec
jmp 0x2a1ad
jmp 0x2a1bc
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x101d0
jmp 0x2a1bf
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x1cea0
jmp 0x2a1d6
jmp 0x2a1e9
jmp 0x2a22a
jmp 0x2a22a
jmp 0x2a1d3
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x101d0
jmp 0x2a1ec
jmp 0x2a231
jmp 0x2a1e9
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x101d0
jmp 0x2a234
jmp 0x2a22a
jmp 0x2a231
jmp 0x2a231
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
jmp 0x2a23c
jmp 0x2a22a
jmp 0x2a22a
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x2ef8c
jmp 0x2a21e
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1d786
jmp 0x2a234
movq %rax, %rbx
jmp 0x2a241
jmp 0x2a231
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x101d0
leaq 0xd0(%rsp), %rdi
callq 0x2efc6
movq %rbx, %rdi
callq 0x106f0