// File: 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
movq %rsp, %rbp
subq $0x410, %rsp            # imm = 0x410
movq %rdi, -0x2d8(%rbp)
movq %rdi, %rax
movq %rax, -0x2d0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x38fd0
leaq -0x30(%rbp), %rdi
callq 0x59170
movl $0x0, -0x34(%rbp)
movq -0x2c8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, 0xd0(%rcx)
movb %al, -0x2d9(%rbp)
je 0x49f77
movq -0x2c8(%rbp), %rax
cmpl $0x7d, 0xd0(%rax)
setne %al
movb %al, -0x2d9(%rbp)
movb -0x2d9(%rbp), %al
testb $0x1, %al
jne 0x49f86
jmp 0x4ab3b
cmpl $0x0, -0x34(%rbp)
jle 0x4a2b3
movq -0x2c8(%rbp), %rax
cmpl $0x2c, 0xd0(%rax)
je 0x4a28c
leaq -0x79(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x119d0
movq -0x2e8(%rbp), %rdx
leaq 0x1071ce(%rip), %rsi    # 0x151190
leaq -0x78(%rbp), %rdi
callq 0x24740
jmp 0x49fcd
movb $0x1, -0xe2(%rbp)
leaq -0xd8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq %rax, -0xe0(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x119d0
movq -0x2f8(%rbp), %rdi
movq -0x2f0(%rbp), %rdx
leaq 0x1073df(%rip), %rsi    # 0x1513f0
callq 0x24740
jmp 0x4a018
movb $0x0, -0xe2(%rbp)
leaq -0xd8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq $0x1, -0xb0(%rbp)
leaq -0xe3(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x26e30
movq -0x300(%rbp), %rcx
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
callq 0x2d6a0
jmp 0x4a06e
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x9e250
jmp 0x4a084
movq -0x2c8(%rbp), %rsi
movq -0x2d8(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x58(%rbp), %rdx
callq 0x3f820
jmp 0x4a0a4
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0xa8(%rbp), %rdi
callq 0x25b00
leaq -0xe3(%rbp), %rdi
callq 0x279c0
leaq -0xd8(%rbp), %rax
movq %rax, -0x310(%rbp)
addq $0x20, %rax
movq %rax, -0x308(%rbp)
movq -0x308(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x318(%rbp)
callq 0x11360
movq -0x310(%rbp), %rcx
movq -0x318(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x308(%rbp)
jne 0x4a0de
leaq -0xe1(%rbp), %rdi
callq 0x11600
leaq -0x78(%rbp), %rdi
callq 0x11360
leaq -0x79(%rbp), %rdi
callq 0x11600
movl $0x1, -0xe8(%rbp)
jmp 0x4ab93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a27e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a211
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a1b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a1ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x11360
leaq -0xa8(%rbp), %rdi
callq 0x25b00
leaq -0xe3(%rbp), %rdi
callq 0x279c0
leaq -0xd8(%rbp), %rax
movq %rax, -0x328(%rbp)
addq $0x20, %rax
movq %rax, -0x320(%rbp)
movq -0x320(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x330(%rbp)
callq 0x11360
movq -0x328(%rbp), %rcx
movq -0x330(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x320(%rbp)
jne 0x4a1de
jmp 0x4a211
leaq -0xe1(%rbp), %rdi
callq 0x11600
testb $0x1, -0xe2(%rbp)
jne 0x4a228
jmp 0x4a275
movq -0xe0(%rbp), %rax
leaq -0xd8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x338(%rbp)
je 0x4a273
movq -0x338(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x340(%rbp)
callq 0x11360
movq -0x340(%rbp), %rax
leaq -0xd8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x338(%rbp)
jne 0x4a242
jmp 0x4a275
leaq -0x78(%rbp), %rdi
callq 0x11360
leaq -0x79(%rbp), %rdi
callq 0x11600
jmp 0x4abac
movq -0x2c8(%rbp), %rdi
callq 0x38fd0
jmp 0x4a29a
jmp 0x4a2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4abac
movq -0x2c8(%rbp), %rax
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x34(%rbp)
cmpl $-0x12, 0xd0(%rax)
je 0x4a38c
leaq -0x109(%rbp), %rdi
movq %rdi, -0x348(%rbp)
callq 0x119d0
movq -0x348(%rbp), %rdx
leaq 0x106ffa(%rip), %rsi    # 0x1512eb
leaq -0x108(%rbp), %rdi
callq 0x24740
jmp 0x4a2ff
movq -0x2c8(%rbp), %rsi
movq -0x2d8(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x108(%rbp), %rdx
callq 0x3f820
jmp 0x4a322
leaq -0x108(%rbp), %rdi
callq 0x11360
leaq -0x109(%rbp), %rdi
callq 0x11600
movl $0x1, -0xe8(%rbp)
jmp 0x4ab93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a37b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x11360
leaq -0x109(%rbp), %rdi
callq 0x11600
jmp 0x4abac
movq -0x2c8(%rbp), %rsi
addq $0xb0, %rsi
leaq -0x130(%rbp), %rdi
callq 0x11250
jmp 0x4a3a8
movq -0x2c8(%rbp), %rdi
callq 0x38fd0
jmp 0x4a3b6
movq -0x2c8(%rbp), %rax
cmpl $0x3a, 0xd0(%rax)
je 0x4a6ea
leaq -0x171(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x119d0
movq -0x350(%rbp), %rdx
leaq 0x106da5(%rip), %rsi    # 0x151190
leaq -0x170(%rbp), %rdi
callq 0x24740
jmp 0x4a3f9
movb $0x1, -0x1ca(%rbp)
leaq -0x1c0(%rbp), %rax
movq %rax, -0x360(%rbp)
movq %rax, -0x1c8(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x119d0
movq -0x360(%rbp), %rdi
movq -0x358(%rbp), %rdx
leaq 0x10adc1(%rip), %rsi    # 0x1551fe
callq 0x24740
jmp 0x4a444
movb $0x0, -0x1ca(%rbp)
leaq -0x1c0(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq $0x1, -0x198(%rbp)
leaq -0x1cb(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x26e30
movq -0x368(%rbp), %rcx
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
leaq -0x190(%rbp), %rdi
callq 0x2d6a0
jmp 0x4a49a
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x190(%rbp), %rdx
callq 0x9e250
jmp 0x4a4b6
movq -0x2c8(%rbp), %rsi
movq -0x2d8(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x150(%rbp), %rdx
callq 0x3f820
jmp 0x4a4d9
leaq -0x150(%rbp), %rdi
callq 0x11360
leaq -0x190(%rbp), %rdi
callq 0x25b00
leaq -0x1cb(%rbp), %rdi
callq 0x279c0
leaq -0x1c0(%rbp), %rax
movq %rax, -0x378(%rbp)
addq $0x20, %rax
movq %rax, -0x370(%rbp)
movq -0x370(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x380(%rbp)
callq 0x11360
movq -0x378(%rbp), %rcx
movq -0x380(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x370(%rbp)
jne 0x4a516
leaq -0x1c9(%rbp), %rdi
callq 0x11600
leaq -0x170(%rbp), %rdi
callq 0x11360
leaq -0x171(%rbp), %rdi
callq 0x11600
movl $0x1, -0xe8(%rbp)
jmp 0x4ab10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4ab2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a6d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a669
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a611
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a605
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x11360
leaq -0x190(%rbp), %rdi
callq 0x25b00
leaq -0x1cb(%rbp), %rdi
callq 0x279c0
leaq -0x1c0(%rbp), %rax
movq %rax, -0x390(%rbp)
addq $0x20, %rax
movq %rax, -0x388(%rbp)
movq -0x388(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x398(%rbp)
callq 0x11360
movq -0x390(%rbp), %rcx
movq -0x398(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x388(%rbp)
jne 0x4a636
jmp 0x4a669
leaq -0x1c9(%rbp), %rdi
callq 0x11600
testb $0x1, -0x1ca(%rbp)
jne 0x4a680
jmp 0x4a6cd
movq -0x1c8(%rbp), %rax
leaq -0x1c0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x3a0(%rbp)
je 0x4a6cb
movq -0x3a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x11360
movq -0x3a8(%rbp), %rax
leaq -0x1c0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x3a0(%rbp)
jne 0x4a69a
jmp 0x4a6cd
leaq -0x170(%rbp), %rdi
callq 0x11360
leaq -0x171(%rbp), %rdi
callq 0x11600
jmp 0x4ab2d
movq -0x2c8(%rbp), %rdi
callq 0x38fd0
jmp 0x4a6f8
movq -0x2c8(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
callq 0x3f500
jmp 0x4a711
leaq -0x1e0(%rbp), %rdi
callq 0x57630
testb $0x1, %al
jne 0x4a723
jmp 0x4a799
leaq -0x210(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
callq 0x59190
jmp 0x4a73f
leaq -0x30(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x591d0
jmp 0x4a751
leaq -0x210(%rbp), %rdi
callq 0x59240
jmp 0x4a7b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4a99f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x59240
jmp 0x4a99f
movq -0x2d8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x58bf0
movl $0x1, -0xe8(%rbp)
jmp 0x4a7bf
movl $0x0, -0xe8(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x24b20
movl -0xe8(%rbp), %eax
testl %eax, %eax
jne 0x4ab10
jmp 0x4a7db
movq -0x2c8(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
jne 0x4ab06
leaq -0x251(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x119d0
movq -0x3b0(%rbp), %rdx
leaq 0x106980(%rip), %rsi    # 0x151190
leaq -0x250(%rbp), %rdi
callq 0x24740
jmp 0x4a81e
movb $0x1, -0x2aa(%rbp)
leaq -0x2a0(%rbp), %rax
movq %rax, -0x3c0(%rbp)
movq %rax, -0x2a8(%rbp)
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x119d0
movq -0x3c0(%rbp), %rdi
movq -0x3b8(%rbp), %rdx
leaq 0x10aaa7(%rip), %rsi    # 0x155309
callq 0x24740
jmp 0x4a869
movb $0x0, -0x2aa(%rbp)
leaq -0x2a0(%rbp), %rax
movq %rax, -0x280(%rbp)
movq $0x1, -0x278(%rbp)
leaq -0x2ab(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x26e30
movq -0x3c8(%rbp), %rcx
movq -0x280(%rbp), %rsi
movq -0x278(%rbp), %rdx
leaq -0x270(%rbp), %rdi
callq 0x2d6a0
jmp 0x4a8bf
leaq -0x230(%rbp), %rdi
leaq -0x250(%rbp), %rsi
leaq -0x270(%rbp), %rdx
callq 0x9e250
jmp 0x4a8db
movq -0x2c8(%rbp), %rsi
movq -0x2d8(%rbp), %rdi
movq %rsi, %rcx
addq $0x58, %rcx
leaq -0x230(%rbp), %rdx
callq 0x3f820
jmp 0x4a8fe
leaq -0x230(%rbp), %rdi
callq 0x11360
leaq -0x270(%rbp), %rdi
callq 0x25b00
leaq -0x2ab(%rbp), %rdi
callq 0x279c0
leaq -0x2a0(%rbp), %rax
movq %rax, -0x3d8(%rbp)
addq $0x20, %rax
movq %rax, -0x3d0(%rbp)
movq -0x3d0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x11360
movq -0x3d8(%rbp), %rcx
movq -0x3e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3d0(%rbp)
jne 0x4a93b
leaq -0x2a9(%rbp), %rdi
callq 0x11600
leaq -0x250(%rbp), %rdi
callq 0x11360
leaq -0x251(%rbp), %rdi
callq 0x11600
movl $0x1, -0xe8(%rbp)
jmp 0x4ab10
leaq -0x1e0(%rbp), %rdi
callq 0x24b20
jmp 0x4ab2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4aaf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4aa88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4aa30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4aa24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x11360
leaq -0x270(%rbp), %rdi
callq 0x25b00
leaq -0x2ab(%rbp), %rdi
callq 0x279c0
leaq -0x2a0(%rbp), %rax
movq %rax, -0x3f0(%rbp)
addq $0x20, %rax
movq %rax, -0x3e8(%rbp)
movq -0x3e8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x11360
movq -0x3f0(%rbp), %rcx
movq -0x3f8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3e8(%rbp)
jne 0x4aa55
jmp 0x4aa88
leaq -0x2a9(%rbp), %rdi
callq 0x11600
testb $0x1, -0x2aa(%rbp)
jne 0x4aa9f
jmp 0x4aaec
movq -0x2a8(%rbp), %rax
leaq -0x2a0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x400(%rbp)
je 0x4aaea
movq -0x400(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x408(%rbp)
callq 0x11360
movq -0x408(%rbp), %rax
leaq -0x2a0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x400(%rbp)
jne 0x4aab9
jmp 0x4aaec
leaq -0x250(%rbp), %rdi
callq 0x11360
leaq -0x251(%rbp), %rdi
callq 0x11600
jmp 0x4ab2d
movl $0x0, -0xe8(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x11360
movl -0xe8(%rbp), %eax
testl %eax, %eax
jne 0x4ab93
jmp 0x4ab28
jmp 0x49f48
leaq -0x130(%rbp), %rdi
callq 0x11360
jmp 0x4abac
movq -0x2c8(%rbp), %rdi
callq 0x38fd0
jmp 0x4ab49
movq -0x2c8(%rbp), %rcx
movq -0x18(%rbp), %rsi
addq $0x58, %rcx
leaq -0x2c0(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x59270
jmp 0x4ab6a
movq -0x2d8(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x592f0
leaq -0x2c0(%rbp), %rdi
callq 0x59320
movl $0x1, -0xe8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x59340
movq -0x2d0(%rbp), %rax
addq $0x410, %rsp            # imm = 0x410
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x59340
movq -0x88(%rbp), %rdi
callq 0x119c0
nopw %cs:(%rax,%rax)